diff --git a/.opencode/.strrayrc.json b/.opencode/.strrayrc.json index 4502182d9..5221a93c6 100644 --- a/.opencode/.strrayrc.json +++ b/.opencode/.strrayrc.json @@ -1,7 +1,7 @@ { "framework": { "name": "StringRay Framework", - "version": "1.15.18", + "version": "1.15.19", "buildMode": "production", "logLevel": "info" }, diff --git a/.opencode/codex.codex b/.opencode/codex.codex index 85afebfcf..a42aa9b0f 100644 --- a/.opencode/codex.codex +++ b/.opencode/codex.codex @@ -1,5 +1,5 @@ { - "version": "1.15.18", + "version": "1.15.19", "terms": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 ], diff --git a/.opencode/command/dependency-audit.md b/.opencode/command/dependency-audit.md index 080380234..ccf31b153 100644 --- a/.opencode/command/dependency-audit.md +++ b/.opencode/command/dependency-audit.md @@ -69,7 +69,7 @@ Comprehensive dependency analysis and security audit for all project dependencie "vulnerabilities": [ { "package": "lodash", - "version": "1.15.18", + "version": "1.15.19", "severity": "high", "cve": "CVE-2021-23337", "description": "Command injection vulnerability" @@ -85,14 +85,14 @@ Security-focused format for CI/CD integration: ```json { - "version": "1.15.18", + "version": "1.15.19", "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", "runs": [ { "tool": { "driver": { "name": "Dependency Audit", - "version": "1.15.18" + "version": "1.15.19" } }, "results": [...] diff --git a/.opencode/enforcer-config.json b/.opencode/enforcer-config.json index 2874d5373..646180cb1 100644 --- a/.opencode/enforcer-config.json +++ b/.opencode/enforcer-config.json @@ -1,6 +1,6 @@ { "framework": "StringRay 1.0.0", - "version": "1.15.18", + "version": "1.15.19", "description": "Codex-compliant framework configuration for Credible UI project", "thresholds": { "bundleSize": { @@ -220,7 +220,7 @@ } }, "codex": { - "version": "1.15.18", + "version": "1.15.19", "terms": [ 1, 2, diff --git a/.opencode/package.json b/.opencode/package.json index 3b8268be7..f821937dc 100644 --- a/.opencode/package.json +++ b/.opencode/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/OpenCode", - "version": "1.15.18", + "version": "1.15.19", "description": "OpenCode framework configuration", "main": "OpenCode.json", "scripts": { diff --git a/.opencode/plugins/strray-codex-injection.js b/.opencode/plugins/strray-codex-injection.js index 397832727..e3e349a86 100644 --- a/.opencode/plugins/strray-codex-injection.js +++ b/.opencode/plugins/strray-codex-injection.js @@ -11,7 +11,27 @@ import * as fs from "fs"; import * as path from "path"; import { spawn } from "child_process"; -import { frameworkLogger } from "../core/framework-logger.js"; +// frameworkLogger — dynamically loaded (works from both dist/plugin/ and .opencode/plugins/) +let frameworkLogger; +async function loadFrameworkLogger() { + if (frameworkLogger) + return; + const candidates = [ + "../../dist/core/framework-logger.js", + "../core/framework-logger.js", + ]; + for (const p of candidates) { + try { + frameworkLogger = (await import(p)).frameworkLogger; + return; + } + catch (_) { + // try next candidate + } + } + // Fallback noop logger — plugin works without structured logging + frameworkLogger = { log: () => { } }; +} // Dynamic imports for config-paths (works from both dist/plugin/ and .opencode/plugins/) let _resolveCodexPath; let _resolveStateDir; @@ -34,6 +54,7 @@ async function loadConfigPaths() { // try next candidate } } + await loadFrameworkLogger(); frameworkLogger.log("strray-codex-plugin", "config-paths-load-failed", "warning", { warning: "Failed to load config-paths module from any location" }); } /** Convenience wrapper — must be awaited before use */ @@ -63,6 +84,7 @@ async function importSystemPromptGenerator() { // try next candidate } } + await loadFrameworkLogger(); frameworkLogger.log("strray-codex-plugin", "system-prompt-generator-load-failed", "warning", { warning: "Failed to load lean system prompt generator, using fallback" }); } } diff --git a/.opencode/state/state.json b/.opencode/state/state.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/.opencode/state/state.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.opencode/strray/codex.json b/.opencode/strray/codex.json index bfcd69153..977e6c9b5 100644 --- a/.opencode/strray/codex.json +++ b/.opencode/strray/codex.json @@ -1,5 +1,5 @@ { - "version": "1.15.18", + "version": "1.15.19", "lastUpdated": "2026-03-09", "errorPreventionTarget": 0.996, "terms": { diff --git a/.opencode/strray/config.json b/.opencode/strray/config.json index 2c88679ec..0eb252a6a 100644 --- a/.opencode/strray/config.json +++ b/.opencode/strray/config.json @@ -1,6 +1,6 @@ { "$schema": "./config.schema.json", - "version": "1.15.18", + "version": "1.15.19", "description": "StringRay Framework - Token Management & Performance Configuration", "token_management": { diff --git a/.opencode/strray/features.json b/.opencode/strray/features.json index c4a91dd17..d89691361 100644 --- a/.opencode/strray/features.json +++ b/.opencode/strray/features.json @@ -1,6 +1,6 @@ { "$schema": "./features.schema.json", - "version": "1.15.18", + "version": "1.15.19", "description": "StringRay Framework - Unified Feature Configuration", "token_optimization": { "enabled": true, diff --git a/.opencode/strray/integrations.json b/.opencode/strray/integrations.json index a65fa1485..6ec4fb003 100644 --- a/.opencode/strray/integrations.json +++ b/.opencode/strray/integrations.json @@ -4,19 +4,19 @@ "openclaw": { "enabled": false, "type": "external-service", - "version": "1.15.18", + "version": "1.15.19", "config": {} }, "python-bridge": { "enabled": false, "type": "protocol-bridge", - "version": "1.15.18", + "version": "1.15.19", "config": {} }, "react": { "enabled": false, "type": "framework-adapter", - "version": "1.15.18", + "version": "1.15.19", "config": {} } } diff --git a/command/dependency-audit.md b/command/dependency-audit.md index 080380234..ccf31b153 100644 --- a/command/dependency-audit.md +++ b/command/dependency-audit.md @@ -69,7 +69,7 @@ Comprehensive dependency analysis and security audit for all project dependencie "vulnerabilities": [ { "package": "lodash", - "version": "1.15.18", + "version": "1.15.19", "severity": "high", "cve": "CVE-2021-23337", "description": "Command injection vulnerability" @@ -85,14 +85,14 @@ Security-focused format for CI/CD integration: ```json { - "version": "1.15.18", + "version": "1.15.19", "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", "runs": [ { "tool": { "driver": { "name": "Dependency Audit", - "version": "1.15.18" + "version": "1.15.19" } }, "results": [...] diff --git a/docs/HOOK_PROTOCOL.md b/docs/HOOK_PROTOCOL.md index 3a844be2a..3ceb1aae8 100644 --- a/docs/HOOK_PROTOCOL.md +++ b/docs/HOOK_PROTOCOL.md @@ -146,7 +146,7 @@ Response: "prompt": "## StringRay Universal Development Codex v1.7.8\n...", "termCount": 12, "totalTerms": 60, - "version": "1.15.18", + "version": "1.15.19", "charCount": 2048 } ``` @@ -167,7 +167,7 @@ Response: { "status": "ok", "projectRoot": "/path/to/project", - "codex": { "path": ".strray/codex.json", "version": "1.15.18", "termCount": 60 }, + "codex": { "path": ".strray/codex.json", "version": "1.15.19", "termCount": 60 }, "features": { "token_optimization": { "enabled": true } } } ``` diff --git a/docs/README.md b/docs/README.md index 9a14766a7..9243e4335 100644 --- a/docs/README.md +++ b/docs/README.md @@ -202,7 +202,7 @@ Update your `.opencode/OpenCode.json`: }, "framework": { "name": "strray", - "version": "1.15.18" + "version": "1.15.19" } } ``` @@ -473,7 +473,7 @@ Update your `.opencode/OpenCode.json` for enterprise deployment: }, "framework": { "name": "strray", - "version": "1.15.18", + "version": "1.15.19", "performance_mode": "optimized", "monitoring_enabled": true, "plugin_security": "strict" diff --git a/docs/agents/ADDING_AGENTS.md b/docs/agents/ADDING_AGENTS.md index ce7bbde82..972caa49d 100644 --- a/docs/agents/ADDING_AGENTS.md +++ b/docs/agents/ADDING_AGENTS.md @@ -108,7 +108,7 @@ Create the agent YAML file: ```yaml name: my-agent description: "What this agent does" -version: "1.15.18" +version: "1.15.19" mode: subagent ``` diff --git a/docs/api/API_REFERENCE.md b/docs/api/API_REFERENCE.md index 4af0abf8c..82a583ae6 100644 --- a/docs/api/API_REFERENCE.md +++ b/docs/api/API_REFERENCE.md @@ -500,7 +500,7 @@ await orchestrator.registerAgent(CustomAnalyticsAgent); }, "framework": { "name": "strray", - "version": "1.15.18", + "version": "1.15.19", "performance_mode": "optimized", "monitoring_enabled": true, "plugin_security": "strict", diff --git a/docs/api/ENTERPRISE_API_REFERENCE.md b/docs/api/ENTERPRISE_API_REFERENCE.md index 3e7f761bc..d14ac1b7c 100644 --- a/docs/api/ENTERPRISE_API_REFERENCE.md +++ b/docs/api/ENTERPRISE_API_REFERENCE.md @@ -618,7 +618,7 @@ Get all available facades and their status. "facades": [ { "name": "rule-enforcer", - "version": "1.15.18", + "version": "1.15.19", "status": "healthy", "modules": 6, "metrics": { @@ -628,7 +628,7 @@ Get all available facades and their status. }, { "name": "task-skill-router", - "version": "1.15.18", + "version": "1.15.19", "status": "healthy", "modules": 14, "metrics": { diff --git a/docs/architecture/ENTERPRISE_ARCHITECTURE.md b/docs/architecture/ENTERPRISE_ARCHITECTURE.md index e1f1c8a56..a7d34970c 100644 --- a/docs/architecture/ENTERPRISE_ARCHITECTURE.md +++ b/docs/architecture/ENTERPRISE_ARCHITECTURE.md @@ -629,7 +629,7 @@ The framework integrates seamlessly with OpenCode: }, "framework": { "name": "strray", - "version": "1.15.18" + "version": "1.15.19" } } ``` diff --git a/docs/architecture/GROK_GUIDE.md b/docs/architecture/GROK_GUIDE.md index b31726509..2bbe8e7cb 100644 --- a/docs/architecture/GROK_GUIDE.md +++ b/docs/architecture/GROK_GUIDE.md @@ -98,7 +98,7 @@ Update your `.opencode/OpenCode.json`: }, "framework": { "name": "strray", - "version": "1.15.18" + "version": "1.15.19" } } ``` diff --git a/docs/archive/historical/CHANGELOG-v1.2.0.md b/docs/archive/historical/CHANGELOG-v1.2.0.md index 29b30948d..6778c01b7 100644 --- a/docs/archive/historical/CHANGELOG-v1.2.0.md +++ b/docs/archive/historical/CHANGELOG-v1.2.0.md @@ -279,7 +279,7 @@ The missing piece that enables autonomous CI/CD recovery: **No breaking changes.** This is a validation and bugfix release. **Recommended steps**: -1. Update version in package.json: `"version": "1.15.18"` +1. Update version in package.json: `"version": "1.15.19"` 2. Run `npm install` to refresh dependencies 3. Run `npm run test:core-framework` to verify 4. Deploy with confidence diff --git a/docs/archive/historical/strray_v2_log.md b/docs/archive/historical/strray_v2_log.md index 1eedcdf97..23c11657c 100644 --- a/docs/archive/historical/strray_v2_log.md +++ b/docs/archive/historical/strray_v2_log.md @@ -1536,7 +1536,7 @@ Implementation Steps Structured dict with complete codex context """ codex_context = { - "version": "1.15.18", + "version": "1.15.19", "terms": {}, "interweaves": [], "lenses": [], @@ -32374,7 +32374,7 @@ After: Accurate Reality --- 📊 UPDATED SECTIONS ✅ Title & Purpose -- Framework Version: 1.15.18 +- Framework Version: 1.15.19 - Purpose: Rule-based development workflow orchestration with systematic error prevention - Reality Check: Clearly states what it actually does vs. aspirational claims ✅ Architecture Diagram diff --git a/docs/archive/legacy/README_STRRAY_INTEGRATION.md b/docs/archive/legacy/README_STRRAY_INTEGRATION.md index 6639eded3..60c9e5f7a 100644 --- a/docs/archive/legacy/README_STRRAY_INTEGRATION.md +++ b/docs/archive/legacy/README_STRRAY_INTEGRATION.md @@ -180,7 +180,7 @@ STRRAY_MCP_CLIENT_MODULES=all ```json { "strray": { - "version": "1.15.18", + "version": "1.15.19", "architecture": "facade-pattern", "components": { "orchestrator": true, diff --git a/docs/archive/legacy/STRAY_EXTENSION.md b/docs/archive/legacy/STRAY_EXTENSION.md index 13fbd3473..0cefe58c0 100644 --- a/docs/archive/legacy/STRAY_EXTENSION.md +++ b/docs/archive/legacy/STRAY_EXTENSION.md @@ -193,7 +193,7 @@ my-extension/ ```json { "name": "strray-extension-custom", - "version": "1.15.18", + "version": "1.15.19", "description": "Custom StringRay extension", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/docs/archive/legacy/strray-framework/dynamic-enforcer-config.json b/docs/archive/legacy/strray-framework/dynamic-enforcer-config.json index 07e0b5ab4..3b523e328 100644 --- a/docs/archive/legacy/strray-framework/dynamic-enforcer-config.json +++ b/docs/archive/legacy/strray-framework/dynamic-enforcer-config.json @@ -1,6 +1,6 @@ { "framework": "Universal Development Framework v1.1.1", - "version": "1.15.18", + "version": "1.15.19", "description": "Codex-compliant framework configuration for Credible UI project", "thresholds": { @@ -222,7 +222,7 @@ }, "codex": { - "version": "1.15.18", + "version": "1.15.19", "terms": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 24, 29, 32, 38, 42, 43], "principles": [ "progressive-prod-ready-code", diff --git a/docs/archive/legacy/strray-framework/strray-config.json b/docs/archive/legacy/strray-framework/strray-config.json index 6c7665b18..0a7cf4af8 100644 --- a/docs/archive/legacy/strray-framework/strray-config.json +++ b/docs/archive/legacy/strray-framework/strray-config.json @@ -19,7 +19,7 @@ "error_rate": 0.1 }, "strray_framework": { - "version": "1.15.18", + "version": "1.15.19", "codex_terms": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 24, 29, 32, 38, 42, 43], "session_initialization": { "auto_format": true, diff --git a/docs/archive/superseded/internal/architecture/ENTERPRISE_ARCHITECTURE.md b/docs/archive/superseded/internal/architecture/ENTERPRISE_ARCHITECTURE.md index 1fe6312d6..60fb673cd 100644 --- a/docs/archive/superseded/internal/architecture/ENTERPRISE_ARCHITECTURE.md +++ b/docs/archive/superseded/internal/architecture/ENTERPRISE_ARCHITECTURE.md @@ -464,7 +464,7 @@ The framework integrates seamlessly with OpenCode: }, "framework": { "name": "strray", - "version": "1.15.18" + "version": "1.15.19" } } ``` diff --git a/docs/archive/superseded/internal/development/contributing.md/FRAMEWORK_REFACTORING.md b/docs/archive/superseded/internal/development/contributing.md/FRAMEWORK_REFACTORING.md index 6b7fbb367..b6ae63d42 100644 --- a/docs/archive/superseded/internal/development/contributing.md/FRAMEWORK_REFACTORING.md +++ b/docs/archive/superseded/internal/development/contributing.md/FRAMEWORK_REFACTORING.md @@ -13,7 +13,7 @@ This document describes the comprehensive migration and consolidation efforts im ```json { "strray_framework": { - "version": "1.15.18", + "version": "1.15.19", "enabled_agents": ["enforcer", "architect"], "agent_capabilities": { "enforcer": ["compliance-monitoring"] @@ -26,7 +26,7 @@ This document describes the comprehensive migration and consolidation efforts im ```json { - "version": "1.15.18", + "version": "1.15.19", "enabled_agents": ["enforcer", "architect"], "agent_capabilities_enforcer": ["compliance-monitoring"] } diff --git a/docs/development/ENTERPRISE_DEVELOPER_GUIDE.md b/docs/development/ENTERPRISE_DEVELOPER_GUIDE.md index 34c570d75..20c4b5622 100644 --- a/docs/development/ENTERPRISE_DEVELOPER_GUIDE.md +++ b/docs/development/ENTERPRISE_DEVELOPER_GUIDE.md @@ -67,7 +67,7 @@ npm install }, "framework": { "name": "strray", - "version": "1.15.18" + "version": "1.15.19" } } ``` @@ -1259,7 +1259,7 @@ export class CustomPlugin implements Plugin { ```typescript // Plugin manifest with security declarations export const manifest = { - name: "custom-plugin", version: "1.15.18", + name: "custom-plugin", version: "1.15.19", permissions: ["read:filesystem", "network:http", "storage:local"], sandbox: { memoryLimit: "50MB", diff --git a/docs/operations/deployment/ENTERPRISE_DEPLOYMENT_GUIDE.md b/docs/operations/deployment/ENTERPRISE_DEPLOYMENT_GUIDE.md index db711083d..8e2d64f35 100644 --- a/docs/operations/deployment/ENTERPRISE_DEPLOYMENT_GUIDE.md +++ b/docs/operations/deployment/ENTERPRISE_DEPLOYMENT_GUIDE.md @@ -174,7 +174,7 @@ npm install }, "framework": { "name": "strray", - "version": "1.15.18", + "version": "1.15.19", "performance_mode": "optimized", "monitoring_enabled": true, "facade_pattern": true @@ -418,7 +418,7 @@ data: { "framework": { "name": "strray", - "version": "1.15.18", + "version": "1.15.19", "performance_mode": "optimized", "monitoring_enabled": true, "facade_pattern": true diff --git a/docs/operations/migration/FRAMEWORK_MIGRATION.md b/docs/operations/migration/FRAMEWORK_MIGRATION.md index 5b8c28e83..4367f264d 100644 --- a/docs/operations/migration/FRAMEWORK_MIGRATION.md +++ b/docs/operations/migration/FRAMEWORK_MIGRATION.md @@ -107,7 +107,7 @@ MCP Client (312 lines) ```json { "strray_framework": { - "version": "1.15.18", + "version": "1.15.19", "enabled_agents": ["enforcer", "architect"], "agent_capabilities": { "enforcer": ["compliance-monitoring"] diff --git a/docs/reflections/automated-version-compliance-system.md b/docs/reflections/automated-version-compliance-system.md index ea6c10c54..5b0287744 100644 --- a/docs/reflections/automated-version-compliance-system.md +++ b/docs/reflections/automated-version-compliance-system.md @@ -191,7 +191,7 @@ npm view strray-ai@latest version # → 1.3.2 # Edit version manager code scripts/node/universal-version-manager.js -# → Set version: "1.15.18" +# → Set version: "1.15.19" # Run sync npm run version:sync diff --git a/docs/reflections/deep/skills-routing-architecture-research-2026-03-24.md b/docs/reflections/deep/skills-routing-architecture-research-2026-03-24.md index 778b92356..cbb5f63aa 100644 --- a/docs/reflections/deep/skills-routing-architecture-research-2026-03-24.md +++ b/docs/reflections/deep/skills-routing-architecture-research-2026-03-24.md @@ -235,7 +235,7 @@ class StrRayServer { constructor() { this.server = new Server( - { name: "", version: "1.15.18" }, + { name: "", version: "1.15.19" }, { capabilities: { tools: {} } } ); this.setupToolHandlers(); diff --git a/docs/reflections/deep/skills-routing-architecture-strategy-2026-03-24.md b/docs/reflections/deep/skills-routing-architecture-strategy-2026-03-24.md index 09f3a7656..85b9c7bbf 100644 --- a/docs/reflections/deep/skills-routing-architecture-strategy-2026-03-24.md +++ b/docs/reflections/deep/skills-routing-architecture-strategy-2026-03-24.md @@ -214,7 +214,7 @@ mcp: { "$schema": "./schemas/skill-manifest.schema.json", "name": "code-review", - "version": "1.15.18", + "version": "1.15.19", "schema_version": "2.0", "description": "Comprehensive code review and quality analysis", @@ -444,7 +444,7 @@ class SkillNameServer { constructor() { this.server = new Server( - { name: "skill-name", version: "1.15.18" }, + { name: "skill-name", version: "1.15.19" }, { capabilities: { tools: {} } } ); this.setupToolHandlers(); @@ -573,15 +573,15 @@ const VERSION_RULES = { ```yaml # In SKILL.md for skills with migrations migrations: - - from_version: "1.15.18" - to_version: "1.15.18" + - from_version: "1.15.19" + to_version: "1.15.19" breaking_changes: - "Removed 'analyze_code' tool, use 'analyze_code_quality'" - "Changed input schema for 'scan_security'" automated_migration: true - - from_version: "1.15.18" - to_version: "1.15.18" + - from_version: "1.15.19" + to_version: "1.15.19" breaking_changes: [] notes: "Added new 'generate_report' tool" ``` @@ -681,7 +681,7 @@ migrations: │ │ │ │ │ │ SkillPipelineStage │ │ │ │ ├── skill: "code-review" │ │ -│ │ ├── version: "1.15.18" │ │ +│ │ ├── version: "1.15.19" │ │ │ │ ├── tool: "analyze_code_quality" │ │ │ │ └── timeout: 30000ms │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ diff --git a/docs/reflections/deployment-crisis-v12x-reflection.md b/docs/reflections/deployment-crisis-v12x-reflection.md index 400a0bbf8..73fc07fc3 100644 --- a/docs/reflections/deployment-crisis-v12x-reflection.md +++ b/docs/reflections/deployment-crisis-v12x-reflection.md @@ -168,7 +168,7 @@ config.disabled_agents.some(agent => agent.toLowerCase() === "sisyphus") ```typescript // src/cli/index.ts -.version("1.15.18"); +.version("1.15.19"); // scripts/node/universal-version-manager.js const UPDATE_PATTERNS = [ diff --git a/docs/reflections/mcp-initialize-protocol-deep-dive.md b/docs/reflections/mcp-initialize-protocol-deep-dive.md index 040a03d6f..881a534b2 100644 --- a/docs/reflections/mcp-initialize-protocol-deep-dive.md +++ b/docs/reflections/mcp-initialize-protocol-deep-dive.md @@ -219,7 +219,7 @@ const initializeRequest = { params: { protocolVersion: "2024-11-05", capabilities: {}, - clientInfo: { name: "strray-mcp-client", version: "1.15.18" }, + clientInfo: { name: "strray-mcp-client", version: "1.15.19" }, }, }; diff --git a/docs/reflections/mcp-initialize-protocol-fix.md b/docs/reflections/mcp-initialize-protocol-fix.md index 7332dbf0f..75175f35b 100644 --- a/docs/reflections/mcp-initialize-protocol-fix.md +++ b/docs/reflections/mcp-initialize-protocol-fix.md @@ -69,7 +69,7 @@ const initializeRequest = { params: { protocolVersion: "2024-11-05", capabilities: {}, - clientInfo: { name: "strray-mcp-client", version: "1.15.18" }, + clientInfo: { name: "strray-mcp-client", version: "1.15.19" }, }, }; diff --git a/docs/research/openclaw/README.md b/docs/research/openclaw/README.md index 4b1f860c2..bccfd69bd 100644 --- a/docs/research/openclaw/README.md +++ b/docs/research/openclaw/README.md @@ -220,7 +220,7 @@ Health check endpoint. ```json { "status": "healthy", - "version": "1.15.18", + "version": "1.15.19", "uptime": 3600000, "openclaw": { "connected": true, diff --git a/docs/research/openclaw/researcher-summary.md b/docs/research/openclaw/researcher-summary.md index ff78e2ac3..8af44400c 100644 --- a/docs/research/openclaw/researcher-summary.md +++ b/docs/research/openclaw/researcher-summary.md @@ -80,7 +80,7 @@ The client connects to OpenClaw Gateway using Protocol v3: "maxProtocol": 3, "client": { "id": "strray-integration", - "version": "1.15.18", + "version": "1.15.19", "platform": "node", "mode": "operator" }, diff --git a/docs/tools/README-universal-version-manager.md b/docs/tools/README-universal-version-manager.md index bac2acfa8..f52be9b51 100644 --- a/docs/tools/README-universal-version-manager.md +++ b/docs/tools/README-universal-version-manager.md @@ -17,7 +17,7 @@ The Universal Version Manager (`scripts/universal-version-manager.js`) maintains ```javascript const OFFICIAL_VERSIONS = { framework: { - version: "1.15.18", + version: "1.15.19", displayName: "StringRay AI vX.X.X", lastUpdated: "2026-01-15", }, diff --git a/docs/user-guide/CONFIGURATION.md b/docs/user-guide/CONFIGURATION.md index ad93a18c4..8097792e6 100644 --- a/docs/user-guide/CONFIGURATION.md +++ b/docs/user-guide/CONFIGURATION.md @@ -40,7 +40,7 @@ Create `.opencode/strray/features.json` in your project root: ```json { - "version": "1.15.18", + "version": "1.15.19", "description": "StringRay Framework Configuration", "token_optimization": { @@ -381,7 +381,7 @@ The main OpenCode configuration file for agent routing: "code-analyzer": "openrouter/xai-grok-2-1212-fast-1" }, "framework": { - "version": "1.15.18", + "version": "1.15.19", "codexEnforcement": true, "jobIdLogging": true, "consoleLogRule": true diff --git a/docs/user-guide/README_STRRAY_INTEGRATION.md b/docs/user-guide/README_STRRAY_INTEGRATION.md index 6639eded3..60c9e5f7a 100644 --- a/docs/user-guide/README_STRRAY_INTEGRATION.md +++ b/docs/user-guide/README_STRRAY_INTEGRATION.md @@ -180,7 +180,7 @@ STRRAY_MCP_CLIENT_MODULES=all ```json { "strray": { - "version": "1.15.18", + "version": "1.15.19", "architecture": "facade-pattern", "components": { "orchestrator": true, diff --git a/docs/user-guide/getting-started/full-setup.md b/docs/user-guide/getting-started/full-setup.md index dcfef2f6a..026a8149a 100644 --- a/docs/user-guide/getting-started/full-setup.md +++ b/docs/user-guide/getting-started/full-setup.md @@ -80,7 +80,7 @@ StrRay uses **static model assignment** - each agent is assigned a specific mode }, "framework": { "name": "strray", - "version": "1.15.18", + "version": "1.15.19", "codex_terms": [ "1", "2", diff --git a/docs/user-guide/installation/INSTALLATION.md b/docs/user-guide/installation/INSTALLATION.md index eb71bc458..55a0fb7ee 100644 --- a/docs/user-guide/installation/INSTALLATION.md +++ b/docs/user-guide/installation/INSTALLATION.md @@ -120,7 +120,7 @@ Create `.opencode/strray/config.json` in your project root: ```json { "framework": { - "version": "1.15.18", + "version": "1.15.19", "codex": "v1.3.0" }, "agents": { diff --git a/docs/user-guide/installation/full-setup.md b/docs/user-guide/installation/full-setup.md index dcfef2f6a..026a8149a 100644 --- a/docs/user-guide/installation/full-setup.md +++ b/docs/user-guide/installation/full-setup.md @@ -80,7 +80,7 @@ StrRay uses **static model assignment** - each agent is assigned a specific mode }, "framework": { "name": "strray", - "version": "1.15.18", + "version": "1.15.19", "codex_terms": [ "1", "2", diff --git a/enforcer-config.json b/enforcer-config.json index e9f74a565..e643b30f5 100644 --- a/enforcer-config.json +++ b/enforcer-config.json @@ -1,6 +1,6 @@ { "framework": "StringRay 1.15.17", - "version": "1.15.18", + "version": "1.15.19", "description": "Codex-compliant framework configuration for Credible UI project", "thresholds": { "bundleSize": { @@ -220,7 +220,7 @@ } }, "codex": { - "version": "1.15.18", + "version": "1.15.19", "terms": [ 1, 2, diff --git a/package-lock.json b/package-lock.json index 721a5414a..cd5e0c3e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,11 +14,11 @@ "commander": "^11.1.0", "express": "^5.2.1", "jsonwebtoken": "^9.0.3", + "strray-ai": "^1.15.19", "ws": "^8.16.0" }, "bin": { "strray-ai": "dist/cli/index.js", - "strray-analytics": "dist/scripts/analytics/daily-routing-analysis.js", "strray-integration": "dist/scripts/integration.js" }, "devDependencies": { @@ -4241,6 +4241,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strray-ai": { + "version": "1.15.19", + "resolved": "https://registry.npmjs.org/strray-ai/-/strray-ai-1.15.19.tgz", + "integrity": "sha512-lg7brDASviRnDobOHOgyV828T8o3NYhwSkBBKr2h/MWJYFrDKo0wbAvIwHYWNXktmVCgDBPBbpcAoKXwRva8Xg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.4", + "commander": "^11.1.0", + "express": "^5.2.1", + "jsonwebtoken": "^9.0.3", + "ws": "^8.16.0" + }, + "bin": { + "strray-ai": "dist/cli/index.js", + "strray-integration": "dist/scripts/integration.js" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "^4.30.1" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", diff --git a/package.json b/package.json index a53eb6842..7515fdb28 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "strray-ai", - "version": "1.15.19", + "version": "1.15.20", "description": "⚡ StringRay ⚡: Bulletproof AI orchestration with systematic error prevention. Zero dead ends. Ship clean, tested, optimized code — every time.", "license": "MIT", "repository": { @@ -42,7 +42,7 @@ "scripts": { "version:bump": "node scripts/node/version-manager.mjs", "version": "node scripts/node/version-manager.mjs", - "build": "tsc", + "build": "tsc && mkdir -p dist/public && cp -r public/* dist/public/", "build:all": "npm run build", "ci-install": "npm ci", "clean": "rm -rf dist", @@ -131,6 +131,7 @@ "commander": "^11.1.0", "express": "^5.2.1", "jsonwebtoken": "^9.0.3", + "strray-ai": "^1.15.19", "ws": "^8.16.0" }, "devDependencies": { diff --git a/scripts/bash/test-deployment.sh b/scripts/bash/test-deployment.sh index 3ab5095d3..b2c428f6c 100755 --- a/scripts/bash/test-deployment.sh +++ b/scripts/bash/test-deployment.sh @@ -91,7 +91,7 @@ cd "$TEST_DIR" cat > package.json << 'EOF' { "name": "strray-test", - "version": "1.15.18" + "version": "1.15.19" } EOF @@ -150,7 +150,7 @@ cd test-config cat > package.json << 'EOF' { "name": "test-config", - "version": "1.15.18" + "version": "1.15.19" } EOF @@ -184,7 +184,7 @@ cd test-registration cat > package.json << 'EOF' { "name": "test-registration", - "version": "1.15.18" + "version": "1.15.19" } EOF @@ -253,7 +253,7 @@ cd test-agents cat > package.json << 'EOF' { "name": "test-agents", - "version": "1.15.18" + "version": "1.15.19" } EOF diff --git a/scripts/node/universal-version-manager.js b/scripts/node/universal-version-manager.js index d76b88fe1..2aa4c1a1f 100644 --- a/scripts/node/universal-version-manager.js +++ b/scripts/node/universal-version-manager.js @@ -78,8 +78,8 @@ const CALCULATED_COUNTS = calculateCounts(); const OFFICIAL_VERSIONS = { // Framework version framework: { - version: "1.15.19", - displayName: "StringRay AI v1.15.19", + version: "1.15.20", + displayName: "StringRay AI v1.15.20", lastUpdated: "2026-03-29", // Counts (auto-calculated, but can be overridden) ...CALCULATED_COUNTS, diff --git a/src/__tests__/integration/codex-enforcement.test.ts b/src/__tests__/integration/codex-enforcement.test.ts index 365eb12a2..781ad9cb4 100644 --- a/src/__tests__/integration/codex-enforcement.test.ts +++ b/src/__tests__/integration/codex-enforcement.test.ts @@ -99,7 +99,7 @@ describe("Codex Enforcement Integration", () => { loadCodexContext: vi.fn().mockResolvedValue({ success: true, context: { - version: "1.15.18", + version: "1.15.19", terms: new Map(), interweaves: [], lenses: [], @@ -144,7 +144,7 @@ describe("Codex Enforcement Integration", () => { loadCodexContext: vi.fn().mockResolvedValue({ success: true, context: { - version: "1.15.18", + version: "1.15.19", terms: new Map(), interweaves: [], lenses: [], @@ -198,7 +198,7 @@ describe("Codex Enforcement Integration", () => { loadCodexContext: vi.fn().mockResolvedValue({ success: true, context: { - version: "1.15.18", + version: "1.15.19", terms: new Map(), interweaves: [], lenses: [], diff --git a/src/__tests__/integration/server.test.ts b/src/__tests__/integration/server.test.ts index fc9fcfb0c..1809a7aab 100644 --- a/src/__tests__/integration/server.test.ts +++ b/src/__tests__/integration/server.test.ts @@ -59,7 +59,7 @@ const createTestServer = () => { app.get("/api/status", (req, res) => { res.json({ framework: "StringRay", - version: "1.15.18", + version: "1.15.19", status: "active", agents: 8, timestamp: new Date().toISOString(), diff --git a/src/__tests__/performance/enterprise-performance-tests.ts b/src/__tests__/performance/enterprise-performance-tests.ts index 1bdd5c251..c308ef618 100644 --- a/src/__tests__/performance/enterprise-performance-tests.ts +++ b/src/__tests__/performance/enterprise-performance-tests.ts @@ -148,7 +148,7 @@ describe("ML Inference Performance Benchmarks", () => { // Setup mock ML model mockModel = { id: "test-inference-model", - name: "Test Inference Model", version: "1.15.18", + name: "Test Inference Model", version: "1.15.19", type: "classification", status: "deployed", createdAt: new Date(), diff --git a/src/__tests__/unit/boot-orchestrator.test.ts b/src/__tests__/unit/boot-orchestrator.test.ts index df5e196ca..11e645349 100644 --- a/src/__tests__/unit/boot-orchestrator.test.ts +++ b/src/__tests__/unit/boot-orchestrator.test.ts @@ -25,7 +25,7 @@ describe("BootOrchestrator", () => { // Mock dependencies mockContextLoader = { loadCodexContext: vi.fn().mockResolvedValue({ - version: "1.15.18", + version: "1.15.19", terms: [], validationCriteria: {}, }), diff --git a/src/__tests__/unit/codex-injector.test.ts b/src/__tests__/unit/codex-injector.test.ts index e1074d201..065d07424 100644 --- a/src/__tests__/unit/codex-injector.test.ts +++ b/src/__tests__/unit/codex-injector.test.ts @@ -62,7 +62,7 @@ const getMockCodexStats = (sessionId: string) => { loaded: true, fileCount: 1, totalTerms: 3, - version: "1.15.18", + version: "1.15.19", }; }; @@ -256,7 +256,7 @@ describe("StringRay Codex Injector (Mock-Based)", () => { loaded: true, fileCount: 1, totalTerms: 3, - version: "1.15.18", + version: "1.15.19", }); }); diff --git a/src/__tests__/utils/test-helpers.ts b/src/__tests__/utils/test-helpers.ts index fe831e5c5..82b518a4c 100644 --- a/src/__tests__/utils/test-helpers.ts +++ b/src/__tests__/utils/test-helpers.ts @@ -260,7 +260,7 @@ export class MockCodexGenerator { */ static createMinimalCodex(): string { return JSON.stringify({ - version: "1.15.18", + version: "1.15.19", lastUpdated: "2026-01-06", errorPreventionTarget: 0.996, terms: { @@ -303,7 +303,7 @@ export class MockCodexGenerator { */ static createCodexWithViolations(): string { return JSON.stringify({ - version: "1.15.18", + version: "1.15.19", lastUpdated: "2026-01-06", errorPreventionTarget: 0.996, terms: { @@ -373,7 +373,7 @@ export class MockContextFactory { overrides: Partial = {}, ): CodexContext { const defaultContext: CodexContext = { - version: "1.15.18", + version: "1.15.19", lastUpdated: new Date().toISOString(), terms: new Map([ [ diff --git a/src/analytics/routing-refiner.ts b/src/analytics/routing-refiner.ts index 55a671e09..bdcb20da7 100644 --- a/src/analytics/routing-refiner.ts +++ b/src/analytics/routing-refiner.ts @@ -120,7 +120,7 @@ class RoutingRefiner { const warnings = this.generateWarnings(newMappings, optimizations); return { - version: "1.15.18", + version: "1.15.19", generatedAt: new Date(), summary: { newMappings: newMappings.length, diff --git a/src/cli/server.ts b/src/cli/server.ts index 32359f453..991300a30 100644 --- a/src/cli/server.ts +++ b/src/cli/server.ts @@ -8,8 +8,11 @@ import { frameworkLogger } from "../core/framework-logger.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); +const ROOT_DIR = join(__dirname, "..", ".."); +const PUBLIC_DIR = join(ROOT_DIR, "public"); + // Read version dynamically from package.json -const packageJsonPath = join(__dirname, "..", "package.json"); +const packageJsonPath = join(ROOT_DIR, "package.json"); const { version } = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); const app = express(); @@ -71,7 +74,7 @@ app.use(async (req: Request, res: Response, next: NextFunction) => { }); // Serve static files -app.use(express.static(join(__dirname, "public"))); +app.use(express.static(PUBLIC_DIR)); // API endpoints app.get("/api/status", requireAuth, (req: Request, res: Response) => { @@ -114,12 +117,17 @@ app.use((req: any, res: any, next: any) => { // Add route for root path app.get("/", (req: any, res: any) => { - res.sendFile(join(__dirname, "..", "public", "index.html")); + const indexPath = join(PUBLIC_DIR, "index.html"); + if (fs.existsSync(indexPath)) { + res.sendFile(indexPath); + } else { + res.status(404).send("Dashboard not found. Run the build script to generate static assets."); + } }); // Add route for refactoring logs app.get("/logs", requireAuth, async (req: Request, res: Response) => { - const logPath = join(__dirname, "..", ".opencode", "REFACTORING_LOG.md"); + const logPath = join(ROOT_DIR, ".opencode", "REFACTORING_LOG.md"); // Server debug logging - remove for production try { @@ -140,6 +148,12 @@ app.get("/logs", requireAuth, async (req: Request, res: Response) => { } }); +// Global error handler (4-param middleware must be registered before listen) +app.use((err: any, req: Request, res: Response, _next: NextFunction) => { + frameworkLogger.log("cli-server", "unhandled-error", "error", { error: err, path: req.path }); + res.status(500).send("Internal Server Error"); +}); + app.listen(PORT, () => { // Auto-open browser const start = diff --git a/src/core/boot-orchestrator.ts b/src/core/boot-orchestrator.ts index 597b1d3c7..91fb3a2cb 100644 --- a/src/core/boot-orchestrator.ts +++ b/src/core/boot-orchestrator.ts @@ -939,7 +939,7 @@ export class BootOrchestrator { try { // Load StringRay configuration directly (no Python dependency) const stringRayConfig = { - version: "1.15.18", + version: "1.15.19", codex_enabled: true, codex_version: "v1.7.5", codex_terms: [ diff --git a/src/core/features-config.ts b/src/core/features-config.ts index 01bfe384a..28463bd06 100644 --- a/src/core/features-config.ts +++ b/src/core/features-config.ts @@ -487,7 +487,7 @@ export class FeaturesConfigLoader { */ private getDefaultConfig(): FeaturesConfig { return { - version: "1.15.18", + version: "1.15.19", description: "StringRay Framework - Unified Feature Configuration", token_optimization: { diff --git a/src/enforcement/loaders/__tests__/loaders.test.ts b/src/enforcement/loaders/__tests__/loaders.test.ts index 35ac4346c..f2feab740 100644 --- a/src/enforcement/loaders/__tests__/loaders.test.ts +++ b/src/enforcement/loaders/__tests__/loaders.test.ts @@ -145,7 +145,7 @@ describe("Rule Loaders", () => { it("should load codex rules from valid codex.json", async () => { const mockCodexData = { - version: "1.15.18", + version: "1.15.19", lastUpdated: "2024-01-01", errorPreventionTarget: 0.99, terms: { @@ -181,7 +181,7 @@ describe("Rule Loaders", () => { it("should skip invalid terms", async () => { const mockCodexData = { - version: "1.15.18", + version: "1.15.19", terms: { "1": { number: 1, diff --git a/src/integrations/core/strray-integration.ts b/src/integrations/core/strray-integration.ts index dda2ce312..fe911b905 100644 --- a/src/integrations/core/strray-integration.ts +++ b/src/integrations/core/strray-integration.ts @@ -691,7 +691,7 @@ export const createStringRayIntegration = ( // Export default integration for auto-detection export const strRayIntegration = new StringRayIntegration({ framework: StringRayIntegration.detectFramework(), - version: "1.15.18", + version: "1.15.19", features: { agents: true, codex: true, diff --git a/src/mcps/architect-tools.server.ts b/src/mcps/architect-tools.server.ts index d15b7abc3..e96a30e52 100644 --- a/src/mcps/architect-tools.server.ts +++ b/src/mcps/architect-tools.server.ts @@ -22,7 +22,7 @@ class StrRayArchitectToolsServer { constructor() { this.server = new Server( { - name: "architect-tools", version: "1.15.18", + name: "architect-tools", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/auto-format.server.ts b/src/mcps/auto-format.server.ts index f6c9c9d6a..0a1747d4d 100644 --- a/src/mcps/auto-format.server.ts +++ b/src/mcps/auto-format.server.ts @@ -22,7 +22,7 @@ class StrRayAutoFormatServer { constructor() { this.server = new Server( { - name: "auto-format", version: "1.15.18", + name: "auto-format", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/boot-orchestrator.server.ts b/src/mcps/boot-orchestrator.server.ts index 1b6b407c9..7d23e78b3 100644 --- a/src/mcps/boot-orchestrator.server.ts +++ b/src/mcps/boot-orchestrator.server.ts @@ -44,7 +44,7 @@ class StrRayBootOrchestratorServer { constructor() { this.server = new Server( { - name: "boot-orchestrator", version: "1.15.18", + name: "boot-orchestrator", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/enforcer-tools.server.ts b/src/mcps/enforcer-tools.server.ts index 3cb720ae5..0d9ee1bde 100644 --- a/src/mcps/enforcer-tools.server.ts +++ b/src/mcps/enforcer-tools.server.ts @@ -25,7 +25,7 @@ class StrRayEnforcerToolsServer { constructor() { this.server = new Server( { - name: "enforcer", version: "1.15.18", + name: "enforcer", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/estimation.server.ts b/src/mcps/estimation.server.ts index 054a67417..fe643a1b6 100644 --- a/src/mcps/estimation.server.ts +++ b/src/mcps/estimation.server.ts @@ -24,7 +24,7 @@ class EstimationServer { constructor() { this.server = new Server( { - name: "estimation-validator", version: "1.15.18", + name: "estimation-validator", version: "1.15.19", }, { capabilities: { tools: {} }, diff --git a/src/mcps/framework-compliance-audit.server.ts b/src/mcps/framework-compliance-audit.server.ts index 931d1e80b..a23bfe05c 100644 --- a/src/mcps/framework-compliance-audit.server.ts +++ b/src/mcps/framework-compliance-audit.server.ts @@ -20,7 +20,7 @@ class StrRayFrameworkComplianceAuditServer { constructor() { this.server = new Server( { - name: "framework-compliance-audit", version: "1.15.18", + name: "framework-compliance-audit", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/framework-help.server.ts b/src/mcps/framework-help.server.ts index 4c06ade46..b77b6fc0e 100644 --- a/src/mcps/framework-help.server.ts +++ b/src/mcps/framework-help.server.ts @@ -14,7 +14,7 @@ class FrameworkHelpServer { constructor() { this.server = new Server( { - name: "strray/framework-help", version: "1.15.18", + name: "strray/framework-help", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/api-design.server.ts b/src/mcps/knowledge-skills/api-design.server.ts index a61fe90c5..eef9456f6 100644 --- a/src/mcps/knowledge-skills/api-design.server.ts +++ b/src/mcps/knowledge-skills/api-design.server.ts @@ -20,7 +20,7 @@ class StrRayApiDesignServer { constructor() { this.server = new Server( { - name: "api-design", version: "1.15.18", + name: "api-design", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/architecture-patterns.server.ts b/src/mcps/knowledge-skills/architecture-patterns.server.ts index 68f13e12e..2e0b5af3e 100644 --- a/src/mcps/knowledge-skills/architecture-patterns.server.ts +++ b/src/mcps/knowledge-skills/architecture-patterns.server.ts @@ -22,7 +22,7 @@ class StrRayArchitecturePatternsServer { constructor() { this.server = new Server( { - name: "architecture-patterns", version: "1.15.18", + name: "architecture-patterns", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/bug-triage-specialist.server.ts b/src/mcps/knowledge-skills/bug-triage-specialist.server.ts index 9bda7ec21..5811d6699 100644 --- a/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +++ b/src/mcps/knowledge-skills/bug-triage-specialist.server.ts @@ -65,7 +65,7 @@ class BugTriageSpecialistServer { constructor() { this.server = new Server( - { name: "bug-triage-specialist", version: "1.15.18" }, + { name: "bug-triage-specialist", version: "1.15.19" }, { capabilities: { tools: {} } }, ); this.setupToolHandlers(); diff --git a/src/mcps/knowledge-skills/code-analyzer.server.ts b/src/mcps/knowledge-skills/code-analyzer.server.ts index 4bb3d2805..ecc999e8a 100644 --- a/src/mcps/knowledge-skills/code-analyzer.server.ts +++ b/src/mcps/knowledge-skills/code-analyzer.server.ts @@ -266,7 +266,7 @@ class CodeAnalyzerServer { constructor() { this.server = new Server( - { name: "code-analyzer", version: "1.15.18" }, + { name: "code-analyzer", version: "1.15.19" }, { capabilities: { tools: {} } }, ); diff --git a/src/mcps/knowledge-skills/code-review.server.ts b/src/mcps/knowledge-skills/code-review.server.ts index fb62db470..567e4cedb 100644 --- a/src/mcps/knowledge-skills/code-review.server.ts +++ b/src/mcps/knowledge-skills/code-review.server.ts @@ -48,7 +48,7 @@ class StrRayCodeReviewServer { constructor() { this.server = new Server( { - name: "code-review", version: "1.15.18", + name: "code-review", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/content-creator.server.ts b/src/mcps/knowledge-skills/content-creator.server.ts index d94173472..f5b094efd 100644 --- a/src/mcps/knowledge-skills/content-creator.server.ts +++ b/src/mcps/knowledge-skills/content-creator.server.ts @@ -100,7 +100,7 @@ class SEOCopywriterServer { constructor() { this.server = new Server( - { name: "content-creator", version: "1.15.18" }, + { name: "content-creator", version: "1.15.19" }, { capabilities: { tools: {} } }, ); diff --git a/src/mcps/knowledge-skills/database-design.server.ts b/src/mcps/knowledge-skills/database-design.server.ts index 6d9ad2991..9c4697b9e 100644 --- a/src/mcps/knowledge-skills/database-design.server.ts +++ b/src/mcps/knowledge-skills/database-design.server.ts @@ -80,7 +80,7 @@ class StrRayDatabaseDesignServer { constructor() { this.server = new Server( { - name: "database-design", version: "1.15.18", + name: "database-design", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/devops-deployment.server.ts b/src/mcps/knowledge-skills/devops-deployment.server.ts index 23a232cd4..4c520db3d 100644 --- a/src/mcps/knowledge-skills/devops-deployment.server.ts +++ b/src/mcps/knowledge-skills/devops-deployment.server.ts @@ -74,7 +74,7 @@ class StrRayDevOpsDeploymentServer { constructor() { this.server = new Server( { - name: "devops-deployment", version: "1.15.18", + name: "devops-deployment", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/git-workflow.server.ts b/src/mcps/knowledge-skills/git-workflow.server.ts index 2777de7f8..188f92cea 100644 --- a/src/mcps/knowledge-skills/git-workflow.server.ts +++ b/src/mcps/knowledge-skills/git-workflow.server.ts @@ -20,7 +20,7 @@ class StrRayGitWorkflowServer { constructor() { this.server = new Server( { - name: "git-workflow", version: "1.15.18", + name: "git-workflow", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/growth-strategist.server.ts b/src/mcps/knowledge-skills/growth-strategist.server.ts index da3524920..57da19bbb 100644 --- a/src/mcps/knowledge-skills/growth-strategist.server.ts +++ b/src/mcps/knowledge-skills/growth-strategist.server.ts @@ -109,7 +109,7 @@ class MarketingExpertServer { constructor() { this.server = new Server( - { name: "growth-strategist", version: "1.15.18" }, + { name: "growth-strategist", version: "1.15.19" }, { capabilities: { tools: {} } }, ); diff --git a/src/mcps/knowledge-skills/log-monitor.server.ts b/src/mcps/knowledge-skills/log-monitor.server.ts index caebdece4..3dd47e760 100644 --- a/src/mcps/knowledge-skills/log-monitor.server.ts +++ b/src/mcps/knowledge-skills/log-monitor.server.ts @@ -101,7 +101,7 @@ class LogMonitorServer { constructor() { this.server = new Server( - { name: "log-monitor", version: "1.15.18" }, + { name: "log-monitor", version: "1.15.19" }, { capabilities: { tools: {} } }, ); this.setupToolHandlers(); diff --git a/src/mcps/knowledge-skills/mobile-development.server.ts b/src/mcps/knowledge-skills/mobile-development.server.ts index 0770b7efc..1ad208edb 100644 --- a/src/mcps/knowledge-skills/mobile-development.server.ts +++ b/src/mcps/knowledge-skills/mobile-development.server.ts @@ -63,7 +63,7 @@ class StrRayMobileDevelopmentServer { constructor() { this.server = new Server( { - name: "mobile-development", version: "1.15.18", + name: "mobile-development", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/multimodal-looker.server.ts b/src/mcps/knowledge-skills/multimodal-looker.server.ts index ad979e750..de88fba31 100644 --- a/src/mcps/knowledge-skills/multimodal-looker.server.ts +++ b/src/mcps/knowledge-skills/multimodal-looker.server.ts @@ -46,7 +46,7 @@ class MultimodalLookerServer { constructor() { this.server = new Server( - { name: "multimodal-looker", version: "1.15.18" }, + { name: "multimodal-looker", version: "1.15.19" }, { capabilities: { tools: {} } }, ); this.setupToolHandlers(); diff --git a/src/mcps/knowledge-skills/performance-optimization.server.ts b/src/mcps/knowledge-skills/performance-optimization.server.ts index 073763203..6c45cfaeb 100644 --- a/src/mcps/knowledge-skills/performance-optimization.server.ts +++ b/src/mcps/knowledge-skills/performance-optimization.server.ts @@ -20,7 +20,7 @@ class StrRayPerformanceOptimizationServer { constructor() { this.server = new Server( { - name: "performance-optimization", version: "1.15.18", + name: "performance-optimization", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/project-analysis.server.ts b/src/mcps/knowledge-skills/project-analysis.server.ts index c225a5312..feb8fc780 100644 --- a/src/mcps/knowledge-skills/project-analysis.server.ts +++ b/src/mcps/knowledge-skills/project-analysis.server.ts @@ -42,7 +42,7 @@ class StrRayProjectAnalysisServer { constructor() { this.server = new Server( { - name: "project-analysis", version: "1.15.18", + name: "project-analysis", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/refactoring-strategies.server.ts b/src/mcps/knowledge-skills/refactoring-strategies.server.ts index 7a04b8045..b89e525b3 100644 --- a/src/mcps/knowledge-skills/refactoring-strategies.server.ts +++ b/src/mcps/knowledge-skills/refactoring-strategies.server.ts @@ -59,7 +59,7 @@ class StrRayRefactoringStrategiesServer { constructor() { this.server = new Server( { - name: "refactoring-strategies", version: "1.15.18", + name: "refactoring-strategies", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/security-audit.server.ts b/src/mcps/knowledge-skills/security-audit.server.ts index 27cde7531..41ac97f62 100644 --- a/src/mcps/knowledge-skills/security-audit.server.ts +++ b/src/mcps/knowledge-skills/security-audit.server.ts @@ -64,7 +64,7 @@ class StrRaySecurityAuditServer { constructor() { this.server = new Server( { - name: "security-audit", version: "1.15.18", + name: "security-audit", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/seo-consultant.server.ts b/src/mcps/knowledge-skills/seo-consultant.server.ts index b609364fb..988df6d43 100644 --- a/src/mcps/knowledge-skills/seo-consultant.server.ts +++ b/src/mcps/knowledge-skills/seo-consultant.server.ts @@ -114,7 +114,7 @@ class SEOSpecialistServer { constructor() { this.server = new Server( - { name: "seo-consultant", version: "1.15.18" }, + { name: "seo-consultant", version: "1.15.19" }, { capabilities: { tools: {} } }, ); diff --git a/src/mcps/knowledge-skills/session-management.server.ts b/src/mcps/knowledge-skills/session-management.server.ts index 4288cc4c2..af6c23347 100644 --- a/src/mcps/knowledge-skills/session-management.server.ts +++ b/src/mcps/knowledge-skills/session-management.server.ts @@ -161,7 +161,7 @@ class SessionManagementServer { constructor() { this.server = new Server( - { name: "session-management", version: "1.15.18" }, + { name: "session-management", version: "1.15.19" }, { capabilities: { tools: {} } }, ); diff --git a/src/mcps/knowledge-skills/skill-invocation.server.ts b/src/mcps/knowledge-skills/skill-invocation.server.ts index 8e816b959..3038bc1c1 100644 --- a/src/mcps/knowledge-skills/skill-invocation.server.ts +++ b/src/mcps/knowledge-skills/skill-invocation.server.ts @@ -14,7 +14,7 @@ class SkillInvocationServer { constructor() { this.server = new Server( { - name: "strray/skill-invocation", version: "1.15.18", + name: "strray/skill-invocation", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/strategist.server.ts b/src/mcps/knowledge-skills/strategist.server.ts index ef4245f75..992d942a1 100644 --- a/src/mcps/knowledge-skills/strategist.server.ts +++ b/src/mcps/knowledge-skills/strategist.server.ts @@ -92,7 +92,7 @@ class StrategistServer { constructor() { this.server = new Server( { - name: "strray/strategist", version: "1.15.18", + name: "strray/strategist", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/tech-writer.server.ts b/src/mcps/knowledge-skills/tech-writer.server.ts index 1facf5408..e2a585acd 100644 --- a/src/mcps/knowledge-skills/tech-writer.server.ts +++ b/src/mcps/knowledge-skills/tech-writer.server.ts @@ -120,7 +120,7 @@ class StrRayDocumentationGenerationServer { constructor() { this.server = new Server( { - name: "documentation-generation", version: "1.15.18", + name: "documentation-generation", version: "1.15.19", }, { capabilities: { @@ -1007,7 +1007,7 @@ class StrRayDocumentationGenerationServer { openapi: "3.0.0", info: { title: "API Documentation", - version: "1.15.18", + version: "1.15.19", description: "Generated API documentation", }, servers: [ diff --git a/src/mcps/knowledge-skills/testing-best-practices.server.ts b/src/mcps/knowledge-skills/testing-best-practices.server.ts index 1549faef1..b60d67997 100644 --- a/src/mcps/knowledge-skills/testing-best-practices.server.ts +++ b/src/mcps/knowledge-skills/testing-best-practices.server.ts @@ -59,7 +59,7 @@ class StrRayTestingBestPracticesServer { constructor() { this.server = new Server( { - name: "testing-best-practices", version: "1.15.18", + name: "testing-best-practices", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/testing-strategy.server.ts b/src/mcps/knowledge-skills/testing-strategy.server.ts index b46a39dbd..824d86954 100644 --- a/src/mcps/knowledge-skills/testing-strategy.server.ts +++ b/src/mcps/knowledge-skills/testing-strategy.server.ts @@ -44,7 +44,7 @@ class StrRayTestingStrategyServer { constructor() { this.server = new Server( { - name: "testing-strategy", version: "1.15.18", + name: "testing-strategy", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/knowledge-skills/ui-ux-design.server.ts b/src/mcps/knowledge-skills/ui-ux-design.server.ts index 655953d5a..cce1ebd4d 100644 --- a/src/mcps/knowledge-skills/ui-ux-design.server.ts +++ b/src/mcps/knowledge-skills/ui-ux-design.server.ts @@ -98,7 +98,7 @@ class StrRayUIUXDesignServer { constructor() { this.server = new Server( { - name: "ui-ux-design", version: "1.15.18", + name: "ui-ux-design", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/lint.server.ts b/src/mcps/lint.server.ts index 1260f5d4b..0afa99b80 100644 --- a/src/mcps/lint.server.ts +++ b/src/mcps/lint.server.ts @@ -20,7 +20,7 @@ class StrRayLintServer { constructor() { this.server = new Server( { - name: "lint", version: "1.15.18", + name: "lint", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/model-health-check.server.ts b/src/mcps/model-health-check.server.ts index dbcd6ed08..c307c8d33 100644 --- a/src/mcps/model-health-check.server.ts +++ b/src/mcps/model-health-check.server.ts @@ -21,7 +21,7 @@ class StrRayModelHealthCheckServer { constructor() { this.server = new Server( { - name: "model-health-check", version: "1.15.18", + name: "model-health-check", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/performance-analysis.server.ts b/src/mcps/performance-analysis.server.ts index fb5d40a97..a65e29089 100644 --- a/src/mcps/performance-analysis.server.ts +++ b/src/mcps/performance-analysis.server.ts @@ -23,7 +23,7 @@ class StrRayPerformanceAnalysisServer { constructor() { this.server = new Server( { - name: "performance-analysis", version: "1.15.18", + name: "performance-analysis", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/processor-pipeline.server.ts b/src/mcps/processor-pipeline.server.ts index 925774f04..99867c8b7 100644 --- a/src/mcps/processor-pipeline.server.ts +++ b/src/mcps/processor-pipeline.server.ts @@ -29,7 +29,7 @@ class StrRayProcessorPipelineServer { constructor() { this.server = new Server( { - name: "processor-pipeline", version: "1.15.18", + name: "processor-pipeline", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/researcher.server.ts b/src/mcps/researcher.server.ts index 3282f3278..4a5ce11e5 100644 --- a/src/mcps/researcher.server.ts +++ b/src/mcps/researcher.server.ts @@ -30,7 +30,7 @@ class StrRayLibrarianServer { constructor() { this.server = new Server( { - name: "researcher", version: "1.15.18", + name: "researcher", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/security-scan.server.ts b/src/mcps/security-scan.server.ts index b2c6c16f7..6624cae03 100644 --- a/src/mcps/security-scan.server.ts +++ b/src/mcps/security-scan.server.ts @@ -25,7 +25,7 @@ class StrRaySecurityScanServer { constructor() { this.server = new Server( { - name: "security-scan", version: "1.15.18", + name: "security-scan", version: "1.15.19", }, { capabilities: { diff --git a/src/mcps/state-manager.server.ts b/src/mcps/state-manager.server.ts index 31e3cef23..269ed3007 100644 --- a/src/mcps/state-manager.server.ts +++ b/src/mcps/state-manager.server.ts @@ -23,7 +23,7 @@ class StrRayStateManagerServer { constructor() { this.server = new Server( { - name: "state-manager", version: "1.15.18", + name: "state-manager", version: "1.15.19", }, { capabilities: { diff --git a/src/orchestrator/universal-registry-bridge.ts b/src/orchestrator/universal-registry-bridge.ts index 9dc36568e..e650fe256 100644 --- a/src/orchestrator/universal-registry-bridge.ts +++ b/src/orchestrator/universal-registry-bridge.ts @@ -168,7 +168,7 @@ export class UniversalRegistryBridge { currentAgent = { name: nameMatch[1].trim(), description: "", - version: "1.15.18", + version: "1.15.19", }; inAgent = true; continue; diff --git a/src/plugin/strray-codex-injection.ts b/src/plugin/strray-codex-injection.ts index f9df97b39..54312f612 100644 --- a/src/plugin/strray-codex-injection.ts +++ b/src/plugin/strray-codex-injection.ts @@ -12,7 +12,26 @@ import * as fs from "fs"; import * as path from "path"; import { spawn } from "child_process"; -import { frameworkLogger } from "../core/framework-logger.js"; +// frameworkLogger — dynamically loaded (works from both dist/plugin/ and .opencode/plugins/) +let frameworkLogger: any; + +async function loadFrameworkLogger() { + if (frameworkLogger) return; + const candidates = [ + "../../dist/core/framework-logger.js", + "../core/framework-logger.js", + ]; + for (const p of candidates) { + try { + frameworkLogger = (await import(p)).frameworkLogger; + return; + } catch (_) { + // try next candidate + } + } + // Fallback noop logger — plugin works without structured logging + frameworkLogger = { log: () => {} }; +} // Dynamic imports for config-paths (works from both dist/plugin/ and .opencode/plugins/) let _resolveCodexPath: any; @@ -35,6 +54,7 @@ async function loadConfigPaths() { // try next candidate } } + await loadFrameworkLogger(); frameworkLogger.log("strray-codex-plugin", "config-paths-load-failed", "warning", { warning: "Failed to load config-paths module from any location" }); } @@ -67,6 +87,7 @@ async function importSystemPromptGenerator() { // try next candidate } } + await loadFrameworkLogger(); frameworkLogger.log("strray-codex-plugin", "system-prompt-generator-load-failed", "warning", { warning: "Failed to load lean system prompt generator, using fallback" }); } } diff --git a/src/skills/registry.json b/src/skills/registry.json index 00f30dfcb..13017168a 100644 --- a/src/skills/registry.json +++ b/src/skills/registry.json @@ -1,5 +1,5 @@ { - "version": "1.15.18", + "version": "1.15.19", "description": "StringRay Skills Registry - recommended skill sources for consumers", "sources": [ { diff --git a/strray/codex.json b/strray/codex.json index bfcd69153..977e6c9b5 100644 --- a/strray/codex.json +++ b/strray/codex.json @@ -1,5 +1,5 @@ { - "version": "1.15.18", + "version": "1.15.19", "lastUpdated": "2026-03-09", "errorPreventionTarget": 0.996, "terms": { diff --git a/strray/config.json b/strray/config.json index b1414d925..749fa94f6 100644 --- a/strray/config.json +++ b/strray/config.json @@ -1,6 +1,6 @@ { "$schema": "./config.schema.json", - "version": "1.15.18", + "version": "1.15.19", "description": "StringRay Framework - Token Management & Performance Configuration", "token_management": { "maxPromptTokens": 20000, diff --git a/strray/features.json b/strray/features.json index c4a91dd17..d89691361 100644 --- a/strray/features.json +++ b/strray/features.json @@ -1,6 +1,6 @@ { "$schema": "./features.schema.json", - "version": "1.15.18", + "version": "1.15.19", "description": "StringRay Framework - Unified Feature Configuration", "token_optimization": { "enabled": true, diff --git a/strray/integrations.json b/strray/integrations.json index d1f46d9de..33f1131e7 100644 --- a/strray/integrations.json +++ b/strray/integrations.json @@ -4,19 +4,19 @@ "openclaw": { "enabled": false, "type": "external-service", - "version": "1.15.18", + "version": "1.15.19", "config": {} }, "python-bridge": { "enabled": false, "type": "protocol-bridge", - "version": "1.15.18", + "version": "1.15.19", "config": {} }, "react": { "enabled": false, "type": "framework-adapter", - "version": "1.15.18", + "version": "1.15.19", "config": {} } } diff --git a/tests/config/package.json b/tests/config/package.json index b83bef529..131500f6c 100644 --- a/tests/config/package.json +++ b/tests/config/package.json @@ -1,4 +1,4 @@ { "name": "test-config", - "version": "1.15.18" + "version": "1.15.19" } diff --git a/tweets/tweets-2026-03-10T16-59-41-258Z.json b/tweets/tweets-2026-03-10T16-59-41-258Z.json index 021fad537..59370412a 100644 --- a/tweets/tweets-2026-03-10T16-59-41-258Z.json +++ b/tweets/tweets-2026-03-10T16-59-41-258Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T16-59-41-258Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-00-00-997Z.json b/tweets/tweets-2026-03-10T17-00-00-997Z.json index 50a2d9151..5a107fa45 100644 --- a/tweets/tweets-2026-03-10T17-00-00-997Z.json +++ b/tweets/tweets-2026-03-10T17-00-00-997Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-00-00-997Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-03-37-490Z.json b/tweets/tweets-2026-03-10T17-03-37-490Z.json index 0310a1f74..5e4850be0 100644 --- a/tweets/tweets-2026-03-10T17-03-37-490Z.json +++ b/tweets/tweets-2026-03-10T17-03-37-490Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-03-37-490Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-05-21-229Z.json b/tweets/tweets-2026-03-10T17-05-21-229Z.json index 72fecd60c..1cbcaf63c 100644 --- a/tweets/tweets-2026-03-10T17-05-21-229Z.json +++ b/tweets/tweets-2026-03-10T17-05-21-229Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-05-21-229Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-07-06-807Z.json b/tweets/tweets-2026-03-10T17-07-06-807Z.json index d9b06e93c..158e71640 100644 --- a/tweets/tweets-2026-03-10T17-07-06-807Z.json +++ b/tweets/tweets-2026-03-10T17-07-06-807Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-07-06-807Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-23-41-774Z.json b/tweets/tweets-2026-03-10T17-23-41-774Z.json index daa6c41dd..50c1b74db 100644 --- a/tweets/tweets-2026-03-10T17-23-41-774Z.json +++ b/tweets/tweets-2026-03-10T17-23-41-774Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-23-41-774Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-29-59-962Z.json b/tweets/tweets-2026-03-10T17-29-59-962Z.json index 3ea7eedd1..e56925222 100644 --- a/tweets/tweets-2026-03-10T17-29-59-962Z.json +++ b/tweets/tweets-2026-03-10T17-29-59-962Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-29-59-962Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-30-26-755Z.json b/tweets/tweets-2026-03-10T17-30-26-755Z.json index 2283e8a10..ac5b7c696 100644 --- a/tweets/tweets-2026-03-10T17-30-26-755Z.json +++ b/tweets/tweets-2026-03-10T17-30-26-755Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-30-26-755Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-33-01-728Z.json b/tweets/tweets-2026-03-10T17-33-01-728Z.json index 3023548de..73070d9b6 100644 --- a/tweets/tweets-2026-03-10T17-33-01-728Z.json +++ b/tweets/tweets-2026-03-10T17-33-01-728Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-33-01-728Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5", diff --git a/tweets/tweets-2026-03-10T17-33-52-423Z.json b/tweets/tweets-2026-03-10T17-33-52-423Z.json index e351308b9..28e8b45d4 100644 --- a/tweets/tweets-2026-03-10T17-33-52-423Z.json +++ b/tweets/tweets-2026-03-10T17-33-52-423Z.json @@ -1,6 +1,6 @@ { "generated": "2026-03-10T17-33-52-423Z", - "version": "1.15.18", + "version": "1.15.19", "releases": [ { "version": "v1.7.5",