mstro-app 0.4.2 → 0.4.4
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/bin/mstro.js +119 -40
- package/dist/server/cli/headless/claude-invoker-process.d.ts +11 -0
- package/dist/server/cli/headless/claude-invoker-process.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-process.js +140 -0
- package/dist/server/cli/headless/claude-invoker-process.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stall.d.ts +40 -0
- package/dist/server/cli/headless/claude-invoker-stall.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stall.js +98 -0
- package/dist/server/cli/headless/claude-invoker-stall.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stream.d.ts +44 -0
- package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-stream.js +276 -0
- package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker-tools.d.ts +21 -0
- package/dist/server/cli/headless/claude-invoker-tools.d.ts.map +1 -0
- package/dist/server/cli/headless/claude-invoker-tools.js +137 -0
- package/dist/server/cli/headless/claude-invoker-tools.js.map +1 -0
- package/dist/server/cli/headless/claude-invoker.d.ts +6 -4
- package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +10 -804
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/haiku-assessments.d.ts +62 -0
- package/dist/server/cli/headless/haiku-assessments.d.ts.map +1 -0
- package/dist/server/cli/headless/haiku-assessments.js +281 -0
- package/dist/server/cli/headless/haiku-assessments.js.map +1 -0
- package/dist/server/cli/headless/headless-logger.d.ts +3 -2
- package/dist/server/cli/headless/headless-logger.d.ts.map +1 -1
- package/dist/server/cli/headless/headless-logger.js +28 -5
- package/dist/server/cli/headless/headless-logger.js.map +1 -1
- package/dist/server/cli/headless/native-timeout-detector.d.ts +44 -0
- package/dist/server/cli/headless/native-timeout-detector.d.ts.map +1 -0
- package/dist/server/cli/headless/native-timeout-detector.js +99 -0
- package/dist/server/cli/headless/native-timeout-detector.js.map +1 -0
- package/dist/server/cli/headless/stall-assessor.d.ts +2 -110
- package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
- package/dist/server/cli/headless/stall-assessor.js +65 -457
- package/dist/server/cli/headless/stall-assessor.js.map +1 -1
- package/dist/server/cli/headless/types.d.ts +4 -1
- package/dist/server/cli/headless/types.d.ts.map +1 -1
- package/dist/server/cli/improvisation-attachments.d.ts +21 -0
- package/dist/server/cli/improvisation-attachments.d.ts.map +1 -0
- package/dist/server/cli/improvisation-attachments.js +116 -0
- package/dist/server/cli/improvisation-attachments.js.map +1 -0
- package/dist/server/cli/improvisation-retry.d.ts +52 -0
- package/dist/server/cli/improvisation-retry.d.ts.map +1 -0
- package/dist/server/cli/improvisation-retry.js +434 -0
- package/dist/server/cli/improvisation-retry.js.map +1 -0
- package/dist/server/cli/improvisation-session-manager.d.ts +10 -266
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +117 -1079
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/cli/improvisation-types.d.ts +86 -0
- package/dist/server/cli/improvisation-types.d.ts.map +1 -0
- package/dist/server/cli/improvisation-types.js +10 -0
- package/dist/server/cli/improvisation-types.js.map +1 -0
- package/dist/server/cli/prompt-builders.d.ts +68 -0
- package/dist/server/cli/prompt-builders.d.ts.map +1 -0
- package/dist/server/cli/prompt-builders.js +312 -0
- package/dist/server/cli/prompt-builders.js.map +1 -0
- package/dist/server/index.js +33 -212
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/bouncer-haiku.d.ts +10 -0
- package/dist/server/mcp/bouncer-haiku.d.ts.map +1 -0
- package/dist/server/mcp/bouncer-haiku.js +152 -0
- package/dist/server/mcp/bouncer-haiku.js.map +1 -0
- package/dist/server/mcp/bouncer-integration.d.ts +3 -4
- package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
- package/dist/server/mcp/bouncer-integration.js +50 -196
- package/dist/server/mcp/bouncer-integration.js.map +1 -1
- package/dist/server/mcp/security-analysis.d.ts +38 -0
- package/dist/server/mcp/security-analysis.d.ts.map +1 -0
- package/dist/server/mcp/security-analysis.js +183 -0
- package/dist/server/mcp/security-analysis.js.map +1 -0
- package/dist/server/mcp/security-audit.d.ts +1 -1
- package/dist/server/mcp/security-audit.d.ts.map +1 -1
- package/dist/server/mcp/security-patterns.d.ts +1 -25
- package/dist/server/mcp/security-patterns.d.ts.map +1 -1
- package/dist/server/mcp/security-patterns.js +55 -260
- package/dist/server/mcp/security-patterns.js.map +1 -1
- package/dist/server/server-setup.d.ts +22 -0
- package/dist/server/server-setup.d.ts.map +1 -0
- package/dist/server/server-setup.js +101 -0
- package/dist/server/server-setup.js.map +1 -0
- package/dist/server/services/file-explorer-ops.d.ts +24 -0
- package/dist/server/services/file-explorer-ops.d.ts.map +1 -0
- package/dist/server/services/file-explorer-ops.js +211 -0
- package/dist/server/services/file-explorer-ops.js.map +1 -0
- package/dist/server/services/files.d.ts +2 -85
- package/dist/server/services/files.d.ts.map +1 -1
- package/dist/server/services/files.js +7 -427
- package/dist/server/services/files.js.map +1 -1
- package/dist/server/services/plan/composer.d.ts +1 -1
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +118 -32
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/config-installer.d.ts +25 -0
- package/dist/server/services/plan/config-installer.d.ts.map +1 -0
- package/dist/server/services/plan/config-installer.js +182 -0
- package/dist/server/services/plan/config-installer.js.map +1 -0
- package/dist/server/services/plan/dependency-resolver.d.ts +1 -1
- package/dist/server/services/plan/dependency-resolver.d.ts.map +1 -1
- package/dist/server/services/plan/dependency-resolver.js +4 -1
- package/dist/server/services/plan/dependency-resolver.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts +38 -74
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +274 -460
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/front-matter.d.ts +18 -0
- package/dist/server/services/plan/front-matter.d.ts.map +1 -0
- package/dist/server/services/plan/front-matter.js +44 -0
- package/dist/server/services/plan/front-matter.js.map +1 -0
- package/dist/server/services/plan/output-manager.d.ts +22 -0
- package/dist/server/services/plan/output-manager.d.ts.map +1 -0
- package/dist/server/services/plan/output-manager.js +97 -0
- package/dist/server/services/plan/output-manager.js.map +1 -0
- package/dist/server/services/plan/parser-core.d.ts +20 -0
- package/dist/server/services/plan/parser-core.d.ts.map +1 -0
- package/dist/server/services/plan/parser-core.js +350 -0
- package/dist/server/services/plan/parser-core.js.map +1 -0
- package/dist/server/services/plan/parser-migration.d.ts +5 -0
- package/dist/server/services/plan/parser-migration.d.ts.map +1 -0
- package/dist/server/services/plan/parser-migration.js +124 -0
- package/dist/server/services/plan/parser-migration.js.map +1 -0
- package/dist/server/services/plan/parser.d.ts +11 -3
- package/dist/server/services/plan/parser.d.ts.map +1 -1
- package/dist/server/services/plan/parser.js +184 -369
- package/dist/server/services/plan/parser.js.map +1 -1
- package/dist/server/services/plan/prompt-builder.d.ts +17 -0
- package/dist/server/services/plan/prompt-builder.d.ts.map +1 -0
- package/dist/server/services/plan/prompt-builder.js +137 -0
- package/dist/server/services/plan/prompt-builder.js.map +1 -0
- package/dist/server/services/plan/review-gate.d.ts +28 -0
- package/dist/server/services/plan/review-gate.d.ts.map +1 -0
- package/dist/server/services/plan/review-gate.js +191 -0
- package/dist/server/services/plan/review-gate.js.map +1 -0
- package/dist/server/services/plan/state-reconciler.d.ts +1 -1
- package/dist/server/services/plan/state-reconciler.d.ts.map +1 -1
- package/dist/server/services/plan/state-reconciler.js +59 -7
- package/dist/server/services/plan/state-reconciler.js.map +1 -1
- package/dist/server/services/plan/types.d.ts +68 -0
- package/dist/server/services/plan/types.d.ts.map +1 -1
- package/dist/server/services/platform-credentials.d.ts +24 -0
- package/dist/server/services/platform-credentials.d.ts.map +1 -0
- package/dist/server/services/platform-credentials.js +68 -0
- package/dist/server/services/platform-credentials.js.map +1 -0
- package/dist/server/services/platform.d.ts +1 -31
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +11 -109
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/terminal/pty-manager.d.ts +7 -97
- package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
- package/dist/server/services/terminal/pty-manager.js +53 -266
- package/dist/server/services/terminal/pty-manager.js.map +1 -1
- package/dist/server/services/terminal/pty-utils.d.ts +57 -0
- package/dist/server/services/terminal/pty-utils.d.ts.map +1 -0
- package/dist/server/services/terminal/pty-utils.js +141 -0
- package/dist/server/services/terminal/pty-utils.js.map +1 -0
- package/dist/server/services/websocket/file-definition-handlers.d.ts +4 -0
- package/dist/server/services/websocket/file-definition-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/file-definition-handlers.js +153 -0
- package/dist/server/services/websocket/file-definition-handlers.js.map +1 -0
- package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.js +52 -391
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
- package/dist/server/services/websocket/file-search-handlers.d.ts +5 -0
- package/dist/server/services/websocket/file-search-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/file-search-handlers.js +238 -0
- package/dist/server/services/websocket/file-search-handlers.js.map +1 -0
- package/dist/server/services/websocket/file-utils.js +3 -3
- package/dist/server/services/websocket/file-utils.js.map +1 -1
- package/dist/server/services/websocket/git-branch-handlers.d.ts +7 -0
- package/dist/server/services/websocket/git-branch-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-branch-handlers.js +110 -0
- package/dist/server/services/websocket/git-branch-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-diff-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-diff-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-diff-handlers.js +123 -0
- package/dist/server/services/websocket/git-diff-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-handlers.d.ts +2 -31
- package/dist/server/services/websocket/git-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-handlers.js +35 -541
- package/dist/server/services/websocket/git-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-log-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-log-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-log-handlers.js +128 -0
- package/dist/server/services/websocket/git-log-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-pr-handlers.js +13 -53
- package/dist/server/services/websocket/git-pr-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-tag-handlers.d.ts +6 -0
- package/dist/server/services/websocket/git-tag-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/git-tag-handlers.js +76 -0
- package/dist/server/services/websocket/git-tag-handlers.js.map +1 -0
- package/dist/server/services/websocket/git-utils.d.ts +43 -0
- package/dist/server/services/websocket/git-utils.d.ts.map +1 -0
- package/dist/server/services/websocket/git-utils.js +201 -0
- package/dist/server/services/websocket/git-utils.js.map +1 -0
- package/dist/server/services/websocket/handler.d.ts +2 -0
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +37 -112
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.d.ts +11 -0
- package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-board-handlers.js +218 -0
- package/dist/server/services/websocket/plan-board-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-execution-handlers.d.ts +9 -0
- package/dist/server/services/websocket/plan-execution-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-execution-handlers.js +142 -0
- package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-handlers.d.ts +7 -2
- package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-handlers.js +21 -462
- package/dist/server/services/websocket/plan-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-helpers.d.ts +19 -0
- package/dist/server/services/websocket/plan-helpers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-helpers.js +199 -0
- package/dist/server/services/websocket/plan-helpers.js.map +1 -0
- package/dist/server/services/websocket/plan-issue-handlers.d.ts +12 -0
- package/dist/server/services/websocket/plan-issue-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-issue-handlers.js +162 -0
- package/dist/server/services/websocket/plan-issue-handlers.js.map +1 -0
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts +7 -0
- package/dist/server/services/websocket/plan-sprint-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-sprint-handlers.js +206 -0
- package/dist/server/services/websocket/plan-sprint-handlers.js.map +1 -0
- package/dist/server/services/websocket/quality-complexity.d.ts +14 -0
- package/dist/server/services/websocket/quality-complexity.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-complexity.js +262 -0
- package/dist/server/services/websocket/quality-complexity.js.map +1 -0
- package/dist/server/services/websocket/quality-fix-agent.d.ts +16 -0
- package/dist/server/services/websocket/quality-fix-agent.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-fix-agent.js +140 -0
- package/dist/server/services/websocket/quality-fix-agent.js.map +1 -0
- package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-handlers.js +34 -346
- package/dist/server/services/websocket/quality-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-linting.d.ts +9 -0
- package/dist/server/services/websocket/quality-linting.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-linting.js +178 -0
- package/dist/server/services/websocket/quality-linting.js.map +1 -0
- package/dist/server/services/websocket/quality-review-agent.d.ts +19 -0
- package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-review-agent.js +206 -0
- package/dist/server/services/websocket/quality-review-agent.js.map +1 -0
- package/dist/server/services/websocket/quality-service.d.ts +3 -51
- package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-service.js +9 -651
- package/dist/server/services/websocket/quality-service.js.map +1 -1
- package/dist/server/services/websocket/quality-tools.d.ts +23 -0
- package/dist/server/services/websocket/quality-tools.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-tools.js +208 -0
- package/dist/server/services/websocket/quality-tools.js.map +1 -0
- package/dist/server/services/websocket/quality-types.d.ts +59 -0
- package/dist/server/services/websocket/quality-types.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-types.js +101 -0
- package/dist/server/services/websocket/quality-types.js.map +1 -0
- package/dist/server/services/websocket/session-handlers.d.ts +3 -4
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +3 -378
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/dist/server/services/websocket/session-history.d.ts +4 -0
- package/dist/server/services/websocket/session-history.d.ts.map +1 -0
- package/dist/server/services/websocket/session-history.js +208 -0
- package/dist/server/services/websocket/session-history.js.map +1 -0
- package/dist/server/services/websocket/session-initialization.d.ts +5 -0
- package/dist/server/services/websocket/session-initialization.d.ts.map +1 -0
- package/dist/server/services/websocket/session-initialization.js +163 -0
- package/dist/server/services/websocket/session-initialization.js.map +1 -0
- package/dist/server/services/websocket/types.d.ts +12 -2
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/package.json +1 -2
- package/server/cli/headless/claude-invoker-process.ts +204 -0
- package/server/cli/headless/claude-invoker-stall.ts +164 -0
- package/server/cli/headless/claude-invoker-stream.ts +353 -0
- package/server/cli/headless/claude-invoker-tools.ts +187 -0
- package/server/cli/headless/claude-invoker.ts +15 -1092
- package/server/cli/headless/haiku-assessments.ts +365 -0
- package/server/cli/headless/headless-logger.ts +26 -5
- package/server/cli/headless/native-timeout-detector.ts +117 -0
- package/server/cli/headless/stall-assessor.ts +65 -618
- package/server/cli/headless/types.ts +4 -1
- package/server/cli/improvisation-attachments.ts +148 -0
- package/server/cli/improvisation-retry.ts +602 -0
- package/server/cli/improvisation-session-manager.ts +140 -1349
- package/server/cli/improvisation-types.ts +98 -0
- package/server/cli/prompt-builders.ts +370 -0
- package/server/index.ts +35 -246
- package/server/mcp/bouncer-haiku.ts +182 -0
- package/server/mcp/bouncer-integration.ts +87 -248
- package/server/mcp/security-analysis.ts +217 -0
- package/server/mcp/security-audit.ts +1 -1
- package/server/mcp/security-patterns.ts +60 -283
- package/server/server-setup.ts +114 -0
- package/server/services/file-explorer-ops.ts +293 -0
- package/server/services/files.ts +20 -532
- package/server/services/plan/composer.ts +140 -35
- package/server/services/plan/config-installer.ts +187 -0
- package/server/services/plan/dependency-resolver.ts +4 -1
- package/server/services/plan/executor.ts +281 -488
- package/server/services/plan/front-matter.ts +48 -0
- package/server/services/plan/output-manager.ts +113 -0
- package/server/services/plan/parser-core.ts +406 -0
- package/server/services/plan/parser-migration.ts +128 -0
- package/server/services/plan/parser.ts +188 -394
- package/server/services/plan/prompt-builder.ts +161 -0
- package/server/services/plan/review-gate.ts +212 -0
- package/server/services/plan/state-reconciler.ts +68 -7
- package/server/services/plan/types.ts +101 -1
- package/server/services/platform-credentials.ts +83 -0
- package/server/services/platform.ts +16 -131
- package/server/services/terminal/pty-manager.ts +66 -313
- package/server/services/terminal/pty-utils.ts +176 -0
- package/server/services/websocket/file-definition-handlers.ts +165 -0
- package/server/services/websocket/file-explorer-handlers.ts +37 -452
- package/server/services/websocket/file-search-handlers.ts +291 -0
- package/server/services/websocket/file-utils.ts +3 -3
- package/server/services/websocket/git-branch-handlers.ts +130 -0
- package/server/services/websocket/git-diff-handlers.ts +140 -0
- package/server/services/websocket/git-handlers.ts +40 -625
- package/server/services/websocket/git-log-handlers.ts +149 -0
- package/server/services/websocket/git-pr-handlers.ts +17 -62
- package/server/services/websocket/git-tag-handlers.ts +91 -0
- package/server/services/websocket/git-utils.ts +230 -0
- package/server/services/websocket/handler.ts +39 -112
- package/server/services/websocket/plan-board-handlers.ts +277 -0
- package/server/services/websocket/plan-execution-handlers.ts +184 -0
- package/server/services/websocket/plan-handlers.ts +23 -544
- package/server/services/websocket/plan-helpers.ts +215 -0
- package/server/services/websocket/plan-issue-handlers.ts +204 -0
- package/server/services/websocket/plan-sprint-handlers.ts +252 -0
- package/server/services/websocket/quality-complexity.ts +294 -0
- package/server/services/websocket/quality-fix-agent.ts +181 -0
- package/server/services/websocket/quality-handlers.ts +36 -404
- package/server/services/websocket/quality-linting.ts +187 -0
- package/server/services/websocket/quality-review-agent.ts +246 -0
- package/server/services/websocket/quality-service.ts +11 -762
- package/server/services/websocket/quality-tools.ts +209 -0
- package/server/services/websocket/quality-types.ts +169 -0
- package/server/services/websocket/session-handlers.ts +5 -437
- package/server/services/websocket/session-history.ts +222 -0
- package/server/services/websocket/session-initialization.ts +209 -0
- package/server/services/websocket/types.ts +46 -2
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
|
+
/** Regex matching Claude Code's internal tool timeout messages */
|
|
4
|
+
export const NATIVE_TIMEOUT_PATTERN = /^(\w+) timed out — (continuing|retrying) with (\d+) results? preserved$/;
|
|
5
|
+
/** Quick prefix check: does incomplete text look like it might be a timeout?
|
|
6
|
+
* Matches any capitalized tool name followed by " timed" — no hardcoded set
|
|
7
|
+
* needed because the full NATIVE_TIMEOUT_PATTERN validates on the next chunk. */
|
|
8
|
+
export const TIMEOUT_PREFIX_PATTERN = /^[A-Z]\w* timed/;
|
|
9
|
+
/**
|
|
10
|
+
* Detects Claude Code's internal tool timeout messages in the text stream.
|
|
11
|
+
*
|
|
12
|
+
* Buffers text at newline boundaries to detect complete timeout lines.
|
|
13
|
+
* Non-matching text is forwarded immediately to minimize streaming latency.
|
|
14
|
+
*/
|
|
15
|
+
export class NativeTimeoutDetector {
|
|
16
|
+
lineBuffer = '';
|
|
17
|
+
detectedTimeouts = [];
|
|
18
|
+
/** Text buffered after native timeouts — held back from streaming until context is assessed */
|
|
19
|
+
postTimeoutBuffer = '';
|
|
20
|
+
/**
|
|
21
|
+
* Process a text_delta chunk.
|
|
22
|
+
* Returns passthrough text (for outputCallback) and any detected timeouts.
|
|
23
|
+
*
|
|
24
|
+
* After the first native timeout is detected, subsequent passthrough text
|
|
25
|
+
* is held in postTimeoutBuffer instead of returned as passthrough. This
|
|
26
|
+
* prevents confused "What were you working on?" responses from streaming
|
|
27
|
+
* to the user before context loss can be assessed.
|
|
28
|
+
*/
|
|
29
|
+
processChunk(text) {
|
|
30
|
+
const timeouts = [];
|
|
31
|
+
let passthrough = '';
|
|
32
|
+
this.lineBuffer += text;
|
|
33
|
+
const lines = this.lineBuffer.split('\n');
|
|
34
|
+
const incomplete = lines.pop() ?? '';
|
|
35
|
+
for (const line of lines) {
|
|
36
|
+
const trimmed = line.trim();
|
|
37
|
+
const match = trimmed.match(NATIVE_TIMEOUT_PATTERN);
|
|
38
|
+
if (match) {
|
|
39
|
+
const event = {
|
|
40
|
+
toolName: match[1],
|
|
41
|
+
action: match[2],
|
|
42
|
+
preservedCount: parseInt(match[3], 10),
|
|
43
|
+
};
|
|
44
|
+
timeouts.push(event);
|
|
45
|
+
this.detectedTimeouts.push(event);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
passthrough += `${line}\n`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Handle incomplete trailing text
|
|
52
|
+
if (incomplete) {
|
|
53
|
+
if (TIMEOUT_PREFIX_PATTERN.test(incomplete)) {
|
|
54
|
+
this.lineBuffer = incomplete;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
passthrough += incomplete;
|
|
58
|
+
this.lineBuffer = '';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.lineBuffer = '';
|
|
63
|
+
}
|
|
64
|
+
// After native timeouts, buffer passthrough text instead of returning it.
|
|
65
|
+
if (this.detectedTimeouts.length > 0 && passthrough) {
|
|
66
|
+
this.postTimeoutBuffer += passthrough;
|
|
67
|
+
passthrough = '';
|
|
68
|
+
}
|
|
69
|
+
return { passthrough, timeouts };
|
|
70
|
+
}
|
|
71
|
+
/** Flush any held buffer (call on stream end).
|
|
72
|
+
* Also checks remaining buffer for timeout patterns so the last
|
|
73
|
+
* timeout message (without trailing newline) is always counted.
|
|
74
|
+
*/
|
|
75
|
+
flush() {
|
|
76
|
+
const remaining = this.lineBuffer;
|
|
77
|
+
this.lineBuffer = '';
|
|
78
|
+
if (remaining) {
|
|
79
|
+
const trimmed = remaining.trim();
|
|
80
|
+
const match = trimmed.match(NATIVE_TIMEOUT_PATTERN);
|
|
81
|
+
if (match) {
|
|
82
|
+
this.detectedTimeouts.push({
|
|
83
|
+
toolName: match[1],
|
|
84
|
+
action: match[2],
|
|
85
|
+
preservedCount: parseInt(match[3], 10),
|
|
86
|
+
});
|
|
87
|
+
return '';
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return remaining;
|
|
91
|
+
}
|
|
92
|
+
get timeoutCount() {
|
|
93
|
+
return this.detectedTimeouts.length;
|
|
94
|
+
}
|
|
95
|
+
get bufferedPostTimeoutOutput() {
|
|
96
|
+
return this.postTimeoutBuffer;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=native-timeout-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-timeout-detector.js","sourceRoot":"","sources":["../../../../server/cli/headless/native-timeout-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,129 +1,21 @@
|
|
|
1
|
+
export type { ApprovalVerdict, BestResultContext, BestResultVerdict, ContextLossContext, ContextLossVerdict, ErrorClassification, PrematureCompletionContext, PrematureCompletionVerdict } from './haiku-assessments.js';
|
|
2
|
+
export { assessApproval, assessBestResult, assessContextLoss, assessPrematureCompletion, classifyError } from './haiku-assessments.js';
|
|
1
3
|
export interface StallContext {
|
|
2
|
-
/** The original user prompt being executed */
|
|
3
4
|
originalPrompt: string;
|
|
4
|
-
/** How long the process has been silent (ms) */
|
|
5
5
|
silenceMs: number;
|
|
6
|
-
/** Name of the last tool that started executing */
|
|
7
6
|
lastToolName?: string;
|
|
8
|
-
/** Summarized input of the last tool call */
|
|
9
7
|
lastToolInputSummary?: string;
|
|
10
|
-
/** Number of tool calls started but not yet returned */
|
|
11
8
|
pendingToolCount: number;
|
|
12
|
-
/** Names of all currently pending tools (toolId -> toolName) */
|
|
13
9
|
pendingToolNames?: Set<string>;
|
|
14
|
-
/** Total tool calls made so far this session */
|
|
15
10
|
totalToolCalls: number;
|
|
16
|
-
/** Total wall-clock time since process started (ms) */
|
|
17
11
|
elapsedTotalMs: number;
|
|
18
|
-
/** Time since the last token usage event (ms). Undefined if no token events yet. */
|
|
19
12
|
tokenSilenceMs?: number;
|
|
20
13
|
}
|
|
21
14
|
export interface StallVerdict {
|
|
22
|
-
/** Whether to extend the deadline or proceed with kill */
|
|
23
15
|
action: 'extend' | 'kill';
|
|
24
|
-
/** Additional time to grant (ms), only meaningful when action is 'extend' */
|
|
25
16
|
extensionMs: number;
|
|
26
|
-
/** Human-readable reason for the verdict */
|
|
27
17
|
reason: string;
|
|
28
18
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Main assessment entry point. Tries the fast heuristic first,
|
|
31
|
-
* falls back to a Haiku model call for ambiguous cases.
|
|
32
|
-
*/
|
|
33
19
|
export declare function assessStall(ctx: StallContext, claudeCommand: string, verbose: boolean, toolWatchdogActive?: boolean): Promise<StallVerdict>;
|
|
34
|
-
/**
|
|
35
|
-
* Assess a specific tool timeout using Haiku.
|
|
36
|
-
* Used by ToolWatchdog as a tiebreaker before killing a tool.
|
|
37
|
-
*/
|
|
38
20
|
export declare function assessToolTimeout(toolName: string, toolInput: Record<string, unknown>, elapsedMs: number, claudeCommand: string, verbose: boolean, tokenSilenceMs?: number): Promise<StallVerdict>;
|
|
39
|
-
export interface ContextLossVerdict {
|
|
40
|
-
/** Whether the agent lost context and needs recovery */
|
|
41
|
-
contextLost: boolean;
|
|
42
|
-
/** Human-readable reason for the verdict */
|
|
43
|
-
reason: string;
|
|
44
|
-
}
|
|
45
|
-
/** Enriched context for Haiku-based context loss assessment */
|
|
46
|
-
export interface ContextLossContext {
|
|
47
|
-
assistantResponse: string;
|
|
48
|
-
effectiveTimeouts: number;
|
|
49
|
-
nativeTimeoutCount: number;
|
|
50
|
-
successfulToolCalls: number;
|
|
51
|
-
thinkingOutputLength: number;
|
|
52
|
-
hasSuccessfulWrite: boolean;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Assess whether a Claude Code session lost context after tool timeouts.
|
|
56
|
-
* Uses Haiku with enriched context signals — replaces brittle hardcoded
|
|
57
|
-
* thresholds (200 chars thinking, 2x ratio, 500 chars response) with
|
|
58
|
-
* a single LLM call that sees the full picture.
|
|
59
|
-
*
|
|
60
|
-
* Only call this when effectiveTimeouts > 0.
|
|
61
|
-
*/
|
|
62
|
-
export declare function assessContextLoss(ctx: ContextLossContext, claudeCommand: string, verbose: boolean): Promise<ContextLossVerdict>;
|
|
63
|
-
export interface ApprovalVerdict {
|
|
64
|
-
isApproval: boolean;
|
|
65
|
-
reason: string;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Assess whether a user message is an approval/continuation or a new task.
|
|
69
|
-
* Uses Haiku to classify intent — handles natural language variations that
|
|
70
|
-
* regex patterns miss ("sounds good", "yep do it", "option 2", etc.).
|
|
71
|
-
*/
|
|
72
|
-
export declare function assessApproval(userMessage: string, claudeCommand: string, verbose: boolean): Promise<ApprovalVerdict>;
|
|
73
|
-
export interface PrematureCompletionContext {
|
|
74
|
-
/** The trailing portion of the assistant response (last ~800 chars) */
|
|
75
|
-
responseTail: string;
|
|
76
|
-
/** Total number of successful tool calls in this execution */
|
|
77
|
-
successfulToolCalls: number;
|
|
78
|
-
/** Whether extended thinking output was produced */
|
|
79
|
-
hasThinking: boolean;
|
|
80
|
-
/** Total response length */
|
|
81
|
-
responseLength: number;
|
|
82
|
-
}
|
|
83
|
-
export interface PrematureCompletionVerdict {
|
|
84
|
-
/** True if the task appears incomplete and should be auto-continued */
|
|
85
|
-
isIncomplete: boolean;
|
|
86
|
-
reason: string;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Assess whether a completed Claude execution ended prematurely.
|
|
90
|
-
* Called when stop_reason is 'end_turn' but the task may not be finished.
|
|
91
|
-
* Haiku determines if the trailing response text indicates planned-but-unexecuted work.
|
|
92
|
-
*/
|
|
93
|
-
export declare function assessPrematureCompletion(ctx: PrematureCompletionContext, claudeCommand: string, verbose: boolean): Promise<PrematureCompletionVerdict>;
|
|
94
|
-
export interface BestResultContext {
|
|
95
|
-
originalPrompt: string;
|
|
96
|
-
resultA: {
|
|
97
|
-
successfulToolCalls: number;
|
|
98
|
-
responseLength: number;
|
|
99
|
-
hasThinking: boolean;
|
|
100
|
-
responseTail: string;
|
|
101
|
-
};
|
|
102
|
-
resultB: {
|
|
103
|
-
successfulToolCalls: number;
|
|
104
|
-
responseLength: number;
|
|
105
|
-
hasThinking: boolean;
|
|
106
|
-
responseTail: string;
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
export interface BestResultVerdict {
|
|
110
|
-
winner: 'A' | 'B';
|
|
111
|
-
reason: string;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Compare two retry results and determine which made more meaningful progress.
|
|
115
|
-
* Uses Haiku to evaluate quality — replaces arbitrary numeric scoring
|
|
116
|
-
* (tool count * 10 + response length / 50 + thinking bonus).
|
|
117
|
-
*/
|
|
118
|
-
export declare function assessBestResult(ctx: BestResultContext, claudeCommand: string, verbose: boolean): Promise<BestResultVerdict>;
|
|
119
|
-
export interface ErrorClassification {
|
|
120
|
-
errorCode: string;
|
|
121
|
-
message: string;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Classify an unrecognized error from stderr using Haiku.
|
|
125
|
-
* Called as a fallback when regex patterns in output-utils.ts don't match.
|
|
126
|
-
* Returns null if the stderr content isn't a real error (just warnings/debug info).
|
|
127
|
-
*/
|
|
128
|
-
export declare function classifyError(stderrContent: string, claudeCommand: string, verbose: boolean): Promise<ErrorClassification | null>;
|
|
129
21
|
//# sourceMappingURL=stall-assessor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-assessor.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/stall-assessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stall-assessor.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/stall-assessor.ts"],"names":[],"mappings":"AAgBA,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEzN,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvI,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAmJD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,YAAY,EACjB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,EAChB,kBAAkB,UAAQ,GACzB,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,YAAY,CAAC,CA8CvB"}
|