mstro-app 0.5.0 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +129 -190
- package/PRIVACY.md +11 -11
- package/README.md +75 -28
- package/bin/commands/config.js +1 -2
- package/bin/mstro.js +55 -5
- package/bin/postinstall.js +0 -1
- package/dist/server/cli/eta-estimator.d.ts +55 -0
- package/dist/server/cli/eta-estimator.d.ts.map +1 -0
- package/dist/server/cli/eta-estimator.js +222 -0
- package/dist/server/cli/eta-estimator.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-process.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker-process.js +0 -1
- package/dist/server/cli/headless/claude-invoker-process.js.map +1 -1
- package/dist/server/cli/headless/claude-invoker-stall.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker-stall.js +0 -1
- package/dist/server/cli/headless/claude-invoker-stall.js.map +1 -1
- package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker-stream.js +0 -1
- package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -1
- package/dist/server/cli/headless/claude-invoker-tools.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker-tools.js +0 -1
- package/dist/server/cli/headless/claude-invoker-tools.js.map +1 -1
- package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +0 -1
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/haiku-assessments.d.ts.map +1 -1
- package/dist/server/cli/headless/haiku-assessments.js +0 -1
- package/dist/server/cli/headless/haiku-assessments.js.map +1 -1
- package/dist/server/cli/headless/headless-logger.d.ts.map +1 -1
- package/dist/server/cli/headless/headless-logger.js +0 -1
- package/dist/server/cli/headless/headless-logger.js.map +1 -1
- package/dist/server/cli/headless/index.d.ts.map +1 -1
- package/dist/server/cli/headless/index.js +0 -1
- package/dist/server/cli/headless/index.js.map +1 -1
- package/dist/server/cli/headless/native-timeout-detector.d.ts.map +1 -1
- package/dist/server/cli/headless/native-timeout-detector.js +0 -1
- package/dist/server/cli/headless/native-timeout-detector.js.map +1 -1
- package/dist/server/cli/headless/output-utils.d.ts.map +1 -1
- package/dist/server/cli/headless/output-utils.js +0 -1
- package/dist/server/cli/headless/output-utils.js.map +1 -1
- package/dist/server/cli/headless/prompt-utils.d.ts.map +1 -1
- package/dist/server/cli/headless/prompt-utils.js +0 -1
- package/dist/server/cli/headless/prompt-utils.js.map +1 -1
- package/dist/server/cli/headless/resilient-runner.d.ts.map +1 -1
- package/dist/server/cli/headless/resilient-runner.js +0 -1
- package/dist/server/cli/headless/resilient-runner.js.map +1 -1
- package/dist/server/cli/headless/retry-strategies.d.ts.map +1 -1
- package/dist/server/cli/headless/retry-strategies.js +0 -1
- package/dist/server/cli/headless/retry-strategies.js.map +1 -1
- package/dist/server/cli/headless/runner.d.ts.map +1 -1
- package/dist/server/cli/headless/runner.js +0 -1
- package/dist/server/cli/headless/runner.js.map +1 -1
- package/dist/server/cli/headless/stall-assessor.d.ts +50 -0
- package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
- package/dist/server/cli/headless/stall-assessor.js +64 -10
- package/dist/server/cli/headless/stall-assessor.js.map +1 -1
- package/dist/server/cli/headless/tool-watchdog.d.ts +21 -0
- package/dist/server/cli/headless/tool-watchdog.d.ts.map +1 -1
- package/dist/server/cli/headless/tool-watchdog.js +19 -13
- package/dist/server/cli/headless/tool-watchdog.js.map +1 -1
- package/dist/server/cli/headless/types.d.ts.map +1 -1
- package/dist/server/cli/headless/types.js +0 -1
- package/dist/server/cli/headless/types.js.map +1 -1
- package/dist/server/cli/improvisation-attachments.d.ts.map +1 -1
- package/dist/server/cli/improvisation-attachments.js +0 -1
- package/dist/server/cli/improvisation-attachments.js.map +1 -1
- package/dist/server/cli/improvisation-history-store.d.ts.map +1 -1
- package/dist/server/cli/improvisation-history-store.js +5 -2
- package/dist/server/cli/improvisation-history-store.js.map +1 -1
- package/dist/server/cli/improvisation-movements.d.ts.map +1 -1
- package/dist/server/cli/improvisation-movements.js +0 -1
- package/dist/server/cli/improvisation-movements.js.map +1 -1
- package/dist/server/cli/improvisation-output-queue.d.ts +5 -1
- package/dist/server/cli/improvisation-output-queue.d.ts.map +1 -1
- package/dist/server/cli/improvisation-output-queue.js +30 -8
- package/dist/server/cli/improvisation-output-queue.js.map +1 -1
- package/dist/server/cli/improvisation-retry.d.ts.map +1 -1
- package/dist/server/cli/improvisation-retry.js +0 -1
- package/dist/server/cli/improvisation-retry.js.map +1 -1
- package/dist/server/cli/improvisation-session-manager.d.ts +29 -0
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +50 -2
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/cli/improvisation-types.d.ts +2 -0
- package/dist/server/cli/improvisation-types.d.ts.map +1 -1
- package/dist/server/cli/improvisation-types.js +0 -1
- package/dist/server/cli/improvisation-types.js.map +1 -1
- package/dist/server/cli/retry/retry-best-result.d.ts.map +1 -1
- package/dist/server/cli/retry/retry-best-result.js +0 -1
- package/dist/server/cli/retry/retry-best-result.js.map +1 -1
- package/dist/server/cli/retry/retry-context-loss.d.ts.map +1 -1
- package/dist/server/cli/retry/retry-context-loss.js +0 -1
- package/dist/server/cli/retry/retry-context-loss.js.map +1 -1
- package/dist/server/cli/retry/retry-premature-completion.d.ts.map +1 -1
- package/dist/server/cli/retry/retry-premature-completion.js +1 -2
- package/dist/server/cli/retry/retry-premature-completion.js.map +1 -1
- package/dist/server/cli/retry/retry-recovery-strategies.d.ts.map +1 -1
- package/dist/server/cli/retry/retry-recovery-strategies.js +0 -1
- package/dist/server/cli/retry/retry-recovery-strategies.js.map +1 -1
- package/dist/server/cli/retry/retry-resume-strategy.d.ts.map +1 -1
- package/dist/server/cli/retry/retry-resume-strategy.js +0 -1
- package/dist/server/cli/retry/retry-resume-strategy.js.map +1 -1
- package/dist/server/cli/retry/retry-runner-factory.d.ts.map +1 -1
- package/dist/server/cli/retry/retry-runner-factory.js +0 -1
- package/dist/server/cli/retry/retry-runner-factory.js.map +1 -1
- package/dist/server/cli/retry/retry-tool-results.d.ts.map +1 -1
- package/dist/server/cli/retry/retry-tool-results.js +0 -1
- package/dist/server/cli/retry/retry-tool-results.js.map +1 -1
- package/dist/server/cli/retry/retry-types.d.ts.map +1 -1
- package/dist/server/cli/retry/retry-types.js +0 -1
- package/dist/server/cli/retry/retry-types.js.map +1 -1
- package/dist/server/engines/EngineEvent.d.ts +126 -0
- package/dist/server/engines/EngineEvent.d.ts.map +1 -0
- package/dist/server/engines/EngineEvent.js +11 -0
- package/dist/server/engines/EngineEvent.js.map +1 -0
- package/dist/server/engines/claude/ClaudeCodeEngine.d.ts +47 -0
- package/dist/server/engines/claude/ClaudeCodeEngine.d.ts.map +1 -0
- package/dist/server/engines/claude/ClaudeCodeEngine.js +338 -0
- package/dist/server/engines/claude/ClaudeCodeEngine.js.map +1 -0
- package/dist/server/engines/factory.d.ts +21 -0
- package/dist/server/engines/factory.d.ts.map +1 -0
- package/dist/server/engines/factory.js +152 -0
- package/dist/server/engines/factory.js.map +1 -0
- package/dist/server/engines/opencode/OpenCodeEngine.d.ts +148 -0
- package/dist/server/engines/opencode/OpenCodeEngine.d.ts.map +1 -0
- package/dist/server/engines/opencode/OpenCodeEngine.js +630 -0
- package/dist/server/engines/opencode/OpenCodeEngine.js.map +1 -0
- package/dist/server/engines/opencode/OpenCodeServerManager.d.ts +172 -0
- package/dist/server/engines/opencode/OpenCodeServerManager.d.ts.map +1 -0
- package/dist/server/engines/opencode/OpenCodeServerManager.js +390 -0
- package/dist/server/engines/opencode/OpenCodeServerManager.js.map +1 -0
- package/dist/server/engines/opencode/model-catalog.d.ts +94 -0
- package/dist/server/engines/opencode/model-catalog.d.ts.map +1 -0
- package/dist/server/engines/opencode/model-catalog.js +141 -0
- package/dist/server/engines/opencode/model-catalog.js.map +1 -0
- package/dist/server/engines/types.d.ts +146 -0
- package/dist/server/engines/types.d.ts.map +1 -0
- package/dist/server/engines/types.js +4 -0
- package/dist/server/engines/types.js.map +1 -0
- package/dist/server/index.js +1 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/bouncer-cli.js +0 -1
- package/dist/server/mcp/bouncer-cli.js.map +1 -1
- package/dist/server/mcp/bouncer-haiku.d.ts +17 -4
- package/dist/server/mcp/bouncer-haiku.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-haiku.js +8 -125
- package/dist/server/mcp/bouncer-haiku.js.map +1 -1
- package/dist/server/mcp/bouncer-integration.d.ts +45 -0
- package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-integration.js +69 -6
- package/dist/server/mcp/bouncer-integration.js.map +1 -1
- package/dist/server/mcp/classifier/BouncerClassifier.d.ts +34 -0
- package/dist/server/mcp/classifier/BouncerClassifier.d.ts.map +1 -0
- package/dist/server/mcp/classifier/BouncerClassifier.js +4 -0
- package/dist/server/mcp/classifier/BouncerClassifier.js.map +1 -0
- package/dist/server/mcp/classifier/ClaudeBouncerClassifier.d.ts +17 -0
- package/dist/server/mcp/classifier/ClaudeBouncerClassifier.d.ts.map +1 -0
- package/dist/server/mcp/classifier/ClaudeBouncerClassifier.js +142 -0
- package/dist/server/mcp/classifier/ClaudeBouncerClassifier.js.map +1 -0
- package/dist/server/mcp/classifier/OpenCodeBouncerClassifier.d.ts +68 -0
- package/dist/server/mcp/classifier/OpenCodeBouncerClassifier.d.ts.map +1 -0
- package/dist/server/mcp/classifier/OpenCodeBouncerClassifier.js +182 -0
- package/dist/server/mcp/classifier/OpenCodeBouncerClassifier.js.map +1 -0
- package/dist/server/mcp/classifier/factory.d.ts +70 -0
- package/dist/server/mcp/classifier/factory.d.ts.map +1 -0
- package/dist/server/mcp/classifier/factory.js +155 -0
- package/dist/server/mcp/classifier/factory.js.map +1 -0
- package/dist/server/mcp/security-analysis.d.ts.map +1 -1
- package/dist/server/mcp/security-analysis.js +0 -1
- package/dist/server/mcp/security-analysis.js.map +1 -1
- package/dist/server/mcp/security-audit.d.ts.map +1 -1
- package/dist/server/mcp/security-audit.js +0 -1
- package/dist/server/mcp/security-audit.js.map +1 -1
- package/dist/server/mcp/security-patterns.d.ts.map +1 -1
- package/dist/server/mcp/security-patterns.js +0 -1
- package/dist/server/mcp/security-patterns.js.map +1 -1
- package/dist/server/mcp/server.js +0 -1
- package/dist/server/mcp/server.js.map +1 -1
- package/dist/server/routes/files.d.ts.map +1 -1
- package/dist/server/routes/files.js +0 -1
- package/dist/server/routes/files.js.map +1 -1
- package/dist/server/routes/improvise.d.ts.map +1 -1
- package/dist/server/routes/improvise.js +0 -1
- package/dist/server/routes/improvise.js.map +1 -1
- package/dist/server/routes/index.d.ts.map +1 -1
- package/dist/server/routes/index.js +0 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/instances.d.ts.map +1 -1
- package/dist/server/routes/instances.js +0 -1
- package/dist/server/routes/instances.js.map +1 -1
- package/dist/server/routes/notifications.d.ts.map +1 -1
- package/dist/server/routes/notifications.js +0 -1
- package/dist/server/routes/notifications.js.map +1 -1
- package/dist/server/server-setup.d.ts.map +1 -1
- package/dist/server/server-setup.js +0 -1
- package/dist/server/server-setup.js.map +1 -1
- package/dist/server/services/analytics.d.ts.map +1 -1
- package/dist/server/services/analytics.js +0 -1
- package/dist/server/services/analytics.js.map +1 -1
- package/dist/server/services/auth.d.ts.map +1 -1
- package/dist/server/services/auth.js +0 -1
- package/dist/server/services/auth.js.map +1 -1
- package/dist/server/services/client-id.d.ts.map +1 -1
- package/dist/server/services/client-id.js +0 -1
- package/dist/server/services/client-id.js.map +1 -1
- package/dist/server/services/file-explorer-ops.d.ts.map +1 -1
- package/dist/server/services/file-explorer-ops.js +0 -1
- package/dist/server/services/file-explorer-ops.js.map +1 -1
- package/dist/server/services/files.d.ts.map +1 -1
- package/dist/server/services/files.js +0 -1
- package/dist/server/services/files.js.map +1 -1
- package/dist/server/services/instances.d.ts.map +1 -1
- package/dist/server/services/instances.js +0 -1
- package/dist/server/services/instances.js.map +1 -1
- package/dist/server/services/pathUtils.d.ts.map +1 -1
- package/dist/server/services/pathUtils.js +0 -1
- package/dist/server/services/pathUtils.js.map +1 -1
- package/dist/server/services/plan/agent-loader.d.ts.map +1 -1
- package/dist/server/services/plan/agent-loader.js +0 -1
- package/dist/server/services/plan/agent-loader.js.map +1 -1
- package/dist/server/services/plan/agent-resolver.d.ts +26 -0
- package/dist/server/services/plan/agent-resolver.d.ts.map +1 -0
- package/dist/server/services/plan/agent-resolver.js +102 -0
- package/dist/server/services/plan/agent-resolver.js.map +1 -0
- package/dist/server/services/plan/board-config.d.ts.map +1 -1
- package/dist/server/services/plan/board-config.js +0 -1
- package/dist/server/services/plan/board-config.js.map +1 -1
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +59 -12
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/config-installer.d.ts.map +1 -1
- package/dist/server/services/plan/config-installer.js +0 -1
- package/dist/server/services/plan/config-installer.js.map +1 -1
- package/dist/server/services/plan/dependency-resolver.d.ts.map +1 -1
- package/dist/server/services/plan/dependency-resolver.js +0 -1
- package/dist/server/services/plan/dependency-resolver.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +48 -4
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/front-matter.d.ts.map +1 -1
- package/dist/server/services/plan/front-matter.js +0 -1
- package/dist/server/services/plan/front-matter.js.map +1 -1
- package/dist/server/services/plan/issue-classification.d.ts.map +1 -1
- package/dist/server/services/plan/issue-classification.js +0 -1
- package/dist/server/services/plan/issue-classification.js.map +1 -1
- package/dist/server/services/plan/issue-loader.d.ts.map +1 -1
- package/dist/server/services/plan/issue-loader.js +0 -1
- package/dist/server/services/plan/issue-loader.js.map +1 -1
- package/dist/server/services/plan/issue-prompt-builder.d.ts.map +1 -1
- package/dist/server/services/plan/issue-prompt-builder.js +33 -2
- package/dist/server/services/plan/issue-prompt-builder.js.map +1 -1
- package/dist/server/services/plan/issue-retry.d.ts +3 -1
- package/dist/server/services/plan/issue-retry.d.ts.map +1 -1
- package/dist/server/services/plan/issue-retry.js +2 -1
- package/dist/server/services/plan/issue-retry.js.map +1 -1
- package/dist/server/services/plan/issue-writer.d.ts.map +1 -1
- package/dist/server/services/plan/issue-writer.js +0 -1
- package/dist/server/services/plan/issue-writer.js.map +1 -1
- package/dist/server/services/plan/output-manager.d.ts.map +1 -1
- package/dist/server/services/plan/output-manager.js +0 -1
- package/dist/server/services/plan/output-manager.js.map +1 -1
- package/dist/server/services/plan/parser-core.d.ts.map +1 -1
- package/dist/server/services/plan/parser-core.js +1 -1
- package/dist/server/services/plan/parser-core.js.map +1 -1
- package/dist/server/services/plan/parser-migration.d.ts.map +1 -1
- package/dist/server/services/plan/parser-migration.js +0 -1
- package/dist/server/services/plan/parser-migration.js.map +1 -1
- package/dist/server/services/plan/parser.d.ts.map +1 -1
- package/dist/server/services/plan/parser.js +0 -1
- package/dist/server/services/plan/parser.js.map +1 -1
- package/dist/server/services/plan/progress-log.d.ts.map +1 -1
- package/dist/server/services/plan/progress-log.js +0 -1
- package/dist/server/services/plan/progress-log.js.map +1 -1
- package/dist/server/services/plan/prompt-builder.d.ts.map +1 -1
- package/dist/server/services/plan/prompt-builder.js +0 -1
- package/dist/server/services/plan/prompt-builder.js.map +1 -1
- package/dist/server/services/plan/readiness-planner.d.ts.map +1 -1
- package/dist/server/services/plan/readiness-planner.js +0 -1
- package/dist/server/services/plan/readiness-planner.js.map +1 -1
- package/dist/server/services/plan/review-gate.d.ts.map +1 -1
- package/dist/server/services/plan/review-gate.js +0 -1
- package/dist/server/services/plan/review-gate.js.map +1 -1
- package/dist/server/services/plan/state-reconciler.d.ts.map +1 -1
- package/dist/server/services/plan/state-reconciler.js +0 -1
- package/dist/server/services/plan/state-reconciler.js.map +1 -1
- package/dist/server/services/plan/types.d.ts +1 -0
- package/dist/server/services/plan/types.d.ts.map +1 -1
- package/dist/server/services/plan/types.js +0 -1
- package/dist/server/services/plan/types.js.map +1 -1
- package/dist/server/services/plan/watcher.d.ts.map +1 -1
- package/dist/server/services/plan/watcher.js +0 -1
- package/dist/server/services/plan/watcher.js.map +1 -1
- package/dist/server/services/platform-credentials.d.ts.map +1 -1
- package/dist/server/services/platform-credentials.js +0 -1
- package/dist/server/services/platform-credentials.js.map +1 -1
- package/dist/server/services/platform-token-lifecycle.d.ts +70 -0
- package/dist/server/services/platform-token-lifecycle.d.ts.map +1 -0
- package/dist/server/services/platform-token-lifecycle.js +156 -0
- package/dist/server/services/platform-token-lifecycle.js.map +1 -0
- package/dist/server/services/platform.d.ts +21 -56
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +98 -142
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/sentry.d.ts.map +1 -1
- package/dist/server/services/sentry.js +0 -1
- package/dist/server/services/sentry.js.map +1 -1
- package/dist/server/services/settings.d.ts +76 -2
- package/dist/server/services/settings.d.ts.map +1 -1
- package/dist/server/services/settings.js +127 -5
- package/dist/server/services/settings.js.map +1 -1
- package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
- package/dist/server/services/terminal/pty-manager.js +0 -1
- package/dist/server/services/terminal/pty-manager.js.map +1 -1
- package/dist/server/services/terminal/pty-utils.d.ts.map +1 -1
- package/dist/server/services/terminal/pty-utils.js +0 -1
- package/dist/server/services/terminal/pty-utils.js.map +1 -1
- package/dist/server/services/websocket/autocomplete.d.ts.map +1 -1
- package/dist/server/services/websocket/autocomplete.js +0 -1
- package/dist/server/services/websocket/autocomplete.js.map +1 -1
- package/dist/server/services/websocket/file-definition-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-definition-handlers.js +0 -1
- package/dist/server/services/websocket/file-definition-handlers.js.map +1 -1
- package/dist/server/services/websocket/file-download-handler.d.ts.map +1 -1
- package/dist/server/services/websocket/file-download-handler.js +0 -1
- package/dist/server/services/websocket/file-download-handler.js.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.js +0 -1
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
- package/dist/server/services/websocket/file-search-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-search-handlers.js +0 -1
- package/dist/server/services/websocket/file-search-handlers.js.map +1 -1
- package/dist/server/services/websocket/file-upload-handler.d.ts +2 -3
- package/dist/server/services/websocket/file-upload-handler.d.ts.map +1 -1
- package/dist/server/services/websocket/file-upload-handler.js +4 -7
- package/dist/server/services/websocket/file-upload-handler.js.map +1 -1
- package/dist/server/services/websocket/file-utils.d.ts.map +1 -1
- package/dist/server/services/websocket/file-utils.js +0 -1
- package/dist/server/services/websocket/file-utils.js.map +1 -1
- package/dist/server/services/websocket/git-branch-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-branch-handlers.js +19 -7
- package/dist/server/services/websocket/git-branch-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-diff-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-diff-handlers.js +0 -1
- package/dist/server/services/websocket/git-diff-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-handlers.js +58 -6
- package/dist/server/services/websocket/git-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-head-watcher.d.ts.map +1 -1
- package/dist/server/services/websocket/git-head-watcher.js +0 -1
- package/dist/server/services/websocket/git-head-watcher.js.map +1 -1
- package/dist/server/services/websocket/git-log-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-log-handlers.js +0 -1
- package/dist/server/services/websocket/git-log-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-pr-handlers.js +0 -1
- package/dist/server/services/websocket/git-pr-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-tag-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-tag-handlers.js +0 -1
- package/dist/server/services/websocket/git-tag-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-utils.d.ts +18 -3
- package/dist/server/services/websocket/git-utils.d.ts.map +1 -1
- package/dist/server/services/websocket/git-utils.js +58 -8
- package/dist/server/services/websocket/git-utils.js.map +1 -1
- package/dist/server/services/websocket/git-worktree-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-worktree-handlers.js +230 -14
- package/dist/server/services/websocket/git-worktree-handlers.js.map +1 -1
- package/dist/server/services/websocket/handler-context.d.ts.map +1 -1
- package/dist/server/services/websocket/handler-context.js +0 -1
- package/dist/server/services/websocket/handler-context.js.map +1 -1
- package/dist/server/services/websocket/handler.d.ts +17 -1
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +57 -6
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/index.d.ts.map +1 -1
- package/dist/server/services/websocket/index.js +0 -1
- package/dist/server/services/websocket/index.js.map +1 -1
- package/dist/server/services/websocket/msg-id-tracker.d.ts.map +1 -1
- package/dist/server/services/websocket/msg-id-tracker.js +0 -1
- package/dist/server/services/websocket/msg-id-tracker.js.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.js +0 -1
- package/dist/server/services/websocket/plan-board-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-execution-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-execution-handlers.js +6 -2
- package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-handlers.js +0 -1
- package/dist/server/services/websocket/plan-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-helpers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-helpers.js +0 -1
- package/dist/server/services/websocket/plan-helpers.js.map +1 -1
- package/dist/server/services/websocket/plan-issue-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-issue-handlers.js +0 -1
- package/dist/server/services/websocket/plan-issue-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-sprint-handlers.js +0 -1
- package/dist/server/services/websocket/plan-sprint-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-complexity.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-complexity.js +78 -27
- package/dist/server/services/websocket/quality-complexity.js.map +1 -1
- package/dist/server/services/websocket/quality-eta.d.ts +47 -0
- package/dist/server/services/websocket/quality-eta.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-eta.js +110 -0
- package/dist/server/services/websocket/quality-eta.js.map +1 -0
- package/dist/server/services/websocket/quality-grading.d.ts +69 -0
- package/dist/server/services/websocket/quality-grading.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-grading.js +650 -0
- package/dist/server/services/websocket/quality-grading.js.map +1 -0
- package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-handlers.js +145 -8
- package/dist/server/services/websocket/quality-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-linting.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-linting.js +0 -1
- package/dist/server/services/websocket/quality-linting.js.map +1 -1
- package/dist/server/services/websocket/quality-operations.d.ts +34 -0
- package/dist/server/services/websocket/quality-operations.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-operations.js +47 -0
- package/dist/server/services/websocket/quality-operations.js.map +1 -0
- package/dist/server/services/websocket/quality-persistence.d.ts +23 -0
- package/dist/server/services/websocket/quality-persistence.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-persistence.js +38 -12
- package/dist/server/services/websocket/quality-persistence.js.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.d.ts +1 -1
- package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.js +105 -57
- package/dist/server/services/websocket/quality-review-agent.js.map +1 -1
- package/dist/server/services/websocket/quality-service.d.ts +12 -2
- package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-service.js +387 -72
- package/dist/server/services/websocket/quality-service.js.map +1 -1
- package/dist/server/services/websocket/quality-tools.d.ts +22 -1
- package/dist/server/services/websocket/quality-tools.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-tools.js +55 -3
- package/dist/server/services/websocket/quality-tools.js.map +1 -1
- package/dist/server/services/websocket/quality-types.d.ts +52 -3
- package/dist/server/services/websocket/quality-types.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-types.js +1 -2
- package/dist/server/services/websocket/quality-types.js.map +1 -1
- package/dist/server/services/websocket/session-handlers.d.ts +3 -1
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +57 -10
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/dist/server/services/websocket/session-history.d.ts.map +1 -1
- package/dist/server/services/websocket/session-history.js +3 -1
- package/dist/server/services/websocket/session-history.js.map +1 -1
- package/dist/server/services/websocket/session-initialization.d.ts.map +1 -1
- package/dist/server/services/websocket/session-initialization.js +158 -43
- package/dist/server/services/websocket/session-initialization.js.map +1 -1
- package/dist/server/services/websocket/session-registry.d.ts +25 -0
- package/dist/server/services/websocket/session-registry.d.ts.map +1 -1
- package/dist/server/services/websocket/session-registry.js +19 -1
- package/dist/server/services/websocket/session-registry.js.map +1 -1
- package/dist/server/services/websocket/settings-handlers.d.ts +1 -1
- package/dist/server/services/websocket/settings-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/settings-handlers.js +35 -5
- package/dist/server/services/websocket/settings-handlers.js.map +1 -1
- package/dist/server/services/websocket/skill-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/skill-handlers.js +0 -1
- package/dist/server/services/websocket/skill-handlers.js.map +1 -1
- package/dist/server/services/websocket/skill-watcher.d.ts.map +1 -1
- package/dist/server/services/websocket/skill-watcher.js +0 -1
- package/dist/server/services/websocket/skill-watcher.js.map +1 -1
- package/dist/server/services/websocket/tab-broadcast.d.ts +7 -2
- package/dist/server/services/websocket/tab-broadcast.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-broadcast.js +10 -3
- package/dist/server/services/websocket/tab-broadcast.js.map +1 -1
- package/dist/server/services/websocket/tab-event-buffer.d.ts +97 -8
- package/dist/server/services/websocket/tab-event-buffer.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-event-buffer.js +138 -13
- package/dist/server/services/websocket/tab-event-buffer.js.map +1 -1
- package/dist/server/services/websocket/tab-event-replay.d.ts +29 -13
- package/dist/server/services/websocket/tab-event-replay.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-event-replay.js +55 -3
- package/dist/server/services/websocket/tab-event-replay.js.map +1 -1
- package/dist/server/services/websocket/tab-handlers.d.ts +9 -1
- package/dist/server/services/websocket/tab-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-handlers.js +47 -3
- package/dist/server/services/websocket/tab-handlers.js.map +1 -1
- package/dist/server/services/websocket/terminal-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/terminal-handlers.js +39 -4
- package/dist/server/services/websocket/terminal-handlers.js.map +1 -1
- package/dist/server/services/websocket/types.d.ts +30 -7
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/dist/server/services/websocket/types.js +12 -7
- package/dist/server/services/websocket/types.js.map +1 -1
- package/dist/server/utils/agent-manager.d.ts.map +1 -1
- package/dist/server/utils/agent-manager.js +0 -1
- package/dist/server/utils/agent-manager.js.map +1 -1
- package/dist/server/utils/paths.d.ts.map +1 -1
- package/dist/server/utils/paths.js +0 -1
- package/dist/server/utils/paths.js.map +1 -1
- package/dist/server/utils/port-manager.d.ts.map +1 -1
- package/dist/server/utils/port-manager.js +0 -1
- package/dist/server/utils/port-manager.js.map +1 -1
- package/dist/server/utils/port.d.ts.map +1 -1
- package/dist/server/utils/port.js +0 -1
- package/dist/server/utils/port.js.map +1 -1
- package/package.json +6 -4
- package/server/cli/eta-estimator.ts +249 -0
- package/server/cli/headless/claude-invoker-process.ts +0 -1
- package/server/cli/headless/claude-invoker-stall.ts +0 -1
- package/server/cli/headless/claude-invoker-stream.ts +0 -1
- package/server/cli/headless/claude-invoker-tools.ts +0 -1
- package/server/cli/headless/claude-invoker.ts +0 -1
- package/server/cli/headless/haiku-assessments.ts +0 -1
- package/server/cli/headless/headless-logger.ts +0 -1
- package/server/cli/headless/index.ts +0 -1
- package/server/cli/headless/native-timeout-detector.ts +0 -1
- package/server/cli/headless/output-utils.ts +0 -1
- package/server/cli/headless/prompt-utils.ts +0 -1
- package/server/cli/headless/resilient-runner.ts +0 -1
- package/server/cli/headless/retry-strategies.ts +0 -1
- package/server/cli/headless/runner.ts +0 -1
- package/server/cli/headless/stall-assessor.ts +93 -1
- package/server/cli/headless/tool-watchdog.ts +21 -1
- package/server/cli/headless/types.ts +0 -1
- package/server/cli/improvisation-attachments.ts +0 -1
- package/server/cli/improvisation-history-store.ts +4 -2
- package/server/cli/improvisation-movements.ts +0 -1
- package/server/cli/improvisation-output-queue.ts +29 -8
- package/server/cli/improvisation-retry.ts +0 -1
- package/server/cli/improvisation-session-manager.ts +54 -2
- package/server/cli/improvisation-types.ts +2 -1
- package/server/cli/retry/retry-best-result.ts +0 -1
- package/server/cli/retry/retry-context-loss.ts +0 -1
- package/server/cli/retry/retry-premature-completion.ts +1 -2
- package/server/cli/retry/retry-recovery-strategies.ts +0 -1
- package/server/cli/retry/retry-resume-strategy.ts +0 -1
- package/server/cli/retry/retry-runner-factory.ts +0 -1
- package/server/cli/retry/retry-tool-results.ts +0 -1
- package/server/cli/retry/retry-types.ts +0 -1
- package/server/engines/EngineEvent.ts +156 -0
- package/server/engines/claude/ClaudeCodeEngine.ts +404 -0
- package/server/engines/factory.ts +176 -0
- package/server/engines/opencode/OpenCodeEngine.ts +786 -0
- package/server/engines/opencode/OpenCodeServerManager.ts +577 -0
- package/server/engines/opencode/model-catalog.ts +217 -0
- package/server/engines/types.ts +173 -0
- package/server/index.ts +1 -2
- package/server/mcp/bouncer-cli.ts +0 -1
- package/server/mcp/bouncer-haiku.ts +21 -146
- package/server/mcp/bouncer-integration.ts +107 -6
- package/server/mcp/classifier/BouncerClassifier.ts +40 -0
- package/server/mcp/classifier/ClaudeBouncerClassifier.ts +189 -0
- package/server/mcp/classifier/OpenCodeBouncerClassifier.ts +305 -0
- package/server/mcp/classifier/factory.ts +195 -0
- package/server/mcp/security-analysis.ts +0 -1
- package/server/mcp/security-audit.ts +0 -1
- package/server/mcp/security-patterns.ts +0 -1
- package/server/mcp/server.ts +0 -1
- package/server/routes/files.ts +0 -1
- package/server/routes/improvise.ts +0 -1
- package/server/routes/index.ts +0 -1
- package/server/routes/instances.ts +0 -1
- package/server/routes/notifications.ts +0 -1
- package/server/server-setup.ts +0 -1
- package/server/services/analytics.ts +0 -1
- package/server/services/auth.ts +0 -1
- package/server/services/client-id.ts +0 -1
- package/server/services/file-explorer-ops.ts +0 -1
- package/server/services/files.ts +0 -1
- package/server/services/instances.ts +0 -1
- package/server/services/pathUtils.ts +0 -1
- package/server/services/plan/agent-loader.ts +0 -1
- package/server/services/plan/agent-resolver.ts +115 -0
- package/server/services/plan/agents/code-review.md +43 -11
- package/server/services/plan/board-config.ts +0 -1
- package/server/services/plan/composer.ts +63 -12
- package/server/services/plan/config-installer.ts +0 -1
- package/server/services/plan/dependency-resolver.ts +0 -1
- package/server/services/plan/executor.ts +48 -4
- package/server/services/plan/front-matter.ts +0 -1
- package/server/services/plan/issue-classification.ts +0 -1
- package/server/services/plan/issue-loader.ts +0 -1
- package/server/services/plan/issue-prompt-builder.ts +39 -2
- package/server/services/plan/issue-retry.ts +5 -2
- package/server/services/plan/issue-writer.ts +0 -1
- package/server/services/plan/output-manager.ts +0 -1
- package/server/services/plan/parser-core.ts +1 -1
- package/server/services/plan/parser-migration.ts +0 -1
- package/server/services/plan/parser.ts +0 -1
- package/server/services/plan/progress-log.ts +0 -1
- package/server/services/plan/prompt-builder.ts +0 -1
- package/server/services/plan/readiness-planner.ts +0 -1
- package/server/services/plan/review-gate.ts +0 -1
- package/server/services/plan/state-reconciler.ts +0 -1
- package/server/services/plan/types.ts +4 -1
- package/server/services/plan/watcher.ts +0 -1
- package/server/services/platform-credentials.ts +0 -1
- package/server/services/platform-token-lifecycle.ts +171 -0
- package/server/services/platform.ts +106 -148
- package/server/services/sentry.ts +0 -1
- package/server/services/settings.ts +161 -5
- package/server/services/terminal/pty-manager.ts +0 -1
- package/server/services/terminal/pty-utils.ts +0 -1
- package/server/services/websocket/autocomplete.ts +0 -1
- package/server/services/websocket/file-definition-handlers.ts +0 -1
- package/server/services/websocket/file-download-handler.ts +0 -1
- package/server/services/websocket/file-explorer-handlers.ts +0 -1
- package/server/services/websocket/file-search-handlers.ts +0 -1
- package/server/services/websocket/file-upload-handler.ts +6 -5
- package/server/services/websocket/file-utils.ts +0 -1
- package/server/services/websocket/git-branch-handlers.ts +20 -7
- package/server/services/websocket/git-diff-handlers.ts +0 -1
- package/server/services/websocket/git-handlers.ts +66 -10
- package/server/services/websocket/git-head-watcher.ts +0 -1
- package/server/services/websocket/git-log-handlers.ts +0 -1
- package/server/services/websocket/git-pr-handlers.ts +0 -1
- package/server/services/websocket/git-tag-handlers.ts +0 -1
- package/server/services/websocket/git-utils.ts +69 -9
- package/server/services/websocket/git-worktree-handlers.ts +260 -17
- package/server/services/websocket/handler-context.ts +0 -1
- package/server/services/websocket/handler.ts +62 -6
- package/server/services/websocket/index.ts +0 -1
- package/server/services/websocket/msg-id-tracker.ts +0 -1
- package/server/services/websocket/plan-board-handlers.ts +0 -1
- package/server/services/websocket/plan-execution-handlers.ts +6 -2
- package/server/services/websocket/plan-handlers.ts +0 -1
- package/server/services/websocket/plan-helpers.ts +0 -1
- package/server/services/websocket/plan-issue-handlers.ts +0 -1
- package/server/services/websocket/plan-sprint-handlers.ts +0 -1
- package/server/services/websocket/quality-complexity.ts +80 -27
- package/server/services/websocket/quality-eta.ts +155 -0
- package/server/services/websocket/quality-grading.ts +834 -0
- package/server/services/websocket/quality-handlers.ts +153 -8
- package/server/services/websocket/quality-linting.ts +0 -1
- package/server/services/websocket/quality-operations.ts +72 -0
- package/server/services/websocket/quality-persistence.ts +47 -8
- package/server/services/websocket/quality-review-agent.ts +154 -65
- package/server/services/websocket/quality-service.ts +415 -68
- package/server/services/websocket/quality-tools.ts +62 -3
- package/server/services/websocket/quality-types.ts +61 -4
- package/server/services/websocket/session-handlers.ts +64 -11
- package/server/services/websocket/session-history.ts +3 -1
- package/server/services/websocket/session-initialization.ts +189 -47
- package/server/services/websocket/session-registry.ts +37 -1
- package/server/services/websocket/settings-handlers.ts +41 -5
- package/server/services/websocket/skill-handlers.ts +0 -1
- package/server/services/websocket/skill-watcher.ts +0 -1
- package/server/services/websocket/tab-broadcast.ts +10 -3
- package/server/services/websocket/tab-event-buffer.ts +143 -12
- package/server/services/websocket/tab-event-replay.ts +70 -4
- package/server/services/websocket/tab-handlers.ts +53 -6
- package/server/services/websocket/terminal-handlers.ts +39 -3
- package/server/services/websocket/types.ts +39 -8
- package/server/utils/agent-manager.ts +0 -1
- package/server/utils/paths.ts +0 -1
- package/server/utils/port-manager.ts +0 -1
- package/server/utils/port.ts +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
|
-
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
2
|
/**
|
|
4
3
|
* Platform Connection Service
|
|
5
4
|
*
|
|
@@ -12,7 +11,8 @@ import { arch, hostname, type } from 'node:os';
|
|
|
12
11
|
import { basename } from 'node:path';
|
|
13
12
|
import { AnalyticsEvents, trackEvent } from './analytics.js';
|
|
14
13
|
import { getClientId } from './client-id.js';
|
|
15
|
-
import { CLI_VERSION, getCredentials
|
|
14
|
+
import { CLI_VERSION, getCredentials } from './platform-credentials.js';
|
|
15
|
+
import { TokenLifecycle } from './platform-token-lifecycle.js';
|
|
16
16
|
import { captureException } from './sentry.js';
|
|
17
17
|
/**
|
|
18
18
|
* Get machine identification string
|
|
@@ -41,6 +41,25 @@ else {
|
|
|
41
41
|
}
|
|
42
42
|
// PLATFORM_URL is set via --server / --dev flag in mstro.js
|
|
43
43
|
const DEFAULT_PLATFORM_URL = process.env.PLATFORM_URL || 'https://api.mstro.app';
|
|
44
|
+
/**
|
|
45
|
+
* Relay wire-format version this CLI speaks. Bumped by the server when the
|
|
46
|
+
* relay protocol changes incompatibly. Must match (or exceed) the server's
|
|
47
|
+
* `minProtocolVersion` in `server/src/relay/version-policy.ts` — when the
|
|
48
|
+
* server's floor moves above this value, the upgrade handshake returns 426
|
|
49
|
+
* and the CLI surfaces the upgrade message via `handleSocketClose`.
|
|
50
|
+
*
|
|
51
|
+
* This is a build-time constant, not user-configurable: a stale CLI must be
|
|
52
|
+
* told to upgrade rather than allowed to opt itself into compatibility.
|
|
53
|
+
*/
|
|
54
|
+
const PROTOCOL_VERSION = 1;
|
|
55
|
+
/**
|
|
56
|
+
* Long sentinel delay used after a 426 protocol-too-old close. The CLI
|
|
57
|
+
* auto-upgrades on the next `mstro` invocation, so a tight reconnect loop
|
|
58
|
+
* would just hammer the server with rejections that policy already decided
|
|
59
|
+
* to refuse. One hour is long enough to count as "stop", short enough that
|
|
60
|
+
* a forgotten foreground process eventually retries on its own.
|
|
61
|
+
*/
|
|
62
|
+
const PROTOCOL_UPGRADE_RECONNECT_DELAY_MS = 60 * 60 * 1000;
|
|
44
63
|
/** Number of missed pongs before treating connection as dead */
|
|
45
64
|
const MAX_MISSED_PONGS = 2;
|
|
46
65
|
export class PlatformConnection {
|
|
@@ -54,128 +73,23 @@ export class PlatformConnection {
|
|
|
54
73
|
callbacks;
|
|
55
74
|
connectionId = null;
|
|
56
75
|
isConnected = false;
|
|
57
|
-
tokenRefreshInterval = null;
|
|
58
76
|
heartbeatInterval = null;
|
|
59
77
|
missedPongs = 0;
|
|
60
78
|
everConnected = false;
|
|
79
|
+
protocolUpgradeRequired = false;
|
|
61
80
|
startedAt;
|
|
81
|
+
tokens;
|
|
62
82
|
constructor(workingDirectory, callbacks = {}, platformUrl) {
|
|
63
83
|
this.workingDirectory = workingDirectory;
|
|
64
84
|
this.platformUrl = platformUrl || DEFAULT_PLATFORM_URL;
|
|
65
85
|
this.callbacks = callbacks;
|
|
66
86
|
this.startedAt = new Date().toISOString();
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
* if refresh was attempted and rejected with an auth error — in which
|
|
72
|
-
* case the caller should surface an auth-expired signal to the web
|
|
73
|
-
* rather than silently reusing a dead token.
|
|
74
|
-
*/
|
|
75
|
-
async maybeRefreshToken() {
|
|
76
|
-
const creds = getCredentials();
|
|
77
|
-
if (!creds)
|
|
78
|
-
return false;
|
|
79
|
-
if (!shouldRefreshToken(creds))
|
|
80
|
-
return true;
|
|
81
|
-
try {
|
|
82
|
-
const response = await fetch(`${this.platformUrl}/api/auth/device/refresh`, {
|
|
83
|
-
method: 'POST',
|
|
84
|
-
headers: {
|
|
85
|
-
'Authorization': `Bearer ${creds.token}`,
|
|
86
|
-
'Content-Type': 'application/json'
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
if (response.ok) {
|
|
90
|
-
const data = await response.json();
|
|
91
|
-
updateCredentials({
|
|
92
|
-
token: data.accessToken,
|
|
93
|
-
lastRefreshedAt: new Date().toISOString()
|
|
94
|
-
});
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
if (response.status === 401 || response.status === 403) {
|
|
98
|
-
console.warn(`[Platform] Token refresh failed — auth is expired (${response.status}). Run \`mstro login --force\`.`);
|
|
99
|
-
this.notifyAuthExpired();
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
console.warn(`[Platform] Token refresh failed with status ${response.status}, will retry later`);
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
catch (err) {
|
|
106
|
-
console.warn('[Platform] Token refresh error:', err);
|
|
107
|
-
return true;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Verify the current token against the platform. A rejection (401/403)
|
|
112
|
-
* means the token is permanently invalid (revoked, signing-key rotation,
|
|
113
|
-
* account deleted); the caller should stop looping reconnects and tell
|
|
114
|
-
* the user to run `mstro login --force`.
|
|
115
|
-
*
|
|
116
|
-
* Returns `true` when the token is valid or the verification endpoint
|
|
117
|
-
* is unreachable (we prefer false negatives to false positives — a
|
|
118
|
-
* network blip shouldn't force a re-login).
|
|
119
|
-
*/
|
|
120
|
-
async verifyToken() {
|
|
121
|
-
const creds = getCredentials();
|
|
122
|
-
if (!creds?.token)
|
|
123
|
-
return false;
|
|
124
|
-
try {
|
|
125
|
-
const response = await fetch(`${this.platformUrl}/api/auth/device/verify`, {
|
|
126
|
-
method: 'POST',
|
|
127
|
-
headers: { 'Authorization': `Bearer ${creds.token}` },
|
|
128
|
-
});
|
|
129
|
-
if (response.status === 401 || response.status === 403) {
|
|
130
|
-
console.warn(`[Platform] Token verify rejected (${response.status}) — auth is expired.`);
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
// Network error: treat as "probably valid" so a flaky connection
|
|
137
|
-
// doesn't force users to re-login. The WebSocket open itself will
|
|
138
|
-
// catch a truly bad token via the 4001 path.
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Surface an auth-expired condition to any paired web clients.
|
|
144
|
-
*
|
|
145
|
-
* Two cooperating paths deliver this signal — either alone is enough,
|
|
146
|
-
* both together cover every timing edge:
|
|
147
|
-
*
|
|
148
|
-
* 1. **CLI-initiated (this method):** we detected a 401 from the
|
|
149
|
-
* `/refresh` or `/verify` endpoint *while the relay socket is
|
|
150
|
-
* still open*. `this.send` pushes the message upstream so the
|
|
151
|
-
* server relays it to paired webs before we intentionally close.
|
|
152
|
-
* A no-op if the socket is already closed.
|
|
153
|
-
*
|
|
154
|
-
* 2. **Server-initiated:** when the platform closes a CLI socket
|
|
155
|
-
* with 4001 or 4008, `handleAuthClose` in `clientHandlers.ts`
|
|
156
|
-
* broadcasts the same `clientAuthExpired` to paired webs. This
|
|
157
|
-
* covers the cases where the CLI never had a chance to detect
|
|
158
|
-
* the rejection itself (e.g. token revoked while the socket was
|
|
159
|
-
* idle, server-side token rotation).
|
|
160
|
-
*
|
|
161
|
-
* IMPORTANT: never call `this.callbacks.onRelayedMessage` here —
|
|
162
|
-
* that callback feeds INCOMING web→CLI requests into the local handler,
|
|
163
|
-
* which would treat `clientAuthExpired` as an unknown inbound request.
|
|
164
|
-
*/
|
|
165
|
-
notifyAuthExpired() {
|
|
166
|
-
this.send({
|
|
167
|
-
type: 'clientAuthExpired',
|
|
168
|
-
data: {
|
|
169
|
-
connectionId: this.connectionId,
|
|
170
|
-
message: 'The CLI\'s device token is invalid — run `mstro login --force` on the machine.',
|
|
171
|
-
},
|
|
87
|
+
this.tokens = new TokenLifecycle({
|
|
88
|
+
platformUrl: this.platformUrl,
|
|
89
|
+
send: (msg) => this.send(msg),
|
|
90
|
+
getConnectionId: () => this.connectionId,
|
|
172
91
|
});
|
|
173
92
|
}
|
|
174
|
-
startTokenRefreshCheck() {
|
|
175
|
-
this.tokenRefreshInterval = setInterval(() => {
|
|
176
|
-
this.maybeRefreshToken();
|
|
177
|
-
}, 24 * 60 * 60 * 1000);
|
|
178
|
-
}
|
|
179
93
|
startHeartbeat() {
|
|
180
94
|
this.missedPongs = 0;
|
|
181
95
|
this.heartbeatInterval = setInterval(() => this.heartbeatTick(), 25_000);
|
|
@@ -207,14 +121,9 @@ export class PlatformConnection {
|
|
|
207
121
|
this.heartbeatInterval = null;
|
|
208
122
|
}
|
|
209
123
|
}
|
|
210
|
-
stopTokenRefreshCheck() {
|
|
211
|
-
if (this.tokenRefreshInterval) {
|
|
212
|
-
clearInterval(this.tokenRefreshInterval);
|
|
213
|
-
this.tokenRefreshInterval = null;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
124
|
connect() {
|
|
217
125
|
this.isIntentionallyClosed = false;
|
|
126
|
+
this.protocolUpgradeRequired = false;
|
|
218
127
|
const authToken = getCredentials()?.token;
|
|
219
128
|
if (!authToken) {
|
|
220
129
|
console.error('\n❌ Not logged in. Run `mstro login` first.\n');
|
|
@@ -234,25 +143,7 @@ export class PlatformConnection {
|
|
|
234
143
|
}
|
|
235
144
|
const connectionTimeout = this.startConnectionTimeout();
|
|
236
145
|
this.attachSocketHandlers(this.ws, authToken, connectionTimeout);
|
|
237
|
-
this.
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Best-effort token verification, fired in parallel with the socket
|
|
241
|
-
* open so a slow verify endpoint never delays reconnect.
|
|
242
|
-
*
|
|
243
|
-
* Only runs when the token is stale enough that we'd be about to
|
|
244
|
-
* refresh anyway — keeps the hot path free of an extra network call.
|
|
245
|
-
* A truly-revoked token that slips past this check still hits 4001
|
|
246
|
-
* on the WebSocket, which also triggers `notifyAuthExpired`.
|
|
247
|
-
*/
|
|
248
|
-
maybeVerifyTokenInParallel() {
|
|
249
|
-
const creds = getCredentials();
|
|
250
|
-
if (!creds || !shouldRefreshToken(creds))
|
|
251
|
-
return;
|
|
252
|
-
this.verifyToken().then((valid) => {
|
|
253
|
-
if (!valid)
|
|
254
|
-
this.notifyAuthExpired();
|
|
255
|
-
}).catch(() => { });
|
|
146
|
+
this.tokens.maybeVerifyInParallel();
|
|
256
147
|
}
|
|
257
148
|
buildConnectionUrl() {
|
|
258
149
|
const params = new URLSearchParams({
|
|
@@ -267,6 +158,7 @@ export class PlatformConnection {
|
|
|
267
158
|
cliVersion: CLI_VERSION,
|
|
268
159
|
capabilities: JSON.stringify({}),
|
|
269
160
|
startedAt: this.startedAt,
|
|
161
|
+
protocolVersion: String(PROTOCOL_VERSION),
|
|
270
162
|
});
|
|
271
163
|
return `${this.platformUrl.replace(/^http/, 'ws')}/ws/client?${params}`;
|
|
272
164
|
}
|
|
@@ -285,8 +177,8 @@ export class PlatformConnection {
|
|
|
285
177
|
ws.onopen = () => {
|
|
286
178
|
clearTimeout(connectionTimeout);
|
|
287
179
|
ws.send(JSON.stringify({ type: 'auth', token: authToken }));
|
|
288
|
-
this.
|
|
289
|
-
this.
|
|
180
|
+
this.tokens.maybeRefresh();
|
|
181
|
+
this.tokens.startPeriodicCheck();
|
|
290
182
|
this.reconnectAttempts = 0;
|
|
291
183
|
trackEvent(AnalyticsEvents.PLATFORM_CONNECTED);
|
|
292
184
|
};
|
|
@@ -306,19 +198,38 @@ export class PlatformConnection {
|
|
|
306
198
|
clearTimeout(connectionTimeout);
|
|
307
199
|
// onclose will be called after this
|
|
308
200
|
};
|
|
201
|
+
// The Node `ws` library exposes the raw HTTP upgrade response as an
|
|
202
|
+
// `unexpected-response` event when the server returns a non-101 status
|
|
203
|
+
// (for us: 426 Upgrade Required from the protocol-version gate). The
|
|
204
|
+
// global WebSocket in Bun / Node 21+ doesn't expose this — for those
|
|
205
|
+
// runtimes we rely on the close-code path below. Both paths feed into
|
|
206
|
+
// `protocolUpgradeRequired`, so `handleSocketClose` can decide once.
|
|
207
|
+
const wsWithEmitter = ws;
|
|
208
|
+
if (typeof wsWithEmitter.on === 'function') {
|
|
209
|
+
wsWithEmitter.on('unexpected-response', (...args) => {
|
|
210
|
+
const response = args[1];
|
|
211
|
+
if (response?.statusCode === 426) {
|
|
212
|
+
this.protocolUpgradeRequired = true;
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
309
216
|
}
|
|
310
217
|
handleSocketClose(event) {
|
|
311
218
|
this.stopHeartbeat();
|
|
312
219
|
this.isConnected = false;
|
|
313
220
|
if (this.isIntentionallyClosed)
|
|
314
221
|
return;
|
|
222
|
+
if (this.isProtocolTooOldClose(event)) {
|
|
223
|
+
this.handleProtocolUpgradeRequired();
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
315
226
|
const isAuthFailure = event.code === 4001 ||
|
|
316
227
|
event.reason?.includes('Unauthorized') ||
|
|
317
228
|
(event.code === 1006 && !this.everConnected);
|
|
318
229
|
if (isAuthFailure) {
|
|
319
230
|
console.error('\n❌ Authentication failed. Your device token may be invalid or expired.');
|
|
320
231
|
console.error(' Run `mstro login --force` to re-authenticate.\n');
|
|
321
|
-
this.notifyAuthExpired();
|
|
232
|
+
this.tokens.notifyAuthExpired();
|
|
322
233
|
this.callbacks.onError?.('Authentication failed - run `mstro login --force`');
|
|
323
234
|
return;
|
|
324
235
|
}
|
|
@@ -327,6 +238,51 @@ export class PlatformConnection {
|
|
|
327
238
|
trackEvent(AnalyticsEvents.PLATFORM_DISCONNECTED);
|
|
328
239
|
this.scheduleReconnect();
|
|
329
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* The relay can refuse a CLI for being too old in two shapes:
|
|
243
|
+
*
|
|
244
|
+
* 1. **HTTP 426 during upgrade** — the `ws` library surfaces this via
|
|
245
|
+
* its `unexpected-response` event, which sets
|
|
246
|
+
* `protocolUpgradeRequired` before `onclose` fires. This is the path
|
|
247
|
+
* the current server takes (`checkProtocolVersionGate`).
|
|
248
|
+
*
|
|
249
|
+
* 2. **WS close 1002/1008 with `protocol-too-old` reason** — reserved
|
|
250
|
+
* for a future server variant that completes the upgrade and then
|
|
251
|
+
* closes (e.g. when the policy check moves into a post-handshake
|
|
252
|
+
* stage). The reason string is part of the contract with the server.
|
|
253
|
+
*
|
|
254
|
+
* Anything else (1006 race after a successful run, 1001 going-away on
|
|
255
|
+
* deploy) must fall through to the regular reconnect path so transient
|
|
256
|
+
* failures keep healing on their own.
|
|
257
|
+
*/
|
|
258
|
+
isProtocolTooOldClose(event) {
|
|
259
|
+
if (this.protocolUpgradeRequired)
|
|
260
|
+
return true;
|
|
261
|
+
const code = event.code;
|
|
262
|
+
if ((code === 1002 || code === 1008) && event.reason?.includes('protocol-too-old')) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
handleProtocolUpgradeRequired() {
|
|
268
|
+
const message = 'Mstro CLI is out of date for this orchestra. Run `mstro` again to upgrade and reconnect.';
|
|
269
|
+
console.error(`\n❌ ${message}\n`);
|
|
270
|
+
this.callbacks.onError?.(message);
|
|
271
|
+
this.callbacks.onDisconnected?.();
|
|
272
|
+
// Don't exit the process — terminal sessions and other local state stay
|
|
273
|
+
// alive while the user re-runs `mstro`. Schedule a single, far-future
|
|
274
|
+
// reconnect as a sentinel so we silently retry exactly once if the
|
|
275
|
+
// process is somehow still around an hour later. The existing
|
|
276
|
+
// exponential-backoff path is bypassed deliberately: hammering a server
|
|
277
|
+
// that has already decided to refuse on policy is pointless.
|
|
278
|
+
if (this.reconnectTimeout) {
|
|
279
|
+
clearTimeout(this.reconnectTimeout);
|
|
280
|
+
}
|
|
281
|
+
this.reconnectTimeout = setTimeout(() => {
|
|
282
|
+
this.reconnectTimeout = null;
|
|
283
|
+
this.connect();
|
|
284
|
+
}, PROTOCOL_UPGRADE_RECONNECT_DELAY_MS);
|
|
285
|
+
}
|
|
330
286
|
handleMessage(message) {
|
|
331
287
|
switch (message.type) {
|
|
332
288
|
case 'paired':
|
|
@@ -383,7 +339,7 @@ export class PlatformConnection {
|
|
|
383
339
|
disconnect() {
|
|
384
340
|
this.isIntentionallyClosed = true;
|
|
385
341
|
this.stopHeartbeat();
|
|
386
|
-
this.
|
|
342
|
+
this.tokens.stopPeriodicCheck();
|
|
387
343
|
if (this.reconnectTimeout) {
|
|
388
344
|
clearTimeout(this.reconnectTimeout);
|
|
389
345
|
this.reconnectTimeout = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../server/services/platform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../server/services/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../../server/services/sentry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../../server/services/sentry.ts"],"names":[],"mappings":"AAgDA,wBAAgB,UAAU,IAAI,IAAI,CAoBjC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGxF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,SAAS,GAAG,OAAgB,GAAG,IAAI,CAGlG;AAED,wBAAsB,WAAW,CAAC,OAAO,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../server/services/sentry.ts"],"names":[],"mappings":"AAAA,8DAA8D;
|
|
1
|
+
{"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../server/services/sentry.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,mEAAmE;AACnE,mEAAmE;AACnE,gEAAgE;AAChE,sEAAsE;AACtE,MAAM,iBAAiB,GAAG,4BAA4B,CAAA;AACtD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,uBAAuB,CAAA;AAExE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;AAE5D,IAAI,WAAW,GAAG,KAAK,CAAA;AAMvB;;;GAGG;AACH,SAAS,kBAAkB;IACzB,mCAAmC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;IAC5C,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAgB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;YAC1E,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,WAAW;QAAE,OAAM;IACvB,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAM;IAEjC,WAAW,GAAG,IAAI,CAAA;IAElB,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,iBAAiB;QACtB,MAAM,EAAE,GAAG,YAAY,gBAAgB;QACvC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;QAClD,OAAO,EAAE,aAAa,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,EAAE;QAClE,gBAAgB,EAAE,GAAG;QACrB,UAAU,CAAC,KAAK;YACd,8BAA8B;YAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAA;YAC9B,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,OAAiC;IAChF,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,QAAsC,MAAM;IAC1F,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAO,GAAG,IAAI;IAC9C,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC"}
|
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
import type { EngineId } from '../engines/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the Layer-2 Bouncer classifier (the AI model that runs
|
|
4
|
+
* for every ambiguous tool call). The model MUST be flagged
|
|
5
|
+
* `bouncerEligible` in the engine's model catalogue — frontier models
|
|
6
|
+
* (Opus, GPT-4o, …) are deliberately disallowed because they slow the
|
|
7
|
+
* classifier path and degrade the whole security layer.
|
|
8
|
+
*/
|
|
9
|
+
export interface BouncerClassifierConfig {
|
|
10
|
+
engine: EngineId;
|
|
11
|
+
/** Engine-specific model id, e.g. 'haiku', 'sonnet', 'openai/gpt-5-mini'. */
|
|
12
|
+
model: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Canonical list of bouncer-eligible models per engine. Mirrors
|
|
16
|
+
* `web/src/components/views/SettingsView/constants.ts` — keep the two in
|
|
17
|
+
* sync. Only cheap/fast models appear here; if you need to add a model,
|
|
18
|
+
* check p50 latency < ~1s and JSON-mode capability first.
|
|
19
|
+
*/
|
|
20
|
+
export declare const BOUNCER_ELIGIBLE_MODELS: Record<EngineId, readonly string[]>;
|
|
21
|
+
/** Default classifier — Claude Haiku. Matches the pre-feature-flag behavior. */
|
|
22
|
+
export declare const DEFAULT_BOUNCER_CLASSIFIER: BouncerClassifierConfig;
|
|
23
|
+
/**
|
|
24
|
+
* Validate a `BouncerClassifierConfig`. Rejects with a thrown `Error` when
|
|
25
|
+
* the model is not flagged `bouncerEligible` under the requested engine —
|
|
26
|
+
* e.g. attempting to use Opus as a classifier, or a frontier OpenCode
|
|
27
|
+
* model. The WebSocket settings handler uses this to reject crafted
|
|
28
|
+
* payloads from the web client.
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateBouncerClassifier(config: unknown): BouncerClassifierConfig;
|
|
1
31
|
export interface MstroSettings {
|
|
2
32
|
/**
|
|
3
33
|
* Claude model to use for main execution.
|
|
@@ -16,13 +46,36 @@ export interface MstroSettings {
|
|
|
16
46
|
effortLevel: string;
|
|
17
47
|
/** Per-repo preferred PR base branch, keyed by normalized remote URL */
|
|
18
48
|
prBaseBranches?: Record<string, string>;
|
|
49
|
+
/**
|
|
50
|
+
* Feature flag gating all OpenCode code paths (engine factory, classifier
|
|
51
|
+
* factory, and UI). When `false`, the system behaves byte-identically to
|
|
52
|
+
* pre-OpenCode main: no `opencode serve` subprocess, no classifier picker,
|
|
53
|
+
* no EngineSection/EnginePicker in the web UI. Resolution order in
|
|
54
|
+
* `isEngineSwapEnabled()`: env var → stored setting → NODE_ENV default.
|
|
55
|
+
*/
|
|
56
|
+
engineSwap?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Which engine + model backs the Layer-2 Bouncer classifier. Defaults to
|
|
59
|
+
* `{ engine: 'claude-code', model: 'haiku' }`. Only models flagged
|
|
60
|
+
* `bouncerEligible` are accepted — see {@link validateBouncerClassifier}.
|
|
61
|
+
*/
|
|
62
|
+
bouncerClassifier?: BouncerClassifierConfig;
|
|
19
63
|
}
|
|
20
64
|
/**
|
|
21
|
-
* Get current settings, merged with defaults for any missing fields
|
|
65
|
+
* Get current settings, merged with defaults for any missing fields. A
|
|
66
|
+
* persisted `bouncerClassifier` that is no longer bouncer-eligible (e.g. a
|
|
67
|
+
* catalogue change removed the model) is dropped in favor of the default
|
|
68
|
+
* and a warning is logged — the Bouncer must never silently run a
|
|
69
|
+
* non-eligible model just because someone edited settings.json by hand.
|
|
22
70
|
*/
|
|
23
71
|
export declare function getSettings(): MstroSettings;
|
|
24
72
|
/**
|
|
25
|
-
* Save full settings to disk
|
|
73
|
+
* Save full settings to disk. Rejects if `bouncerClassifier` is present but
|
|
74
|
+
* its model is not flagged `bouncerEligible` — this is the save-time half
|
|
75
|
+
* of the guard; `getSettings` enforces the read-time half. Together they
|
|
76
|
+
* ensure the Bouncer is never configured with a frontier model (Opus,
|
|
77
|
+
* GPT-4o, …) regardless of whether the mutation came from the web UI or a
|
|
78
|
+
* direct edit of settings.json.
|
|
26
79
|
*/
|
|
27
80
|
export declare function saveSettings(settings: MstroSettings): void;
|
|
28
81
|
/**
|
|
@@ -41,6 +94,27 @@ export declare function getEffortLevel(): string;
|
|
|
41
94
|
* Update just the effort level setting
|
|
42
95
|
*/
|
|
43
96
|
export declare function setEffortLevel(effortLevel: string): void;
|
|
97
|
+
/**
|
|
98
|
+
* Get the current Bouncer classifier configuration. Returns the default
|
|
99
|
+
* `{ engine: 'claude-code', model: 'haiku' }` when nothing is persisted.
|
|
100
|
+
*/
|
|
101
|
+
export declare function getBouncerClassifier(): BouncerClassifierConfig;
|
|
102
|
+
/**
|
|
103
|
+
* Persist a new Bouncer classifier config. Throws if the model is not
|
|
104
|
+
* flagged `bouncerEligible` under the requested engine — callers should
|
|
105
|
+
* surface the error to the UI so the user sees a clear rejection reason.
|
|
106
|
+
*/
|
|
107
|
+
export declare function setBouncerClassifier(config: unknown): BouncerClassifierConfig;
|
|
108
|
+
/**
|
|
109
|
+
* Resolve the engineSwap feature flag. Precedence:
|
|
110
|
+
* 1. `MSTRO_ENABLE_ENGINE_SWAP` env var ('true'|'1' → on, 'false'|'0' → off).
|
|
111
|
+
* 2. `engineSwap` field in `~/.mstro/settings.json`.
|
|
112
|
+
* 3. NODE_ENV default — off in production, on otherwise (dev/staging/test).
|
|
113
|
+
*
|
|
114
|
+
* Callers who need a single boolean should use this helper rather than
|
|
115
|
+
* reading the field directly, so the precedence stays in one place.
|
|
116
|
+
*/
|
|
117
|
+
export declare function isEngineSwapEnabled(): boolean;
|
|
44
118
|
/** Get the preferred PR base branch for a repo */
|
|
45
119
|
export declare function getPrBaseBranch(remoteUrl: string): string | null;
|
|
46
120
|
/** Save the preferred PR base branch for a repo */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../server/services/settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../server/services/settings.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAKnD;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,QAAQ,CAAA;IAChB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAQvE,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,EAAE,uBAGxC,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,uBAAuB,CAoBlF;AAED,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAA;CAC5C;AAiBD;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,aAAa,CA4B3C;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAS1D;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAIxD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,uBAAuB,CAY9D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,uBAAuB,CAM7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C;AAUD,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhE;AAED,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKvE"}
|