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.
- package/README.md +8 -3
- package/dist/agent/harness-role-capability-directory-data.d.ts.map +1 -1
- package/dist/agent/harness-role-capability-directory-data.js +3 -3
- package/dist/agent/harness-role-capability-directory-data.js.map +1 -1
- package/dist/agent/harness-role-capability-directory.d.ts +1 -0
- package/dist/agent/harness-role-capability-directory.d.ts.map +1 -1
- package/dist/agent/harness-role-capability-directory.js +1 -0
- package/dist/agent/harness-role-capability-directory.js.map +1 -1
- package/dist/controller/agent-session-types.d.ts +17 -1
- package/dist/controller/agent-session-types.d.ts.map +1 -1
- package/dist/controller/agent-session-utils.d.ts +40 -3
- package/dist/controller/agent-session-utils.d.ts.map +1 -1
- package/dist/controller/agent-session-utils.js +67 -21
- package/dist/controller/agent-session-utils.js.map +1 -1
- package/dist/controller/agent-session.d.ts.map +1 -1
- package/dist/controller/agent-session.js +129 -10
- package/dist/controller/agent-session.js.map +1 -1
- package/dist/controller/context-budget.d.ts +71 -0
- package/dist/controller/context-budget.d.ts.map +1 -0
- package/dist/controller/context-budget.js +219 -0
- package/dist/controller/context-budget.js.map +1 -0
- package/dist/controller/context-builder.d.ts +27 -0
- package/dist/controller/context-builder.d.ts.map +1 -0
- package/dist/controller/context-builder.js +184 -0
- package/dist/controller/context-builder.js.map +1 -0
- package/dist/controller/context-validation.d.ts +46 -0
- package/dist/controller/context-validation.d.ts.map +1 -0
- package/dist/controller/context-validation.js +126 -0
- package/dist/controller/context-validation.js.map +1 -0
- package/dist/controller/direct-runner.d.ts +2 -0
- package/dist/controller/direct-runner.d.ts.map +1 -1
- package/dist/controller/direct-runner.js +20 -2
- package/dist/controller/direct-runner.js.map +1 -1
- package/dist/controller/index.d.ts +1 -0
- package/dist/controller/index.d.ts.map +1 -1
- package/dist/controller/index.js +1 -0
- package/dist/controller/index.js.map +1 -1
- package/dist/controller/run-acceptance.d.ts.map +1 -1
- package/dist/controller/run-acceptance.js +12 -0
- package/dist/controller/run-acceptance.js.map +1 -1
- package/dist/controller/run-controller.d.ts.map +1 -1
- package/dist/controller/run-controller.js +2 -0
- package/dist/controller/run-controller.js.map +1 -1
- package/dist/controller/streamlined-runner.d.ts +2 -0
- package/dist/controller/streamlined-runner.d.ts.map +1 -1
- package/dist/controller/streamlined-runner.js +31 -1
- package/dist/controller/streamlined-runner.js.map +1 -1
- package/dist/controller/task-agent-output.d.ts.map +1 -1
- package/dist/controller/task-agent-output.js +85 -0
- package/dist/controller/task-agent-output.js.map +1 -1
- package/dist/domain/clarification.d.ts +92 -0
- package/dist/domain/clarification.d.ts.map +1 -0
- package/dist/domain/clarification.js +80 -0
- package/dist/domain/clarification.js.map +1 -0
- package/dist/domain/context-snapshot.d.ts +140 -0
- package/dist/domain/context-snapshot.d.ts.map +1 -0
- package/dist/domain/context-snapshot.js +140 -0
- package/dist/domain/context-snapshot.js.map +1 -0
- package/dist/domain/index.d.ts +4 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +2 -0
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/report.d.ts +118 -0
- package/dist/domain/report.d.ts.map +1 -1
- package/dist/domain/run.d.ts +118 -0
- package/dist/domain/run.d.ts.map +1 -1
- package/dist/domain/run.js +2 -0
- package/dist/domain/run.js.map +1 -1
- package/dist/plugin/create-harness-plugin.d.ts.map +1 -1
- package/dist/plugin/create-harness-plugin.js +25 -13
- package/dist/plugin/create-harness-plugin.js.map +1 -1
- package/dist/plugin/harness-chat-hook.d.ts +9 -0
- package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
- package/dist/plugin/harness-chat-hook.js +40 -35
- package/dist/plugin/harness-chat-hook.js.map +1 -1
- package/dist/plugin/harness-coordinator.d.ts +5 -0
- package/dist/plugin/harness-coordinator.d.ts.map +1 -1
- package/dist/plugin/harness-coordinator.js +95 -4
- package/dist/plugin/harness-coordinator.js.map +1 -1
- package/dist/plugin/harness-escalate-tool.d.ts +13 -0
- package/dist/plugin/harness-escalate-tool.d.ts.map +1 -0
- package/dist/plugin/harness-escalate-tool.js +37 -0
- package/dist/plugin/harness-escalate-tool.js.map +1 -0
- package/dist/plugin/harness-plugin-runtime.d.ts +2 -14
- package/dist/plugin/harness-plugin-runtime.d.ts.map +1 -1
- package/dist/plugin/harness-plugin-runtime.js +7 -1
- package/dist/plugin/harness-plugin-runtime.js.map +1 -1
- package/dist/session/contracts.d.ts +80 -8
- package/dist/session/contracts.d.ts.map +1 -1
- package/dist/session/fake-session-adapter.d.ts.map +1 -1
- package/dist/session/fake-session-adapter.js +14 -0
- package/dist/session/fake-session-adapter.js.map +1 -1
- package/dist/session/opencode-session-adapter.d.ts.map +1 -1
- package/dist/session/opencode-session-adapter.js +16 -0
- package/dist/session/opencode-session-adapter.js.map +1 -1
- package/dist/session/opencode-session-prompts.d.ts.map +1 -1
- package/dist/session/opencode-session-prompts.js +3 -0
- package/dist/session/opencode-session-prompts.js.map +1 -1
- package/dist/store/context-snapshot-store.d.ts +17 -0
- package/dist/store/context-snapshot-store.d.ts.map +1 -0
- package/dist/store/context-snapshot-store.js +96 -0
- package/dist/store/context-snapshot-store.js.map +1 -0
- package/dist/store/filesystem-run-store.d.ts +3 -0
- package/dist/store/filesystem-run-store.d.ts.map +1 -1
- package/dist/store/filesystem-run-store.js +13 -1
- package/dist/store/filesystem-run-store.js.map +1 -1
- package/dist/store/index.d.ts +2 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +2 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/run-event.d.ts +118 -0
- package/dist/store/run-event.d.ts.map +1 -1
- package/dist/store/session-index.d.ts +51 -0
- package/dist/store/session-index.d.ts.map +1 -0
- package/dist/store/session-index.js +163 -0
- package/dist/store/session-index.js.map +1 -0
- 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":"AAEA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAgB5E,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,IAAwB,EACxB,eAAwC,EACf,EAAE;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAE/C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;QACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;IAC3C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAA;IACzC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,gDAAgD,KAAK,GAAG,CAAC,CAAA;QACpF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC,CAAA;AAED,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,KAMhD,EAA+B,EAAE;IAChC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,kDAAkD;IAClD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;IAC1C,CAAC;IAED,uCAAuC;IACvC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;QAC1D,+EAA+E;QAC/E,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CACT,uBAAuB,UAAU,+CAA+C,CACjF,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC1E,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAA;QAChD,8CAA8C;QAC9C,IACE,gBAAgB,CAAC,aAAa;YAC9B,KAAK,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,aAAa,EACzD,CAAC;YACD,QAAQ,CAAC,IAAI,CACX,4BAA4B,KAAK,CAAC,gBAAgB,mDAAmD,gBAAgB,CAAC,aAAa,GAAG,CACvI,CAAA;QACH,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC,CAAA;AAED,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,OAAyC,EACzC,QAAiB,EACQ,EAAE;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,iCAAiC,CAAC,CAAA;QACxE,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,+BAA+B,CAAC,CAAA;QACxE,CAAC;QAED,qCAAqC;QACrC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;YACtD,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,iCAAiC,CAAC,CAAA;YAC1E,CAAC;iBAAM,IAAI,GAAG,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,2BAA2B,QAAQ,IAAI,CAAC,CAAA;YAChF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC,CAAA;AAED,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,OAAyC,EACzC,aAAqB,EACI,EAAE;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,aAAa,EAAE,CAAC;YAC/E,QAAQ,CAAC,IAAI,CACX,YAAY,MAAM,CAAC,KAAK,cAAc,MAAM,CAAC,YAAY,gCAAgC,aAAa,wDAAwD,CAC/J,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC,CAAA;AAED,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,QAAyB,EACzB,WAAoB,EACK,EAAE;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClF,QAAQ,CAAC,IAAI,CACX,iBAAiB,WAAW,oDAAoD,CACjF,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC,CAAA"}
|
|
@@ -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;
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/dist/controller/index.js
CHANGED
|
@@ -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;
|
|
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;
|
|
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;
|
|
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,
|
|
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,
|