@winspan/claude-forge 8.28.1 → 8.30.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.
Files changed (117) hide show
  1. package/README.md +68 -215
  2. package/dist/capability/execution-manager.d.ts +59 -0
  3. package/dist/capability/execution-manager.d.ts.map +1 -0
  4. package/dist/capability/execution-manager.js +168 -0
  5. package/dist/capability/execution-manager.js.map +1 -0
  6. package/dist/capability/executor/background-executor.d.ts +57 -0
  7. package/dist/capability/executor/background-executor.d.ts.map +1 -0
  8. package/dist/capability/executor/background-executor.js +299 -0
  9. package/dist/capability/executor/background-executor.js.map +1 -0
  10. package/dist/capability/executor/foreground-executor.d.ts +26 -0
  11. package/dist/capability/executor/foreground-executor.d.ts.map +1 -0
  12. package/dist/capability/executor/foreground-executor.js +82 -0
  13. package/dist/capability/executor/foreground-executor.js.map +1 -0
  14. package/dist/capability/executor/orchestrator.d.ts +25 -0
  15. package/dist/capability/executor/orchestrator.d.ts.map +1 -0
  16. package/dist/capability/executor/orchestrator.js +79 -0
  17. package/dist/capability/executor/orchestrator.js.map +1 -0
  18. package/dist/capability/executor/stream-parser.d.ts +73 -0
  19. package/dist/capability/executor/stream-parser.d.ts.map +1 -0
  20. package/dist/capability/executor/stream-parser.js +56 -0
  21. package/dist/capability/executor/stream-parser.js.map +1 -0
  22. package/dist/capability/executor/types.d.ts +44 -0
  23. package/dist/capability/executor/types.d.ts.map +1 -0
  24. package/dist/capability/executor/types.js +9 -0
  25. package/dist/capability/executor/types.js.map +1 -0
  26. package/dist/capability/executor/worker-auth-probe.d.ts +30 -0
  27. package/dist/capability/executor/worker-auth-probe.d.ts.map +1 -0
  28. package/dist/capability/executor/worker-auth-probe.js +99 -0
  29. package/dist/capability/executor/worker-auth-probe.js.map +1 -0
  30. package/dist/capability/methodology-planner.d.ts.map +1 -1
  31. package/dist/capability/methodology-planner.js +10 -7
  32. package/dist/capability/methodology-planner.js.map +1 -1
  33. package/dist/capability/types.d.ts +10 -1
  34. package/dist/capability/types.d.ts.map +1 -1
  35. package/dist/core/storage/sqlite.d.ts +18 -0
  36. package/dist/core/storage/sqlite.d.ts.map +1 -1
  37. package/dist/core/storage/sqlite.js +75 -4
  38. package/dist/core/storage/sqlite.js.map +1 -1
  39. package/dist/daemon/handlers/methodology-formatter.d.ts +7 -0
  40. package/dist/daemon/handlers/methodology-formatter.d.ts.map +1 -1
  41. package/dist/daemon/handlers/methodology-formatter.js +46 -0
  42. package/dist/daemon/handlers/methodology-formatter.js.map +1 -1
  43. package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
  44. package/dist/daemon/handlers/post-tool-use.js +6 -3
  45. package/dist/daemon/handlers/post-tool-use.js.map +1 -1
  46. package/dist/daemon/handlers/stop.d.ts +6 -1
  47. package/dist/daemon/handlers/stop.d.ts.map +1 -1
  48. package/dist/daemon/handlers/stop.js +45 -1
  49. package/dist/daemon/handlers/stop.js.map +1 -1
  50. package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
  51. package/dist/daemon/handlers/user-prompt.js +34 -1
  52. package/dist/daemon/handlers/user-prompt.js.map +1 -1
  53. package/dist/daemon/index.d.ts.map +1 -1
  54. package/dist/daemon/index.js +20 -1
  55. package/dist/daemon/index.js.map +1 -1
  56. package/dist/daemon/methodology-pending-queue.d.ts +33 -0
  57. package/dist/daemon/methodology-pending-queue.d.ts.map +1 -0
  58. package/dist/daemon/methodology-pending-queue.js +120 -0
  59. package/dist/daemon/methodology-pending-queue.js.map +1 -0
  60. package/dist/web/server.d.ts +6 -0
  61. package/dist/web/server.d.ts.map +1 -1
  62. package/dist/web/server.js +127 -7
  63. package/dist/web/server.js.map +1 -1
  64. package/dist/web/static/assets/AIConfig-nZgwaowr.js +2 -0
  65. package/dist/web/static/assets/AIConfig-nZgwaowr.js.map +1 -0
  66. package/dist/web/static/assets/Agents-BZGXKWC7.js +2 -0
  67. package/dist/web/static/assets/Agents-BZGXKWC7.js.map +1 -0
  68. package/dist/web/static/assets/CodeBlock--H53gk46.js +2 -0
  69. package/dist/web/static/assets/CodeBlock--H53gk46.js.map +1 -0
  70. package/dist/web/static/assets/Dashboard-qUCxXFSI.js +2 -0
  71. package/dist/web/static/assets/Dashboard-qUCxXFSI.js.map +1 -0
  72. package/dist/web/static/assets/Drawer-DeKukfwJ.js +2 -0
  73. package/dist/web/static/assets/Drawer-DeKukfwJ.js.map +1 -0
  74. package/dist/web/static/assets/Events-CnA3f740.js +2 -0
  75. package/dist/web/static/assets/Events-CnA3f740.js.map +1 -0
  76. package/dist/web/static/assets/ExecutionTrace-ClPfFIQa.js +2 -0
  77. package/dist/web/static/assets/ExecutionTrace-ClPfFIQa.js.map +1 -0
  78. package/dist/web/static/assets/MarkdownRenderer-CCIz1MOz.js +2 -0
  79. package/dist/web/static/assets/MarkdownRenderer-CCIz1MOz.js.map +1 -0
  80. package/dist/web/static/assets/Methodologies-CAXUXeox.js +2 -0
  81. package/dist/web/static/assets/Methodologies-CAXUXeox.js.map +1 -0
  82. package/dist/web/static/assets/MethodologyDetail-Do1taSKM.js +2 -0
  83. package/dist/web/static/assets/MethodologyDetail-Do1taSKM.js.map +1 -0
  84. package/dist/web/static/assets/Routing-CFmM7JuB.js +2 -0
  85. package/dist/web/static/assets/Routing-CFmM7JuB.js.map +1 -0
  86. package/dist/web/static/assets/SessionDetail-DzTue2xK.js +2 -0
  87. package/dist/web/static/assets/SessionDetail-DzTue2xK.js.map +1 -0
  88. package/dist/web/static/assets/Sessions-DwWOKgnl.js +2 -0
  89. package/dist/web/static/assets/Sessions-DwWOKgnl.js.map +1 -0
  90. package/dist/web/static/assets/Skills-DhM6ALhr.js +2 -0
  91. package/dist/web/static/assets/Skills-DhM6ALhr.js.map +1 -0
  92. package/dist/web/static/assets/charts-CLrM0_uM.js +37 -0
  93. package/dist/web/static/assets/charts-CLrM0_uM.js.map +1 -0
  94. package/dist/web/static/assets/date-fns-CZ_bHujz.js +2 -0
  95. package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +1 -0
  96. package/dist/web/static/assets/export-CEzDNM66.js +4 -0
  97. package/dist/web/static/assets/export-CEzDNM66.js.map +1 -0
  98. package/dist/web/static/assets/index-CVWult53.css +1 -0
  99. package/dist/web/static/assets/index-DUYj2ek1.js +3 -0
  100. package/dist/web/static/assets/index-DUYj2ek1.js.map +1 -0
  101. package/dist/web/static/assets/lucide-DjB4fWNj.js +227 -0
  102. package/dist/web/static/assets/lucide-DjB4fWNj.js.map +1 -0
  103. package/dist/web/static/assets/query-C99w429o.js +2 -0
  104. package/dist/web/static/assets/query-C99w429o.js.map +1 -0
  105. package/dist/web/static/assets/react-router-I-HqunH7.js +20 -0
  106. package/dist/web/static/assets/react-router-I-HqunH7.js.map +1 -0
  107. package/dist/web/static/assets/react-vendor-CSp-GLFF.js +49 -0
  108. package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +1 -0
  109. package/dist/web/static/assets/syntax-highlighter-44FakypI.js +9 -0
  110. package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +1 -0
  111. package/dist/web/static/assets/vendor-CMMjVdZs.js +64 -0
  112. package/dist/web/static/assets/vendor-CMMjVdZs.js.map +1 -0
  113. package/dist/web/static/index.html +8 -2
  114. package/package.json +1 -1
  115. package/dist/web/static/assets/index-CtylfoaN.css +0 -1
  116. package/dist/web/static/assets/index-DnaQt27h.js +0 -388
  117. package/dist/web/static/assets/index-DnaQt27h.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Parse Claude CLI --output-format stream-json lines.
3
+ *
4
+ * 实际观测到的事件形状(claude 2.1.119):
5
+ * - {"type":"system","subtype":"init", session_id, tools, model, ...}
6
+ * - {"type":"assistant","message":{"content":[{"type":"text","text":"..."} | {"type":"tool_use", name, input, id}]}, session_id, uuid}
7
+ * - {"type":"user","message":{"content":[{"type":"tool_result", tool_use_id, content}]}, session_id}
8
+ * - {"type":"result","subtype":"success"|"error", is_error, result, total_cost_usd, duration_ms, session_id, ...}
9
+ *
10
+ * 本模块只做轻量抽取,不把所有字段建模 —— 用 as StreamEvent 读取关心的几个。
11
+ */
12
+ export function parseStreamLine(line) {
13
+ const trimmed = line.trim();
14
+ if (!trimmed)
15
+ return { event: null };
16
+ try {
17
+ const obj = JSON.parse(trimmed);
18
+ if (obj && typeof obj === 'object' && 'type' in obj) {
19
+ return { event: obj };
20
+ }
21
+ return { event: null, error: 'not a stream-json event (missing type)' };
22
+ }
23
+ catch (err) {
24
+ return { event: null, error: `JSON parse failed: ${err instanceof Error ? err.message : String(err)}` };
25
+ }
26
+ }
27
+ /**
28
+ * Extract final assistant text from a result event (success subtype has `result` field).
29
+ */
30
+ export function extractResultText(event) {
31
+ if (event.type === 'result' && 'result' in event && typeof event.result === 'string') {
32
+ return event.result;
33
+ }
34
+ return null;
35
+ }
36
+ /**
37
+ * Extract tool_use blocks from an assistant message event (for observability / agent detection).
38
+ */
39
+ export function extractToolUses(event) {
40
+ if (event.type !== 'assistant')
41
+ return [];
42
+ const blocks = event.message?.content ?? [];
43
+ const out = [];
44
+ for (const b of blocks) {
45
+ if (b.type === 'tool_use')
46
+ out.push({ id: b.id, name: b.name, input: b.input });
47
+ }
48
+ return out;
49
+ }
50
+ /**
51
+ * Does this event signal the end of the turn? Result events mark completion.
52
+ */
53
+ export function isTerminal(event) {
54
+ return event.type === 'result';
55
+ }
56
+ //# sourceMappingURL=stream-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-parser.js","sourceRoot":"","sources":["../../../src/capability/executor/stream-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA2BH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;QAC/C,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YACpD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IAC1G,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAwD,EAAE,CAAC;IACpE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAkB;IAC3C,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACjC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Methodology Phase Executor — 接口 & 公共类型
3
+ *
4
+ * 两种执行模式复用同一份 plan 数据:
5
+ * - foreground:走 hook 注入,Claude 主会话执行(现有机制 + Phase A 兜底)
6
+ * - background:spawn `claude -p` 子进程独立驱动(Phase C)
7
+ */
8
+ import type { MethodologyExecution, PlannedPhase } from '../types.js';
9
+ export type ExecutorMode = 'foreground' | 'background';
10
+ export interface PhaseExecutionResult {
11
+ /** 'injected' — foreground 已把指令注入;实际执行由 hook 链路完成 */
12
+ /** 'completed' — background 子进程跑完并标记 phase 完成 */
13
+ /** 'failed' — 执行失败(error 字段说明原因) */
14
+ /** 'cancelled' — 被手动取消 */
15
+ status: 'injected' | 'completed' | 'failed' | 'cancelled';
16
+ phase_index: number;
17
+ phase_id: string;
18
+ output_text?: string;
19
+ error?: string;
20
+ duration_ms?: number;
21
+ }
22
+ export interface ExecutorEvent {
23
+ type: 'phase-start' | 'phase-log' | 'phase-finish' | 'done' | 'error';
24
+ execution_id: number;
25
+ phase_index?: number;
26
+ phase_id?: string;
27
+ payload?: unknown;
28
+ timestamp: number;
29
+ }
30
+ export type ExecutorEventListener = (event: ExecutorEvent) => void;
31
+ export interface PhaseExecutor {
32
+ readonly mode: ExecutorMode;
33
+ /**
34
+ * 执行一个 phase。各模式的语义:
35
+ * - foreground:把 directive 放入 pending queue,立即返回 status='injected'
36
+ * - background:spawn claude -p 并等待返回,更新 phase_executions 表
37
+ */
38
+ executePhase(execution: MethodologyExecution, phase: PlannedPhase, phaseIndex: number): Promise<PhaseExecutionResult>;
39
+ /** 取消正在运行的 execution(background 会 kill 子进程;foreground 清队列) */
40
+ cancel(execution_id: number): Promise<void>;
41
+ /** 监听执行过程事件(用于 SSE / UI 实时展示) */
42
+ subscribe(listener: ExecutorEventListener): () => void;
43
+ }
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/capability/executor/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,iDAAiD;IACjD,oCAAoC;IACpC,0BAA0B;IAC1B,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EACA,aAAa,GACb,WAAW,GACX,cAAc,GACd,MAAM,GACN,OAAO,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B;;;;OAIG;IACH,YAAY,CACV,SAAS,EAAE,oBAAoB,EAC/B,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC,8DAA8D;IAC9D,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C,iCAAiC;IACjC,SAAS,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI,CAAC;CACxD"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Methodology Phase Executor — 接口 & 公共类型
3
+ *
4
+ * 两种执行模式复用同一份 plan 数据:
5
+ * - foreground:走 hook 注入,Claude 主会话执行(现有机制 + Phase A 兜底)
6
+ * - background:spawn `claude -p` 子进程独立驱动(Phase C)
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/capability/executor/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * worker-auth-probe —— 轻量探测 claude CLI 是否拥有可用认证。
3
+ *
4
+ * 设计原则:
5
+ * - 不启动子进程、不做网络调用,只看 env / 磁盘文件
6
+ * - 宁可 false-negative(判 available=true 实际失败后由 worker 报错),
7
+ * 也不 false-positive 阻断能跑的场景
8
+ * - 只检查 env `ANTHROPIC_API_KEY` 和 `~/.claude/.credentials.json`,
9
+ * 不探测 macOS keychain(平台相关,成本高于收益)
10
+ */
11
+ export type WorkerAuthMethod = 'api-key-env' | 'oauth-token' | 'keychain' | 'unknown' | 'none';
12
+ export interface WorkerAuthProbe {
13
+ available: boolean;
14
+ method: WorkerAuthMethod;
15
+ message: string;
16
+ }
17
+ /**
18
+ * 后台 worker 认证缺失错误,带 `code` 便于上层(Web API)分流返回 503。
19
+ */
20
+ export declare class WorkerAuthError extends Error {
21
+ readonly code: "AUTH_REQUIRED";
22
+ readonly probe: WorkerAuthProbe;
23
+ constructor(probe: WorkerAuthProbe);
24
+ }
25
+ export interface ProbeOptions {
26
+ /** 覆盖凭据文件路径,便于测试 */
27
+ credentialsPath?: string;
28
+ }
29
+ export declare function probeWorkerAuth(options?: ProbeOptions): WorkerAuthProbe;
30
+ //# sourceMappingURL=worker-auth-probe.d.ts.map
@@ -0,0 +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,CAoC3E"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * worker-auth-probe —— 轻量探测 claude CLI 是否拥有可用认证。
3
+ *
4
+ * 设计原则:
5
+ * - 不启动子进程、不做网络调用,只看 env / 磁盘文件
6
+ * - 宁可 false-negative(判 available=true 实际失败后由 worker 报错),
7
+ * 也不 false-positive 阻断能跑的场景
8
+ * - 只检查 env `ANTHROPIC_API_KEY` 和 `~/.claude/.credentials.json`,
9
+ * 不探测 macOS keychain(平台相关,成本高于收益)
10
+ */
11
+ import { existsSync, readFileSync } from 'node:fs';
12
+ import { homedir } from 'node:os';
13
+ import path from 'node:path';
14
+ /**
15
+ * 后台 worker 认证缺失错误,带 `code` 便于上层(Web API)分流返回 503。
16
+ */
17
+ export class WorkerAuthError extends Error {
18
+ code = 'AUTH_REQUIRED';
19
+ probe;
20
+ constructor(probe) {
21
+ super(`Background mode requires Claude authentication: ${probe.message}. ` +
22
+ 'Set ANTHROPIC_API_KEY env var or run `claude login` first.');
23
+ this.name = 'WorkerAuthError';
24
+ this.probe = probe;
25
+ }
26
+ }
27
+ /**
28
+ * 默认 OAuth 凭据文件路径:`~/.claude/.credentials.json`
29
+ * 官方 claude-code 在首次登录后写到这里。
30
+ */
31
+ function defaultCredentialsPath() {
32
+ return path.join(homedir(), '.claude', '.credentials.json');
33
+ }
34
+ function isNonEmptyString(v) {
35
+ return typeof v === 'string' && v.trim().length > 0;
36
+ }
37
+ /**
38
+ * 粗判 credentials.json 是否"像"一份合法的 OAuth 凭据。
39
+ * 只要能 parse 出对象且含任何 token 形字段就算通过——实际有效性交给 worker 验证。
40
+ */
41
+ function looksLikeOAuthCredentials(raw) {
42
+ try {
43
+ const parsed = JSON.parse(raw);
44
+ if (!parsed || typeof parsed !== 'object')
45
+ return false;
46
+ const obj = parsed;
47
+ // 常见字段:claudeAiOauth.accessToken / accessToken / oauth / tokens 等
48
+ // 宽松识别即可:有对象内容就认为配过
49
+ if (isNonEmptyString(obj.accessToken))
50
+ return true;
51
+ if (obj.claudeAiOauth && typeof obj.claudeAiOauth === 'object')
52
+ return true;
53
+ if (obj.oauth && typeof obj.oauth === 'object')
54
+ return true;
55
+ if (obj.tokens && typeof obj.tokens === 'object')
56
+ return true;
57
+ // 兜底:只要 JSON 不是空对象就当有配置
58
+ return Object.keys(obj).length > 0;
59
+ }
60
+ catch {
61
+ return false;
62
+ }
63
+ }
64
+ export function probeWorkerAuth(options = {}) {
65
+ // 1) env 优先
66
+ const envKey = process.env.ANTHROPIC_API_KEY;
67
+ if (isNonEmptyString(envKey)) {
68
+ return {
69
+ available: true,
70
+ method: 'api-key-env',
71
+ message: 'ANTHROPIC_API_KEY env is set',
72
+ };
73
+ }
74
+ // 2) OAuth credentials 文件
75
+ const credPath = options.credentialsPath ?? defaultCredentialsPath();
76
+ if (existsSync(credPath)) {
77
+ try {
78
+ const raw = readFileSync(credPath, 'utf-8');
79
+ if (looksLikeOAuthCredentials(raw)) {
80
+ return {
81
+ available: true,
82
+ method: 'oauth-token',
83
+ message: `OAuth credentials found at ${credPath}`,
84
+ };
85
+ }
86
+ }
87
+ catch {
88
+ // ignore — 读失败当作不可用
89
+ }
90
+ }
91
+ // 3) 都没有
92
+ return {
93
+ available: false,
94
+ method: 'none',
95
+ message: 'no ANTHROPIC_API_KEY env and no OAuth credentials on disk ' +
96
+ `(expected ${credPath})`,
97
+ };
98
+ }
99
+ //# sourceMappingURL=worker-auth-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-auth-probe.js","sourceRoot":"","sources":["../../../src/capability/executor/worker-auth-probe.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"methodology-planner.d.ts","sourceRoot":"","sources":["../../src/capability/methodology-planner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAC;AAG3E,qBAAa,kBAAkB;IACjB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,UAAU,GAAG,IAAI;IAEzC;;OAEG;IACG,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,aAAa,CAAC;IAqBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqD1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuCzB;;OAEG;IACH,OAAO,CAAC,YAAY;IA+CpB;;OAEG;IACH,OAAO,CAAC,SAAS;CAgBlB"}
1
+ {"version":3,"file":"methodology-planner.d.ts","sourceRoot":"","sources":["../../src/capability/methodology-planner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAC;AAG3E,qBAAa,kBAAkB;IACjB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,UAAU,GAAG,IAAI;IAEzC;;OAEG;IACG,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,aAAa,CAAC;IAqBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwD1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuCzB;;OAEG;IACH,OAAO,CAAC,YAAY;IA+CpB;;OAEG;IACH,OAAO,CAAC,SAAS;CAgBlB"}
@@ -36,7 +36,7 @@ export class MethodologyPlanner {
36
36
  */
37
37
  buildPlannerPrompt(userPrompt, intent, methodology) {
38
38
  const phaseDescriptions = Object.entries(methodology.phase_templates)
39
- .map(([id, template]) => `- ${id}: ${template.description || template.prompt_template}`)
39
+ .map(([id, template]) => `- ${id} (agent: ${template.agent}): ${template.description || template.prompt_template}`)
40
40
  .join('\n');
41
41
  const decisionRules = methodology.decision_rules
42
42
  ?.map(rule => `- ${rule.condition} → [${rule.phases.join(', ')}]: ${rule.description}`)
@@ -50,7 +50,7 @@ Intent Analysis:
50
50
  - Complexity: ${intent.complexity}
51
51
  - Requirement: ${intent.requirement}
52
52
 
53
- Available Phases:
53
+ Available Phases (phase id → agent binding is FIXED, do NOT change the agent):
54
54
  ${phaseDescriptions}
55
55
 
56
56
  Decision Rules (as reference):
@@ -64,13 +64,13 @@ Guidelines:
64
64
  3. Complex tasks (complexity: complex): Use full workflow (3-4+)
65
65
  4. Consider task type: bug fix needs less phases than architecture change
66
66
  5. Each phase must have a clear rationale
67
+ 6. NEVER invent agent names — agent is bound by phase id above
67
68
 
68
69
  Output JSON (no markdown, just JSON):
69
70
  {
70
71
  "phases": [
71
72
  {
72
- "id": "phase_id",
73
- "agent": "agent_name",
73
+ "id": "phase_id_from_available_phases",
74
74
  "prompt": "Specific instruction for this phase",
75
75
  "rationale": "Why this phase is needed"
76
76
  }
@@ -78,7 +78,10 @@ Output JSON (no markdown, just JSON):
78
78
  "rationale": "Overall plan rationale"
79
79
  }
80
80
 
81
- IMPORTANT: Output ONLY valid JSON, no markdown code blocks.`;
81
+ IMPORTANT:
82
+ - Output ONLY valid JSON, no markdown code blocks.
83
+ - Do NOT include an "agent" field — it is determined by phase id.
84
+ - Only use phase ids listed in Available Phases.`;
82
85
  }
83
86
  /**
84
87
  * 解析 AI 响应
@@ -97,7 +100,7 @@ IMPORTANT: Output ONLY valid JSON, no markdown code blocks.`;
97
100
  }
98
101
  cleaned = cleaned.trim();
99
102
  const parsed = JSON.parse(cleaned);
100
- // 验证和补充 phases
103
+ // 验证和补充 phases(agent 字段以 YAML template 为权威,忽略 AI 可能返回的 agent)
101
104
  const phases = parsed.phases.map((phase) => {
102
105
  const template = methodology.phase_templates[phase.id];
103
106
  if (!template) {
@@ -105,7 +108,7 @@ IMPORTANT: Output ONLY valid JSON, no markdown code blocks.`;
105
108
  }
106
109
  return {
107
110
  id: phase.id,
108
- agent: phase.agent || template.agent,
111
+ agent: template.agent,
109
112
  prompt: phase.prompt,
110
113
  rationale: phase.rationale,
111
114
  artifacts: template.artifacts,
@@ -1 +1 @@
1
- {"version":3,"file":"methodology-planner.js","sourceRoot":"","sources":["../../src/capability/methodology-planner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAE7C;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,UAAkB,EAClB,MAAsB,EACtB,WAAwB;QAExB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,YAAY;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAC9C,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,4CAA4C,GAAG,kBAAkB,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,UAAkB,EAClB,MAAsB,EACtB,WAAwB;QAExB,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC;aAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;aACvF,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc;YAC9C,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aACtF,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC;QAEvC,OAAO,sCAAsC,WAAW,CAAC,IAAI;;QAEzD,UAAU;;;eAGH,MAAM,CAAC,QAAQ;gBACd,MAAM,CAAC,UAAU;iBAChB,MAAM,CAAC,WAAW;;;EAGjC,iBAAiB;;;EAGjB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;4DAwB6C,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,QAAgB,EAAE,WAAwB;QAClE,uBAAuB;QACvB,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,eAAe;QACf,MAAM,MAAM,GAAmB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;YAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;gBACpC,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,QAAQ,CAAC,SAAS;aAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,WAAW,CAAC,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,YAAY,CAClB,UAAkB,EAClB,MAAsB,EACtB,WAAwB;QAExB,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAExD,WAAW;QACX,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;oBAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;wBACtD,OAAO;4BACL,EAAE,EAAE,OAAO;4BACX,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC;4BAChE,SAAS,EAAE,QAAQ,CAAC,WAAW,IAAI,WAAW,OAAO,QAAQ;4BAC7D,SAAS,EAAE,QAAQ,CAAC,SAAS;yBAC9B,CAAC;oBACJ,CAAC,CAAC,CAAC;oBAEH,OAAO;wBACL,MAAM;wBACN,SAAS,EAAE,IAAI,CAAC,WAAW,IAAI,uBAAuB;wBACtD,cAAc,EAAE,WAAW,CAAC,EAAE;qBAC/B,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,YAAY;QACZ,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,EAAE;YACF,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC;YAChE,SAAS,EAAE,QAAQ,CAAC,WAAW,IAAI,WAAW,EAAE,QAAQ;YACxD,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,4CAA4C;YACvD,cAAc,EAAE,WAAW,CAAC,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,SAAiB,EAAE,MAAsB;QACzD,aAAa;QACb,yDAAyD;QACzD,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEjE,IAAI,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;YAChE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"methodology-planner.js","sourceRoot":"","sources":["../../src/capability/methodology-planner.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,10 @@ export interface MethodologyExecution {
51
51
  methodology_id: string;
52
52
  plan_json: string;
53
53
  current_phase_index: number;
54
- status: 'running' | 'completed' | 'failed';
54
+ status: 'running' | 'completed' | 'failed' | 'cancelled';
55
+ mode?: 'foreground' | 'background';
56
+ worker_pid?: number | null;
57
+ worker_session_id?: string | null;
55
58
  started_at: number;
56
59
  completed_at?: number;
57
60
  }
@@ -59,10 +62,16 @@ export interface PhaseExecution {
59
62
  id: number;
60
63
  methodology_execution_id: number;
61
64
  phase_id: string;
65
+ phase_index: number;
62
66
  agent_name: string;
63
67
  prompt: string;
64
68
  status: 'pending' | 'running' | 'completed' | 'failed';
65
69
  started_at?: number;
66
70
  completed_at?: number;
71
+ duration_ms?: number;
72
+ artifacts_json?: string | null;
73
+ output_text?: string | null;
74
+ error_message?: string | null;
75
+ stream_log_path?: string | null;
67
76
  }
68
77
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/capability/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAGD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/capability/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAGD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACzD,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC"}
@@ -97,6 +97,13 @@ export declare class SQLiteStorage extends EventEmitter {
97
97
  private dbPath;
98
98
  constructor(dbPath: string);
99
99
  private initSchema;
100
+ private hasColumn;
101
+ private addColumnIfMissing;
102
+ /**
103
+ * Incremental schema migrations. Kept idempotent so daemon restarts are safe.
104
+ * New columns since the base schema.sql go here.
105
+ */
106
+ private runMigrations;
100
107
  getDatabase(): Database.Database;
101
108
  getDbPath(): string;
102
109
  writeEvent(event: ForgeEvent): void;
@@ -212,14 +219,22 @@ export declare class SQLiteStorage extends EventEmitter {
212
219
  session_id: string;
213
220
  methodology_id: string;
214
221
  plan_json: string;
222
+ mode?: 'foreground' | 'background';
215
223
  }): number;
216
224
  getActiveMethodologyExecution(session_id: string): any | null;
217
225
  updateMethodologyExecution(id: number, data: {
218
226
  current_phase_index?: number;
219
227
  status?: string;
220
228
  completed_at?: number;
229
+ worker_pid?: number | null;
230
+ worker_session_id?: string | null;
221
231
  }): void;
222
232
  getMethodologyExecution(id: number): any | null;
233
+ /**
234
+ * List all methodology_executions with status='running' and mode='background'.
235
+ * Used at daemon startup to detect crashed workers (worker_pid not alive).
236
+ */
237
+ listRunningBackgroundExecutions(): any[];
223
238
  createPhaseExecution(data: {
224
239
  methodology_execution_id: number;
225
240
  phase_id: string;
@@ -231,6 +246,9 @@ export declare class SQLiteStorage extends EventEmitter {
231
246
  status?: string;
232
247
  completed_at?: number;
233
248
  artifacts_json?: string;
249
+ output_text?: string | null;
250
+ error_message?: string | null;
251
+ stream_log_path?: string | null;
234
252
  }): void;
235
253
  getPhaseExecutions(methodology_execution_id: number): any[];
236
254
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/core/storage/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/core/storage/sqlite.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export class SQLiteStorage extends EventEmitter {
27
27
  this.db.pragma(`cache_size = ${DATABASE.CACHE_SIZE}`);
28
28
  this.db.pragma(`busy_timeout = ${DATABASE.BUSY_TIMEOUT}`);
29
29
  this.initSchema();
30
+ this.runMigrations();
30
31
  }
31
32
  initSchema() {
32
33
  const thisDir = dirname(fileURLToPath(import.meta.url));
@@ -52,6 +53,40 @@ export class SQLiteStorage extends EventEmitter {
52
53
  `);
53
54
  }
54
55
  }
56
+ hasColumn(table, column) {
57
+ try {
58
+ const rows = this.db.prepare(`PRAGMA table_info(${table})`).all();
59
+ return rows.some(r => r.name === column);
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }
65
+ addColumnIfMissing(table, column, definition) {
66
+ if (!this.hasColumn(table, column)) {
67
+ try {
68
+ this.db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
69
+ logger.info(`[SQLiteStorage] migration: added ${table}.${column}`);
70
+ }
71
+ catch (err) {
72
+ logger.warn(`[SQLiteStorage] migration: ALTER ${table} ADD ${column} failed: ${err}`);
73
+ }
74
+ }
75
+ }
76
+ /**
77
+ * Incremental schema migrations. Kept idempotent so daemon restarts are safe.
78
+ * New columns since the base schema.sql go here.
79
+ */
80
+ runMigrations() {
81
+ // methodology_executions: mode / worker_pid / worker_session_id
82
+ this.addColumnIfMissing('methodology_executions', 'mode', "TEXT NOT NULL DEFAULT 'foreground'");
83
+ this.addColumnIfMissing('methodology_executions', 'worker_pid', 'INTEGER');
84
+ this.addColumnIfMissing('methodology_executions', 'worker_session_id', 'TEXT');
85
+ // phase_executions: output_text / error_message / stream_log_path
86
+ this.addColumnIfMissing('phase_executions', 'output_text', 'TEXT');
87
+ this.addColumnIfMissing('phase_executions', 'error_message', 'TEXT');
88
+ this.addColumnIfMissing('phase_executions', 'stream_log_path', 'TEXT');
89
+ }
55
90
  getDatabase() {
56
91
  return this.db;
57
92
  }
@@ -506,10 +541,11 @@ export class SQLiteStorage extends EventEmitter {
506
541
  }
507
542
  // ── Methodology Executions ─────────────────────────────────────────────
508
543
  createMethodologyExecution(data) {
544
+ const mode = data.mode ?? 'foreground';
509
545
  const result = this.db.prepare(`
510
- INSERT INTO methodology_executions (session_id, methodology_id, plan_json, started_at)
511
- VALUES (?, ?, ?, ?)
512
- `).run(data.session_id, data.methodology_id, data.plan_json, Date.now());
546
+ INSERT INTO methodology_executions (session_id, methodology_id, plan_json, mode, started_at)
547
+ VALUES (?, ?, ?, ?, ?)
548
+ `).run(data.session_id, data.methodology_id, data.plan_json, mode, Date.now());
513
549
  return result.lastInsertRowid;
514
550
  }
515
551
  getActiveMethodologyExecution(session_id) {
@@ -534,6 +570,14 @@ export class SQLiteStorage extends EventEmitter {
534
570
  updates.push('completed_at = ?');
535
571
  values.push(data.completed_at);
536
572
  }
573
+ if (data.worker_pid !== undefined) {
574
+ updates.push('worker_pid = ?');
575
+ values.push(data.worker_pid);
576
+ }
577
+ if (data.worker_session_id !== undefined) {
578
+ updates.push('worker_session_id = ?');
579
+ values.push(data.worker_session_id);
580
+ }
537
581
  if (updates.length > 0) {
538
582
  values.push(id);
539
583
  this.db.prepare(`
@@ -548,6 +592,17 @@ export class SQLiteStorage extends EventEmitter {
548
592
  SELECT * FROM methodology_executions WHERE id = ?
549
593
  `).get(id) || null;
550
594
  }
595
+ /**
596
+ * List all methodology_executions with status='running' and mode='background'.
597
+ * Used at daemon startup to detect crashed workers (worker_pid not alive).
598
+ */
599
+ listRunningBackgroundExecutions() {
600
+ return this.db.prepare(`
601
+ SELECT * FROM methodology_executions
602
+ WHERE status = 'running' AND mode = 'background'
603
+ ORDER BY id DESC
604
+ `).all();
605
+ }
551
606
  // ── Phase Executions ───────────────────────────────────────────────────
552
607
  createPhaseExecution(data) {
553
608
  const result = this.db.prepare(`
@@ -568,13 +623,29 @@ export class SQLiteStorage extends EventEmitter {
568
623
  updates.push('completed_at = ?');
569
624
  values.push(data.completed_at);
570
625
  if (data.status === 'completed') {
571
- updates.push('duration_ms = completed_at - started_at');
626
+ // SQLite UPDATE SET 子句里引用列名取的是更新前的值,
627
+ // 不能写 `duration_ms = completed_at - started_at`(RHS 的 completed_at 仍是 NULL)。
628
+ // 用参数占位符复写一次 completed_at 的值,减去旧的 started_at。
629
+ updates.push('duration_ms = ? - started_at');
630
+ values.push(data.completed_at);
572
631
  }
573
632
  }
574
633
  if (data.artifacts_json) {
575
634
  updates.push('artifacts_json = ?');
576
635
  values.push(data.artifacts_json);
577
636
  }
637
+ if (data.output_text !== undefined) {
638
+ updates.push('output_text = ?');
639
+ values.push(data.output_text);
640
+ }
641
+ if (data.error_message !== undefined) {
642
+ updates.push('error_message = ?');
643
+ values.push(data.error_message);
644
+ }
645
+ if (data.stream_log_path !== undefined) {
646
+ updates.push('stream_log_path = ?');
647
+ values.push(data.stream_log_path);
648
+ }
578
649
  if (updates.length > 0) {
579
650
  values.push(id);
580
651
  this.db.prepare(`