harness-engineering-agent 0.3.11 → 0.3.13

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 +8 -3
  2. package/dist/agent/harness-role-capability-directory-data.d.ts.map +1 -1
  3. package/dist/agent/harness-role-capability-directory-data.js +3 -3
  4. package/dist/agent/harness-role-capability-directory-data.js.map +1 -1
  5. package/dist/agent/harness-role-capability-directory.d.ts +1 -0
  6. package/dist/agent/harness-role-capability-directory.d.ts.map +1 -1
  7. package/dist/agent/harness-role-capability-directory.js +1 -0
  8. package/dist/agent/harness-role-capability-directory.js.map +1 -1
  9. package/dist/controller/agent-session-types.d.ts +17 -1
  10. package/dist/controller/agent-session-types.d.ts.map +1 -1
  11. package/dist/controller/agent-session-utils.d.ts +40 -3
  12. package/dist/controller/agent-session-utils.d.ts.map +1 -1
  13. package/dist/controller/agent-session-utils.js +67 -21
  14. package/dist/controller/agent-session-utils.js.map +1 -1
  15. package/dist/controller/agent-session.d.ts.map +1 -1
  16. package/dist/controller/agent-session.js +129 -10
  17. package/dist/controller/agent-session.js.map +1 -1
  18. package/dist/controller/context-budget.d.ts +71 -0
  19. package/dist/controller/context-budget.d.ts.map +1 -0
  20. package/dist/controller/context-budget.js +219 -0
  21. package/dist/controller/context-budget.js.map +1 -0
  22. package/dist/controller/context-builder.d.ts +27 -0
  23. package/dist/controller/context-builder.d.ts.map +1 -0
  24. package/dist/controller/context-builder.js +184 -0
  25. package/dist/controller/context-builder.js.map +1 -0
  26. package/dist/controller/context-validation.d.ts +46 -0
  27. package/dist/controller/context-validation.d.ts.map +1 -0
  28. package/dist/controller/context-validation.js +126 -0
  29. package/dist/controller/context-validation.js.map +1 -0
  30. package/dist/controller/direct-runner.d.ts +2 -0
  31. package/dist/controller/direct-runner.d.ts.map +1 -1
  32. package/dist/controller/direct-runner.js +20 -2
  33. package/dist/controller/direct-runner.js.map +1 -1
  34. package/dist/controller/index.d.ts +1 -0
  35. package/dist/controller/index.d.ts.map +1 -1
  36. package/dist/controller/index.js +1 -0
  37. package/dist/controller/index.js.map +1 -1
  38. package/dist/controller/run-acceptance.d.ts.map +1 -1
  39. package/dist/controller/run-acceptance.js +12 -0
  40. package/dist/controller/run-acceptance.js.map +1 -1
  41. package/dist/controller/run-controller.d.ts.map +1 -1
  42. package/dist/controller/run-controller.js +2 -0
  43. package/dist/controller/run-controller.js.map +1 -1
  44. package/dist/controller/streamlined-runner.d.ts +2 -0
  45. package/dist/controller/streamlined-runner.d.ts.map +1 -1
  46. package/dist/controller/streamlined-runner.js +31 -1
  47. package/dist/controller/streamlined-runner.js.map +1 -1
  48. package/dist/controller/task-agent-output.d.ts.map +1 -1
  49. package/dist/controller/task-agent-output.js +85 -0
  50. package/dist/controller/task-agent-output.js.map +1 -1
  51. package/dist/domain/clarification.d.ts +92 -0
  52. package/dist/domain/clarification.d.ts.map +1 -0
  53. package/dist/domain/clarification.js +80 -0
  54. package/dist/domain/clarification.js.map +1 -0
  55. package/dist/domain/context-snapshot.d.ts +140 -0
  56. package/dist/domain/context-snapshot.d.ts.map +1 -0
  57. package/dist/domain/context-snapshot.js +140 -0
  58. package/dist/domain/context-snapshot.js.map +1 -0
  59. package/dist/domain/index.d.ts +4 -0
  60. package/dist/domain/index.d.ts.map +1 -1
  61. package/dist/domain/index.js +2 -0
  62. package/dist/domain/index.js.map +1 -1
  63. package/dist/domain/report.d.ts +118 -0
  64. package/dist/domain/report.d.ts.map +1 -1
  65. package/dist/domain/run.d.ts +118 -0
  66. package/dist/domain/run.d.ts.map +1 -1
  67. package/dist/domain/run.js +2 -0
  68. package/dist/domain/run.js.map +1 -1
  69. package/dist/plugin/create-harness-plugin.d.ts.map +1 -1
  70. package/dist/plugin/create-harness-plugin.js +25 -13
  71. package/dist/plugin/create-harness-plugin.js.map +1 -1
  72. package/dist/plugin/harness-chat-hook.d.ts +9 -0
  73. package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
  74. package/dist/plugin/harness-chat-hook.js +40 -35
  75. package/dist/plugin/harness-chat-hook.js.map +1 -1
  76. package/dist/plugin/harness-coordinator.d.ts +5 -0
  77. package/dist/plugin/harness-coordinator.d.ts.map +1 -1
  78. package/dist/plugin/harness-coordinator.js +95 -4
  79. package/dist/plugin/harness-coordinator.js.map +1 -1
  80. package/dist/plugin/harness-escalate-tool.d.ts +13 -0
  81. package/dist/plugin/harness-escalate-tool.d.ts.map +1 -0
  82. package/dist/plugin/harness-escalate-tool.js +37 -0
  83. package/dist/plugin/harness-escalate-tool.js.map +1 -0
  84. package/dist/plugin/harness-plugin-runtime.d.ts +2 -14
  85. package/dist/plugin/harness-plugin-runtime.d.ts.map +1 -1
  86. package/dist/plugin/harness-plugin-runtime.js +7 -1
  87. package/dist/plugin/harness-plugin-runtime.js.map +1 -1
  88. package/dist/session/contracts.d.ts +80 -8
  89. package/dist/session/contracts.d.ts.map +1 -1
  90. package/dist/session/fake-session-adapter.d.ts.map +1 -1
  91. package/dist/session/fake-session-adapter.js +14 -0
  92. package/dist/session/fake-session-adapter.js.map +1 -1
  93. package/dist/session/opencode-session-adapter.d.ts.map +1 -1
  94. package/dist/session/opencode-session-adapter.js +16 -0
  95. package/dist/session/opencode-session-adapter.js.map +1 -1
  96. package/dist/session/opencode-session-prompts.d.ts.map +1 -1
  97. package/dist/session/opencode-session-prompts.js +3 -0
  98. package/dist/session/opencode-session-prompts.js.map +1 -1
  99. package/dist/store/context-snapshot-store.d.ts +17 -0
  100. package/dist/store/context-snapshot-store.d.ts.map +1 -0
  101. package/dist/store/context-snapshot-store.js +96 -0
  102. package/dist/store/context-snapshot-store.js.map +1 -0
  103. package/dist/store/filesystem-run-store.d.ts +3 -0
  104. package/dist/store/filesystem-run-store.d.ts.map +1 -1
  105. package/dist/store/filesystem-run-store.js +13 -1
  106. package/dist/store/filesystem-run-store.js.map +1 -1
  107. package/dist/store/index.d.ts +2 -0
  108. package/dist/store/index.d.ts.map +1 -1
  109. package/dist/store/index.js +2 -0
  110. package/dist/store/index.js.map +1 -1
  111. package/dist/store/run-event.d.ts +118 -0
  112. package/dist/store/run-event.d.ts.map +1 -1
  113. package/dist/store/session-index.d.ts +51 -0
  114. package/dist/store/session-index.d.ts.map +1 -0
  115. package/dist/store/session-index.js +163 -0
  116. package/dist/store/session-index.js.map +1 -0
  117. package/package.json +1 -1
@@ -0,0 +1,184 @@
1
+ import { computeContextDigest, } from "../domain/context-snapshot.js";
2
+ // Re-export the domain helpers for convenience
3
+ export { computeContextDigest, toContextSummary } from "../domain/context-snapshot.js";
4
+ // ─── Context builder ───────────────────────────────────────────────────────
5
+ /**
6
+ * Build a versioned ContextSnapshot from Run, Task, Evidence, and governance state.
7
+ */
8
+ export const buildContextSnapshot = (input) => {
9
+ const { ids, run, task, phase, parentContextId, parentVersion, attempt = 0, evidence = [], unresolvedIssues = [], } = input;
10
+ const contextId = ids.createEventId(`context-${run.runId}-${phase}`);
11
+ const version = parentVersion !== undefined ? parentVersion + 1 : 1;
12
+ const createdAt = new Date().toISOString();
13
+ const facts = buildContextFacts({
14
+ run,
15
+ task,
16
+ governance: run.governance,
17
+ evidence,
18
+ unresolvedIssues,
19
+ });
20
+ const evidenceDigests = buildEvidenceDigests(evidence);
21
+ const worktree = buildWorktree(run);
22
+ const allowedPaths = task?.allowedPaths ?? [];
23
+ const acceptanceCriterionIds = task?.acceptanceCriterionIds ?? run.requirement.acceptanceCriteria.map((c) => c.criterionId);
24
+ const snapshot = {
25
+ schemaVersion: "1.0.0",
26
+ contextId,
27
+ version,
28
+ runId: run.runId,
29
+ taskId: task?.taskId,
30
+ attempt,
31
+ phase,
32
+ goal: run.requirement.summary,
33
+ scope: task?.summary ?? "full",
34
+ facts,
35
+ evidenceDigests,
36
+ worktree,
37
+ allowedPaths,
38
+ acceptanceCriterionIds,
39
+ unresolvedIssues,
40
+ sourceEvents: [],
41
+ parentContextId,
42
+ parentVersion,
43
+ createdAt,
44
+ contentDigest: "",
45
+ };
46
+ const digest = computeContextDigest(snapshot);
47
+ return { ...snapshot, contentDigest: digest };
48
+ };
49
+ // ─── Fact builder ──────────────────────────────────────────────────────────
50
+ const buildContextFacts = (input) => {
51
+ const facts = [];
52
+ // Requirement facts
53
+ facts.push({
54
+ factId: `fact-requirement-${input.run.requirement.requirementId}`,
55
+ kind: "requirement",
56
+ label: "Requirement",
57
+ summary: input.run.requirement.summary,
58
+ priority: 100,
59
+ });
60
+ // Acceptance criteria as individual facts
61
+ for (const criterion of input.run.requirement.acceptanceCriteria) {
62
+ facts.push({
63
+ factId: `fact-acceptance-${criterion.criterionId}`,
64
+ kind: "requirement",
65
+ label: "Acceptance Criterion",
66
+ summary: criterion.text,
67
+ priority: 95,
68
+ });
69
+ }
70
+ // Task-specific facts
71
+ if (input.task !== undefined) {
72
+ facts.push({
73
+ factId: `fact-task-${input.task.taskId}`,
74
+ kind: "constraint",
75
+ label: "Task Summary",
76
+ summary: input.task.summary,
77
+ priority: 90,
78
+ });
79
+ for (const path of input.task.allowedPaths) {
80
+ facts.push({
81
+ factId: `fact-path-${input.task.taskId}-${path.replace(/[^a-z0-9-]/g, "-")}`,
82
+ kind: "constraint",
83
+ label: "Allowed Path",
84
+ summary: path,
85
+ priority: 80,
86
+ });
87
+ }
88
+ const retryBudget = input.task.retryBudget;
89
+ facts.push({
90
+ factId: `fact-retry-${input.task.taskId}`,
91
+ kind: "constraint",
92
+ label: "Retry Budget",
93
+ summary: `Max ${retryBudget.maxAttempts} attempts, ${retryBudget.maxRepairAttempts} repair attempts`,
94
+ priority: 70,
95
+ });
96
+ }
97
+ // Governance facts
98
+ if (input.governance.blockingQuestionId !== null) {
99
+ facts.push({
100
+ factId: `fact-governance-blocking-${input.governance.blockingQuestionId}`,
101
+ kind: "governance",
102
+ label: "Blocking Question",
103
+ summary: `Run is blocked on question ${input.governance.blockingQuestionId}`,
104
+ priority: 100,
105
+ });
106
+ }
107
+ if (input.governance.paused !== null) {
108
+ facts.push({
109
+ factId: `fact-governance-paused`,
110
+ kind: "governance",
111
+ label: "Paused",
112
+ summary: `Run paused: ${input.governance.paused.reason}`,
113
+ priority: 100,
114
+ });
115
+ }
116
+ for (const answer of input.governance.answers) {
117
+ facts.push({
118
+ factId: `fact-governance-answer-${answer.answerId}`,
119
+ kind: "governance",
120
+ label: "Answer",
121
+ summary: answer.answer,
122
+ priority: 85,
123
+ });
124
+ }
125
+ // Evidence facts
126
+ for (const ev of input.evidence) {
127
+ facts.push({
128
+ factId: `fact-evidence-${ev.evidenceId}`,
129
+ kind: "evidence",
130
+ label: `Evidence (${ev.kind})`,
131
+ summary: ev.summary,
132
+ priority: 60,
133
+ sourceRef: ev.evidenceId,
134
+ });
135
+ }
136
+ // Unresolved issues
137
+ for (let index = 0; index < input.unresolvedIssues.length; index++) {
138
+ const issue = input.unresolvedIssues[index];
139
+ facts.push({
140
+ factId: `fact-unresolved-${index}`,
141
+ kind: "unresolved_issue",
142
+ label: "Unresolved Issue",
143
+ summary: issue,
144
+ priority: 100,
145
+ });
146
+ }
147
+ return facts;
148
+ };
149
+ // ─── Evidence digest builder ───────────────────────────────────────────────
150
+ const buildEvidenceDigests = (evidence) => {
151
+ return evidence.map((ev) => ({
152
+ refId: ev.evidenceId,
153
+ summaryDigest: ev.summaryDigest,
154
+ sourceRole: mapEvidenceKindToRole(ev.kind),
155
+ sourceTaskId: ev.taskId,
156
+ createdAt: new Date().toISOString(),
157
+ freshness: "fresh",
158
+ }));
159
+ };
160
+ const mapEvidenceKindToRole = (_kind) => {
161
+ // FIXME: Map evidence kind to agent role more precisely when
162
+ // evidence tracking includes source role metadata.
163
+ return "worker";
164
+ };
165
+ // ─── Worktree builder ──────────────────────────────────────────────────────
166
+ const buildWorktree = (run) => {
167
+ const workspace = run.workspace;
168
+ if (workspace === undefined)
169
+ return undefined;
170
+ const executionRoot = workspace.executionRoot;
171
+ if (executionRoot === undefined)
172
+ return undefined;
173
+ const gitState = workspace.git;
174
+ const branch = gitState.mode === "git" && gitState.headRef !== null ? gitState.headRef : undefined;
175
+ const commit = gitState.mode === "git" && gitState.headRef !== null ? gitState.headRef : undefined;
176
+ const dirty = gitState.mode === "git" ? gitState.dirtyAllowed : false;
177
+ return {
178
+ executionRoot,
179
+ branch,
180
+ commit,
181
+ dirty,
182
+ };
183
+ };
184
+ //# sourceMappingURL=context-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/controller/context-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { ContextEvidenceDigest, ContextSnapshot } from "../domain/context-snapshot.js";
2
+ import type { HarnessSessionRole } from "../session/contracts.js";
3
+ import { type ContextLayer } from "./context-budget.js";
4
+ export type ContextValidationResult = {
5
+ readonly valid: boolean;
6
+ readonly errors: readonly string[];
7
+ readonly warnings: readonly string[];
8
+ };
9
+ export type ConsistencyValidationResult = {
10
+ readonly valid: boolean;
11
+ readonly errors: readonly string[];
12
+ readonly warnings: readonly string[];
13
+ };
14
+ /**
15
+ * Validate that a role is only reading context layers it is authorized for.
16
+ *
17
+ * Returns validation errors for each unauthorized layer access.
18
+ */
19
+ export declare const validateRoleContextLayers: (role: HarnessSessionRole, requestedLayers: readonly ContextLayer[]) => ContextValidationResult;
20
+ /**
21
+ * Validate that a worker's allowedPaths, workingDirectory, and worktree
22
+ * are consistent with the ContextSnapshot it operates from.
23
+ */
24
+ export declare const validateWorkerContextConsistency: (input: {
25
+ readonly snapshot: ContextSnapshot;
26
+ readonly allowedPaths: readonly string[];
27
+ readonly workingDirectory: string;
28
+ readonly worktree?: string | undefined;
29
+ readonly role: HarnessSessionRole;
30
+ }) => ConsistencyValidationResult;
31
+ /**
32
+ * Validate that evidence digests are fresh enough for the current task.
33
+ * Expired or stale evidence generates warnings.
34
+ */
35
+ export declare const validateEvidenceFreshness: (digests: readonly ContextEvidenceDigest[], maxAgeMs?: number) => ContextValidationResult;
36
+ /**
37
+ * Validate that evidence digests from other tasks are not being misused
38
+ * in the current task context.
39
+ */
40
+ export declare const validateCrossTaskEvidence: (digests: readonly ContextEvidenceDigest[], currentTaskId: string) => ContextValidationResult;
41
+ /**
42
+ * Validate that the scope and goal in a context snapshot are consistent
43
+ * with the task being executed.
44
+ */
45
+ export declare const validateScopeConsistency: (snapshot: ContextSnapshot, taskSummary?: string) => ContextValidationResult;
46
+ //# sourceMappingURL=context-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-validation.d.ts","sourceRoot":"","sources":["../../src/controller/context-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,qBAAqB,CAAA;AAI5E,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,kBAAkB,EACxB,iBAAiB,SAAS,YAAY,EAAE,KACvC,uBAkBF,CAAA;AAID;;;GAGG;AACH,eAAO,MAAM,gCAAgC,GAAI,OAAO;IACtD,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAClC,KAAG,2BA0CH,CAAA;AAID;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,SAAS,SAAS,qBAAqB,EAAE,EACzC,WAAW,MAAM,KAChB,uBAwBF,CAAA;AAID;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,SAAS,SAAS,qBAAqB,EAAE,EACzC,eAAe,MAAM,KACpB,uBAaF,CAAA;AAID;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,UAAU,eAAe,EACzB,cAAc,MAAM,KACnB,uBAqBF,CAAA"}
@@ -0,0 +1,126 @@
1
+ import { DEFAULT_ROLE_LAYERS } from "./context-budget.js";
2
+ // ─── Role context layer validation ──────────────────────────────────────────
3
+ /**
4
+ * Validate that a role is only reading context layers it is authorized for.
5
+ *
6
+ * Returns validation errors for each unauthorized layer access.
7
+ */
8
+ export const validateRoleContextLayers = (role, requestedLayers) => {
9
+ const errors = [];
10
+ const warnings = [];
11
+ const allowedLayers = DEFAULT_ROLE_LAYERS[role];
12
+ if (allowedLayers === undefined) {
13
+ errors.push(`Unknown role: ${role}`);
14
+ return { valid: false, errors, warnings };
15
+ }
16
+ const allowedSet = new Set(allowedLayers);
17
+ for (const layer of requestedLayers) {
18
+ if (!allowedSet.has(layer)) {
19
+ errors.push(`Role "${role}" is not authorized to access context layer "${layer}"`);
20
+ }
21
+ }
22
+ return { valid: errors.length === 0, errors, warnings };
23
+ };
24
+ // ─── Worker consistency validation ──────────────────────────────────────────
25
+ /**
26
+ * Validate that a worker's allowedPaths, workingDirectory, and worktree
27
+ * are consistent with the ContextSnapshot it operates from.
28
+ */
29
+ export const validateWorkerContextConsistency = (input) => {
30
+ const errors = [];
31
+ const warnings = [];
32
+ // Only enforce strict consistency for worker role
33
+ if (input.role !== "worker") {
34
+ return { valid: true, errors, warnings };
35
+ }
36
+ // 1. Validate allowedPaths consistency
37
+ if (input.snapshot.allowedPaths.length > 0) {
38
+ const snapshotPaths = new Set(input.snapshot.allowedPaths);
39
+ // Worker's allowedPaths should be a subset or equal to snapshot's allowedPaths
40
+ for (const workerPath of input.allowedPaths) {
41
+ if (!snapshotPaths.has(workerPath)) {
42
+ errors.push(`Worker allowedPath "${workerPath}" is not in the context snapshot allowedPaths`);
43
+ }
44
+ }
45
+ }
46
+ // 2. Validate worktree consistency
47
+ if (input.worktree !== undefined && input.snapshot.worktree !== undefined) {
48
+ const snapshotWorktree = input.snapshot.worktree;
49
+ // Worktree executionRoot should be consistent
50
+ if (snapshotWorktree.executionRoot &&
51
+ input.workingDirectory !== snapshotWorktree.executionRoot) {
52
+ warnings.push(`Worker workingDirectory "${input.workingDirectory}" differs from snapshot worktree executionRoot "${snapshotWorktree.executionRoot}"`);
53
+ }
54
+ }
55
+ // 3. Validate that working directory is not empty
56
+ if (input.workingDirectory.trim().length === 0) {
57
+ errors.push("Worker workingDirectory must not be empty");
58
+ }
59
+ return { valid: errors.length === 0, errors, warnings };
60
+ };
61
+ // ─── Evidence freshness validation ──────────────────────────────────────────
62
+ /**
63
+ * Validate that evidence digests are fresh enough for the current task.
64
+ * Expired or stale evidence generates warnings.
65
+ */
66
+ export const validateEvidenceFreshness = (digests, maxAgeMs) => {
67
+ const errors = [];
68
+ const warnings = [];
69
+ const now = Date.now();
70
+ for (const digest of digests) {
71
+ if (digest.freshness === "expired") {
72
+ errors.push(`Evidence ${digest.refId} has expired and cannot be used`);
73
+ }
74
+ else if (digest.freshness === "stale") {
75
+ warnings.push(`Evidence ${digest.refId} is stale and may be outdated`);
76
+ }
77
+ // Check age if maxAgeMs is specified
78
+ if (maxAgeMs !== undefined) {
79
+ const createdAt = new Date(digest.createdAt).getTime();
80
+ if (Number.isNaN(createdAt)) {
81
+ warnings.push(`Evidence ${digest.refId} has invalid creation timestamp`);
82
+ }
83
+ else if (now - createdAt > maxAgeMs) {
84
+ warnings.push(`Evidence ${digest.refId} exceeds maximum age of ${maxAgeMs}ms`);
85
+ }
86
+ }
87
+ }
88
+ return { valid: errors.length === 0, errors, warnings };
89
+ };
90
+ // ─── Cross-task evidence reference validation ───────────────────────────────
91
+ /**
92
+ * Validate that evidence digests from other tasks are not being misused
93
+ * in the current task context.
94
+ */
95
+ export const validateCrossTaskEvidence = (digests, currentTaskId) => {
96
+ const errors = [];
97
+ const warnings = [];
98
+ for (const digest of digests) {
99
+ if (digest.sourceTaskId !== undefined && digest.sourceTaskId !== currentTaskId) {
100
+ warnings.push(`Evidence ${digest.refId} from task ${digest.sourceTaskId} is being referenced in task ${currentTaskId}. Cross-task evidence requires explicit authorization.`);
101
+ }
102
+ }
103
+ return { valid: errors.length === 0, errors, warnings };
104
+ };
105
+ // ─── Scope consistency validation ───────────────────────────────────────────
106
+ /**
107
+ * Validate that the scope and goal in a context snapshot are consistent
108
+ * with the task being executed.
109
+ */
110
+ export const validateScopeConsistency = (snapshot, taskSummary) => {
111
+ const errors = [];
112
+ const warnings = [];
113
+ if (snapshot.scope.length === 0) {
114
+ errors.push("Context snapshot scope must not be empty");
115
+ }
116
+ if (snapshot.goal.length === 0) {
117
+ errors.push("Context snapshot goal must not be empty");
118
+ }
119
+ if (taskSummary !== undefined && taskSummary.length > 0) {
120
+ if (!snapshot.scope.includes(taskSummary) && !snapshot.goal.includes(taskSummary)) {
121
+ warnings.push(`Task summary "${taskSummary}" does not appear to relate to snapshot scope/goal`);
122
+ }
123
+ }
124
+ return { valid: errors.length === 0, errors, warnings };
125
+ };
126
+ //# sourceMappingURL=context-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-validation.js","sourceRoot":"","sources":["../../src/controller/context-validation.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import type { Requirement, Run } from "../domain/index.js";
2
2
  import type { AgentSessionRuntime } from "./agent-session-types.js";
3
+ import type { ControllerIdSource } from "./contracts.js";
3
4
  import type { RunPersistence } from "./run-persistence.js";
4
5
  export type DirectRunnerDependencies = {
5
6
  readonly runtime: AgentSessionRuntime;
6
7
  readonly writer: RunPersistence;
8
+ readonly ids: ControllerIdSource;
7
9
  readonly loadRun: (runId: Run["runId"]) => Promise<Run>;
8
10
  readonly upgradeRoute: (run: Run, reason: string) => Promise<Run>;
9
11
  };
@@ -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,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,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;CAwDlE,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;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,13 +1,27 @@
1
1
  import { HARNESS_SESSION_ROLE } from "../session/index.js";
2
+ import { buildContextSnapshot } from "./context-builder.js";
2
3
  import { AgentOutputParseError, AgentRunFailedError } from "./errors.js";
3
4
  import { withStatus } from "./run-state.js";
4
5
  export const createDirectRunner = (deps) => {
5
6
  return {
6
7
  async execute(run, requirement) {
7
- const executing = withStatus(run, "executing");
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
+ };
8
20
  await deps.writer.persist(executing, deps.writer.createEvent(run.runId, "run.executing.direct", {
9
21
  route: "direct",
10
22
  status: "executing",
23
+ contextId: snapshot.contextId,
24
+ contextDigest: snapshot.contentDigest,
11
25
  }));
12
26
  const outputText = await deps.runtime.sendAgent({
13
27
  runId: run.runId,
@@ -26,6 +40,10 @@ export const createDirectRunner = (deps) => {
26
40
  requiredFields: ["schemaVersion", "role", "status", "summary"],
27
41
  },
28
42
  messageLabel: `direct-worker-${run.runId}`,
43
+ contextId: snapshot.contextId,
44
+ contextVersion: snapshot.version,
45
+ contextDigest: snapshot.contentDigest,
46
+ phase: "executing",
29
47
  });
30
48
  try {
31
49
  const output = JSON.parse(outputText);
@@ -33,7 +51,7 @@ export const createDirectRunner = (deps) => {
33
51
  const upgraded = await deps.upgradeRoute(run, `direct path failed: ${output.summary ?? "worker reported failure"}`);
34
52
  return upgraded;
35
53
  }
36
- const completed = withStatus(run, "completed");
54
+ const completed = { ...withStatus(run, "completed"), contextSnapshot: snapshot };
37
55
  await deps.writer.persist(completed, deps.writer.createEvent(run.runId, "run.completed.direct", {
38
56
  summary: output.summary,
39
57
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"direct-runner.js","sourceRoot":"","sources":["../../src/controller/direct-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAS3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAA8B,EAAE,EAAE;IACnE,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,GAAQ,EAAE,WAAwB;YAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;YAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACvB,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,EAAE;gBACzD,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,WAAW;aACpB,CAAC,CACH,CAAA;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC9C,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,IAAI,EAAE,oBAAoB,CAAC,MAAM;gBACjC,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;gBACxD,WAAW,EAAE;oBACX,yBAAyB;oBACzB,0BAA0B;oBAC1B,WAAW;iBACZ;gBACD,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE;oBACd,aAAa,EAAE,OAAO;oBACtB,IAAI,EAAE,cAAc;oBACpB,cAAc,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;iBAC/D;gBACD,YAAY,EAAE,iBAAiB,GAAG,CAAC,KAAK,EAAE;aAC3C,CAAC,CAAA;YAEF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;gBACrC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CACtC,GAAG,EACH,uBAAuB,MAAM,CAAC,OAAO,IAAI,yBAAyB,EAAE,CACrE,CAAA;oBACD,OAAO,QAAQ,CAAA;gBACjB,CAAC;gBAED,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;gBAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACvB,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,EAAE;oBACzD,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CACH,CAAA;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,mBAAmB,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;oBACnF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,uBAAuB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;oBACrF,OAAO,QAAQ,CAAA;gBACjB,CAAC;gBACD,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"direct-runner.js","sourceRoot":"","sources":["../../src/controller/direct-runner.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export { createGitWorkspaceAdapter, createGitWorktreeAdapter } from "../workspac
3
3
  export { createAgentSessionRuntime } from "./agent-session.js";
4
4
  export type { AbandonSessionInput, AgentSessionRuntime, RebindSessionInput, SendAgentInput, } from "./agent-session-types.js";
5
5
  export type { OrphanSession } from "./agent-session-utils.js";
6
+ export { type ConsistencyValidationResult, type ContextValidationResult, validateCrossTaskEvidence, validateEvidenceFreshness, validateRoleContextLayers, validateScopeConsistency, validateWorkerContextConsistency, } from "./context-validation.js";
6
7
  export type { AnswerRunInput, ControllerClock, ControllerIdSource, CreateRunControllerOptions, PauseRunInput, RunBudgetKind, RunController, WaiveRunInput, } from "./contracts.js";
7
8
  export { AgentOutputParseError, AgentRunFailedError, GraphValidationError } from "./errors.js";
8
9
  export { createEvidence } from "./evidence-factory.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,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,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,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,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,5 +1,6 @@
1
1
  export { createGitWorkspaceAdapter, createGitWorktreeAdapter } from "../workspace/index.js";
2
2
  export { createAgentSessionRuntime } from "./agent-session.js";
3
+ export { validateCrossTaskEvidence, validateEvidenceFreshness, validateRoleContextLayers, validateScopeConsistency, validateWorkerContextConsistency, } from "./context-validation.js";
3
4
  export { AgentOutputParseError, AgentRunFailedError, GraphValidationError } from "./errors.js";
4
5
  export { createEvidence } from "./evidence-factory.js";
5
6
  export { orderTasks, validateTaskGraph } from "./graph-validator.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;AAkB9D,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;AAK/E,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,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;AAK/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAOtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-acceptance.d.ts","sourceRoot":"","sources":["../../src/controller/run-acceptance.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,aAAa,EAGnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAGhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,KAAK,0BAA0B,GAAG;IAChC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IACrC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACzB,CAAA;AAmGD,eAAO,MAAM,qBAAqB,GAChC,OAAO,0BAA0B,KAChC,OAAO,CAAC;IACT,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;CAC1D,CA8HA,CAAA"}
1
+ {"version":3,"file":"run-acceptance.d.ts","sourceRoot":"","sources":["../../src/controller/run-acceptance.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,aAAa,EAGnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAGhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,KAAK,0BAA0B,GAAG;IAChC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IACrC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACzB,CAAA;AAmGD,eAAO,MAAM,qBAAqB,GAChC,OAAO,0BAA0B,KAChC,OAAO,CAAC;IACT,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;CAC1D,CAyIA,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { AgentResultSchema, RunAcceptanceSchema, } from "../domain/index.js";
2
2
  import { HARNESS_SESSION_ROLE } from "../session/index.js";
3
+ import { buildContextSnapshot } from "./context-builder.js";
3
4
  import { AgentOutputParseError, AgentRunFailedError } from "./errors.js";
4
5
  import { createAcceptanceFailure, createContextGapFailure } from "./failure-factory.js";
5
6
  const isBlockingFailure = (run, failure) => {
@@ -94,6 +95,13 @@ export const finalizeRunAcceptance = async (input) => {
94
95
  };
95
96
  }
96
97
  try {
98
+ const snapshot = buildContextSnapshot({
99
+ ids: input.options.ids,
100
+ run: input.run,
101
+ phase: "acceptance",
102
+ attempt: 0,
103
+ evidence: input.run.evidence,
104
+ });
97
105
  const outputText = await input.runtime.sendAgent({
98
106
  runId: input.run.runId,
99
107
  role: HARNESS_SESSION_ROLE.acceptance,
@@ -130,6 +138,10 @@ export const finalizeRunAcceptance = async (input) => {
130
138
  },
131
139
  systemPrompt: "你是 Yinglong。只输出最终 RunAcceptance JSON,并基于完整 criterion traceability matrix、Failures 与 Waivers 做严格裁决。",
132
140
  messageLabel: `run-acceptance-${input.run.runId}`,
141
+ contextId: snapshot.contextId,
142
+ contextVersion: snapshot.version,
143
+ contextDigest: snapshot.contentDigest,
144
+ phase: "acceptance",
133
145
  });
134
146
  let runAcceptance;
135
147
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"run-acceptance.js","sourceRoot":"","sources":["../../src/controller/run-acceptance.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAGjB,mBAAmB,GAEpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAG1D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AASvF,MAAM,iBAAiB,GAAG,CAAC,GAAe,EAAE,OAAgB,EAAW,EAAE;IACvE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACzF,OAAO,OAAO,CAAC,QAAQ,KAAK,aAAa,IAAI,IAAI,EAAE,MAAM,KAAK,WAAW,CAAA;AAC3E,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAAC,GAAe,EAAkB,EAAE;IAClE,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACrE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,mDAAmD,CAAC,CAAA;IAC1F,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,aAA4B,EAAwB,EAAE;IAC/E,QAAQ,aAAa,CAAC,MAAM,EAAE,CAAC;QAC7B,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,WAAW,CAAA;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAA;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAA;QAClB;YACE,OAAO,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,KAAsB,EAAW,EAAE,CAC5D,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAA;AAEpD,MAAM,0BAA0B,GAAG,CAAC,GAAe,EAAW,EAAE,CAC9D,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,KAAK,aAAa,CAAC;IACrF,CAAC,CAAC,2BAA2B,CAAC,GAAG,CAAC;QAChC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,aAAa,CAAC,CAC1E,CAAC,CAAA;AAEN,MAAM,2BAA2B,GAAG,CAAC,GAAe,EAAW,EAAE,CAC/D,IAAI,GAAG,CACL,GAAG,CAAC,SAAS,CAAC,KAAK;KAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC;KAClF,MAAM,CAAC,CAAC,YAAY,EAA0B,EAAE,CAAC,YAAY,KAAK,SAAS,CAAC,CAChF,CAAC,IAAI,GAAG,CAAC,CAAA;AAEZ,MAAM,uBAAuB,GAAG,CAAC,GAAe,EAAE,OAAe,EAAiB,EAAE,CAClF,mBAAmB,CAAC,KAAK,CAAC;IACxB,aAAa,EAAE,OAAO;IACtB,YAAY,EAAE,kBAAkB,GAAG,CAAC,KAAK,EAAE;IAC3C,KAAK,EAAE,GAAG,CAAC,KAAK;IAChB,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;IAC7E,MAAM,EAAE,SAAS;IACjB,OAAO;IACP,kBAAkB,EAAE,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK;aAChC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;aAC7E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7B,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CACpD,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAC9D,CAAA;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5D,CAAA;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QACnF,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,aAAa;YAC5C,MAAM,EAAE,SAAS;YACjB,OAAO;YACP,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3D,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YACpD,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;YACxD,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;YAClE,OAAO;SACR,CAAA;IACH,CAAC,CAAC;IACF,2CAA2C,EAAE,KAAK;CACnD,CAAC,CAAA;AAEJ,MAAM,2BAA2B,GAAG,CAAC,KAIpC,EAAsC,EAAE,CACvC,iBAAiB,CAAC,KAAK,CAAC;IACtB,aAAa,EAAE,OAAO;IACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACpF,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK;IACtB,MAAM,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1C,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IACzF,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO;IACpC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC/F,YAAY,EAAE,EAAE;CACjB,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,KAAiC,EAMhC,EAAE;IACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,aAAa,EAAE,uBAAuB,CACpC,KAAK,CAAC,GAAG,EACT,2DAA2D,CAC5D;YACD,MAAM,EAAE,SAAS;SAClB,CAAA;IACH,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,aAAa,EAAE,uBAAuB,CACpC,KAAK,CAAC,GAAG,EACT,mEAAmE,CACpE;YACD,MAAM,EAAE,SAAS;SAClB,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QAChF,OAAO;YACL,aAAa,EAAE,uBAAuB,CACpC,KAAK,CAAC,GAAG,EACT,gEAAgE,CACjE;YACD,MAAM,EAAE,QAAQ;SACjB,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAC/C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK;YACtB,IAAI,EAAE,oBAAoB,CAAC,UAAU;YACrC,KAAK,EAAE,UAAU,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE;YAC9C,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW;gBAClC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS;gBAC9B,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW;gBAClC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ;gBAC5B,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ;gBAC5B,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO;aACtC,CAAC;YACF,WAAW,EAAE;gBACX,2BAA2B;gBAC3B,qCAAqC;gBACrC,8BAA8B;aAC/B;YACD,QAAQ,EAAE;gBACR,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACvC,KAAK,EAAE,QAAQ,CAAC,UAAU;oBAC1B,IAAI,EAAE,UAAmB;oBACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;iBAC1B,CAAC,CAAC;gBACH,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACxC,KAAK,EAAE,MAAM,CAAC,QAAQ;oBACtB,IAAI,EAAE,UAAmB;oBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CAAC;aACJ;YACD,cAAc,EAAE;gBACd,aAAa,EAAE,OAAO;gBACtB,IAAI,EAAE,eAAe;gBACrB,cAAc,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,oBAAoB,CAAC;aAC5D;YACD,YAAY,EACV,oGAAoG;YACtG,YAAY,EAAE,kBAAkB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE;SAClD,CAAC,CAAA;QACF,IAAI,aAA4B,CAAA;QAChC,IAAI,CAAC;YACH,aAAa,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,qBAAqB,CAC7B,YAAY,EACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,EACxE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CACtD,CAAA;QACH,CAAC;QACD,OAAO;YACL,aAAa;YACb,MAAM,EAAE,iBAAiB,CAAC,aAAa,CAAC;YACxC,WAAW,EAAE,2BAA2B,CAAC;gBACvC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,aAAa;aACd,CAAC;SACH,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,mBAAmB,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YACnF,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAA;YACpD,OAAO;gBACL,aAAa,EAAE,uBAAuB,CACpC,KAAK,CAAC,GAAG,EACT,mEAAmE,CACpE;gBACD,MAAM,EAAE,SAAS;gBACjB,OAAO,EACL,UAAU,KAAK,SAAS;oBACtB,CAAC,CAAC,uBAAuB,CAAC;wBACtB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,kBAAkB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;wBACjF,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK;wBACtB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS;4BACtC,CAAC,CAAC,EAAE;4BACJ,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;wBAC7C,MAAM,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC;wBAC1C,kBAAkB,EAAE,EAAE;wBACtB,OAAO,EAAE,0DAA0D;wBACnE,MAAM,EAAE,KAAK,CAAC,OAAO;wBACrB,YAAY,EAAE,4DAA4D;wBAC1E,cAAc,EAAE,CAAC,gBAAgB,CAAC;qBACnC,CAAC;oBACJ,CAAC,CAAC,uBAAuB,CAAC;wBACtB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,kBAAkB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;wBACjF,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK;wBACtB,MAAM,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC;wBAC1C,iBAAiB,EAAE,UAAU;wBAC7B,OAAO,EAAE,0DAA0D;wBACnE,MAAM,EAAE,KAAK,CAAC,OAAO;wBACrB,YAAY,EAAE,4DAA4D;qBAC3E,CAAC;aACT,CAAA;QACH,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,KAAY,EAAS,EAAE;IAC1C,MAAM,IAAI,SAAS,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AACnF,CAAC,CAAA"}
1
+ {"version":3,"file":"run-acceptance.js","sourceRoot":"","sources":["../../src/controller/run-acceptance.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,aAm1BzE,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,aAq1BzE,CAAA"}
@@ -488,6 +488,7 @@ export const createRunController = (options) => {
488
488
  const directRunner = createDirectRunner({
489
489
  runtime,
490
490
  writer,
491
+ ids: options.ids,
491
492
  loadRun: loadRunWithRetry,
492
493
  upgradeRoute,
493
494
  });
@@ -497,6 +498,7 @@ export const createRunController = (options) => {
497
498
  const streamlinedRunner = createStreamlinedRunner({
498
499
  runtime,
499
500
  writer,
501
+ ids: options.ids,
500
502
  loadRun: loadRunWithRetry,
501
503
  upgradeRoute,
502
504
  runTasks,