harness-engineering-agent 0.3.18 → 0.3.20

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 (59) hide show
  1. package/README.md +5 -0
  2. package/dist/agent/harness-role-capability-directory-data.d.ts.map +1 -1
  3. package/dist/agent/harness-role-capability-directory-data.js +2 -1
  4. package/dist/agent/harness-role-capability-directory-data.js.map +1 -1
  5. package/dist/controller/index.d.ts +1 -0
  6. package/dist/controller/index.d.ts.map +1 -1
  7. package/dist/controller/index.js +1 -0
  8. package/dist/controller/index.js.map +1 -1
  9. package/dist/controller/planner-context-contract.d.ts +157 -0
  10. package/dist/controller/planner-context-contract.d.ts.map +1 -0
  11. package/dist/controller/planner-context-contract.js +59 -0
  12. package/dist/controller/planner-context-contract.js.map +1 -0
  13. package/dist/controller/role-prompts.d.ts.map +1 -1
  14. package/dist/controller/role-prompts.js +2 -16
  15. package/dist/controller/role-prompts.js.map +1 -1
  16. package/dist/controller/run-controller.d.ts.map +1 -1
  17. package/dist/controller/run-controller.js +43 -17
  18. package/dist/controller/run-controller.js.map +1 -1
  19. package/dist/controller/run-state.d.ts.map +1 -1
  20. package/dist/controller/run-state.js +5 -1
  21. package/dist/controller/run-state.js.map +1 -1
  22. package/dist/controller/task-executor.d.ts.map +1 -1
  23. package/dist/controller/task-executor.js +5 -3
  24. package/dist/controller/task-executor.js.map +1 -1
  25. package/dist/domain/index.d.ts +1 -1
  26. package/dist/domain/index.d.ts.map +1 -1
  27. package/dist/domain/index.js.map +1 -1
  28. package/dist/domain/report.d.ts +22 -0
  29. package/dist/domain/report.d.ts.map +1 -1
  30. package/dist/domain/run.d.ts +34 -0
  31. package/dist/domain/run.d.ts.map +1 -1
  32. package/dist/domain/run.js +9 -0
  33. package/dist/domain/run.js.map +1 -1
  34. package/dist/plugin/harness-chat-hook.d.ts +3 -1
  35. package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
  36. package/dist/plugin/harness-chat-hook.js +35 -15
  37. package/dist/plugin/harness-chat-hook.js.map +1 -1
  38. package/dist/plugin/harness-chat-protocol.d.ts +2 -1
  39. package/dist/plugin/harness-chat-protocol.d.ts.map +1 -1
  40. package/dist/plugin/harness-chat-protocol.js +11 -5
  41. package/dist/plugin/harness-chat-protocol.js.map +1 -1
  42. package/dist/plugin/harness-coordinator.d.ts.map +1 -1
  43. package/dist/plugin/harness-coordinator.js +21 -1
  44. package/dist/plugin/harness-coordinator.js.map +1 -1
  45. package/dist/plugin/harness-plugin-runtime.d.ts.map +1 -1
  46. package/dist/plugin/harness-plugin-runtime.js +3 -1
  47. package/dist/plugin/harness-plugin-runtime.js.map +1 -1
  48. package/dist/plugin/harness-plugin-scheduler.js +3 -3
  49. package/dist/plugin/harness-plugin-scheduler.js.map +1 -1
  50. package/dist/plugin/harness-request-router.d.ts.map +1 -1
  51. package/dist/plugin/harness-request-router.js +9 -0
  52. package/dist/plugin/harness-request-router.js.map +1 -1
  53. package/dist/plugin/harness-status-projection.d.ts +7 -0
  54. package/dist/plugin/harness-status-projection.d.ts.map +1 -1
  55. package/dist/plugin/harness-status-projection.js +45 -1
  56. package/dist/plugin/harness-status-projection.js.map +1 -1
  57. package/dist/store/run-event.d.ts +22 -0
  58. package/dist/store/run-event.d.ts.map +1 -1
  59. package/package.json +1 -1
package/README.md CHANGED
@@ -625,6 +625,11 @@ report <runId>
625
625
  - `start` 请求必须能被 Intake 提炼成 title、summary、acceptanceCriteria。如果缺少必要信息,Harness 会返回 clarification 响应而不是猜测。
626
626
  - `status`、`resume`、`cancel`、`report` 必须显式提供 `runId`。Harness 不会默认选择"最近一次运行"。
627
627
  - `status`、`pause`、`cancel`、`resume` 和 `report` 不受父会话后台任务锁阻塞;重复推进同一 Run 不会创建重复内部 Agent Session。
628
+ - `evidence_gap` 只表示当前环境无法取得的外部事实或需要用户确认的业务事实;仓库中可通过搜索、LSP 或只读验证获得的接口、路由、配置和调用链信息会继续进入调查任务。
629
+ - 对于可恢复的 `evidence_gap` 或规划阻塞,补充证据后执行 `resume <runId>`;状态反馈会包含缺失证据和下一步动作。后台消息的投递完成不代表 Run 完成,只有嵌套 Run 状态为 `completed` 才能报告整体完成。
630
+ - 工程请求由 primary 通过 `harness_escalate` 唯一移交;聊天 Hook 只注入受理协议,避免同一消息重复创建协调任务。显式生命周期命令仍可由 Hook 直接处理。
631
+ - 在同一父会话只有一个未完成 Run 时,可以发送“继续”“接着”或“恢复”恢复该 Run;没有候选或存在多个候选时,Harness 会要求补充或明确 `runId`,不会静默选择。
632
+ - Planner 使用分阶段合同:Context 阶段输出 `PlannerContextOutput`,后续阶段才输出 `TaskGraph`。Planner 合同失败表示目标工程尚未完成调查,修复 Harness 合同后才能通过 `resume` 重试。
628
633
 
629
634
  ### 基本操作
630
635
 
@@ -1 +1 @@
1
- {"version":3,"file":"harness-role-capability-directory-data.d.ts","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory-data.ts"],"names":[],"mappings":"AAmBA,OAAO,EAOL,KAAK,8BAA8B,EAGpC,MAAM,wCAAwC,CAAA;AAO/C,eAAO,MAAM,iCAAiC,gCAwUH,CAAA"}
1
+ {"version":3,"file":"harness-role-capability-directory-data.d.ts","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory-data.ts"],"names":[],"mappings":"AAmBA,OAAO,EAOL,KAAK,8BAA8B,EAGpC,MAAM,wCAAwC,CAAA;AAO/C,eAAO,MAAM,iCAAiC,gCAyUH,CAAA"}
@@ -120,7 +120,7 @@ export const HARNESS_ROLE_CAPABILITY_DIRECTORY = validateHarnessRoleCapabilityDi
120
120
  inputContext: ["Requirement JSON", "runId", "相关文件/符号/外部资料引用"],
121
121
  builtins: HARNESS_READ_ONLY_BUILTINS,
122
122
  permission: { edit: "deny", bash: "deny" },
123
- outputContract: { schemaVersion: "1.0.0", type: "TaskGraph" },
123
+ outputContract: { schemaVersion: "1.0.0", type: "PlannerContextOutput | TaskGraph" },
124
124
  budget: { summary: "消耗 planner 与 overall 预算。", dimensions: ["planner", "overall"] },
125
125
  suggestions: { status: ["completed", "evidence_gap", "clarification_required"], action: [] },
126
126
  promptLines: [
@@ -136,6 +136,7 @@ export const HARNESS_ROLE_CAPABILITY_DIRECTORY = validateHarnessRoleCapabilityDi
136
136
  "- 你不能修改文件,只能使用只读工具收集上下文",
137
137
  "- 不要执行 shell、不要委派子 Agent、不要推进状态",
138
138
  "- 当前阶段只执行当前契约:Context 阶段形成可审计 ContextPackage 并只输出 PlannerContextOutput;TaskGraph 阶段只输出完整 TaskGraph。不得在一次输出中混合两个阶段",
139
+ "- Context 阶段的 completed 顶层只能包含 schemaVersion、role、status、contextPackage;summary 和 evidenceIds 只用于 evidence_gap 或 clarification_required 分支",
139
140
  "- 对方法或类实现任务,TaskGraph 必须包含目标文件定位、完整现有代码阅读、相关 Entity/DTO/常量/工具梳理、核心逻辑实现、验证或单元测试步骤",
140
141
  "- 只输出结构化计划,不要输出 Markdown 或自由文本说明",
141
142
  "- evidenceIds/evidenceRefs 只能引用输入中已存在的 lowercase kebab-case EvidenceId;文件路径、行号、URL、符号名和摘要不得直接作为 EvidenceId。没有可用 ID 时输出空数组,不得编造路径型 ID",
@@ -1 +1 @@
1
- {"version":3,"file":"harness-role-capability-directory-data.js","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-role-capability-directory-data.js","sourceRoot":"","sources":["../../src/agent/harness-role-capability-directory-data.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export type { AnswerRunInput, ControllerClock, ControllerIdSource, CreateRunCont
8
8
  export { AgentOutputParseError, AgentRunFailedError, GraphValidationError } from "./errors.js";
9
9
  export { createEvidence } from "./evidence-factory.js";
10
10
  export { orderTasks, validateTaskGraph } from "./graph-validator.js";
11
+ export { getPlannerContextContract, PlannerContextContract, } from "./planner-context-contract.js";
11
12
  export { createReport } from "./report-factory.js";
12
13
  export { plannerTaskPrompt, roleSystemPrompt } from "./role-prompts.js";
13
14
  export { finalizeRunAcceptance } from "./run-acceptance.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAChG,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAChG,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -4,6 +4,7 @@ export { validateCrossTaskEvidence, validateEvidenceFreshness, validateRoleConte
4
4
  export { AgentOutputParseError, AgentRunFailedError, GraphValidationError } from "./errors.js";
5
5
  export { createEvidence } from "./evidence-factory.js";
6
6
  export { orderTasks, validateTaskGraph } from "./graph-validator.js";
7
+ export { getPlannerContextContract, PlannerContextContract, } from "./planner-context-contract.js";
7
8
  export { createReport } from "./report-factory.js";
8
9
  export { plannerTaskPrompt, roleSystemPrompt } from "./role-prompts.js";
9
10
  export { finalizeRunAcceptance } from "./run-acceptance.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAQ9D,OAAO,EAGL,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,yBAAyB,CAAA;AAWhC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAKhG,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAOtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAQ9D,OAAO,EAGL,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,yBAAyB,CAAA;AAWhC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAKhG,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAOtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,157 @@
1
+ import type { SessionOutputContract } from "../session/index.js";
2
+ export declare const PlannerContextContract: {
3
+ readonly schemaVersion: "1.0.0";
4
+ readonly type: "PlannerContextOutput";
5
+ readonly requiredFields: readonly ["schemaVersion", "role", "status"];
6
+ readonly allowedStatuses: readonly ["completed", "evidence_gap", "clarification_required"];
7
+ readonly evidenceGapRule: "Only use evidence_gap for unavailable external facts or user-only business facts; repository-discoverable implementation details must continue to TaskGraph.";
8
+ readonly forbiddenFields: readonly ["taskGraph", "conclusions", "mutationAudit"];
9
+ readonly examples: {
10
+ readonly completed: Readonly<Readonly<{
11
+ schemaVersion: "1.0.0";
12
+ role: "planner";
13
+ status: "completed";
14
+ contextPackage: Readonly<{
15
+ schemaVersion: "1.0.0";
16
+ contextPackageId: string;
17
+ runId: string & import("zod").$brand<"RunId">;
18
+ requirementId: string;
19
+ summary: string;
20
+ repositoryReferences: readonly (Readonly<{
21
+ path: string;
22
+ reason: string;
23
+ kind: "file";
24
+ }> | Readonly<{
25
+ symbol: string;
26
+ path: string;
27
+ reason: string;
28
+ kind: "symbol";
29
+ }>)[];
30
+ externalReferences: readonly Readonly<{
31
+ title: string;
32
+ sourceType: "spec" | "doc" | "repo" | "issue";
33
+ locator: string;
34
+ reason: string;
35
+ }>[];
36
+ unresolvedQuestions: readonly Readonly<{
37
+ questionId: string;
38
+ question: string;
39
+ impact: string;
40
+ }>[];
41
+ constraints: readonly string[];
42
+ }>;
43
+ }>> | Readonly<Readonly<{
44
+ schemaVersion: "1.0.0";
45
+ role: "planner";
46
+ status: "evidence_gap";
47
+ summary: string;
48
+ evidenceIds: readonly (string & import("zod").$brand<"EvidenceId">)[];
49
+ missingContext: readonly string[];
50
+ }>> | Readonly<Readonly<{
51
+ schemaVersion: "1.0.0";
52
+ role: "planner";
53
+ status: "clarification_required";
54
+ summary: string;
55
+ evidenceIds: readonly (string & import("zod").$brand<"EvidenceId">)[];
56
+ missingContext: readonly string[];
57
+ }>>;
58
+ readonly evidence_gap: Readonly<Readonly<{
59
+ schemaVersion: "1.0.0";
60
+ role: "planner";
61
+ status: "completed";
62
+ contextPackage: Readonly<{
63
+ schemaVersion: "1.0.0";
64
+ contextPackageId: string;
65
+ runId: string & import("zod").$brand<"RunId">;
66
+ requirementId: string;
67
+ summary: string;
68
+ repositoryReferences: readonly (Readonly<{
69
+ path: string;
70
+ reason: string;
71
+ kind: "file";
72
+ }> | Readonly<{
73
+ symbol: string;
74
+ path: string;
75
+ reason: string;
76
+ kind: "symbol";
77
+ }>)[];
78
+ externalReferences: readonly Readonly<{
79
+ title: string;
80
+ sourceType: "spec" | "doc" | "repo" | "issue";
81
+ locator: string;
82
+ reason: string;
83
+ }>[];
84
+ unresolvedQuestions: readonly Readonly<{
85
+ questionId: string;
86
+ question: string;
87
+ impact: string;
88
+ }>[];
89
+ constraints: readonly string[];
90
+ }>;
91
+ }>> | Readonly<Readonly<{
92
+ schemaVersion: "1.0.0";
93
+ role: "planner";
94
+ status: "evidence_gap";
95
+ summary: string;
96
+ evidenceIds: readonly (string & import("zod").$brand<"EvidenceId">)[];
97
+ missingContext: readonly string[];
98
+ }>> | Readonly<Readonly<{
99
+ schemaVersion: "1.0.0";
100
+ role: "planner";
101
+ status: "clarification_required";
102
+ summary: string;
103
+ evidenceIds: readonly (string & import("zod").$brand<"EvidenceId">)[];
104
+ missingContext: readonly string[];
105
+ }>>;
106
+ readonly clarification_required: Readonly<Readonly<{
107
+ schemaVersion: "1.0.0";
108
+ role: "planner";
109
+ status: "completed";
110
+ contextPackage: Readonly<{
111
+ schemaVersion: "1.0.0";
112
+ contextPackageId: string;
113
+ runId: string & import("zod").$brand<"RunId">;
114
+ requirementId: string;
115
+ summary: string;
116
+ repositoryReferences: readonly (Readonly<{
117
+ path: string;
118
+ reason: string;
119
+ kind: "file";
120
+ }> | Readonly<{
121
+ symbol: string;
122
+ path: string;
123
+ reason: string;
124
+ kind: "symbol";
125
+ }>)[];
126
+ externalReferences: readonly Readonly<{
127
+ title: string;
128
+ sourceType: "spec" | "doc" | "repo" | "issue";
129
+ locator: string;
130
+ reason: string;
131
+ }>[];
132
+ unresolvedQuestions: readonly Readonly<{
133
+ questionId: string;
134
+ question: string;
135
+ impact: string;
136
+ }>[];
137
+ constraints: readonly string[];
138
+ }>;
139
+ }>> | Readonly<Readonly<{
140
+ schemaVersion: "1.0.0";
141
+ role: "planner";
142
+ status: "evidence_gap";
143
+ summary: string;
144
+ evidenceIds: readonly (string & import("zod").$brand<"EvidenceId">)[];
145
+ missingContext: readonly string[];
146
+ }>> | Readonly<Readonly<{
147
+ schemaVersion: "1.0.0";
148
+ role: "planner";
149
+ status: "clarification_required";
150
+ summary: string;
151
+ evidenceIds: readonly (string & import("zod").$brand<"EvidenceId">)[];
152
+ missingContext: readonly string[];
153
+ }>>;
154
+ };
155
+ };
156
+ export declare const getPlannerContextContract: () => SessionOutputContract & Record<string, unknown>;
157
+ //# sourceMappingURL=planner-context-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-context-contract.d.ts","sourceRoot":"","sources":["../../src/controller/planner-context-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AA4ChE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAaiC,CAAA;AAEpE,eAAO,MAAM,yBAAyB,QAAO,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAK1F,CAAA"}
@@ -0,0 +1,59 @@
1
+ import { PlannerContextOutputSchema } from "./task-agent-schemas.js";
2
+ const completedExample = PlannerContextOutputSchema.parse({
3
+ schemaVersion: "1.0.0",
4
+ role: "planner",
5
+ status: "completed",
6
+ contextPackage: {
7
+ schemaVersion: "1.0.0",
8
+ contextPackageId: "context-package-example",
9
+ runId: "run-example",
10
+ requirementId: "requirement-example",
11
+ summary: "Repository context required to generate the task graph.",
12
+ repositoryReferences: [
13
+ {
14
+ kind: "file",
15
+ path: "src",
16
+ reason: "Primary implementation area for the requested change.",
17
+ },
18
+ ],
19
+ externalReferences: [],
20
+ unresolvedQuestions: [],
21
+ constraints: ["Keep repository-discoverable details in the investigation task."],
22
+ },
23
+ });
24
+ const evidenceGapExample = PlannerContextOutputSchema.parse({
25
+ schemaVersion: "1.0.0",
26
+ role: "planner",
27
+ status: "evidence_gap",
28
+ summary: "An external runtime fact is unavailable.",
29
+ evidenceIds: [],
30
+ missingContext: ["Runtime deployment version from the target environment."],
31
+ });
32
+ const clarificationExample = PlannerContextOutputSchema.parse({
33
+ schemaVersion: "1.0.0",
34
+ role: "planner",
35
+ status: "clarification_required",
36
+ summary: "A business rule requires user confirmation.",
37
+ evidenceIds: [],
38
+ missingContext: ["The expected boundary behavior for the acceptance criterion."],
39
+ });
40
+ export const PlannerContextContract = {
41
+ schemaVersion: "1.0.0",
42
+ type: "PlannerContextOutput",
43
+ requiredFields: ["schemaVersion", "role", "status"],
44
+ allowedStatuses: ["completed", "evidence_gap", "clarification_required"],
45
+ evidenceGapRule: "Only use evidence_gap for unavailable external facts or user-only business facts; repository-discoverable implementation details must continue to TaskGraph.",
46
+ forbiddenFields: ["taskGraph", "conclusions", "mutationAudit"],
47
+ examples: {
48
+ completed: completedExample,
49
+ evidence_gap: evidenceGapExample,
50
+ clarification_required: clarificationExample,
51
+ },
52
+ };
53
+ export const getPlannerContextContract = () => {
54
+ PlannerContextOutputSchema.parse(completedExample);
55
+ PlannerContextOutputSchema.parse(evidenceGapExample);
56
+ PlannerContextOutputSchema.parse(clarificationExample);
57
+ return PlannerContextContract;
58
+ };
59
+ //# sourceMappingURL=planner-context-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-context-contract.js","sourceRoot":"","sources":["../../src/controller/planner-context-contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AAEpE,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,KAAK,CAAC;IACxD,aAAa,EAAE,OAAO;IACtB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,cAAc,EAAE;QACd,aAAa,EAAE,OAAO;QACtB,gBAAgB,EAAE,yBAAyB;QAC3C,KAAK,EAAE,aAAa;QACpB,aAAa,EAAE,qBAAqB;QACpC,OAAO,EAAE,yDAAyD;QAClE,oBAAoB,EAAE;YACpB;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,uDAAuD;aAChE;SACF;QACD,kBAAkB,EAAE,EAAE;QACtB,mBAAmB,EAAE,EAAE;QACvB,WAAW,EAAE,CAAC,iEAAiE,CAAC;KACjF;CACF,CAAC,CAAA;AAEF,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,KAAK,CAAC;IAC1D,aAAa,EAAE,OAAO;IACtB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,0CAA0C;IACnD,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,CAAC,yDAAyD,CAAC;CAC5E,CAAC,CAAA;AAEF,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,KAAK,CAAC;IAC5D,aAAa,EAAE,OAAO;IACtB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,wBAAwB;IAChC,OAAO,EAAE,6CAA6C;IACtD,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,CAAC,8DAA8D,CAAC;CACjF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,OAAgB;IAC/B,IAAI,EAAE,sBAA+B;IACrC,cAAc,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC;IACnD,eAAe,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,wBAAwB,CAAC;IACxE,eAAe,EACb,8JAA8J;IAChK,eAAe,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC;IAC9D,QAAQ,EAAE;QACR,SAAS,EAAE,gBAAgB;QAC3B,YAAY,EAAE,kBAAkB;QAChC,sBAAsB,EAAE,oBAAoB;KAC7C;CACiE,CAAA;AAEpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAoD,EAAE;IAC7F,0BAA0B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAClD,0BAA0B,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACpD,0BAA0B,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACtD,OAAO,sBAAsB,CAAA;AAC/B,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"role-prompts.d.ts","sourceRoot":"","sources":["../../src/controller/role-prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAK7D,eAAO,MAAM,gBAAgB,GAAI,MAAM,kBAAkB,KAAG,MAAmC,CAAA;AAE/F,eAAO,MAAM,iBAAiB,GAAI,OAAO;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClD,KAAG,MAWA,CAAA;AAEJ,eAAO,MAAM,oBAAoB,GAAI,OAAO;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClD,KAAG,MAwBA,CAAA"}
1
+ {"version":3,"file":"role-prompts.d.ts","sourceRoot":"","sources":["../../src/controller/role-prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7D,eAAO,MAAM,gBAAgB,GAAI,MAAM,kBAAkB,KAAG,MAAmC,CAAA;AAE/F,eAAO,MAAM,iBAAiB,GAAI,OAAO;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClD,KAAG,MAWA,CAAA;AAEJ,eAAO,MAAM,oBAAoB,GAAI,OAAO;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClD,KAAG,MASA,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { buildRoleSystemPrompts } from "../agent/index.js";
2
+ import { getPlannerContextContract } from "./planner-context-contract.js";
2
3
  import { getTaskGraphPlannerContract } from "./task-graph-contract.js";
3
4
  const ROLE_SYSTEM_PROMPTS = buildRoleSystemPrompts();
4
5
  export const roleSystemPrompt = (role) => ROLE_SYSTEM_PROMPTS[role];
@@ -17,22 +18,7 @@ export const plannerContextPrompt = (input) => JSON.stringify({
17
18
  requirement: input.requirement,
18
19
  runId: input.runId,
19
20
  projectContext: input.projectContext,
20
- outputContract: {
21
- schemaVersion: "1.0.0",
22
- type: "PlannerContextOutput",
23
- allowedStatuses: ["completed", "evidence_gap", "clarification_required"],
24
- forbiddenFields: ["taskGraph", "conclusions", "mutationAudit"],
25
- examples: {
26
- evidence_gap: {
27
- schemaVersion: "1.0.0",
28
- role: "planner",
29
- status: "evidence_gap",
30
- summary: "...",
31
- evidenceIds: [],
32
- missingContext: ["..."],
33
- },
34
- },
35
- },
21
+ outputContract: getPlannerContextContract(),
36
22
  ...(input.previousSchemaError === undefined
37
23
  ? {}
38
24
  : { previousSchemaError: input.previousSchemaError }),
@@ -1 +1 @@
1
- {"version":3,"file":"role-prompts.js","sourceRoot":"","sources":["../../src/controller/role-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAG1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAEtE,MAAM,mBAAmB,GAAG,sBAAsB,EAA+C,CAAA;AAEjG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAU,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAE/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAKjC,EAAU,EAAE,CACX,IAAI,CAAC,SAAS,CAAC;IACb,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,cAAc,EAAE,KAAK,CAAC,cAAc;IACpC,oBAAoB,EAAE,KAAK,CAAC,WAAW,CAAC,oBAAoB;IAC5D,sBAAsB,EAAE,KAAK,CAAC,WAAW,CAAC,sBAAsB;IAChE,cAAc,EAAE,2BAA2B,EAAE;IAC7C,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC;CACxD,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAKpC,EAAU,EAAE,CACX,IAAI,CAAC,SAAS,CAAC;IACb,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,cAAc,EAAE,KAAK,CAAC,cAAc;IACpC,cAAc,EAAE;QACd,aAAa,EAAE,OAAO;QACtB,IAAI,EAAE,sBAAsB;QAC5B,eAAe,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,wBAAwB,CAAC;QACxE,eAAe,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC;QAC9D,QAAQ,EAAE;YACR,YAAY,EAAE;gBACZ,aAAa,EAAE,OAAO;gBACtB,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,EAAE;gBACf,cAAc,EAAE,CAAC,KAAK,CAAC;aACxB;SACF;KACF;IACD,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC;CACxD,CAAC,CAAA"}
1
+ {"version":3,"file":"role-prompts.js","sourceRoot":"","sources":["../../src/controller/role-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAG1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAEtE,MAAM,mBAAmB,GAAG,sBAAsB,EAA+C,CAAA;AAEjG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAU,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAE/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAKjC,EAAU,EAAE,CACX,IAAI,CAAC,SAAS,CAAC;IACb,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,cAAc,EAAE,KAAK,CAAC,cAAc;IACpC,oBAAoB,EAAE,KAAK,CAAC,WAAW,CAAC,oBAAoB;IAC5D,sBAAsB,EAAE,KAAK,CAAC,WAAW,CAAC,sBAAsB;IAChE,cAAc,EAAE,2BAA2B,EAAE;IAC7C,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC;CACxD,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAKpC,EAAU,EAAE,CACX,IAAI,CAAC,SAAS,CAAC;IACb,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,cAAc,EAAE,KAAK,CAAC,cAAc;IACpC,cAAc,EAAE,yBAAyB,EAAE;IAC3C,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC;CACxD,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-controller.d.ts","sourceRoot":"","sources":["../../src/controller/run-controller.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AA+D/E,eAAO,MAAM,mBAAmB,GAAI,SAAS,0BAA0B,KAAG,aAi9BzE,CAAA"}
1
+ {"version":3,"file":"run-controller.d.ts","sourceRoot":"","sources":["../../src/controller/run-controller.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAgE/E,eAAO,MAAM,mBAAmB,GAAI,SAAS,0BAA0B,KAAG,aAi/BzE,CAAA"}
@@ -7,6 +7,7 @@ import { createAgentSessionRuntime } from "./agent-session.js";
7
7
  import { createDirectRunner } from "./direct-runner.js";
8
8
  import { AgentOutputParseError, AgentRunFailedError, GraphValidationError, RunCancellationError, } from "./errors.js";
9
9
  import { validateTaskGraph } from "./graph-validator.js";
10
+ import { getPlannerContextContract } from "./planner-context-contract.js";
10
11
  import { createReport } from "./report-factory.js";
11
12
  import { plannerContextPrompt, plannerTaskPrompt } from "./role-prompts.js";
12
13
  import { resolveRoute } from "./route-resolver.js";
@@ -69,14 +70,31 @@ export const createRunController = (options) => {
69
70
  ...input.run.governance,
70
71
  blockingQuestionId: input.status === "clarification_required" ? createBlockedQuestionId(input.run) : null,
71
72
  }), input.status);
72
- await writer.persist(nextRun, writer.createEvent(input.run.runId, input.eventType, {
73
+ const payloadMissingContext = Reflect.get(input.payload, "missingContext");
74
+ const missingContext = Array.isArray(payloadMissingContext)
75
+ ? payloadMissingContext.filter((value) => typeof value === "string")
76
+ : [];
77
+ const nextRunWithDetails = RunSchema.parse({
78
+ ...nextRun,
79
+ blockingDetails: {
80
+ kind: input.status,
81
+ missingContext,
82
+ discoveredEvidence: [],
83
+ nextActions: [
84
+ input.status === "clarification_required"
85
+ ? "补充所需业务信息后执行 answer"
86
+ : "补充缺失证据后执行 resume",
87
+ ],
88
+ },
89
+ });
90
+ await writer.persist(nextRunWithDetails, writer.createEvent(input.run.runId, input.eventType, {
73
91
  reason: input.reason,
74
92
  ...(input.status === "clarification_required"
75
93
  ? { blockingQuestionId: nextRun.governance.blockingQuestionId }
76
94
  : {}),
77
95
  ...input.payload,
78
96
  }));
79
- return nextRun;
97
+ return nextRunWithDetails;
80
98
  };
81
99
  const requestContextPackage = async (run, requirement, previousSchemaError) => {
82
100
  const projectContext = collectProjectContext(runWorkingDirectory(run));
@@ -96,16 +114,13 @@ export const createRunController = (options) => {
96
114
  "使用 harness_grep_app_search 搜索需求中提到的类名、方法名、符号名。",
97
115
  "使用 harness_lsp_definition 和 harness_lsp_references 追踪调用链。",
98
116
  "只有当需求本身存在歧义(如验收标准矛盾、目标文件无法确定、缺少目标项目信息)时才返回 clarification_required。",
99
- "当代码结构可发现但具体实现细节(如字段名、数据库表结构、第三方 API 契约)需要进一步调查时,返回 evidence_gap 并附带已发现的上下文。",
117
+ "代码结构、接口定义、字段名、数据库表结构、服务路由、配置和调用链等可通过仓库研究工具或只读验证获得的信息,不得返回 evidence_gap;应在 ContextPackage 中记录并交给 TaskGraph 调查。",
118
+ "只有需要用户确认的业务事实,或当前环境无法访问的外部系统事实,才允许返回 evidence_gap;返回时必须说明获取该事实的具体方式。",
119
+ "只读分析任务应生成不修改工作区的调查 Task,覆盖需求中可验证的接口、路由、配置、调用链和日志入口。",
100
120
  "不要生成 TaskGraph,不要推进状态。",
101
121
  ],
102
122
  evidence: [],
103
- outputContract: {
104
- schemaVersion: "1.0.0",
105
- type: "PlannerContextOutput",
106
- requiredFields: ["schemaVersion", "role", "status"],
107
- forbiddenFields: ["taskGraph", "conclusions", "mutationAudit"],
108
- },
123
+ outputContract: getPlannerContextContract(),
109
124
  systemPrompt: "你是 Fuxi。先输出 PlannerContextOutput JSON。",
110
125
  messageLabel: `planner-context-${run.runId}`,
111
126
  });
@@ -539,11 +554,21 @@ export const createRunController = (options) => {
539
554
  }));
540
555
  return interrupted;
541
556
  }
542
- if (current.status === "created" ||
543
- current.status === "analyzing" ||
544
- current.status === "planning") {
545
- const route = current.routingDecision?.governance ??
546
- (current.resolvedRoute === "parallel" ? "full" : current.resolvedRoute);
557
+ if (!("taskGraph" in current) &&
558
+ ["created", "analyzing", "planning", "blocked", "evidence_gap"].includes(current.status)) {
559
+ const resumed = current.status === "blocked" || current.status === "evidence_gap"
560
+ ? withStatus(withGovernance(current, {
561
+ ...current.governance,
562
+ blockingQuestionId: null,
563
+ }), "planning")
564
+ : current;
565
+ if (resumed !== current) {
566
+ await writer.persist(resumed, writer.createEvent(current.runId, "run.planning.resumed", {
567
+ previousStatus: current.status,
568
+ }));
569
+ }
570
+ const route = resumed.routingDecision?.governance ??
571
+ (resumed.resolvedRoute === "parallel" ? "full" : resumed.resolvedRoute);
547
572
  if (route === "direct") {
548
573
  const directRunner = createDirectRunner({
549
574
  runtime,
@@ -552,7 +577,7 @@ export const createRunController = (options) => {
552
577
  loadRun: loadRunWithRetry,
553
578
  upgradeRoute,
554
579
  });
555
- return await recordReflection(await directRunner.execute(current, current.requirement));
580
+ return await recordReflection(await directRunner.execute(resumed, resumed.requirement));
556
581
  }
557
582
  if (route === "streamlined") {
558
583
  const streamlinedRunner = createStreamlinedRunner({
@@ -564,9 +589,9 @@ export const createRunController = (options) => {
564
589
  runTasks: runTasksWithReflection,
565
590
  continueRun: continueRunWithWorkspace,
566
591
  });
567
- return await streamlinedRunner.execute(current, current.requirement);
592
+ return await streamlinedRunner.execute(resumed, resumed.requirement);
568
593
  }
569
- const planning = await persistPlanningState(current);
594
+ const planning = await persistPlanningState(resumed);
570
595
  const planningArtifacts = await requestPlan(planning, planning.requirement);
571
596
  validateTaskGraph(planningArtifacts.taskGraph, planning.requirement, current.runId, current.resolvedTier);
572
597
  runtime.clearInterruption(current.runId);
@@ -757,6 +782,7 @@ export const createRunController = (options) => {
757
782
  case "plan_ready":
758
783
  case "executing":
759
784
  case "verifying":
785
+ case "evidence_gap":
760
786
  case "paused":
761
787
  return advanceRun(runId);
762
788
  default: