mstro-app 0.3.8 → 0.4.0
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 +191 -21
- package/PRIVACY.md +286 -62
- package/README.md +81 -58
- package/bin/commands/status.js +1 -1
- package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +22 -12
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/headless-logger.d.ts +10 -0
- package/dist/server/cli/headless/headless-logger.d.ts.map +1 -0
- package/dist/server/cli/headless/headless-logger.js +66 -0
- package/dist/server/cli/headless/headless-logger.js.map +1 -0
- package/dist/server/cli/headless/mcp-config.d.ts.map +1 -1
- package/dist/server/cli/headless/mcp-config.js +6 -5
- package/dist/server/cli/headless/mcp-config.js.map +1 -1
- package/dist/server/cli/headless/runner.d.ts.map +1 -1
- package/dist/server/cli/headless/runner.js +4 -0
- package/dist/server/cli/headless/runner.js.map +1 -1
- package/dist/server/cli/headless/stall-assessor.d.ts +21 -0
- package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
- package/dist/server/cli/headless/stall-assessor.js +100 -24
- package/dist/server/cli/headless/stall-assessor.js.map +1 -1
- package/dist/server/cli/headless/tool-watchdog.d.ts +0 -12
- package/dist/server/cli/headless/tool-watchdog.d.ts.map +1 -1
- package/dist/server/cli/headless/tool-watchdog.js +22 -9
- package/dist/server/cli/headless/tool-watchdog.js.map +1 -1
- package/dist/server/cli/headless/types.d.ts +8 -1
- package/dist/server/cli/headless/types.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.d.ts +16 -0
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +94 -11
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/mcp/bouncer-cli.d.ts +3 -0
- package/dist/server/mcp/bouncer-cli.d.ts.map +1 -0
- package/dist/server/mcp/bouncer-cli.js +54 -0
- package/dist/server/mcp/bouncer-cli.js.map +1 -0
- package/dist/server/services/plan/composer.d.ts +4 -0
- package/dist/server/services/plan/composer.d.ts.map +1 -0
- package/dist/server/services/plan/composer.js +181 -0
- package/dist/server/services/plan/composer.js.map +1 -0
- package/dist/server/services/plan/dependency-resolver.d.ts +28 -0
- package/dist/server/services/plan/dependency-resolver.d.ts.map +1 -0
- package/dist/server/services/plan/dependency-resolver.js +154 -0
- package/dist/server/services/plan/dependency-resolver.js.map +1 -0
- package/dist/server/services/plan/executor.d.ts +110 -0
- package/dist/server/services/plan/executor.d.ts.map +1 -0
- package/dist/server/services/plan/executor.js +641 -0
- package/dist/server/services/plan/executor.js.map +1 -0
- package/dist/server/services/plan/parser.d.ts +11 -0
- package/dist/server/services/plan/parser.d.ts.map +1 -0
- package/dist/server/services/plan/parser.js +445 -0
- package/dist/server/services/plan/parser.js.map +1 -0
- package/dist/server/services/plan/state-reconciler.d.ts +2 -0
- package/dist/server/services/plan/state-reconciler.d.ts.map +1 -0
- package/dist/server/services/plan/state-reconciler.js +145 -0
- package/dist/server/services/plan/state-reconciler.js.map +1 -0
- package/dist/server/services/plan/types.d.ts +121 -0
- package/dist/server/services/plan/types.d.ts.map +1 -0
- package/dist/server/services/plan/types.js +4 -0
- package/dist/server/services/plan/types.js.map +1 -0
- package/dist/server/services/plan/watcher.d.ts +14 -0
- package/dist/server/services/plan/watcher.d.ts.map +1 -0
- package/dist/server/services/plan/watcher.js +69 -0
- package/dist/server/services/plan/watcher.js.map +1 -0
- package/dist/server/services/websocket/file-explorer-handlers.js +20 -0
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +21 -0
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/plan-handlers.d.ts +6 -0
- package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/plan-handlers.js +494 -0
- package/dist/server/services/websocket/plan-handlers.js.map +1 -0
- package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-handlers.js +384 -12
- package/dist/server/services/websocket/quality-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-persistence.d.ts +45 -0
- package/dist/server/services/websocket/quality-persistence.d.ts.map +1 -0
- package/dist/server/services/websocket/quality-persistence.js +187 -0
- package/dist/server/services/websocket/quality-persistence.js.map +1 -0
- 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 +162 -18
- package/dist/server/services/websocket/quality-service.js.map +1 -1
- package/dist/server/services/websocket/types.d.ts +2 -2
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/server/cli/headless/claude-invoker.ts +25 -12
- package/server/cli/headless/headless-logger.ts +78 -0
- package/server/cli/headless/mcp-config.ts +6 -5
- package/server/cli/headless/runner.ts +4 -0
- package/server/cli/headless/stall-assessor.ts +131 -24
- package/server/cli/headless/tool-watchdog.ts +10 -9
- package/server/cli/headless/types.ts +10 -1
- package/server/cli/improvisation-session-manager.ts +118 -11
- package/server/mcp/bouncer-cli.ts +73 -0
- package/server/services/plan/composer.ts +199 -0
- package/server/services/plan/dependency-resolver.ts +182 -0
- package/server/services/plan/executor.ts +700 -0
- package/server/services/plan/parser.ts +491 -0
- package/server/services/plan/state-reconciler.ts +174 -0
- package/server/services/plan/types.ts +166 -0
- package/server/services/plan/watcher.ts +73 -0
- package/server/services/websocket/file-explorer-handlers.ts +20 -0
- package/server/services/websocket/handler.ts +21 -0
- package/server/services/websocket/plan-handlers.ts +592 -0
- package/server/services/websocket/quality-handlers.ts +450 -12
- package/server/services/websocket/quality-persistence.ts +250 -0
- package/server/services/websocket/quality-service.ts +183 -18
- package/server/services/websocket/types.ts +48 -2
|
@@ -7,6 +7,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
7
7
|
import { homedir } from 'node:os';
|
|
8
8
|
import { join } from 'node:path';
|
|
9
9
|
import { MCP_SERVER_PATH, MSTRO_ROOT } from '../../utils/paths.js';
|
|
10
|
+
import { herror, hlog } from './headless-logger.js';
|
|
10
11
|
/**
|
|
11
12
|
* Load user's MCP servers from ~/.claude.json (global + project-level)
|
|
12
13
|
*/
|
|
@@ -30,11 +31,11 @@ function loadUserMcpServers(workingDir, verbose) {
|
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
if (verbose) {
|
|
33
|
-
|
|
34
|
+
hlog(`[${new Date().toISOString()}] Loaded ${Object.keys(servers).length} user MCP servers from ~/.claude.json`);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
catch (parseError) {
|
|
37
|
-
|
|
38
|
+
herror(`[${new Date().toISOString()}] Failed to parse ~/.claude.json: ${parseError instanceof Error ? parseError.message : String(parseError)}`);
|
|
38
39
|
}
|
|
39
40
|
return servers;
|
|
40
41
|
}
|
|
@@ -45,7 +46,7 @@ function loadUserMcpServers(workingDir, verbose) {
|
|
|
45
46
|
export function generateMcpConfig(workingDir, verbose = false) {
|
|
46
47
|
try {
|
|
47
48
|
if (!existsSync(MCP_SERVER_PATH)) {
|
|
48
|
-
|
|
49
|
+
herror(`[${new Date().toISOString()}] MCP server not found at ${MCP_SERVER_PATH}`);
|
|
49
50
|
return null;
|
|
50
51
|
}
|
|
51
52
|
const mcpServers = {
|
|
@@ -64,12 +65,12 @@ export function generateMcpConfig(workingDir, verbose = false) {
|
|
|
64
65
|
const configPath = join(configDir, 'mcp-config.json');
|
|
65
66
|
writeFileSync(configPath, JSON.stringify({ mcpServers }, null, 2));
|
|
66
67
|
if (verbose) {
|
|
67
|
-
|
|
68
|
+
hlog(`[${new Date().toISOString()}] Generated MCP config at ${configPath} (${Object.keys(mcpServers).length} servers)`);
|
|
68
69
|
}
|
|
69
70
|
return configPath;
|
|
70
71
|
}
|
|
71
72
|
catch (error) {
|
|
72
|
-
|
|
73
|
+
herror(`[${new Date().toISOString()}] Failed to generate MCP config: ${error instanceof Error ? error.message : String(error)}`);
|
|
73
74
|
return null;
|
|
74
75
|
}
|
|
75
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../../server/cli/headless/mcp-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../../server/cli/headless/mcp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/runner.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,cAAc,EAGd,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtJ;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAO1E;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,gBAAgB,CAAwC;gBAEpD,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/runner.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,cAAc,EAGd,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtJ;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAO1E;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,gBAAgB,CAAwC;gBAEpD,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;IAkC3C;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IAcnC;;OAEG;YACW,eAAe;IAkF7B;;OAEG;YACW,oBAAoB;IAalC;;OAEG;IACH,OAAO,IAAI,IAAI;IAoBf;;;OAGG;IACH,YAAY,IAAI,MAAM;CAUvB"}
|
|
@@ -52,6 +52,7 @@ export class HeadlessRunner {
|
|
|
52
52
|
maxAutoRetries: config.maxAutoRetries ?? 2,
|
|
53
53
|
onToolTimeout: config.onToolTimeout,
|
|
54
54
|
sandboxed: config.sandboxed,
|
|
55
|
+
extraEnv: config.extraEnv,
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
/**
|
|
@@ -98,6 +99,7 @@ export class HeadlessRunner {
|
|
|
98
99
|
nativeTimeoutCount: result.nativeTimeoutCount,
|
|
99
100
|
postTimeoutOutput: result.postTimeoutOutput,
|
|
100
101
|
resumeBufferedOutput: result.resumeBufferedOutput,
|
|
102
|
+
stopReason: result.stopReason,
|
|
101
103
|
};
|
|
102
104
|
}
|
|
103
105
|
// Build meaningful error: prefer stderr, fall back to non-JSON stdout lines
|
|
@@ -125,6 +127,7 @@ export class HeadlessRunner {
|
|
|
125
127
|
nativeTimeoutCount: result.nativeTimeoutCount,
|
|
126
128
|
postTimeoutOutput: result.postTimeoutOutput,
|
|
127
129
|
resumeBufferedOutput: result.resumeBufferedOutput,
|
|
130
|
+
stopReason: result.stopReason,
|
|
128
131
|
};
|
|
129
132
|
}
|
|
130
133
|
const tokens = estimateTokensFromOutput(result.output);
|
|
@@ -141,6 +144,7 @@ export class HeadlessRunner {
|
|
|
141
144
|
nativeTimeoutCount: result.nativeTimeoutCount,
|
|
142
145
|
postTimeoutOutput: result.postTimeoutOutput,
|
|
143
146
|
resumeBufferedOutput: result.resumeBufferedOutput,
|
|
147
|
+
stopReason: result.stopReason,
|
|
144
148
|
};
|
|
145
149
|
}
|
|
146
150
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../server/cli/headless/runner.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAUhE,OAAO,EAA6B,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAW5D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,MAAsB;IAClE,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,MAAM,CAAyB;IAC/B,gBAAgB,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEhE,YAAY,MAA+B;QACzC,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE;YAC9C,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,MAAM;YAC3D,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,QAAQ;YAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;YACzB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;YACzB,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB;YAC7C,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;YAC1C,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACvC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;YACtF,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;YAChD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;YAC5C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,KAAK,KAAK;YACvD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,CAAC;YAClD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,SAAS;YAClD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,KAAK,KAAK;YACvD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;YAC1C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../server/cli/headless/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,27 @@ export interface ApprovalVerdict {
|
|
|
70
70
|
* regex patterns miss ("sounds good", "yep do it", "option 2", etc.).
|
|
71
71
|
*/
|
|
72
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>;
|
|
73
94
|
export interface BestResultContext {
|
|
74
95
|
originalPrompt: string;
|
|
75
96
|
resultA: {
|
|
@@ -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":"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"}
|
|
@@ -15,6 +15,32 @@
|
|
|
15
15
|
* 2. Haiku assessment: ambiguous cases get a quick AI evaluation.
|
|
16
16
|
*/
|
|
17
17
|
import { spawn } from 'node:child_process';
|
|
18
|
+
import { hlog } from './headless-logger.js';
|
|
19
|
+
/** Check if Task/Agent subagents are currently pending (producing expected silence) */
|
|
20
|
+
function hasSubagentPending(pendingNames, lastToolName, hasPendingTools) {
|
|
21
|
+
return pendingNames.has('Task') || pendingNames.has('Agent')
|
|
22
|
+
|| ((lastToolName === 'Task' || lastToolName === 'Agent') && hasPendingTools);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check if an Agent Teams lead is idle-waiting for teammate notifications.
|
|
26
|
+
* After spawning teammates (Agent tool calls complete), the lead has no pending
|
|
27
|
+
* tools but is legitimately waiting for teammate idle events.
|
|
28
|
+
*/
|
|
29
|
+
function checkAgentTeamsWaiting(ctx, hasPendingTools) {
|
|
30
|
+
// The lead may use any tool while waiting (Glob to verify outputs, Bash to
|
|
31
|
+
// check disk, ToolSearch, etc.), so don't gate on lastToolName. The key
|
|
32
|
+
// signal is: prompt contains team_name, tools were called, nothing pending.
|
|
33
|
+
if (!hasPendingTools &&
|
|
34
|
+
ctx.totalToolCalls > 0 &&
|
|
35
|
+
ctx.originalPrompt.includes('team_name')) {
|
|
36
|
+
return {
|
|
37
|
+
action: 'extend',
|
|
38
|
+
extensionMs: 30 * 60_000,
|
|
39
|
+
reason: 'Agent Teams lead waiting for teammate idle notifications — extending 30 min',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
18
44
|
/**
|
|
19
45
|
* Fast heuristic for known long-running patterns.
|
|
20
46
|
* Returns a verdict immediately if the pattern is recognized, null otherwise.
|
|
@@ -50,11 +76,7 @@ function quickHeuristic(ctx, toolWatchdogActive = false) {
|
|
|
50
76
|
}
|
|
51
77
|
// Task/subagent launches are known to produce long silence periods.
|
|
52
78
|
// The parent Claude process emits nothing while waiting for subagent results.
|
|
53
|
-
|
|
54
|
-
// Claude Code renamed Task → Agent; check both for backward compatibility
|
|
55
|
-
const hasTaskPending = pendingNames.has('Task') || pendingNames.has('Agent')
|
|
56
|
-
|| ((ctx.lastToolName === 'Task' || ctx.lastToolName === 'Agent') && hasPendingTools);
|
|
57
|
-
if (hasTaskPending) {
|
|
79
|
+
if (hasSubagentPending(pendingNames, ctx.lastToolName, hasPendingTools)) {
|
|
58
80
|
const extensionMin = Math.min(30, 10 + ctx.pendingToolCount * 5);
|
|
59
81
|
return {
|
|
60
82
|
action: 'extend',
|
|
@@ -62,6 +84,10 @@ function quickHeuristic(ctx, toolWatchdogActive = false) {
|
|
|
62
84
|
reason: `${ctx.pendingToolCount} Task subagent(s) still executing — extending ${extensionMin} min`,
|
|
63
85
|
};
|
|
64
86
|
}
|
|
87
|
+
// Agent Teams lead waiting for teammate idle notifications (extracted for complexity)
|
|
88
|
+
const agentTeamsVerdict = checkAgentTeamsWaiting(ctx, hasPendingTools);
|
|
89
|
+
if (agentTeamsVerdict)
|
|
90
|
+
return agentTeamsVerdict;
|
|
65
91
|
// Multiple parallel tool calls (e.g., parallel Bash, parallel Read/Grep)
|
|
66
92
|
if (ctx.pendingToolCount >= 3) {
|
|
67
93
|
return {
|
|
@@ -90,20 +116,20 @@ export async function assessStall(ctx, claudeCommand, verbose, toolWatchdogActiv
|
|
|
90
116
|
const quick = quickHeuristic(ctx, toolWatchdogActive);
|
|
91
117
|
if (quick) {
|
|
92
118
|
if (verbose) {
|
|
93
|
-
|
|
119
|
+
hlog(`[STALL-ASSESS] Heuristic verdict: ${quick.reason}`);
|
|
94
120
|
}
|
|
95
121
|
return quick;
|
|
96
122
|
}
|
|
97
123
|
// Layer 2: Haiku assessment
|
|
98
124
|
try {
|
|
99
125
|
if (verbose) {
|
|
100
|
-
|
|
126
|
+
hlog('[STALL-ASSESS] Running Haiku assessment...');
|
|
101
127
|
}
|
|
102
128
|
return await runHaikuAssessment(ctx, claudeCommand, verbose);
|
|
103
129
|
}
|
|
104
130
|
catch (err) {
|
|
105
131
|
if (verbose) {
|
|
106
|
-
|
|
132
|
+
hlog(`[STALL-ASSESS] Haiku assessment failed: ${err}`);
|
|
107
133
|
}
|
|
108
134
|
// If Haiku fails (timeout, auth issue, etc.), extend cautiously
|
|
109
135
|
return {
|
|
@@ -164,13 +190,13 @@ export async function assessToolTimeout(toolName, toolInput, elapsedMs, claudeCo
|
|
|
164
190
|
].join('\n');
|
|
165
191
|
try {
|
|
166
192
|
if (verbose) {
|
|
167
|
-
|
|
193
|
+
hlog(`[TOOL-ASSESS] Running Haiku assessment for ${toolName} (${elapsedSec}s elapsed)...`);
|
|
168
194
|
}
|
|
169
195
|
return await spawnHaikuVerdict(prompt, claudeCommand, verbose, 'TOOL-ASSESS');
|
|
170
196
|
}
|
|
171
197
|
catch (err) {
|
|
172
198
|
if (verbose) {
|
|
173
|
-
|
|
199
|
+
hlog(`[TOOL-ASSESS] Haiku assessment failed: ${err}`);
|
|
174
200
|
}
|
|
175
201
|
// On failure, default to kill (the tool has already exceeded its timeout)
|
|
176
202
|
return {
|
|
@@ -213,19 +239,19 @@ export async function assessContextLoss(ctx, claudeCommand, verbose) {
|
|
|
213
239
|
].join('\n');
|
|
214
240
|
try {
|
|
215
241
|
if (verbose) {
|
|
216
|
-
|
|
242
|
+
hlog(`[CONTEXT-ASSESS] Running Haiku assessment (${ctx.effectiveTimeouts} timeouts, ${ctx.successfulToolCalls} successes, ${ctx.thinkingOutputLength} thinking chars)...`);
|
|
217
243
|
}
|
|
218
244
|
const raw = await spawnHaikuRaw(prompt, claudeCommand, verbose, 'CONTEXT-ASSESS');
|
|
219
245
|
const parsed = parseVerdictResponse(raw);
|
|
220
246
|
const contextLost = parsed.verdict === 'STALLED';
|
|
221
247
|
if (verbose) {
|
|
222
|
-
|
|
248
|
+
hlog(`[CONTEXT-ASSESS] Verdict: ${contextLost ? 'LOST' : 'CONTINUED'} — ${parsed.reason}`);
|
|
223
249
|
}
|
|
224
250
|
return { contextLost, reason: parsed.reason };
|
|
225
251
|
}
|
|
226
252
|
catch (err) {
|
|
227
253
|
if (verbose) {
|
|
228
|
-
|
|
254
|
+
hlog(`[CONTEXT-ASSESS] Haiku assessment failed: ${err}`);
|
|
229
255
|
}
|
|
230
256
|
// On failure, assume context was lost (safer to retry than to show a confused response)
|
|
231
257
|
return {
|
|
@@ -314,7 +340,7 @@ function spawnHaikuRaw(prompt, claudeCommand, verbose, label) {
|
|
|
314
340
|
});
|
|
315
341
|
proc.stderr.on('data', (data) => {
|
|
316
342
|
if (verbose) {
|
|
317
|
-
|
|
343
|
+
hlog(`[${label}] haiku stderr: ${data.toString().trim()}`);
|
|
318
344
|
}
|
|
319
345
|
});
|
|
320
346
|
proc.on('close', (code) => {
|
|
@@ -327,7 +353,7 @@ function spawnHaikuRaw(prompt, claudeCommand, verbose, label) {
|
|
|
327
353
|
return;
|
|
328
354
|
}
|
|
329
355
|
if (verbose) {
|
|
330
|
-
|
|
356
|
+
hlog(`[${label}] Haiku response: ${stdout.trim()}`);
|
|
331
357
|
}
|
|
332
358
|
resolve(stdout.trim());
|
|
333
359
|
});
|
|
@@ -387,24 +413,74 @@ export async function assessApproval(userMessage, claudeCommand, verbose) {
|
|
|
387
413
|
].join('\n');
|
|
388
414
|
try {
|
|
389
415
|
if (verbose) {
|
|
390
|
-
|
|
416
|
+
hlog('[APPROVAL-ASSESS] Running Haiku assessment...');
|
|
391
417
|
}
|
|
392
418
|
const raw = await spawnHaikuRaw(prompt, claudeCommand, verbose, 'APPROVAL-ASSESS');
|
|
393
419
|
const parsed = parseVerdictResponse(raw);
|
|
394
420
|
const isApproval = parsed.verdict.includes('APPROVAL');
|
|
395
421
|
if (verbose) {
|
|
396
|
-
|
|
422
|
+
hlog(`[APPROVAL-ASSESS] Verdict: ${isApproval ? 'APPROVAL' : 'NEW_TASK'} — ${parsed.reason}`);
|
|
397
423
|
}
|
|
398
424
|
return { isApproval, reason: parsed.reason };
|
|
399
425
|
}
|
|
400
426
|
catch (err) {
|
|
401
427
|
if (verbose) {
|
|
402
|
-
|
|
428
|
+
hlog(`[APPROVAL-ASSESS] Haiku assessment failed: ${err}`);
|
|
403
429
|
}
|
|
404
430
|
// On failure, assume not an approval (safer to treat as new task)
|
|
405
431
|
return { isApproval: false, reason: `Assessment failed: ${err}` };
|
|
406
432
|
}
|
|
407
433
|
}
|
|
434
|
+
/**
|
|
435
|
+
* Assess whether a completed Claude execution ended prematurely.
|
|
436
|
+
* Called when stop_reason is 'end_turn' but the task may not be finished.
|
|
437
|
+
* Haiku determines if the trailing response text indicates planned-but-unexecuted work.
|
|
438
|
+
*/
|
|
439
|
+
export async function assessPrematureCompletion(ctx, claudeCommand, verbose) {
|
|
440
|
+
const prompt = [
|
|
441
|
+
'You are analyzing the FINAL output of a Claude Code agent that just exited normally.',
|
|
442
|
+
'Determine whether the agent finished its task or stopped prematurely mid-work.',
|
|
443
|
+
'',
|
|
444
|
+
'Session signals:',
|
|
445
|
+
`- ${ctx.successfulToolCalls} tool calls completed successfully`,
|
|
446
|
+
`- Response length: ${ctx.responseLength} characters`,
|
|
447
|
+
`- Extended thinking: ${ctx.hasThinking ? 'YES' : 'NO'}`,
|
|
448
|
+
'',
|
|
449
|
+
`Final response text (last ${ctx.responseTail.length} chars):`,
|
|
450
|
+
ctx.responseTail,
|
|
451
|
+
'',
|
|
452
|
+
'INCOMPLETE signals: "Now I\'ll...", "Let me fix...", "Next I\'ll...", "Moving on to...",',
|
|
453
|
+
'"I\'ll continue with...", announcing next steps that were never executed,',
|
|
454
|
+
'describing work that will happen next but no tool call followed.',
|
|
455
|
+
'',
|
|
456
|
+
'COMPLETE signals: summarizing what was done, confirming changes, reporting results,',
|
|
457
|
+
'asking the user a question, past-tense descriptions of completed work,',
|
|
458
|
+
'"all done", "changes applied", referencing finished state.',
|
|
459
|
+
'',
|
|
460
|
+
'Respond in EXACTLY this format (2 lines, no extra text):',
|
|
461
|
+
'VERDICT: COMPLETE or INCOMPLETE',
|
|
462
|
+
'REASON: <brief one-line explanation>',
|
|
463
|
+
].join('\n');
|
|
464
|
+
try {
|
|
465
|
+
if (verbose) {
|
|
466
|
+
hlog(`[PREMATURE-ASSESS] Running Haiku assessment (${ctx.successfulToolCalls} tools, ${ctx.responseLength} chars)...`);
|
|
467
|
+
}
|
|
468
|
+
const raw = await spawnHaikuRaw(prompt, claudeCommand, verbose, 'PREMATURE-ASSESS');
|
|
469
|
+
const parsed = parseVerdictResponse(raw);
|
|
470
|
+
const isIncomplete = parsed.verdict.includes('INCOMPLETE');
|
|
471
|
+
if (verbose) {
|
|
472
|
+
hlog(`[PREMATURE-ASSESS] Verdict: ${isIncomplete ? 'INCOMPLETE' : 'COMPLETE'} — ${parsed.reason}`);
|
|
473
|
+
}
|
|
474
|
+
return { isIncomplete, reason: parsed.reason };
|
|
475
|
+
}
|
|
476
|
+
catch (err) {
|
|
477
|
+
if (verbose) {
|
|
478
|
+
hlog(`[PREMATURE-ASSESS] Haiku assessment failed: ${err}`);
|
|
479
|
+
}
|
|
480
|
+
// On failure, don't retry — safer to let the user decide than to auto-continue incorrectly
|
|
481
|
+
return { isIncomplete: false, reason: `Assessment failed: ${err}` };
|
|
482
|
+
}
|
|
483
|
+
}
|
|
408
484
|
/**
|
|
409
485
|
* Compare two retry results and determine which made more meaningful progress.
|
|
410
486
|
* Uses Haiku to evaluate quality — replaces arbitrary numeric scoring
|
|
@@ -436,19 +512,19 @@ export async function assessBestResult(ctx, claudeCommand, verbose) {
|
|
|
436
512
|
].join('\n');
|
|
437
513
|
try {
|
|
438
514
|
if (verbose) {
|
|
439
|
-
|
|
515
|
+
hlog('[BEST-RESULT] Running Haiku assessment...');
|
|
440
516
|
}
|
|
441
517
|
const raw = await spawnHaikuRaw(prompt, claudeCommand, verbose, 'BEST-RESULT');
|
|
442
518
|
const parsed = parseVerdictResponse(raw);
|
|
443
519
|
const winner = parsed.verdict.includes('B') ? 'B' : 'A';
|
|
444
520
|
if (verbose) {
|
|
445
|
-
|
|
521
|
+
hlog(`[BEST-RESULT] Verdict: ${winner} — ${parsed.reason}`);
|
|
446
522
|
}
|
|
447
523
|
return { winner, reason: parsed.reason };
|
|
448
524
|
}
|
|
449
525
|
catch (err) {
|
|
450
526
|
if (verbose) {
|
|
451
|
-
|
|
527
|
+
hlog(`[BEST-RESULT] Haiku assessment failed: ${err}`);
|
|
452
528
|
}
|
|
453
529
|
// On failure, prefer A (the previously-tracked best result)
|
|
454
530
|
return { winner: 'A', reason: `Assessment failed: ${err}` };
|
|
@@ -490,7 +566,7 @@ export async function classifyError(stderrContent, claudeCommand, verbose) {
|
|
|
490
566
|
].join('\n');
|
|
491
567
|
try {
|
|
492
568
|
if (verbose) {
|
|
493
|
-
|
|
569
|
+
hlog('[ERROR-CLASSIFY] Running Haiku assessment...');
|
|
494
570
|
}
|
|
495
571
|
const raw = await spawnHaikuRaw(prompt, claudeCommand, verbose, 'ERROR-CLASSIFY');
|
|
496
572
|
const lines = raw.split('\n');
|
|
@@ -508,13 +584,13 @@ export async function classifyError(stderrContent, claudeCommand, verbose) {
|
|
|
508
584
|
if (category === 'UNKNOWN' || !message)
|
|
509
585
|
return null;
|
|
510
586
|
if (verbose) {
|
|
511
|
-
|
|
587
|
+
hlog(`[ERROR-CLASSIFY] Verdict: ${category} — ${message}`);
|
|
512
588
|
}
|
|
513
589
|
return { errorCode: category, message };
|
|
514
590
|
}
|
|
515
591
|
catch (err) {
|
|
516
592
|
if (verbose) {
|
|
517
|
-
|
|
593
|
+
hlog(`[ERROR-CLASSIFY] Haiku assessment failed: ${err}`);
|
|
518
594
|
}
|
|
519
595
|
return null;
|
|
520
596
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-assessor.js","sourceRoot":"","sources":["../../../../server/cli/headless/stall-assessor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stall-assessor.js","sourceRoot":"","sources":["../../../../server/cli/headless/stall-assessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool Watchdog
|
|
3
|
-
*
|
|
4
|
-
* Per-tool adaptive timeout system using TCP RTO-style EMA tracking (RFC 6298).
|
|
5
|
-
* Monitors individual tool call durations and kills tools that exceed their
|
|
6
|
-
* adaptive timeout, preserving work via checkpoint-and-retry.
|
|
7
|
-
*
|
|
8
|
-
* Three-tier timeout strategy:
|
|
9
|
-
* 1. EMA tracking: timeout = estimatedDuration + 4 * deviation
|
|
10
|
-
* 2. Floor/ceiling bounds: never kill below floor, always kill at ceiling
|
|
11
|
-
* 3. Haiku tiebreaker: optional AI assessment before killing ambiguous cases
|
|
12
|
-
*/
|
|
13
1
|
import type { ExecutionCheckpoint, ToolTimeoutProfile, ToolUseAccumulator } from './types.js';
|
|
14
2
|
/** Default timeout profiles per tool type */
|
|
15
3
|
export declare const DEFAULT_TOOL_TIMEOUT_PROFILES: Record<string, ToolTimeoutProfile>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-watchdog.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/tool-watchdog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-watchdog.d.ts","sourceRoot":"","sources":["../../../../server/cli/headless/tool-watchdog.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,mBAAmB,EAEnB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAOpB,6CAA6C;AAC7C,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CA4E5E,CAAC;AAUF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjM,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAC,CAAsC;IAC3D,OAAO,CAAC,iBAAiB,CAAC,CAA2B;gBAEzC,OAAO,GAAE,mBAAwB;IAe7C,sEAAsE;IACtE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IA2B5D,kDAAkD;IAClD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAWpC,4DAA4D;IAC5D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAIhD,iCAAiC;IACjC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,IAAI,GAAG,IAAI;IA8B7G,uFAAuF;YACzE,2BAA2B;IAsBzC,8DAA8D;YAChD,aAAa;IAuC3B,8EAA8E;IAC9E,OAAO,CAAC,wBAAwB;IAmBhC,mDAAmD;IACnD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQhC,gDAAgD;IAChD,QAAQ,IAAI,IAAI;IAOhB,mEAAmE;IACnE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIvD,6BAA6B;IAC7B,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAI5C,0DAA0D;IAC1D,eAAe,CACb,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,kBAAkB,EAAE,EACxC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,gBAAgB,EAAE,MAAM,GACvB,mBAAmB,GAAG,IAAI;CAsD9B"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
|
+
/**
|
|
4
|
+
* Tool Watchdog
|
|
5
|
+
*
|
|
6
|
+
* Per-tool adaptive timeout system using TCP RTO-style EMA tracking (RFC 6298).
|
|
7
|
+
* Monitors individual tool call durations and kills tools that exceed their
|
|
8
|
+
* adaptive timeout, preserving work via checkpoint-and-retry.
|
|
9
|
+
*
|
|
10
|
+
* Three-tier timeout strategy:
|
|
11
|
+
* 1. EMA tracking: timeout = estimatedDuration + 4 * deviation
|
|
12
|
+
* 2. Floor/ceiling bounds: never kill below floor, always kill at ceiling
|
|
13
|
+
* 3. Haiku tiebreaker: optional AI assessment before killing ambiguous cases
|
|
14
|
+
*/
|
|
15
|
+
import { hlog } from './headless-logger.js';
|
|
3
16
|
// RFC 6298 smoothing constants
|
|
4
17
|
const ALPHA = 0.125; // smoothing factor for duration EMA
|
|
5
18
|
const BETA = 0.25; // smoothing factor for deviation EMA
|
|
@@ -122,7 +135,7 @@ export class ToolWatchdog {
|
|
|
122
135
|
sampleCount: 1,
|
|
123
136
|
});
|
|
124
137
|
if (this.verbose) {
|
|
125
|
-
|
|
138
|
+
hlog(`[WATCHDOG] ${toolName}: first sample ${durationMs}ms, initial timeout ${this.getTimeout(toolName)}ms`);
|
|
126
139
|
}
|
|
127
140
|
return;
|
|
128
141
|
}
|
|
@@ -131,7 +144,7 @@ export class ToolWatchdog {
|
|
|
131
144
|
tracker.estimatedDuration = (1 - ALPHA) * tracker.estimatedDuration + ALPHA * durationMs;
|
|
132
145
|
tracker.sampleCount++;
|
|
133
146
|
if (this.verbose) {
|
|
134
|
-
|
|
147
|
+
hlog(`[WATCHDOG] ${toolName}: sample #${tracker.sampleCount} ${durationMs}ms, est=${Math.round(tracker.estimatedDuration)}ms, dev=${Math.round(tracker.deviation)}ms, timeout=${this.getTimeout(toolName)}ms`);
|
|
135
148
|
}
|
|
136
149
|
}
|
|
137
150
|
/** Compute the current timeout for a tool type */
|
|
@@ -156,7 +169,7 @@ export class ToolWatchdog {
|
|
|
156
169
|
const timeoutMs = this.getTimeout(toolName);
|
|
157
170
|
const profile = this.getProfile(toolName);
|
|
158
171
|
if (this.verbose) {
|
|
159
|
-
|
|
172
|
+
hlog(`[WATCHDOG] Starting watch: ${toolName} (${toolId}), timeout=${Math.round(timeoutMs / 1000)}s`);
|
|
160
173
|
}
|
|
161
174
|
const timer = setTimeout(async () => {
|
|
162
175
|
const extended = await this.handleTimeoutWithTiebreaker(toolId, toolName, toolInput, profile, onTimeout);
|
|
@@ -183,7 +196,7 @@ export class ToolWatchdog {
|
|
|
183
196
|
const elapsedMs = Date.now() - watch.startTime;
|
|
184
197
|
if (!profile.useHaikuTiebreaker || !this.onTiebreaker || watch.tiebreakerAttempted) {
|
|
185
198
|
if (this.verbose) {
|
|
186
|
-
|
|
199
|
+
hlog(`[WATCHDOG] ${toolName} (${toolId}) timed out after ${Math.round(elapsedMs / 1000)}s, killing`);
|
|
187
200
|
}
|
|
188
201
|
return false;
|
|
189
202
|
}
|
|
@@ -193,26 +206,26 @@ export class ToolWatchdog {
|
|
|
193
206
|
async runTiebreaker(watch, toolId, toolName, toolInput, elapsedMs, onTimeout) {
|
|
194
207
|
watch.tiebreakerAttempted = true;
|
|
195
208
|
if (this.verbose) {
|
|
196
|
-
|
|
209
|
+
hlog(`[WATCHDOG] ${toolName} (${toolId}) hit timeout after ${Math.round(elapsedMs / 1000)}s, running tiebreaker...`);
|
|
197
210
|
}
|
|
198
211
|
try {
|
|
199
212
|
const tokenSilenceMs = this.getTokenSilenceMs?.();
|
|
200
213
|
const verdict = await this.onTiebreaker(toolName, toolInput, elapsedMs, tokenSilenceMs);
|
|
201
214
|
if (verdict.action === 'extend') {
|
|
202
215
|
if (this.verbose) {
|
|
203
|
-
|
|
216
|
+
hlog(`[WATCHDOG] Tiebreaker: extend ${toolName} by ${Math.round(verdict.extensionMs / 1000)}s — ${verdict.reason}`);
|
|
204
217
|
}
|
|
205
218
|
this.scheduleExtensionTimeout(watch, toolId, toolName, verdict.extensionMs, onTimeout);
|
|
206
219
|
watch.timeoutMs = elapsedMs + verdict.extensionMs;
|
|
207
220
|
return true;
|
|
208
221
|
}
|
|
209
222
|
if (this.verbose) {
|
|
210
|
-
|
|
223
|
+
hlog(`[WATCHDOG] Tiebreaker: kill ${toolName} — ${verdict.reason}`);
|
|
211
224
|
}
|
|
212
225
|
}
|
|
213
226
|
catch (err) {
|
|
214
227
|
if (this.verbose) {
|
|
215
|
-
|
|
228
|
+
hlog(`[WATCHDOG] Tiebreaker failed: ${err}, proceeding with kill`);
|
|
216
229
|
}
|
|
217
230
|
}
|
|
218
231
|
return false;
|
|
@@ -224,7 +237,7 @@ export class ToolWatchdog {
|
|
|
224
237
|
if (!w)
|
|
225
238
|
return;
|
|
226
239
|
if (this.verbose) {
|
|
227
|
-
|
|
240
|
+
hlog(`[WATCHDOG] ${toolName} (${toolId}) still running after extension, killing`);
|
|
228
241
|
}
|
|
229
242
|
// Don't delete the watch — buildCheckpoint() needs it.
|
|
230
243
|
// handleToolTimeout() calls clearAll() after building the checkpoint.
|