harness-engineering-agent 0.3.14 → 0.3.16

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 (57) hide show
  1. package/README.md +8 -7
  2. package/dist/agent/harness-role-capability-directory-data.js +2 -2
  3. package/dist/agent/harness-role-capability-directory-data.js.map +1 -1
  4. package/dist/controller/direct-runner.d.ts +1 -1
  5. package/dist/controller/direct-runner.d.ts.map +1 -1
  6. package/dist/controller/direct-runner.js +2 -64
  7. package/dist/controller/direct-runner.js.map +1 -1
  8. package/dist/controller/reassessor.d.ts.map +1 -1
  9. package/dist/controller/reassessor.js +6 -4
  10. package/dist/controller/reassessor.js.map +1 -1
  11. package/dist/controller/route-resolver.d.ts +7 -2
  12. package/dist/controller/route-resolver.d.ts.map +1 -1
  13. package/dist/controller/route-resolver.js +70 -8
  14. package/dist/controller/route-resolver.js.map +1 -1
  15. package/dist/controller/run-controller.d.ts.map +1 -1
  16. package/dist/controller/run-controller.js +82 -16
  17. package/dist/controller/run-controller.js.map +1 -1
  18. package/dist/controller/run-reflection.d.ts +1 -1
  19. package/dist/controller/run-reflection.d.ts.map +1 -1
  20. package/dist/controller/run-reflection.js +3 -1
  21. package/dist/controller/run-reflection.js.map +1 -1
  22. package/dist/controller/streamlined-runner.js +7 -7
  23. package/dist/controller/streamlined-runner.js.map +1 -1
  24. package/dist/controller/task-executor.d.ts.map +1 -1
  25. package/dist/controller/task-executor.js +62 -10
  26. package/dist/controller/task-executor.js.map +1 -1
  27. package/dist/domain/complexity.d.ts +37 -0
  28. package/dist/domain/complexity.d.ts.map +1 -1
  29. package/dist/domain/complexity.js +29 -0
  30. package/dist/domain/complexity.js.map +1 -1
  31. package/dist/domain/context-snapshot.d.ts +3 -3
  32. package/dist/domain/evidence.d.ts +2 -2
  33. package/dist/domain/index.d.ts +2 -2
  34. package/dist/domain/index.d.ts.map +1 -1
  35. package/dist/domain/index.js +1 -1
  36. package/dist/domain/index.js.map +1 -1
  37. package/dist/domain/report.d.ts +50 -4
  38. package/dist/domain/report.d.ts.map +1 -1
  39. package/dist/domain/run.d.ts +50 -4
  40. package/dist/domain/run.d.ts.map +1 -1
  41. package/dist/domain/run.js +20 -1
  42. package/dist/domain/run.js.map +1 -1
  43. package/dist/plugin/harness-chat-hook.d.ts +2 -0
  44. package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
  45. package/dist/plugin/harness-chat-hook.js +3 -1
  46. package/dist/plugin/harness-chat-hook.js.map +1 -1
  47. package/dist/plugin/harness-coordinator.d.ts +8 -0
  48. package/dist/plugin/harness-coordinator.d.ts.map +1 -1
  49. package/dist/plugin/harness-coordinator.js +188 -2
  50. package/dist/plugin/harness-coordinator.js.map +1 -1
  51. package/dist/plugin/harness-request-router.d.ts +4 -1
  52. package/dist/plugin/harness-request-router.d.ts.map +1 -1
  53. package/dist/plugin/harness-request-router.js +77 -5
  54. package/dist/plugin/harness-request-router.js.map +1 -1
  55. package/dist/store/run-event.d.ts +50 -4
  56. package/dist/store/run-event.d.ts.map +1 -1
  57. package/package.json +1 -1
package/README.md CHANGED
@@ -39,15 +39,15 @@ Harness 是确定性的控制平面,内部 Agent 是受约束的概率执行
39
39
  Nuwa (Intake) ── 结构化 HarnessIntent;start 携带 Requirement + complexityAssessment
40
40
  |
41
41
  v
42
- Controller.resolveRoute() ── 根据 complexityAssessment 决定执行路径
42
+ Controller.resolveRoute() ── 先解析治理路径,再由 TaskGraph 事实解析调度模式
43
43
  |
44
- ├── direct (trivial) ── 跳过 Fuxi/Zhulong/Yinglong,直接 Luban + 验证
44
+ ├── direct (trivial) ── 仅用于已验证的单 TaskGraph,复用 Worker/验证/证据闭环
45
45
  |
46
46
  ├── streamlined (standard) ── Fuxi 单阶段(跳过 ContextPackage)→ Luban → Zhulong TaskReview(跳过 PlanReview)
47
47
  |
48
48
  ├── full (complex) ── 完整流水线:Fuxi → Zhulong PlanReview → Luban → Zhulong TaskReview → Yinglong
49
49
  |
50
- └── parallel (complex) ── 完整流水线 + 层级并行执行
50
+ └── scheduling=parallel ── 与治理路径正交,资格检查通过后启用
51
51
  |
52
52
  v
53
53
  最终报告 (final-report.md)
@@ -62,7 +62,7 @@ Nuwa 在 Intake 阶段输出结构化复杂度评估(`complexityAssessment`)
62
62
  - `suggestedRoute`: direct | streamlined | full | parallel
63
63
  - `confidence`: high | medium | low
64
64
 
65
- Controller 使用客观指标校验 Nuwa 的评估:
65
+ Controller Nuwa 的评估视为建议并进行保守校验;TaskGraph 生成后,再依据真实任务、路径、依赖和工作区事实解析最终治理与调度决策:
66
66
  - `estimatedFileCount > 10` → 强制 complex
67
67
  - `estimatedCrossModuleDeps > 3` → 强制 complex
68
68
  - `confidence === "low"` → 强制 complex
@@ -70,19 +70,20 @@ Controller 使用客观指标校验 Nuwa 的评估:
70
70
 
71
71
  ### 执行路径
72
72
 
73
- | 路径 | 适用场景 | 跳过阶段 |
73
+ | 治理路径 | 适用场景 | 跳过阶段 |
74
74
  |------|----------|----------|
75
75
  | `direct` | trivial 任务(单文件修改、配置调整) | Fuxi、Zhulong PlanReview、Yinglong |
76
76
  | `streamlined` | standard 任务(多文件但单模块) | ContextPackage、Zhulong PlanReview |
77
77
  | `full` | complex 任务(跨模块、架构变更) | 无 |
78
- | `parallel` | complex 任务 + 层级并行 | 无 |
78
+
79
+ 调度模式独立为 `serial` 或 `parallel`。`parallel` 不是 `full` 的下一级;资格不满足时在同一治理路径回退 `serial` 并记录原因。
79
80
 
80
81
  ### 自动升级
81
82
 
82
83
  当低路径失败时,自动升级到更高路径:
83
84
  - `direct` 失败 → 升级到 `streamlined`
84
85
  - `streamlined` 失败 → 升级到 `full`
85
- - `full` 失败 → 升级到 `parallel`
86
+ - `full` 失败 → 进入失败分析、有限重试或修复链
86
87
 
87
88
  升级时保留已有 evidence,不重复已完成的工作。
88
89
 
@@ -66,7 +66,7 @@ export const HARNESS_ROLE_CAPABILITY_DIRECTORY = validateHarnessRoleCapabilityDi
66
66
  "",
67
67
  "## 复杂度评估指引",
68
68
  "",
69
- "对于 `start` 意图,你必须在 `requirement` 中包含 `complexityAssessment` 字段。",
69
+ "对于 `start` 意图,你必须在 `requirement` 中包含建议性的 `complexityAssessment` 字段;Controller 会基于 TaskGraph 和工作区事实做最终决策。",
70
70
  "",
71
71
  "### 复杂度分级标准",
72
72
  "",
@@ -74,7 +74,7 @@ export const HARNESS_ROLE_CAPABILITY_DIRECTORY = validateHarnessRoleCapabilityDi
74
74
  "|------|------|-----------|----------|",
75
75
  "| trivial | 单文件修改、配置调整、简单文本替换 | 1-2 | direct |",
76
76
  "| standard | 多文件但单模块、明确边界的功能 | 3-10 | streamlined |",
77
- "| complex | 跨模块、架构变更、需要多轮审查 | >10 | full/parallel |",
77
+ "| complex | 跨模块、架构变更、需要多轮审查 | >10 | fullparallel 由 Controller 独立判断) |",
78
78
  "",
79
79
  "### 评估步骤",
80
80
  "",
@@ -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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"}
@@ -10,6 +10,6 @@ export type DirectRunnerDependencies = {
10
10
  readonly upgradeRoute: (run: Run, reason: string) => Promise<Run>;
11
11
  };
12
12
  export declare const createDirectRunner: (deps: DirectRunnerDependencies) => {
13
- execute(run: Run, requirement: Requirement): Promise<Run>;
13
+ execute(run: Run, _requirement: Requirement): Promise<Run>;
14
14
  };
15
15
  //# sourceMappingURL=direct-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"direct-runner.d.ts","sourceRoot":"","sources":["../../src/controller/direct-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACvD,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAClE,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,MAAM,wBAAwB;iBAE1C,GAAG,eAAe,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAyElE,CAAA"}
1
+ {"version":3,"file":"direct-runner.d.ts","sourceRoot":"","sources":["../../src/controller/direct-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACvD,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAClE,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,MAAM,wBAAwB;iBAE1C,GAAG,gBAAgB,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAOnE,CAAA"}
@@ -1,69 +1,7 @@
1
- import { HARNESS_SESSION_ROLE } from "../session/index.js";
2
- import { buildContextSnapshot } from "./context-builder.js";
3
- import { AgentOutputParseError, AgentRunFailedError } from "./errors.js";
4
- import { withStatus } from "./run-state.js";
5
1
  export const createDirectRunner = (deps) => {
6
2
  return {
7
- async execute(run, requirement) {
8
- // Build context snapshot for worker
9
- const snapshot = buildContextSnapshot({
10
- ids: deps.ids,
11
- run,
12
- phase: "executing",
13
- attempt: 0,
14
- evidence: run.evidence,
15
- });
16
- const executing = {
17
- ...withStatus(run, "executing"),
18
- contextSnapshot: snapshot,
19
- };
20
- await deps.writer.persist(executing, deps.writer.createEvent(run.runId, "run.executing.direct", {
21
- route: "direct",
22
- status: "executing",
23
- contextId: snapshot.contextId,
24
- contextDigest: snapshot.contentDigest,
25
- }));
26
- const outputText = await deps.runtime.sendAgent({
27
- runId: run.runId,
28
- role: HARNESS_SESSION_ROLE.worker,
29
- title: requirement.title,
30
- brief: JSON.stringify({ requirement, runId: run.runId }),
31
- constraints: [
32
- "直接实现需求,不需要生成 TaskGraph。",
33
- "输出结构化 WorkerOutput JSON。",
34
- "只修改必要的文件。",
35
- ],
36
- evidence: [],
37
- outputContract: {
38
- schemaVersion: "1.0.0",
39
- type: "WorkerOutput",
40
- requiredFields: ["schemaVersion", "role", "status", "summary"],
41
- },
42
- messageLabel: `direct-worker-${run.runId}`,
43
- contextId: snapshot.contextId,
44
- contextVersion: snapshot.version,
45
- contextDigest: snapshot.contentDigest,
46
- phase: "executing",
47
- });
48
- try {
49
- const output = JSON.parse(outputText);
50
- if (output.status === "failed" || output.status === "blocked") {
51
- const upgraded = await deps.upgradeRoute(run, `direct path failed: ${output.summary ?? "worker reported failure"}`);
52
- return upgraded;
53
- }
54
- const completed = { ...withStatus(run, "completed"), contextSnapshot: snapshot };
55
- await deps.writer.persist(completed, deps.writer.createEvent(run.runId, "run.completed.direct", {
56
- summary: output.summary,
57
- }));
58
- return completed;
59
- }
60
- catch (error) {
61
- if (error instanceof AgentRunFailedError || error instanceof AgentOutputParseError) {
62
- const upgraded = await deps.upgradeRoute(run, `direct path failed: ${error.message}`);
63
- return upgraded;
64
- }
65
- throw error;
66
- }
3
+ async execute(run, _requirement) {
4
+ return deps.upgradeRoute(run, "legacy direct execution lacks a verified TaskGraph and cannot satisfy the minimum control loop");
67
5
  },
68
6
  };
69
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"direct-runner.js","sourceRoot":"","sources":["../../src/controller/direct-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"direct-runner.js","sourceRoot":"","sources":["../../src/controller/direct-runner.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAA8B,EAAE,EAAE;IACnE,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,GAAQ,EAAE,YAAyB;YAC/C,OAAO,IAAI,CAAC,YAAY,CACtB,GAAG,EACH,gGAAgG,CACjG,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"reassessor.d.ts","sourceRoot":"","sources":["../../src/controller/reassessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,iBAAiB,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE5F,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;CACtD,CAAA;AAeD,eAAO,MAAM,sBAAsB,GAAI,OAAO,iBAAiB,KAAG,kBAwFjE,CAAA"}
1
+ {"version":3,"file":"reassessor.d.ts","sourceRoot":"","sources":["../../src/controller/reassessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,iBAAiB,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE5F,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;CACtD,CAAA;AAsBD,eAAO,MAAM,sBAAsB,GAAI,OAAO,iBAAiB,KAAG,kBAyFjE,CAAA"}
@@ -1,6 +1,8 @@
1
- const calculateDeviationRatio = (completedTask, assessment, totalTaskCount) => {
1
+ const calculateDeviationRatio = (run, completedTask, assessment, totalTaskCount) => {
2
2
  const estimatedPerTask = assessment.estimatedFileCount / totalTaskCount;
3
- const actualChangedPaths = completedTask.evidenceRefs.length;
3
+ const actualChangedPaths = new Set(run.agentResults.flatMap((result) => result.role === "worker" && result.taskId === completedTask.taskId && "changedPaths" in result
4
+ ? result.changedPaths
5
+ : [])).size;
4
6
  if (estimatedPerTask === 0) {
5
7
  return actualChangedPaths > 0 ? 10 : 0;
6
8
  }
@@ -16,7 +18,7 @@ export const reassessRemainingTasks = (input) => {
16
18
  if (remainingTasks.length === 0) {
17
19
  return { shouldReassess: false };
18
20
  }
19
- const deviationRatio = calculateDeviationRatio(completedTask, complexityAssessment, allTasks.length);
21
+ const deviationRatio = calculateDeviationRatio(run, completedTask, complexityAssessment, allTasks.length);
20
22
  const currentTier = run.resolvedTier;
21
23
  if (deviationRatio > 3.0 || completedTask.status === "failed") {
22
24
  const newTier = "complex";
@@ -50,7 +52,7 @@ export const reassessRemainingTasks = (input) => {
50
52
  if (downgradeCount === 0 && deviationRatio < 0.3) {
51
53
  const allCompletedTasks = allTasks.filter((task) => task.status === "completed");
52
54
  const allLowDeviation = allCompletedTasks.every((task) => {
53
- const ratio = calculateDeviationRatio(task, complexityAssessment, allTasks.length);
55
+ const ratio = calculateDeviationRatio(run, task, complexityAssessment, allTasks.length);
54
56
  return ratio < 0.3;
55
57
  });
56
58
  if (allLowDeviation) {
@@ -1 +1 @@
1
- {"version":3,"file":"reassessor.js","sourceRoot":"","sources":["../../src/controller/reassessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reassessor.js","sourceRoot":"","sources":["../../src/controller/reassessor.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
- import type { ComplexityAssessment, ComplexityTier, ExecutionRoute } from "../domain/index.js";
1
+ import type { ComplexityAssessment, ComplexityTier, ExecutionRoute, RoutingDecision, TaskGraph } from "../domain/index.js";
2
2
  export type RouteResolution = {
3
3
  readonly resolvedTier: ComplexityTier;
4
4
  readonly resolvedRoute: ExecutionRoute;
5
+ readonly routingDecision: RoutingDecision;
5
6
  };
6
- export declare const resolveRoute: (assessment: ComplexityAssessment) => RouteResolution;
7
+ export type RouteFacts = {
8
+ readonly taskGraph: TaskGraph;
9
+ readonly workspaceMode: "git" | "non-git";
10
+ };
11
+ export declare const resolveRoute: (assessment: ComplexityAssessment, facts?: RouteFacts) => RouteResolution;
7
12
  //# sourceMappingURL=route-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route-resolver.d.ts","sourceRoot":"","sources":["../../src/controller/route-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAE9F,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,YAAY,oBAAoB,KAAG,eA8B/D,CAAA"}
1
+ {"version":3,"file":"route-resolver.d.ts","sourceRoot":"","sources":["../../src/controller/route-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,cAAc,EAEd,eAAe,EAEf,SAAS,EACV,MAAM,oBAAoB,CAAA;AAG3B,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,KAAK,GAAG,SAAS,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,YAAY,oBAAoB,EAChC,QAAQ,UAAU,KACjB,eAgFF,CAAA"}
@@ -1,25 +1,87 @@
1
- export const resolveRoute = (assessment) => {
1
+ import { analyzeWorktreeEligibility } from "./worktree-eligibility.js";
2
+ export const resolveRoute = (assessment, facts) => {
2
3
  let tier = assessment.tier;
3
- let route = assessment.suggestedRoute;
4
+ let governance = assessment.suggestedRoute === "parallel" ? "full" : assessment.suggestedRoute;
5
+ let scheduling = "serial";
6
+ const reasons = ["resolved from Intake assessment"];
7
+ if (facts === undefined && governance === "direct") {
8
+ governance = "streamlined";
9
+ reasons.push("direct execution requires a verified TaskGraph");
10
+ }
4
11
  if (assessment.estimatedFileCount > 10) {
5
12
  tier = "complex";
6
- if (route === "direct" || route === "streamlined") {
7
- route = "full";
13
+ if (governance !== "full") {
14
+ governance = "full";
15
+ reasons.push("estimated file count exceeds 10");
8
16
  }
9
17
  }
10
18
  if (assessment.estimatedCrossModuleDeps > 3) {
11
19
  tier = "complex";
20
+ governance = "full";
21
+ reasons.push("estimated cross-module dependencies exceed 3");
12
22
  }
13
23
  if (assessment.confidence === "low") {
14
24
  tier = "complex";
15
- route = "full";
25
+ governance = "full";
26
+ reasons.push("assessment confidence is low");
16
27
  }
17
28
  if (assessment.estimatedFileCount <= 2 &&
18
29
  assessment.estimatedCrossModuleDeps === 0 &&
19
- assessment.confidence === "high") {
30
+ assessment.confidence === "high" &&
31
+ assessment.tier !== "complex") {
20
32
  tier = "trivial";
21
- route = "direct";
33
+ if (facts !== undefined && qualifiesForDirect(facts.taskGraph)) {
34
+ governance = "direct";
35
+ reasons.push("verified single-task graph qualifies for direct governance");
36
+ }
37
+ else if (facts === undefined) {
38
+ reasons.push("direct execution requires a verified TaskGraph");
39
+ }
22
40
  }
23
- return { resolvedTier: tier, resolvedRoute: route };
41
+ if (facts !== undefined) {
42
+ const repositories = new Set(facts.taskGraph.tasks.flatMap((task) => (task.repositoryId ? [task.repositoryId] : [])));
43
+ if (repositories.size > 1) {
44
+ tier = "complex";
45
+ governance = "full";
46
+ reasons.push("verified TaskGraph spans multiple repositories");
47
+ }
48
+ scheduling = resolveScheduling(facts);
49
+ reasons.push(scheduling === "parallel"
50
+ ? "verified TaskGraph is eligible for Worktree parallelism"
51
+ : "verified TaskGraph requires serial scheduling");
52
+ }
53
+ if (tier === "complex")
54
+ governance = "full";
55
+ if (tier === "standard" && governance === "direct")
56
+ governance = "streamlined";
57
+ const resolvedRoute = governance === "full" && scheduling === "parallel" ? "parallel" : governance;
58
+ return {
59
+ resolvedTier: tier,
60
+ resolvedRoute,
61
+ routingDecision: {
62
+ tier,
63
+ governance,
64
+ scheduling,
65
+ source: "intake",
66
+ reasons,
67
+ },
68
+ };
69
+ };
70
+ const qualifiesForDirect = (taskGraph) => {
71
+ const task = taskGraph.tasks[0];
72
+ return (taskGraph.tasks.length === 1 &&
73
+ task !== undefined &&
74
+ task.allowedPaths.length <= 2 &&
75
+ task.dependencies.length === 0 &&
76
+ task.verificationPlan.length > 0);
77
+ };
78
+ const resolveScheduling = (facts) => {
79
+ if (facts.workspaceMode !== "git" || facts.taskGraph.tasks.length < 2)
80
+ return "serial";
81
+ const eligibility = analyzeWorktreeEligibility({
82
+ candidates: facts.taskGraph.tasks,
83
+ completedTaskIds: new Set(),
84
+ });
85
+ return eligibility.kind === "parallel" ? "parallel" : "serial";
24
86
  };
25
87
  //# sourceMappingURL=route-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"route-resolver.js","sourceRoot":"","sources":["../../src/controller/route-resolver.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAgC,EAAmB,EAAE;IAChF,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;IAC1B,IAAI,KAAK,GAAG,UAAU,CAAC,cAAc,CAAA;IAErC,IAAI,UAAU,CAAC,kBAAkB,GAAG,EAAE,EAAE,CAAC;QACvC,IAAI,GAAG,SAAS,CAAA;QAChB,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YAClD,KAAK,GAAG,MAAM,CAAA;QAChB,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,wBAAwB,GAAG,CAAC,EAAE,CAAC;QAC5C,IAAI,GAAG,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QACpC,IAAI,GAAG,SAAS,CAAA;QAChB,KAAK,GAAG,MAAM,CAAA;IAChB,CAAC;IAED,IACE,UAAU,CAAC,kBAAkB,IAAI,CAAC;QAClC,UAAU,CAAC,wBAAwB,KAAK,CAAC;QACzC,UAAU,CAAC,UAAU,KAAK,MAAM,EAChC,CAAC;QACD,IAAI,GAAG,SAAS,CAAA;QAChB,KAAK,GAAG,QAAQ,CAAA;IAClB,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAA;AACrD,CAAC,CAAA"}
1
+ {"version":3,"file":"route-resolver.js","sourceRoot":"","sources":["../../src/controller/route-resolver.ts"],"names":[],"mappings":"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"}
@@ -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;AA8D/E,eAAO,MAAM,mBAAmB,GAAI,SAAS,0BAA0B,KAAG,aAq1BzE,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;AA8D/E,eAAO,MAAM,mBAAmB,GAAI,SAAS,0BAA0B,KAAG,aAw6BzE,CAAA"}
@@ -259,7 +259,7 @@ export const createRunController = (options) => {
259
259
  requirement,
260
260
  contextPackage: contextResult.contextPackage,
261
261
  });
262
- validateTaskGraph(taskGraph, requirement, run.runId);
262
+ validateTaskGraph(taskGraph, requirement, run.runId, run.resolvedTier);
263
263
  ensureExecutionCategoriesConfigured(taskGraph);
264
264
  const planReview = await requestPlanReview({
265
265
  run: planningRun,
@@ -330,37 +330,71 @@ export const createRunController = (options) => {
330
330
  }));
331
331
  return reflected;
332
332
  };
333
- const runTasksWithReflection = async (run) => recordReflection(await runTasks(run));
333
+ const runTasksWithReflection = async (run) => {
334
+ const assessment = run.complexityAssessment ?? {
335
+ tier: "complex",
336
+ rationale: "No Intake assessment was persisted.",
337
+ estimatedFileCount: Math.max(1, run.taskGraph.tasks.length),
338
+ estimatedCrossModuleDeps: 0,
339
+ suggestedRoute: "full",
340
+ confidence: "low",
341
+ };
342
+ const resolution = resolveRoute(assessment, {
343
+ taskGraph: run.taskGraph,
344
+ workspaceMode: run.workspace.git.mode,
345
+ });
346
+ const routed = parsePlannedRun({
347
+ ...run,
348
+ resolvedTier: resolution.resolvedTier,
349
+ resolvedRoute: resolution.resolvedRoute,
350
+ routingDecision: { ...resolution.routingDecision, source: "task-graph" },
351
+ });
352
+ await writer.persist(routed, writer.createEvent(run.runId, "run.routing.resolved", {
353
+ routingDecision: resolution.routingDecision,
354
+ }));
355
+ return recordReflection(await runTasks(routed));
356
+ };
334
357
  const upgradeRoute = async (run, reason) => {
335
- const currentRoute = run.resolvedRoute;
336
- let newRoute;
358
+ const currentGovernance = run.routingDecision?.governance ??
359
+ (run.resolvedRoute === "parallel" ? "full" : run.resolvedRoute);
360
+ const currentScheduling = run.routingDecision?.scheduling ?? (run.resolvedRoute === "parallel" ? "parallel" : "serial");
361
+ let newGovernance;
337
362
  let newTier;
338
- switch (currentRoute) {
363
+ switch (currentGovernance) {
339
364
  case "direct":
340
- newRoute = "streamlined";
365
+ newGovernance = "streamlined";
341
366
  newTier = run.resolvedTier === "trivial" ? "standard" : run.resolvedTier;
342
367
  break;
343
368
  case "streamlined":
344
- newRoute = "full";
369
+ newGovernance = "full";
345
370
  newTier = "complex";
346
371
  break;
347
372
  case "full":
348
- newRoute = "parallel";
373
+ newGovernance = "full";
349
374
  newTier = "complex";
350
375
  break;
351
- case "parallel":
352
- return run;
353
376
  default:
354
377
  return run;
355
378
  }
379
+ if (currentGovernance === "full") {
380
+ return run;
381
+ }
382
+ const newRoute = newGovernance;
356
383
  const upgraded = RunSchema.parse({
357
384
  ...run,
358
385
  resolvedRoute: newRoute,
359
386
  resolvedTier: newTier,
387
+ routingDecision: {
388
+ tier: newTier,
389
+ governance: newGovernance,
390
+ scheduling: currentScheduling,
391
+ source: "reassessment",
392
+ reasons: [reason],
393
+ },
360
394
  reflectionSummary: createReflectionSummary({ ...run, resolvedRoute: newRoute, resolvedTier: newTier }, reason),
361
395
  });
362
396
  await writer.persist(upgraded, writer.createEvent(run.runId, "run.route.upgraded", {
363
- previousRoute: currentRoute,
397
+ previousRoute: run.resolvedRoute,
364
398
  newRoute,
365
399
  previousTier: run.resolvedTier,
366
400
  newTier,
@@ -460,6 +494,25 @@ export const createRunController = (options) => {
460
494
  return blocked;
461
495
  };
462
496
  const continueRunWithWorkspace = async (current) => {
497
+ if (current.routingDecision?.source === "legacy") {
498
+ const migrated = RunSchema.parse({
499
+ ...current,
500
+ routingDecision: {
501
+ ...current.routingDecision,
502
+ source: "taskGraph" in current ? "task-graph" : "intake",
503
+ reasons: [...current.routingDecision.reasons, "legacy routing decision persisted"],
504
+ },
505
+ });
506
+ await writer.persist(migrated, writer.createEvent(current.runId, "run.routing.legacy_migrated", {
507
+ previousRoute: current.resolvedRoute,
508
+ routingDecision: {
509
+ ...current.routingDecision,
510
+ source: "taskGraph" in current ? "task-graph" : "intake",
511
+ reasons: [...current.routingDecision.reasons, "legacy routing decision persisted"],
512
+ },
513
+ }));
514
+ return continueRunWithWorkspace(migrated);
515
+ }
463
516
  const reconciliation = await runtime.reconcileOrphanSessions({
464
517
  runId: current.runId,
465
518
  actorId: "harness-recovery",
@@ -483,7 +536,8 @@ export const createRunController = (options) => {
483
536
  if (current.status === "created" ||
484
537
  current.status === "analyzing" ||
485
538
  current.status === "planning") {
486
- const route = current.resolvedRoute;
539
+ const route = current.routingDecision?.governance ??
540
+ (current.resolvedRoute === "parallel" ? "full" : current.resolvedRoute);
487
541
  if (route === "direct") {
488
542
  const directRunner = createDirectRunner({
489
543
  runtime,
@@ -501,13 +555,13 @@ export const createRunController = (options) => {
501
555
  ids: options.ids,
502
556
  loadRun: loadRunWithRetry,
503
557
  upgradeRoute,
504
- runTasks,
558
+ runTasks: runTasksWithReflection,
505
559
  });
506
- return await recordReflection(await streamlinedRunner.execute(current, current.requirement));
560
+ return await streamlinedRunner.execute(current, current.requirement);
507
561
  }
508
562
  const planning = await persistPlanningState(current);
509
563
  const planningArtifacts = await requestPlan(planning, planning.requirement);
510
- validateTaskGraph(planningArtifacts.taskGraph, planning.requirement, current.runId);
564
+ validateTaskGraph(planningArtifacts.taskGraph, planning.requirement, current.runId, current.resolvedTier);
511
565
  runtime.clearInterruption(current.runId);
512
566
  return await runTasksWithReflection(await persistExecutingState(parsePlannedRun({
513
567
  ...planning,
@@ -544,7 +598,17 @@ export const createRunController = (options) => {
544
598
  const complexityAssessment = input.complexityAssessment;
545
599
  const routeResolution = complexityAssessment
546
600
  ? resolveRoute(complexityAssessment)
547
- : { resolvedTier: "complex", resolvedRoute: "full" };
601
+ : {
602
+ resolvedTier: "complex",
603
+ resolvedRoute: "full",
604
+ routingDecision: {
605
+ tier: "complex",
606
+ governance: "full",
607
+ scheduling: "serial",
608
+ source: "intake",
609
+ reasons: ["missing Intake assessment; using conservative defaults"],
610
+ },
611
+ };
548
612
  const created = RunSchema.parse({
549
613
  schemaVersion: "1.0.0",
550
614
  runId: options.ids.createRunId(),
@@ -574,6 +638,7 @@ export const createRunController = (options) => {
574
638
  ...(complexityAssessment ? { complexityAssessment } : {}),
575
639
  resolvedTier: routeResolution.resolvedTier,
576
640
  resolvedRoute: routeResolution.resolvedRoute,
641
+ routingDecision: routeResolution.routingDecision,
577
642
  reflectionSummary: createReflectionSummary({
578
643
  requirement,
579
644
  failures: [],
@@ -589,6 +654,7 @@ export const createRunController = (options) => {
589
654
  complexityAssessment,
590
655
  resolvedTier: routeResolution.resolvedTier,
591
656
  resolvedRoute: routeResolution.resolvedRoute,
657
+ routingDecision: routeResolution.routingDecision,
592
658
  }
593
659
  : {}),
594
660
  }));