@winspan/claude-forge 8.30.0 → 8.33.2
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/README.md +4 -4
- package/dist/capability/execution-manager.d.ts +38 -1
- package/dist/capability/execution-manager.d.ts.map +1 -1
- package/dist/capability/execution-manager.js +93 -1
- package/dist/capability/execution-manager.js.map +1 -1
- package/dist/capability/executor/background-executor.d.ts +1 -0
- package/dist/capability/executor/background-executor.d.ts.map +1 -1
- package/dist/capability/executor/background-executor.js +27 -4
- package/dist/capability/executor/background-executor.js.map +1 -1
- package/dist/capability/executor/orchestrator.d.ts +15 -2
- package/dist/capability/executor/orchestrator.d.ts.map +1 -1
- package/dist/capability/executor/orchestrator.js +82 -3
- package/dist/capability/executor/orchestrator.js.map +1 -1
- package/dist/capability/executor/worker-auth-probe.d.ts.map +1 -1
- package/dist/capability/executor/worker-auth-probe.js +11 -2
- package/dist/capability/executor/worker-auth-probe.js.map +1 -1
- package/dist/capability/methodologies/bmad.yaml +17 -5
- package/dist/capability/methodologies/code-quality-audit.yaml +26 -0
- package/dist/capability/methodologies/harness-engineering.yaml +12 -6
- package/dist/capability/methodologies/test-coverage-scan.yaml +26 -0
- package/dist/capability/methodology-planner.d.ts +17 -1
- package/dist/capability/methodology-planner.d.ts.map +1 -1
- package/dist/capability/methodology-planner.js +125 -0
- package/dist/capability/methodology-planner.js.map +1 -1
- package/dist/capability/methodology-registry.d.ts.map +1 -1
- package/dist/capability/methodology-registry.js +21 -5
- package/dist/capability/methodology-registry.js.map +1 -1
- package/dist/capability/types.d.ts +2 -0
- package/dist/capability/types.d.ts.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +82 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/core/ai/provider.d.ts +17 -9
- package/dist/core/ai/provider.d.ts.map +1 -1
- package/dist/core/ai/provider.js +130 -23
- package/dist/core/ai/provider.js.map +1 -1
- package/dist/core/ai/types.d.ts +26 -5
- package/dist/core/ai/types.d.ts.map +1 -1
- package/dist/core/storage/rows.d.ts +153 -0
- package/dist/core/storage/rows.d.ts.map +1 -0
- package/dist/core/storage/rows.js +14 -0
- package/dist/core/storage/rows.js.map +1 -0
- package/dist/core/storage/schema.sql +26 -2
- package/dist/core/storage/sqlite.d.ts +95 -7
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +409 -22
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/utils/token-tracker.d.ts +40 -0
- package/dist/core/utils/token-tracker.d.ts.map +1 -0
- package/dist/core/utils/token-tracker.js +70 -0
- package/dist/core/utils/token-tracker.js.map +1 -0
- package/dist/daemon/handlers/post-tool-use.d.ts +1 -0
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +7 -0
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/stop.d.ts +11 -0
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +52 -0
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +63 -4
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/idle-detector.d.ts +35 -0
- package/dist/daemon/idle-detector.d.ts.map +1 -0
- package/dist/daemon/idle-detector.js +56 -0
- package/dist/daemon/idle-detector.js.map +1 -0
- package/dist/daemon/idle-trigger.d.ts +53 -0
- package/dist/daemon/idle-trigger.d.ts.map +1 -0
- package/dist/daemon/idle-trigger.js +153 -0
- package/dist/daemon/idle-trigger.js.map +1 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +30 -2
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/routing-observer.d.ts +2 -1
- package/dist/daemon/routing-observer.d.ts.map +1 -1
- package/dist/daemon/routing-observer.js +117 -39
- package/dist/daemon/routing-observer.js.map +1 -1
- package/dist/engine/agent-router.d.ts +6 -0
- package/dist/engine/agent-router.d.ts.map +1 -1
- package/dist/engine/agent-router.js +13 -1
- package/dist/engine/agent-router.js.map +1 -1
- package/dist/engine/conventions/routing.yaml +15 -0
- package/dist/engine/dsl/compiler.d.ts.map +1 -1
- package/dist/engine/dsl/compiler.js +85 -3
- package/dist/engine/dsl/compiler.js.map +1 -1
- package/dist/engine/recommender.d.ts.map +1 -1
- package/dist/engine/recommender.js +10 -1
- package/dist/engine/recommender.js.map +1 -1
- package/dist/intelligence/classifier.d.ts +6 -0
- package/dist/intelligence/classifier.d.ts.map +1 -1
- package/dist/intelligence/classifier.js +57 -0
- package/dist/intelligence/classifier.js.map +1 -1
- package/dist/skills/registry.d.ts +6 -0
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +49 -14
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/semantic-matcher.d.ts +1 -0
- package/dist/skills/semantic-matcher.d.ts.map +1 -1
- package/dist/skills/semantic-matcher.js +6 -1
- package/dist/skills/semantic-matcher.js.map +1 -1
- package/dist/web/auth-middleware.d.ts +22 -0
- package/dist/web/auth-middleware.d.ts.map +1 -0
- package/dist/web/auth-middleware.js +51 -0
- package/dist/web/auth-middleware.js.map +1 -0
- package/dist/web/routes/agents.d.ts +7 -0
- package/dist/web/routes/agents.d.ts.map +1 -0
- package/dist/web/routes/agents.js +192 -0
- package/dist/web/routes/agents.js.map +1 -0
- package/dist/web/routes/ai.d.ts +10 -0
- package/dist/web/routes/ai.d.ts.map +1 -0
- package/dist/web/routes/ai.js +197 -0
- package/dist/web/routes/ai.js.map +1 -0
- package/dist/web/routes/auth.d.ts +12 -0
- package/dist/web/routes/auth.d.ts.map +1 -0
- package/dist/web/routes/auth.js +20 -0
- package/dist/web/routes/auth.js.map +1 -0
- package/dist/web/routes/events.d.ts +11 -0
- package/dist/web/routes/events.d.ts.map +1 -0
- package/dist/web/routes/events.js +43 -0
- package/dist/web/routes/events.js.map +1 -0
- package/dist/web/routes/execution-trace.d.ts +13 -0
- package/dist/web/routes/execution-trace.d.ts.map +1 -0
- package/dist/web/routes/execution-trace.js +308 -0
- package/dist/web/routes/execution-trace.js.map +1 -0
- package/dist/web/routes/experiments.d.ts +15 -0
- package/dist/web/routes/experiments.d.ts.map +1 -0
- package/dist/web/routes/experiments.js +187 -0
- package/dist/web/routes/experiments.js.map +1 -0
- package/dist/web/routes/methodology.d.ts +12 -0
- package/dist/web/routes/methodology.d.ts.map +1 -0
- package/dist/web/routes/methodology.js +228 -0
- package/dist/web/routes/methodology.js.map +1 -0
- package/dist/web/routes/patch.d.ts +7 -0
- package/dist/web/routes/patch.d.ts.map +1 -0
- package/dist/web/routes/patch.js +106 -0
- package/dist/web/routes/patch.js.map +1 -0
- package/dist/web/routes/routing.d.ts +17 -0
- package/dist/web/routes/routing.d.ts.map +1 -0
- package/dist/web/routes/routing.js +582 -0
- package/dist/web/routes/routing.js.map +1 -0
- package/dist/web/routes/rules.d.ts +7 -0
- package/dist/web/routes/rules.d.ts.map +1 -0
- package/dist/web/routes/rules.js +105 -0
- package/dist/web/routes/rules.js.map +1 -0
- package/dist/web/routes/sessions.d.ts +10 -0
- package/dist/web/routes/sessions.d.ts.map +1 -0
- package/dist/web/routes/sessions.js +234 -0
- package/dist/web/routes/sessions.js.map +1 -0
- package/dist/web/routes/skills.d.ts +10 -0
- package/dist/web/routes/skills.d.ts.map +1 -0
- package/dist/web/routes/skills.js +272 -0
- package/dist/web/routes/skills.js.map +1 -0
- package/dist/web/routes/static.d.ts +19 -0
- package/dist/web/routes/static.d.ts.map +1 -0
- package/dist/web/routes/static.js +61 -0
- package/dist/web/routes/static.js.map +1 -0
- package/dist/web/routes/status.d.ts +7 -0
- package/dist/web/routes/status.d.ts.map +1 -0
- package/dist/web/routes/status.js +28 -0
- package/dist/web/routes/status.js.map +1 -0
- package/dist/web/routes/token-usage.d.ts +7 -0
- package/dist/web/routes/token-usage.d.ts.map +1 -0
- package/dist/web/routes/token-usage.js +33 -0
- package/dist/web/routes/token-usage.js.map +1 -0
- package/dist/web/routes/types.d.ts +40 -0
- package/dist/web/routes/types.d.ts.map +1 -0
- package/dist/web/routes/types.js +52 -0
- package/dist/web/routes/types.js.map +1 -0
- package/dist/web/server.d.ts +7 -4
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +60 -2330
- package/dist/web/server.js.map +1 -1
- package/dist/web/ssrf-guard.d.ts +35 -0
- package/dist/web/ssrf-guard.d.ts.map +1 -0
- package/dist/web/ssrf-guard.js +93 -0
- package/dist/web/ssrf-guard.js.map +1 -0
- package/dist/web/static/assets/AIConfig-Dw13rVtT.js +2 -0
- package/dist/web/static/assets/AIConfig-Dw13rVtT.js.map +1 -0
- package/dist/web/static/assets/Agents-D1p3JhQs.js +2 -0
- package/dist/web/static/assets/Agents-D1p3JhQs.js.map +1 -0
- package/dist/web/static/assets/{Events-CnA3f740.js → Events-DqzBTrly.js} +2 -2
- package/dist/web/static/assets/{Events-CnA3f740.js.map → Events-DqzBTrly.js.map} +1 -1
- package/dist/web/static/assets/{ExecutionTrace-ClPfFIQa.js → ExecutionTrace-Z-zlH0KH.js} +2 -2
- package/dist/web/static/assets/{ExecutionTrace-ClPfFIQa.js.map → ExecutionTrace-Z-zlH0KH.js.map} +1 -1
- package/dist/web/static/assets/Methodologies-Br5KOWuF.js +5 -0
- package/dist/web/static/assets/Methodologies-Br5KOWuF.js.map +1 -0
- package/dist/web/static/assets/{Sessions-DwWOKgnl.js → Sessions-DOd65EkN.js} +2 -2
- package/dist/web/static/assets/{Sessions-DwWOKgnl.js.map → Sessions-DOd65EkN.js.map} +1 -1
- package/dist/web/static/assets/Skills-zacj_uSW.js +2 -0
- package/dist/web/static/assets/Skills-zacj_uSW.js.map +1 -0
- package/dist/web/static/assets/auth-Bnf8ZcqN.js +2 -0
- package/dist/web/static/assets/auth-Bnf8ZcqN.js.map +1 -0
- package/dist/web/static/assets/index-BVpUTHdp.js +3 -0
- package/dist/web/static/assets/{index-DUYj2ek1.js.map → index-BVpUTHdp.js.map} +1 -1
- package/dist/web/static/assets/index-Drpf7sLl.css +1 -0
- package/dist/web/static/index.html +2 -2
- package/package.json +4 -3
- package/dist/web/static/assets/AIConfig-nZgwaowr.js +0 -2
- package/dist/web/static/assets/AIConfig-nZgwaowr.js.map +0 -1
- package/dist/web/static/assets/Agents-BZGXKWC7.js +0 -2
- package/dist/web/static/assets/Agents-BZGXKWC7.js.map +0 -1
- package/dist/web/static/assets/Methodologies-CAXUXeox.js +0 -2
- package/dist/web/static/assets/Methodologies-CAXUXeox.js.map +0 -1
- package/dist/web/static/assets/Skills-DhM6ALhr.js +0 -2
- package/dist/web/static/assets/Skills-DhM6ALhr.js.map +0 -1
- package/dist/web/static/assets/index-CVWult53.css +0 -1
- package/dist/web/static/assets/index-DUYj2ek1.js +0 -3
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Claude Forge 是一个在本地运行的守护进程,通过 Claude Code 的 Hook API 拦截 `UserPromptSubmit`、`PreToolUse`、`PostToolUse`、`Stop` 等事件,在其中做意图分类、方法论匹配、Agent 路由、规则阻断、治理建议。
|
|
6
6
|
|
|
7
|
-
**版本**: 8.
|
|
7
|
+
**版本**: 8.31.0(实时版本以 `cf --version` 为准) · **Node**: >= 18 · **License**: MIT
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -25,7 +25,7 @@ daemon 以 Unix socket 形式与 Claude Code 的 Hook 脚本通信。每次 `Use
|
|
|
25
25
|
基于 intent 分析(`complexity`、`taskType`)和 YAML 规则,UserPromptSubmit 阶段建议 Claude 用哪个子 agent(`researcher`、`tester`、`coder` 等)。路由决策全程记录到 `routing_events` 表,可用于离线分析和 A/B 实验。
|
|
26
26
|
|
|
27
27
|
### 4. Web 管理后台
|
|
28
|
-
`claude-forge daemon start` 默认在 `http://127.0.0.1
|
|
28
|
+
`claude-forge daemon start` 默认在 `http://127.0.0.1:<port>`(默认端口 `3456`,可在 `~/.claude-forge/config.yaml` 的 `web.port` 修改)开放一个 React 管理后台,覆盖:会话浏览、事件流、执行追踪、方法论执行启动/取消、Agent/Skill 编辑、AI 配置、实时 SSE 日志。
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -44,8 +44,8 @@ cf config
|
|
|
44
44
|
# 4. 启动 daemon
|
|
45
45
|
cf daemon start
|
|
46
46
|
|
|
47
|
-
# 5.
|
|
48
|
-
open http://127.0.0.1:
|
|
47
|
+
# 5. 打开管理后台(默认 3456,可在 ~/.claude-forge/config.yaml 修改 web.port)
|
|
48
|
+
open http://127.0.0.1:3456
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
之后在任何目录下开 Claude Code 会话,daemon 会自动接管 hook 事件。
|
|
@@ -19,9 +19,15 @@ export interface StartExecutionInput {
|
|
|
19
19
|
methodology_id: string;
|
|
20
20
|
plan: ExecutionPlan;
|
|
21
21
|
mode: 'foreground' | 'background';
|
|
22
|
+
trigger_type?: 'manual' | 'idle' | 'scheduled';
|
|
22
23
|
}
|
|
23
24
|
export interface ExecutionManagerOptions {
|
|
24
25
|
background?: BackgroundExecutorOptions;
|
|
26
|
+
/**
|
|
27
|
+
* 判定 methodology_executions 进入 stale 的无推进阈值(ms)。
|
|
28
|
+
* 默认 30 分钟:超过此时长没有任何推进就标 stale。
|
|
29
|
+
*/
|
|
30
|
+
staleThresholdMs?: number;
|
|
25
31
|
}
|
|
26
32
|
export declare class ExecutionManager {
|
|
27
33
|
private storage;
|
|
@@ -31,6 +37,7 @@ export declare class ExecutionManager {
|
|
|
31
37
|
private activeOrchestrators;
|
|
32
38
|
private listeners;
|
|
33
39
|
private reconcileTimer;
|
|
40
|
+
private readonly staleThresholdMs;
|
|
34
41
|
constructor(storage: SQLiteStorage, registry: MethodologyRegistry, options?: ExecutionManagerOptions);
|
|
35
42
|
/**
|
|
36
43
|
* Create the execution row + kick off orchestrator.
|
|
@@ -47,13 +54,43 @@ export declare class ExecutionManager {
|
|
|
47
54
|
* alive. Mark them failed so the UI shows a definitive state.
|
|
48
55
|
*/
|
|
49
56
|
reconcileOrphansOnStartup(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Cross-session residue sweep: find `mode='foreground' AND status='running'`
|
|
59
|
+
* executions whose `started_at` is older than `maxAgeMs`, and mark them
|
|
60
|
+
* `cancelled`. Foreground executions are driven by Claude Code sessions — if
|
|
61
|
+
* the originating session ended without the Stop hook firing (crash, kill,
|
|
62
|
+
* detach, pre-guard legacy data), the row can stay `running` forever and
|
|
63
|
+
* blocks the session-level exclusivity check at UserPromptSubmit.
|
|
64
|
+
*
|
|
65
|
+
* Complements:
|
|
66
|
+
* - `reconcileOrphansOnStartup()` handles background workers (pid-based).
|
|
67
|
+
* - `sweepStaleMethodologies()` is the softer no-progress sweep (30min → `stale`).
|
|
68
|
+
*
|
|
69
|
+
* @param maxAgeMs absolute age since started_at. Default 4h.
|
|
70
|
+
* @returns list of execution ids that were cancelled.
|
|
71
|
+
*/
|
|
72
|
+
cancelStaleForegroundExecutions(maxAgeMs?: number): number[];
|
|
50
73
|
private isPidAlive;
|
|
74
|
+
/**
|
|
75
|
+
* Sweep methodology_executions that are still `running` but haven't made any
|
|
76
|
+
* progress for longer than `staleThresholdMs`. Mark them `stale` so the UI
|
|
77
|
+
* (and downstream schedulers) stop treating them as active.
|
|
78
|
+
*
|
|
79
|
+
* 判定依据:`now - (last_progress_at || started_at) > staleThresholdMs`
|
|
80
|
+
* 非 running 的 execution 一律忽略。
|
|
81
|
+
*
|
|
82
|
+
* 返回被标记为 stale 的 execution id 列表,便于测试 / 观测。
|
|
83
|
+
*/
|
|
84
|
+
sweepStaleMethodologies(now?: number): number[];
|
|
51
85
|
/**
|
|
52
86
|
* Start a periodic reconcile loop — picks up workers killed while daemon
|
|
53
87
|
* was running (e.g. user kill -9'd the pid). Safe to call once at startup.
|
|
54
88
|
* Returns a stop function.
|
|
89
|
+
*
|
|
90
|
+
* @param intervalMs reconcile interval in milliseconds
|
|
91
|
+
* @param idleTriggerCallback optional callback to trigger idle methodologies
|
|
55
92
|
*/
|
|
56
|
-
startReconcileLoop(intervalMs?: number): () => void;
|
|
93
|
+
startReconcileLoop(intervalMs?: number, idleTriggerCallback?: () => Promise<void>): () => void;
|
|
57
94
|
stopReconcileLoop(): void;
|
|
58
95
|
}
|
|
59
96
|
//# sourceMappingURL=execution-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-manager.d.ts","sourceRoot":"","sources":["../../src/capability/execution-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAKvG,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-manager.d.ts","sourceRoot":"","sources":["../../src/capability/execution-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAKvG,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC;IAClC,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;CAChD;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,gBAAgB;IASzB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IATlB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,mBAAmB,CAAmC;IAC9D,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAGhC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,mBAAmB,EACrC,OAAO,GAAE,uBAA4B;IAgBvC;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IAmDnC,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAKtD;;;OAGG;IACH,yBAAyB,IAAI,IAAI;IAkBjC;;;;;;;;;;;;;;OAcG;IACH,+BAA+B,CAAC,QAAQ,GAAE,MAA2B,GAAG,MAAM,EAAE;IAyBhF,OAAO,CAAC,UAAU;IASlB;;;;;;;;;OASG;IACH,uBAAuB,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,EAAE;IAkC3D;;;;;;;OAOG;IACH,kBAAkB,CAAC,UAAU,SAAS,EAAE,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IA4B9F,iBAAiB,IAAI,IAAI;CAI1B"}
|
|
@@ -22,11 +22,13 @@ export class ExecutionManager {
|
|
|
22
22
|
activeOrchestrators = new Map();
|
|
23
23
|
listeners = new Set();
|
|
24
24
|
reconcileTimer = null;
|
|
25
|
+
staleThresholdMs;
|
|
25
26
|
constructor(storage, registry, options = {}) {
|
|
26
27
|
this.storage = storage;
|
|
27
28
|
this.registry = registry;
|
|
28
29
|
this.foregroundExecutor = new ForegroundExecutor(storage, registry);
|
|
29
30
|
this.backgroundExecutor = new BackgroundExecutor(storage, registry, options.background);
|
|
31
|
+
this.staleThresholdMs = options.staleThresholdMs ?? 30 * 60 * 1000;
|
|
30
32
|
// Relay executor events to external subscribers (SSE, metrics, ...)
|
|
31
33
|
const relay = (ev) => {
|
|
32
34
|
for (const l of this.listeners) {
|
|
@@ -58,6 +60,7 @@ export class ExecutionManager {
|
|
|
58
60
|
methodology_id: input.methodology_id,
|
|
59
61
|
plan_json: JSON.stringify(input.plan),
|
|
60
62
|
mode: input.mode,
|
|
63
|
+
trigger_type: input.trigger_type ?? 'manual',
|
|
61
64
|
});
|
|
62
65
|
// Seed the first phase_executions row so listings show immediately
|
|
63
66
|
if (input.plan.phases[0]) {
|
|
@@ -126,6 +129,45 @@ export class ExecutionManager {
|
|
|
126
129
|
}
|
|
127
130
|
}
|
|
128
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Cross-session residue sweep: find `mode='foreground' AND status='running'`
|
|
134
|
+
* executions whose `started_at` is older than `maxAgeMs`, and mark them
|
|
135
|
+
* `cancelled`. Foreground executions are driven by Claude Code sessions — if
|
|
136
|
+
* the originating session ended without the Stop hook firing (crash, kill,
|
|
137
|
+
* detach, pre-guard legacy data), the row can stay `running` forever and
|
|
138
|
+
* blocks the session-level exclusivity check at UserPromptSubmit.
|
|
139
|
+
*
|
|
140
|
+
* Complements:
|
|
141
|
+
* - `reconcileOrphansOnStartup()` handles background workers (pid-based).
|
|
142
|
+
* - `sweepStaleMethodologies()` is the softer no-progress sweep (30min → `stale`).
|
|
143
|
+
*
|
|
144
|
+
* @param maxAgeMs absolute age since started_at. Default 4h.
|
|
145
|
+
* @returns list of execution ids that were cancelled.
|
|
146
|
+
*/
|
|
147
|
+
cancelStaleForegroundExecutions(maxAgeMs = 4 * 60 * 60 * 1000) {
|
|
148
|
+
const now = Date.now();
|
|
149
|
+
const rows = this.storage.listRunningForegroundExecutions();
|
|
150
|
+
const cancelled = [];
|
|
151
|
+
for (const row of rows) {
|
|
152
|
+
const startedAt = row.started_at ?? 0;
|
|
153
|
+
const age = now - startedAt;
|
|
154
|
+
if (age < maxAgeMs)
|
|
155
|
+
continue;
|
|
156
|
+
try {
|
|
157
|
+
this.storage.updateMethodologyExecution(row.id, {
|
|
158
|
+
status: 'cancelled',
|
|
159
|
+
completed_at: now,
|
|
160
|
+
});
|
|
161
|
+
cancelled.push(row.id);
|
|
162
|
+
logger.warn(`[ExecutionManager] execution=${row.id} session=${row.session_id} ` +
|
|
163
|
+
`foreground residue age=${Math.round(age / 60000)}min > ${Math.round(maxAgeMs / 60000)}min — marked cancelled`);
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
logger.warn(`[ExecutionManager] cross-session cancel failed for execution=${row.id}: ${err}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return cancelled;
|
|
170
|
+
}
|
|
129
171
|
isPidAlive(pid) {
|
|
130
172
|
try {
|
|
131
173
|
process.kill(pid, 0);
|
|
@@ -135,12 +177,50 @@ export class ExecutionManager {
|
|
|
135
177
|
return false;
|
|
136
178
|
}
|
|
137
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Sweep methodology_executions that are still `running` but haven't made any
|
|
182
|
+
* progress for longer than `staleThresholdMs`. Mark them `stale` so the UI
|
|
183
|
+
* (and downstream schedulers) stop treating them as active.
|
|
184
|
+
*
|
|
185
|
+
* 判定依据:`now - (last_progress_at || started_at) > staleThresholdMs`
|
|
186
|
+
* 非 running 的 execution 一律忽略。
|
|
187
|
+
*
|
|
188
|
+
* 返回被标记为 stale 的 execution id 列表,便于测试 / 观测。
|
|
189
|
+
*/
|
|
190
|
+
sweepStaleMethodologies(now = Date.now()) {
|
|
191
|
+
const rows = this.storage.getDatabase().prepare(`SELECT id, status, started_at, last_progress_at
|
|
192
|
+
FROM methodology_executions
|
|
193
|
+
WHERE status = 'running'`).all();
|
|
194
|
+
const marked = [];
|
|
195
|
+
for (const row of rows) {
|
|
196
|
+
const reference = row.last_progress_at ?? row.started_at;
|
|
197
|
+
if (reference == null)
|
|
198
|
+
continue;
|
|
199
|
+
if (now - reference <= this.staleThresholdMs)
|
|
200
|
+
continue;
|
|
201
|
+
try {
|
|
202
|
+
this.storage.updateMethodologyExecution(row.id, {
|
|
203
|
+
status: 'stale',
|
|
204
|
+
completed_at: now,
|
|
205
|
+
});
|
|
206
|
+
marked.push(row.id);
|
|
207
|
+
logger.warn(`[ExecutionManager] execution=${row.id} marked stale (no progress for ${Math.round((now - reference) / 60_000)}min)`);
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
logger.warn(`[ExecutionManager] failed to mark execution=${row.id} stale: ${err}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return marked;
|
|
214
|
+
}
|
|
138
215
|
/**
|
|
139
216
|
* Start a periodic reconcile loop — picks up workers killed while daemon
|
|
140
217
|
* was running (e.g. user kill -9'd the pid). Safe to call once at startup.
|
|
141
218
|
* Returns a stop function.
|
|
219
|
+
*
|
|
220
|
+
* @param intervalMs reconcile interval in milliseconds
|
|
221
|
+
* @param idleTriggerCallback optional callback to trigger idle methodologies
|
|
142
222
|
*/
|
|
143
|
-
startReconcileLoop(intervalMs = 60_000) {
|
|
223
|
+
startReconcileLoop(intervalMs = 60_000, idleTriggerCallback) {
|
|
144
224
|
if (this.reconcileTimer)
|
|
145
225
|
clearInterval(this.reconcileTimer);
|
|
146
226
|
this.reconcileTimer = setInterval(() => {
|
|
@@ -150,6 +230,18 @@ export class ExecutionManager {
|
|
|
150
230
|
catch (err) {
|
|
151
231
|
logger.debug(`[ExecutionManager] periodic reconcile failed: ${err}`);
|
|
152
232
|
}
|
|
233
|
+
try {
|
|
234
|
+
this.sweepStaleMethodologies();
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
logger.debug(`[ExecutionManager] periodic stale sweep failed: ${err}`);
|
|
238
|
+
}
|
|
239
|
+
// Trigger idle methodologies if callback provided
|
|
240
|
+
if (idleTriggerCallback) {
|
|
241
|
+
idleTriggerCallback().catch(err => {
|
|
242
|
+
logger.debug(`[ExecutionManager] idle trigger callback failed: ${err}`);
|
|
243
|
+
});
|
|
244
|
+
}
|
|
153
245
|
}, intervalMs);
|
|
154
246
|
// Don't keep the event loop alive just for this.
|
|
155
247
|
this.reconcileTimer.unref?.();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-manager.js","sourceRoot":"","sources":["../../src/capability/execution-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-manager.js","sourceRoot":"","sources":["../../src/capability/execution-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,7 @@ export declare class BackgroundExecutor implements PhaseExecutor {
|
|
|
41
41
|
readonly mode: "background";
|
|
42
42
|
private listeners;
|
|
43
43
|
private running;
|
|
44
|
+
private cancelRequested;
|
|
44
45
|
private readonly opts;
|
|
45
46
|
constructor(storage: SQLiteStorage, registry: MethodologyRegistry, options?: BackgroundExecutorOptions);
|
|
46
47
|
executePhase(execution: MethodologyExecution, phase: PlannedPhase, phaseIndex: number): Promise<PhaseExecutionResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-executor.d.ts","sourceRoot":"","sources":["../../../src/capability/executor/background-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAEV,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACd,MAAM,YAAY,CAAC;AAWpB,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iCAAiC;IACjC,cAAc,CAAC,EAAE,aAAa,GAAG,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACtF,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAcD,qBAAa,kBAAmB,YAAW,aAAa;
|
|
1
|
+
{"version":3,"file":"background-executor.d.ts","sourceRoot":"","sources":["../../../src/capability/executor/background-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAEV,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACd,MAAM,YAAY,CAAC;AAWpB,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iCAAiC;IACjC,cAAc,CAAC,EAAE,aAAa,GAAG,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACtF,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAcD,qBAAa,kBAAmB,YAAW,aAAa;IAQpD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IARlB,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IACtC,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,OAAO,CAAqD;IACpE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsF;gBAGjG,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,mBAAmB,EACrC,OAAO,GAAE,yBAA8B;IAiBnC,YAAY,CAChB,SAAS,EAAE,oBAAoB,EAC/B,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC;IAoO1B,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBjD,SAAS,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAKtD,OAAO,CAAC,IAAI;IAMZ;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAoBrB,0BAA0B;IAC1B,eAAe,IAAI,MAAM;CAG1B"}
|
|
@@ -31,6 +31,7 @@ export class BackgroundExecutor {
|
|
|
31
31
|
mode = 'background';
|
|
32
32
|
listeners = new Set();
|
|
33
33
|
running = new Map();
|
|
34
|
+
cancelRequested = new Set();
|
|
34
35
|
opts;
|
|
35
36
|
constructor(storage, registry, options = {}) {
|
|
36
37
|
this.storage = storage;
|
|
@@ -96,13 +97,19 @@ export class BackgroundExecutor {
|
|
|
96
97
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
97
98
|
});
|
|
98
99
|
this.running.set(execution.id, child);
|
|
99
|
-
this.storage.updateMethodologyExecution(execution.id, {
|
|
100
|
+
this.storage.updateMethodologyExecution(execution.id, {
|
|
101
|
+
worker_pid: child.pid ?? null,
|
|
102
|
+
last_progress_at: Date.now(),
|
|
103
|
+
});
|
|
100
104
|
const logStream = createWriteStream(logPath, { flags: 'a' });
|
|
101
105
|
const handleStreamEvent = (event) => {
|
|
102
106
|
// Capture session id from init event
|
|
103
107
|
if (event.type === 'system' && 'session_id' in event && typeof event.session_id === 'string') {
|
|
104
108
|
capturedSessionId = event.session_id;
|
|
105
|
-
this.storage.updateMethodologyExecution(execution.id, {
|
|
109
|
+
this.storage.updateMethodologyExecution(execution.id, {
|
|
110
|
+
worker_session_id: event.session_id,
|
|
111
|
+
last_progress_at: Date.now(),
|
|
112
|
+
});
|
|
106
113
|
}
|
|
107
114
|
// Tool uses — emit as phase-log for observability
|
|
108
115
|
const tools = extractToolUses(event);
|
|
@@ -175,7 +182,13 @@ export class BackgroundExecutor {
|
|
|
175
182
|
if (exitReason === 'timeout') {
|
|
176
183
|
// already set
|
|
177
184
|
}
|
|
178
|
-
else if (
|
|
185
|
+
else if (this.cancelRequested.has(execution.id) ||
|
|
186
|
+
signal === 'SIGKILL' ||
|
|
187
|
+
signal === 'SIGTERM' ||
|
|
188
|
+
// macOS 下 SIGTERM 杀掉的 child,Node 会报 code=143 (128+SIGTERM) / signal=null,
|
|
189
|
+
// SIGKILL 对应 code=137。无论 signal 字段形状如何,都认定为 cancelled。
|
|
190
|
+
code === 143 ||
|
|
191
|
+
code === 137) {
|
|
179
192
|
// manual cancel takes priority over natural completion semantics
|
|
180
193
|
if (exitReason === 'completed')
|
|
181
194
|
exitReason = 'cancelled';
|
|
@@ -190,9 +203,18 @@ export class BackgroundExecutor {
|
|
|
190
203
|
child.stdin.end(directive);
|
|
191
204
|
await waitForExit;
|
|
192
205
|
this.running.delete(execution.id);
|
|
206
|
+
this.cancelRequested.delete(execution.id);
|
|
193
207
|
logStream.end();
|
|
194
208
|
const durationMs = Date.now() - startedAt;
|
|
195
|
-
|
|
209
|
+
// exitReason 的三路映射:
|
|
210
|
+
// completed -> 'completed'
|
|
211
|
+
// cancelled -> 'cancelled'(需要 schema 支持,见 runMigrations)
|
|
212
|
+
// failed/timeout -> 'failed'
|
|
213
|
+
const phaseStatus = exitReason === 'completed'
|
|
214
|
+
? 'completed'
|
|
215
|
+
: exitReason === 'cancelled'
|
|
216
|
+
? 'cancelled'
|
|
217
|
+
: 'failed';
|
|
196
218
|
this.storage.updatePhaseExecution(phaseExecId, {
|
|
197
219
|
status: phaseStatus,
|
|
198
220
|
completed_at: Date.now(),
|
|
@@ -234,6 +256,7 @@ export class BackgroundExecutor {
|
|
|
234
256
|
};
|
|
235
257
|
}
|
|
236
258
|
async cancel(execution_id) {
|
|
259
|
+
this.cancelRequested.add(execution_id);
|
|
237
260
|
const child = this.running.get(execution_id);
|
|
238
261
|
if (child) {
|
|
239
262
|
logger.info(`[BackgroundExecutor] kill worker pid=${child.pid} for execution=${execution_id}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-executor.js","sourceRoot":"","sources":["../../../src/capability/executor/background-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"background-executor.js","sourceRoot":"","sources":["../../../src/capability/executor/background-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* 1. 从 storage 读取 execution 和 plan
|
|
6
6
|
* 2. 对每个 phase 调用 executor.executePhase()
|
|
7
7
|
* 3. 根据结果更新 methodology_executions 状态
|
|
8
|
-
* 4. 其中任一 phase 失败
|
|
8
|
+
* 4. 其中任一 phase 失败 → 尝试 replan(如果启用)
|
|
9
|
+
* 5. 如果 replan 失败或取消 → 整个 execution 标 failed/cancelled 并停止
|
|
9
10
|
*
|
|
10
11
|
* 前台模式下,executePhase 只是入队 directive(返回 'injected')。此时
|
|
11
12
|
* orchestrator 不推进下一 phase —— 推进由 PostToolUse handler 基于实际
|
|
@@ -16,10 +17,22 @@
|
|
|
16
17
|
*/
|
|
17
18
|
import type { SQLiteStorage } from '../../core/storage/sqlite.js';
|
|
18
19
|
import type { PhaseExecutor } from './types.js';
|
|
20
|
+
import type { MethodologyPlanner } from '../methodology-planner.js';
|
|
19
21
|
export declare class Orchestrator {
|
|
20
22
|
private storage;
|
|
21
23
|
private executor;
|
|
22
|
-
|
|
24
|
+
private planner?;
|
|
25
|
+
private readonly enableReplan;
|
|
26
|
+
private readonly maxRetry;
|
|
27
|
+
constructor(storage: SQLiteStorage, executor: PhaseExecutor, planner?: MethodologyPlanner | undefined, options?: {
|
|
28
|
+
enableReplan?: boolean;
|
|
29
|
+
maxRetry?: number;
|
|
30
|
+
});
|
|
23
31
|
run(execution_id: number): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* 尝试重新规划(失败反馈环)
|
|
34
|
+
* @returns true 如果 replan 成功并更新了 plan,false 否则
|
|
35
|
+
*/
|
|
36
|
+
private attemptReplan;
|
|
24
37
|
}
|
|
25
38
|
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/capability/executor/orchestrator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/capability/executor/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,qBAAa,YAAY;IAKrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO,CAAC;IANlB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGxB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,kBAAkB,YAAA,EACpC,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAMG,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiF9C;;;OAGG;YACW,aAAa;CAkE5B"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* 1. 从 storage 读取 execution 和 plan
|
|
6
6
|
* 2. 对每个 phase 调用 executor.executePhase()
|
|
7
7
|
* 3. 根据结果更新 methodology_executions 状态
|
|
8
|
-
* 4. 其中任一 phase 失败
|
|
8
|
+
* 4. 其中任一 phase 失败 → 尝试 replan(如果启用)
|
|
9
|
+
* 5. 如果 replan 失败或取消 → 整个 execution 标 failed/cancelled 并停止
|
|
9
10
|
*
|
|
10
11
|
* 前台模式下,executePhase 只是入队 directive(返回 'injected')。此时
|
|
11
12
|
* orchestrator 不推进下一 phase —— 推进由 PostToolUse handler 基于实际
|
|
@@ -18,9 +19,15 @@ import { logger } from '../../core/utils/logger.js';
|
|
|
18
19
|
export class Orchestrator {
|
|
19
20
|
storage;
|
|
20
21
|
executor;
|
|
21
|
-
|
|
22
|
+
planner;
|
|
23
|
+
enableReplan;
|
|
24
|
+
maxRetry;
|
|
25
|
+
constructor(storage, executor, planner, options) {
|
|
22
26
|
this.storage = storage;
|
|
23
27
|
this.executor = executor;
|
|
28
|
+
this.planner = planner;
|
|
29
|
+
this.enableReplan = options?.enableReplan ?? (process.env.ENABLE_METHODOLOGY_REPLAN !== 'false');
|
|
30
|
+
this.maxRetry = options?.maxRetry ?? parseInt(process.env.MAX_METHODOLOGY_RETRY || '2', 10);
|
|
24
31
|
}
|
|
25
32
|
async run(execution_id) {
|
|
26
33
|
const execution = this.storage.getMethodologyExecution(execution_id);
|
|
@@ -40,7 +47,10 @@ export class Orchestrator {
|
|
|
40
47
|
logger.info(`[Orchestrator] execution=${execution_id} status changed to ${fresh.status}, stopping`);
|
|
41
48
|
return;
|
|
42
49
|
}
|
|
43
|
-
this.storage.updateMethodologyExecution(execution_id, {
|
|
50
|
+
this.storage.updateMethodologyExecution(execution_id, {
|
|
51
|
+
current_phase_index: i,
|
|
52
|
+
last_progress_at: Date.now(),
|
|
53
|
+
});
|
|
44
54
|
const result = await this.executor.executePhase(fresh, phase, i);
|
|
45
55
|
if (this.executor.mode === 'foreground') {
|
|
46
56
|
// Foreground 模式:只入队第一阶段,后续由 PostToolUse 推进。
|
|
@@ -49,6 +59,18 @@ export class Orchestrator {
|
|
|
49
59
|
}
|
|
50
60
|
// Background 模式:result 指示 phase 的真实状态
|
|
51
61
|
if (result.status === 'failed') {
|
|
62
|
+
// 尝试失败反馈环
|
|
63
|
+
const replanSucceeded = await this.attemptReplan(execution_id, i, result.error || 'unknown error', plan);
|
|
64
|
+
if (replanSucceeded) {
|
|
65
|
+
// Replan 成功,继续执行(从下一个 phase 开始,因为 plan 已更新)
|
|
66
|
+
logger.info(`[Orchestrator] replan succeeded, continuing execution from phase ${i + 1}`);
|
|
67
|
+
// 重新加载更新后的 plan
|
|
68
|
+
const updatedExecution = this.storage.getMethodologyExecution(execution_id);
|
|
69
|
+
const updatedPlan = JSON.parse(updatedExecution.plan_json);
|
|
70
|
+
// 递归调用 run 以继续执行更新后的计划
|
|
71
|
+
return this.run(execution_id);
|
|
72
|
+
}
|
|
73
|
+
// Replan 失败或未启用,标记 execution 为 failed
|
|
52
74
|
this.storage.updateMethodologyExecution(execution_id, {
|
|
53
75
|
status: 'failed',
|
|
54
76
|
completed_at: Date.now(),
|
|
@@ -75,5 +97,62 @@ export class Orchestrator {
|
|
|
75
97
|
});
|
|
76
98
|
logger.info(`[Orchestrator] execution=${execution_id} completed all ${plan.phases.length} phases`);
|
|
77
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* 尝试重新规划(失败反馈环)
|
|
102
|
+
* @returns true 如果 replan 成功并更新了 plan,false 否则
|
|
103
|
+
*/
|
|
104
|
+
async attemptReplan(execution_id, failedPhaseIndex, failureReason, currentPlan) {
|
|
105
|
+
// 检查是否启用 replan
|
|
106
|
+
if (!this.enableReplan) {
|
|
107
|
+
logger.info('[Orchestrator] replan disabled by configuration');
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
// 检查是否有 planner
|
|
111
|
+
if (!this.planner) {
|
|
112
|
+
logger.info('[Orchestrator] no planner available for replan');
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
// 检查 retry_count 是否达到上限
|
|
116
|
+
const execution = this.storage.getMethodologyExecution(execution_id);
|
|
117
|
+
const retryCount = execution.retry_count ?? 0;
|
|
118
|
+
if (retryCount >= this.maxRetry) {
|
|
119
|
+
logger.info(`[Orchestrator] retry_count=${retryCount} reached max=${this.maxRetry}, not replanning`);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
logger.info(`[Orchestrator] attempting replan for execution=${execution_id}, phase=${failedPhaseIndex}, retry=${retryCount + 1}/${this.maxRetry}`);
|
|
123
|
+
// 获取原始计划
|
|
124
|
+
const originalPlan = execution.original_plan_json
|
|
125
|
+
? JSON.parse(execution.original_plan_json)
|
|
126
|
+
: currentPlan;
|
|
127
|
+
// 获取已完成的 phases
|
|
128
|
+
const completedPhases = currentPlan.phases.slice(0, failedPhaseIndex);
|
|
129
|
+
try {
|
|
130
|
+
// 调用 planner.replan()
|
|
131
|
+
const newPlan = await this.planner.replan({
|
|
132
|
+
executionId: execution_id,
|
|
133
|
+
failedPhaseIndex,
|
|
134
|
+
failureReason,
|
|
135
|
+
originalPlan,
|
|
136
|
+
completedPhases,
|
|
137
|
+
});
|
|
138
|
+
if (!newPlan) {
|
|
139
|
+
logger.info('[Orchestrator] planner determined recovery not possible');
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
// 更新 execution 的 plan 和 retry_count
|
|
143
|
+
this.storage.updateMethodologyExecution(execution_id, {
|
|
144
|
+
plan_json: JSON.stringify(newPlan),
|
|
145
|
+
retry_count: retryCount + 1,
|
|
146
|
+
current_phase_index: failedPhaseIndex, // 从失败的 phase 重新开始
|
|
147
|
+
last_progress_at: Date.now(),
|
|
148
|
+
});
|
|
149
|
+
logger.info(`[Orchestrator] replan successful, updated plan with ${newPlan.phases.length} phases`);
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
logger.warn(`[Orchestrator] replan failed with error: ${err}`);
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
78
157
|
}
|
|
79
158
|
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/capability/executor/orchestrator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/capability/executor/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-auth-probe.d.ts","sourceRoot":"","sources":["../../../src/capability/executor/worker-auth-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,aAAa,GACb,UAAU,GACV,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAU;IACzC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;gBAEpB,KAAK,EAAE,eAAe;CAQnC;AAoCD,MAAM,WAAW,YAAY;IAC3B,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,YAAiB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"worker-auth-probe.d.ts","sourceRoot":"","sources":["../../../src/capability/executor/worker-auth-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,aAAa,GACb,UAAU,GACV,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAU;IACzC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;gBAEpB,KAAK,EAAE,eAAe;CAQnC;AAoCD,MAAM,WAAW,YAAY;IAC3B,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,YAAiB,GAAG,eAAe,CA8C3E"}
|
|
@@ -19,7 +19,7 @@ export class WorkerAuthError extends Error {
|
|
|
19
19
|
probe;
|
|
20
20
|
constructor(probe) {
|
|
21
21
|
super(`Background mode requires Claude authentication: ${probe.message}. ` +
|
|
22
|
-
'Set ANTHROPIC_API_KEY
|
|
22
|
+
'Set ANTHROPIC_API_KEY (or ANTHROPIC_AUTH_TOKEN for third-party proxies), or run `claude login` first.');
|
|
23
23
|
this.name = 'WorkerAuthError';
|
|
24
24
|
this.probe = probe;
|
|
25
25
|
}
|
|
@@ -71,6 +71,15 @@ export function probeWorkerAuth(options = {}) {
|
|
|
71
71
|
message: 'ANTHROPIC_API_KEY env is set',
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
+
// 1b) 第三方代理(如 iFlytek / OneHub)使用 ANTHROPIC_AUTH_TOKEN
|
|
75
|
+
const envToken = process.env.ANTHROPIC_AUTH_TOKEN;
|
|
76
|
+
if (isNonEmptyString(envToken)) {
|
|
77
|
+
return {
|
|
78
|
+
available: true,
|
|
79
|
+
method: 'api-key-env',
|
|
80
|
+
message: 'ANTHROPIC_AUTH_TOKEN env is set',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
74
83
|
// 2) OAuth credentials 文件
|
|
75
84
|
const credPath = options.credentialsPath ?? defaultCredentialsPath();
|
|
76
85
|
if (existsSync(credPath)) {
|
|
@@ -92,7 +101,7 @@ export function probeWorkerAuth(options = {}) {
|
|
|
92
101
|
return {
|
|
93
102
|
available: false,
|
|
94
103
|
method: 'none',
|
|
95
|
-
message: 'no ANTHROPIC_API_KEY env and no OAuth credentials on disk ' +
|
|
104
|
+
message: 'no ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN env and no OAuth credentials on disk ' +
|
|
96
105
|
`(expected ${credPath})`,
|
|
97
106
|
};
|
|
98
107
|
}
|