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
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { buildSessionToolAllowlist, mergeSystemPrompts } from "../agent/index.js";
|
|
2
2
|
import { readAgentOutput } from "./agent-output.js";
|
|
3
|
-
import { appendSessionEvent, createPromptInput, createTimeout, listOrphanSessions, releaseActiveSession, requireOrphanSession, } from "./agent-session-utils.js";
|
|
3
|
+
import { appendSessionEvent, computePromptDigest, createPromptInput, createTimeout, listOrphanSessions, releaseActiveSession, requireOrphanSession, } from "./agent-session-utils.js";
|
|
4
4
|
import { RunCancellationError, RunPausedError } from "./errors.js";
|
|
5
5
|
import { roleSystemPrompt } from "./role-prompts.js";
|
|
6
|
+
/** Generate a unique, non-reusable lease ID for session lifecycle protection */
|
|
7
|
+
const createLeaseId = (ids, runId, sessionId) => ids.createEventId(`lease-${runId}-${sessionId}`);
|
|
6
8
|
export const createAgentSessionRuntime = (input) => {
|
|
7
9
|
const activeSessions = new Map();
|
|
8
10
|
const interruptedRuns = new Map();
|
|
11
|
+
/** Track latest attempt per (runId, taskId) to reject late results */
|
|
12
|
+
const latestAttempts = new Map();
|
|
13
|
+
const attemptKey = (runId, taskId) => taskId !== undefined ? `${runId}:${taskId}` : runId;
|
|
9
14
|
const throwIfCancelled = (runId) => {
|
|
10
15
|
const interruption = interruptedRuns.get(runId);
|
|
11
16
|
switch (interruption) {
|
|
@@ -21,13 +26,42 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
21
26
|
const sessions = activeSessions.get(runId) ?? new Map();
|
|
22
27
|
sessions.set(session.sessionId, session);
|
|
23
28
|
activeSessions.set(runId, sessions);
|
|
29
|
+
// Track latest attempt for late result rejection
|
|
30
|
+
const key = attemptKey(runId, session.taskId);
|
|
31
|
+
latestAttempts.set(key, {
|
|
32
|
+
leaseId: session.leaseId,
|
|
33
|
+
attempt: session.attempt,
|
|
34
|
+
sessionId: session.sessionId,
|
|
35
|
+
});
|
|
24
36
|
};
|
|
37
|
+
/** Validate that the current lease and attempt match the expected values */
|
|
38
|
+
const validateLeaseAndAttempt = (runId, taskId, leaseId, attempt) => {
|
|
39
|
+
if (leaseId === undefined || attempt === undefined)
|
|
40
|
+
return true;
|
|
41
|
+
const key = attemptKey(runId, taskId);
|
|
42
|
+
const latest = latestAttempts.get(key);
|
|
43
|
+
if (latest === undefined)
|
|
44
|
+
return true;
|
|
45
|
+
return latest.leaseId === leaseId && latest.attempt === attempt;
|
|
46
|
+
};
|
|
47
|
+
const buildSessionEventMetadata = (request) => ({
|
|
48
|
+
contextId: request.contextId,
|
|
49
|
+
contextVersion: undefined,
|
|
50
|
+
contextDigest: undefined,
|
|
51
|
+
promptDigest: computePromptDigest(request.brief),
|
|
52
|
+
taskId: request.taskId,
|
|
53
|
+
attempt: request.attempt,
|
|
54
|
+
worktree: request.worktree,
|
|
55
|
+
phase: request.phase,
|
|
56
|
+
outputProtocolVersion: request.outputContract.schemaVersion,
|
|
57
|
+
});
|
|
25
58
|
return {
|
|
26
59
|
async sendAgent(request) {
|
|
27
60
|
throwIfCancelled(request.runId);
|
|
28
61
|
const workingDirectory = request.workingDirectory ??
|
|
29
62
|
(await input.resolveWorkingDirectory?.(request.runId)) ??
|
|
30
63
|
input.workingDirectory;
|
|
64
|
+
const leaseId = request.leaseId ?? createLeaseId(input.ids, request.runId, `session-${Date.now()}`);
|
|
31
65
|
const session = await input.sessionAdapter.create({
|
|
32
66
|
role: request.role,
|
|
33
67
|
title: request.title,
|
|
@@ -37,7 +71,22 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
37
71
|
: { parentSessionId: request.parentSessionId }),
|
|
38
72
|
promptInput: createPromptInput(request),
|
|
39
73
|
...(request.timeoutMs === undefined ? {} : { timeoutMs: request.timeoutMs }),
|
|
74
|
+
runId: request.runId,
|
|
75
|
+
...(request.taskId === undefined ? {} : { taskId: request.taskId }),
|
|
76
|
+
...(request.attempt === undefined ? {} : { attempt: request.attempt }),
|
|
77
|
+
...(request.contextId === undefined ? {} : { contextId: request.contextId }),
|
|
78
|
+
leaseId,
|
|
79
|
+
...(request.worktree === undefined ? {} : { worktree: request.worktree }),
|
|
80
|
+
...(request.phase === undefined ? {} : { phase: request.phase }),
|
|
40
81
|
});
|
|
82
|
+
const eventMeta = buildSessionEventMetadata(request);
|
|
83
|
+
const activeSession = {
|
|
84
|
+
sessionId: session.session.sessionId,
|
|
85
|
+
leaseId,
|
|
86
|
+
attempt: request.attempt ?? 0,
|
|
87
|
+
runId: request.runId,
|
|
88
|
+
taskId: request.taskId,
|
|
89
|
+
};
|
|
41
90
|
const timeoutId = createTimeout({
|
|
42
91
|
runId: request.runId,
|
|
43
92
|
sessionId: session.session.sessionId,
|
|
@@ -45,17 +94,28 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
45
94
|
sessionAdapter: input.sessionAdapter,
|
|
46
95
|
activeSessions,
|
|
47
96
|
releaseReason: "timeout",
|
|
97
|
+
leaseId,
|
|
98
|
+
attempt: request.attempt ?? 0,
|
|
48
99
|
});
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
100
|
+
if (timeoutId !== undefined) {
|
|
101
|
+
activeSession.timeoutId = timeoutId;
|
|
102
|
+
}
|
|
103
|
+
setActiveSession(request.runId, activeSession);
|
|
52
104
|
await appendSessionEvent({
|
|
53
105
|
runId: request.runId,
|
|
54
106
|
type: "session.created",
|
|
55
107
|
sessionId: session.session.sessionId,
|
|
56
|
-
payload: { sessionId: session.session.sessionId, role: request.role },
|
|
108
|
+
payload: { sessionId: session.session.sessionId, role: request.role, leaseId },
|
|
57
109
|
store: input.store,
|
|
58
110
|
ids: input.ids,
|
|
111
|
+
contextId: eventMeta.contextId,
|
|
112
|
+
contextDigest: eventMeta.contextDigest,
|
|
113
|
+
promptDigest: eventMeta.promptDigest,
|
|
114
|
+
taskId: eventMeta.taskId,
|
|
115
|
+
attempt: eventMeta.attempt,
|
|
116
|
+
worktree: eventMeta.worktree,
|
|
117
|
+
phase: eventMeta.phase,
|
|
118
|
+
outputProtocolVersion: eventMeta.outputProtocolVersion,
|
|
59
119
|
});
|
|
60
120
|
try {
|
|
61
121
|
const tools = buildSessionToolAllowlist(request.role);
|
|
@@ -70,8 +130,35 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
70
130
|
: { profileOverride: request.profileOverride }),
|
|
71
131
|
systemPrompt: mergeSystemPrompts(roleSystemPrompt(request.role), request.systemPrompt),
|
|
72
132
|
...(tools === undefined ? {} : { tools }),
|
|
133
|
+
runId: request.runId,
|
|
134
|
+
...(request.taskId === undefined ? {} : { taskId: request.taskId }),
|
|
135
|
+
...(request.attempt === undefined ? {} : { attempt: request.attempt }),
|
|
136
|
+
...(request.contextId === undefined ? {} : { contextId: request.contextId }),
|
|
137
|
+
leaseId,
|
|
138
|
+
...(request.worktree === undefined ? {} : { worktree: request.worktree }),
|
|
139
|
+
...(request.phase === undefined ? {} : { phase: request.phase }),
|
|
73
140
|
});
|
|
74
141
|
throwIfCancelled(request.runId);
|
|
142
|
+
// Validate lease/attempt to reject late results
|
|
143
|
+
if (!validateLeaseAndAttempt(request.runId, request.taskId, leaseId, request.attempt)) {
|
|
144
|
+
// Log late result as diagnostic event
|
|
145
|
+
await appendSessionEvent({
|
|
146
|
+
runId: request.runId,
|
|
147
|
+
type: "session.late_result",
|
|
148
|
+
sessionId: session.session.sessionId,
|
|
149
|
+
payload: {
|
|
150
|
+
sessionId: session.session.sessionId,
|
|
151
|
+
reason: "late_result_rejected",
|
|
152
|
+
leaseId,
|
|
153
|
+
currentAttempt: request.attempt ?? 0,
|
|
154
|
+
},
|
|
155
|
+
store: input.store,
|
|
156
|
+
ids: input.ids,
|
|
157
|
+
taskId: eventMeta.taskId,
|
|
158
|
+
attempt: eventMeta.attempt,
|
|
159
|
+
});
|
|
160
|
+
throw new RunCancellationError(request.runId);
|
|
161
|
+
}
|
|
75
162
|
return readAgentOutput(result);
|
|
76
163
|
}
|
|
77
164
|
finally {
|
|
@@ -79,9 +166,17 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
79
166
|
runId: request.runId,
|
|
80
167
|
type: "session.released",
|
|
81
168
|
sessionId: session.session.sessionId,
|
|
82
|
-
payload: { sessionId: session.session.sessionId, reason: "completed" },
|
|
169
|
+
payload: { sessionId: session.session.sessionId, reason: "completed", leaseId },
|
|
83
170
|
store: input.store,
|
|
84
171
|
ids: input.ids,
|
|
172
|
+
contextId: eventMeta.contextId,
|
|
173
|
+
contextDigest: eventMeta.contextDigest,
|
|
174
|
+
promptDigest: eventMeta.promptDigest,
|
|
175
|
+
taskId: eventMeta.taskId,
|
|
176
|
+
attempt: eventMeta.attempt,
|
|
177
|
+
worktree: eventMeta.worktree,
|
|
178
|
+
phase: eventMeta.phase,
|
|
179
|
+
outputProtocolVersion: eventMeta.outputProtocolVersion,
|
|
85
180
|
});
|
|
86
181
|
await releaseActiveSession({
|
|
87
182
|
activeSessions,
|
|
@@ -138,14 +233,26 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
138
233
|
if (snapshot === undefined || snapshot.role !== orphanSession.role) {
|
|
139
234
|
throw new TypeError(`session ${session.sessionId} is not available for rebind`);
|
|
140
235
|
}
|
|
141
|
-
|
|
236
|
+
const leaseId = snapshot.leaseId ?? createLeaseId(input.ids, session.runId, session.sessionId);
|
|
237
|
+
setActiveSession(session.runId, {
|
|
238
|
+
sessionId: session.sessionId,
|
|
239
|
+
leaseId,
|
|
240
|
+
attempt: snapshot.attempt ?? 0,
|
|
241
|
+
runId: session.runId,
|
|
242
|
+
taskId: snapshot.taskId,
|
|
243
|
+
});
|
|
142
244
|
await appendSessionEvent({
|
|
143
245
|
runId: session.runId,
|
|
144
246
|
type: "session.rebound",
|
|
145
247
|
sessionId: session.sessionId,
|
|
146
|
-
payload: { sessionId: session.sessionId, actorId: session.actorId },
|
|
248
|
+
payload: { sessionId: session.sessionId, actorId: session.actorId, leaseId },
|
|
147
249
|
store: input.store,
|
|
148
250
|
ids: input.ids,
|
|
251
|
+
contextId: snapshot.contextId,
|
|
252
|
+
taskId: snapshot.taskId,
|
|
253
|
+
attempt: snapshot.attempt,
|
|
254
|
+
worktree: snapshot.worktree,
|
|
255
|
+
phase: snapshot.phase,
|
|
149
256
|
});
|
|
150
257
|
},
|
|
151
258
|
async safeAbandonSession(session) {
|
|
@@ -186,14 +293,26 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
186
293
|
for (const orphanSession of orphanSessions) {
|
|
187
294
|
const snapshot = input.sessionAdapter.getSession(orphanSession.sessionId);
|
|
188
295
|
if (snapshot !== undefined && snapshot.role === orphanSession.role) {
|
|
189
|
-
|
|
296
|
+
const leaseId = snapshot.leaseId ?? createLeaseId(input.ids, request.runId, orphanSession.sessionId);
|
|
297
|
+
setActiveSession(request.runId, {
|
|
298
|
+
sessionId: orphanSession.sessionId,
|
|
299
|
+
leaseId,
|
|
300
|
+
attempt: snapshot.attempt ?? 0,
|
|
301
|
+
runId: request.runId,
|
|
302
|
+
taskId: snapshot.taskId,
|
|
303
|
+
});
|
|
190
304
|
await appendSessionEvent({
|
|
191
305
|
runId: request.runId,
|
|
192
306
|
type: "session.rebound",
|
|
193
307
|
sessionId: orphanSession.sessionId,
|
|
194
|
-
payload: { sessionId: orphanSession.sessionId, actorId: request.actorId },
|
|
308
|
+
payload: { sessionId: orphanSession.sessionId, actorId: request.actorId, leaseId },
|
|
195
309
|
store: input.store,
|
|
196
310
|
ids: input.ids,
|
|
311
|
+
contextId: snapshot.contextId,
|
|
312
|
+
taskId: snapshot.taskId,
|
|
313
|
+
attempt: snapshot.attempt,
|
|
314
|
+
worktree: snapshot.worktree,
|
|
315
|
+
phase: snapshot.phase,
|
|
197
316
|
});
|
|
198
317
|
reboundSessionIds.push(orphanSession.sessionId);
|
|
199
318
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/controller/agent-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/controller/agent-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { ContextFact, ContextSnapshot, ContextSummary } from "../domain/context-snapshot.js";
|
|
2
|
+
import type { HarnessSessionRole } from "../session/contracts.js";
|
|
3
|
+
export type ContextBudget = {
|
|
4
|
+
/** Maximum number of facts to include */
|
|
5
|
+
readonly maxFacts: number;
|
|
6
|
+
/** Maximum number of evidence digests to include */
|
|
7
|
+
readonly maxEvidenceDigests: number;
|
|
8
|
+
/** Maximum number of unresolved issues to include */
|
|
9
|
+
readonly maxUnresolvedIssues: number;
|
|
10
|
+
/** Maximum character length for the goal text */
|
|
11
|
+
readonly maxGoalLength: number;
|
|
12
|
+
/** Maximum character length for the scope text */
|
|
13
|
+
readonly maxScopeLength: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Default per-role context budgets.
|
|
17
|
+
*
|
|
18
|
+
* FIXME: These values are reasonable defaults for the current Harness
|
|
19
|
+
* architecture but should be made configurable via project-level
|
|
20
|
+
* configuration (e.g. .harness/config.yaml) in a future iteration.
|
|
21
|
+
* The current thresholds are designed to keep session prompts under
|
|
22
|
+
* typical provider token limits while preserving the most critical
|
|
23
|
+
* context for each role.
|
|
24
|
+
*/
|
|
25
|
+
export declare const DEFAULT_ROLE_BUDGETS: Record<HarnessSessionRole, ContextBudget>;
|
|
26
|
+
export type TrimmedContext = {
|
|
27
|
+
/** The trimmed context snapshot */
|
|
28
|
+
readonly snapshot: ContextSnapshot;
|
|
29
|
+
/** Summary of the context for lightweight reference */
|
|
30
|
+
readonly summary: ContextSummary;
|
|
31
|
+
/** Which facts were trimmed (by factId) */
|
|
32
|
+
readonly trimmedFactIds: readonly string[];
|
|
33
|
+
/** Which evidence digests were trimmed (by refId) */
|
|
34
|
+
readonly trimmedEvidenceRefIds: readonly string[];
|
|
35
|
+
/** Which unresolved issues were trimmed */
|
|
36
|
+
readonly trimmedUnresolvedIssues: readonly string[];
|
|
37
|
+
/** Fingerprint of the trimmed content */
|
|
38
|
+
readonly trimDigest: string;
|
|
39
|
+
/** Whether any trimming was applied */
|
|
40
|
+
readonly wasTrimmed: boolean;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Trim a context snapshot to fit within a role's budget.
|
|
44
|
+
*
|
|
45
|
+
* This function NEVER truncates text arbitrarily. Instead, it uses
|
|
46
|
+
* structured strategies in order:
|
|
47
|
+
* 1. Keep all high-priority facts (priority >= 80): goals, constraints,
|
|
48
|
+
* allowed paths, acceptance criteria, blocking issues.
|
|
49
|
+
* 2. For remaining lower-priority facts, keep the most recent/highest-priority
|
|
50
|
+
* ones up to the budget.
|
|
51
|
+
* 3. Trim evidence digests to the budget limit.
|
|
52
|
+
* 4. Trim unresolved issues to the budget limit.
|
|
53
|
+
* 5. Truncate goal/scope text to character limits.
|
|
54
|
+
*
|
|
55
|
+
* Excess content is recorded in trim metadata for auditability.
|
|
56
|
+
*/
|
|
57
|
+
export declare const trimContextForRole: (snapshot: ContextSnapshot, role: HarnessSessionRole, budget?: ContextBudget) => TrimmedContext;
|
|
58
|
+
/**
|
|
59
|
+
* Context layers that can be selectively included per role.
|
|
60
|
+
*/
|
|
61
|
+
export type ContextLayer = "fixed_role" | "run" | "task" | "evidence" | "governance";
|
|
62
|
+
/**
|
|
63
|
+
* Which layers each role receives by default.
|
|
64
|
+
*/
|
|
65
|
+
export declare const DEFAULT_ROLE_LAYERS: Record<HarnessSessionRole, readonly ContextLayer[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Filter facts by layer, keeping only those whose kind matches the
|
|
68
|
+
* requested layers.
|
|
69
|
+
*/
|
|
70
|
+
export declare const filterFactsByLayer: (facts: readonly ContextFact[], layers: readonly ContextLayer[]) => readonly ContextFact[];
|
|
71
|
+
//# sourceMappingURL=context-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-budget.d.ts","sourceRoot":"","sources":["../../src/controller/context-budget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEjG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAKjE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,oDAAoD;IACpD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,qDAAqD;IACrD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,iDAAiD;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAkD1E,CAAA;AAID,MAAM,MAAM,cAAc,GAAG;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;IAClC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAA;IACjD,2CAA2C;IAC3C,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAA;IACnD,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B,CAAA;AAaD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,eAAe,EACzB,MAAM,kBAAkB,EACxB,SAAS,aAAa,KACrB,cA6EF,CAAA;AA2CD;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,KAAK,GACL,MAAM,GACN,UAAU,GACV,YAAY,CAAA;AAEhB;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,kBAAkB,EAAE,SAAS,YAAY,EAAE,CAQnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,WAAW,EAAE,EAC7B,QAAQ,SAAS,YAAY,EAAE,KAC9B,SAAS,WAAW,EAmBtB,CAAA"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { toContextSummary } from "../domain/context-snapshot.js";
|
|
3
|
+
import { HARNESS_SESSION_ROLE } from "../session/contracts.js";
|
|
4
|
+
/**
|
|
5
|
+
* Default per-role context budgets.
|
|
6
|
+
*
|
|
7
|
+
* FIXME: These values are reasonable defaults for the current Harness
|
|
8
|
+
* architecture but should be made configurable via project-level
|
|
9
|
+
* configuration (e.g. .harness/config.yaml) in a future iteration.
|
|
10
|
+
* The current thresholds are designed to keep session prompts under
|
|
11
|
+
* typical provider token limits while preserving the most critical
|
|
12
|
+
* context for each role.
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_ROLE_BUDGETS = {
|
|
15
|
+
[HARNESS_SESSION_ROLE.intake]: {
|
|
16
|
+
maxFacts: 30,
|
|
17
|
+
maxEvidenceDigests: 0,
|
|
18
|
+
maxUnresolvedIssues: 5,
|
|
19
|
+
maxGoalLength: 1000,
|
|
20
|
+
maxScopeLength: 2000,
|
|
21
|
+
},
|
|
22
|
+
[HARNESS_SESSION_ROLE.planner]: {
|
|
23
|
+
maxFacts: 50,
|
|
24
|
+
maxEvidenceDigests: 10,
|
|
25
|
+
maxUnresolvedIssues: 10,
|
|
26
|
+
maxGoalLength: 2000,
|
|
27
|
+
maxScopeLength: 4000,
|
|
28
|
+
},
|
|
29
|
+
[HARNESS_SESSION_ROLE.worker]: {
|
|
30
|
+
maxFacts: 40,
|
|
31
|
+
maxEvidenceDigests: 15,
|
|
32
|
+
maxUnresolvedIssues: 5,
|
|
33
|
+
maxGoalLength: 1500,
|
|
34
|
+
maxScopeLength: 3000,
|
|
35
|
+
},
|
|
36
|
+
[HARNESS_SESSION_ROLE.verifier]: {
|
|
37
|
+
maxFacts: 30,
|
|
38
|
+
maxEvidenceDigests: 20,
|
|
39
|
+
maxUnresolvedIssues: 5,
|
|
40
|
+
maxGoalLength: 1000,
|
|
41
|
+
maxScopeLength: 2000,
|
|
42
|
+
},
|
|
43
|
+
[HARNESS_SESSION_ROLE.acceptance]: {
|
|
44
|
+
maxFacts: 30,
|
|
45
|
+
maxEvidenceDigests: 20,
|
|
46
|
+
maxUnresolvedIssues: 5,
|
|
47
|
+
maxGoalLength: 1000,
|
|
48
|
+
maxScopeLength: 2000,
|
|
49
|
+
},
|
|
50
|
+
[HARNESS_SESSION_ROLE.failureAnalyzer]: {
|
|
51
|
+
maxFacts: 40,
|
|
52
|
+
maxEvidenceDigests: 15,
|
|
53
|
+
maxUnresolvedIssues: 10,
|
|
54
|
+
maxGoalLength: 1500,
|
|
55
|
+
maxScopeLength: 3000,
|
|
56
|
+
},
|
|
57
|
+
[HARNESS_SESSION_ROLE.repairWorker]: {
|
|
58
|
+
maxFacts: 40,
|
|
59
|
+
maxEvidenceDigests: 15,
|
|
60
|
+
maxUnresolvedIssues: 5,
|
|
61
|
+
maxGoalLength: 1500,
|
|
62
|
+
maxScopeLength: 3000,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
// ─── Priority constants ────────────────────────────────────────────────────
|
|
66
|
+
/**
|
|
67
|
+
* Facts with priority >= HIGH_PRIORITY_THRESHOLD are considered
|
|
68
|
+
* "must-preserve" — they include goals, constraints, allowed paths,
|
|
69
|
+
* acceptance criteria, and blocking issues.
|
|
70
|
+
*/
|
|
71
|
+
const HIGH_PRIORITY_THRESHOLD = 80;
|
|
72
|
+
// ─── Trimming function ─────────────────────────────────────────────────────
|
|
73
|
+
/**
|
|
74
|
+
* Trim a context snapshot to fit within a role's budget.
|
|
75
|
+
*
|
|
76
|
+
* This function NEVER truncates text arbitrarily. Instead, it uses
|
|
77
|
+
* structured strategies in order:
|
|
78
|
+
* 1. Keep all high-priority facts (priority >= 80): goals, constraints,
|
|
79
|
+
* allowed paths, acceptance criteria, blocking issues.
|
|
80
|
+
* 2. For remaining lower-priority facts, keep the most recent/highest-priority
|
|
81
|
+
* ones up to the budget.
|
|
82
|
+
* 3. Trim evidence digests to the budget limit.
|
|
83
|
+
* 4. Trim unresolved issues to the budget limit.
|
|
84
|
+
* 5. Truncate goal/scope text to character limits.
|
|
85
|
+
*
|
|
86
|
+
* Excess content is recorded in trim metadata for auditability.
|
|
87
|
+
*/
|
|
88
|
+
export const trimContextForRole = (snapshot, role, budget) => {
|
|
89
|
+
const effectiveBudget = budget ?? DEFAULT_ROLE_BUDGETS[role];
|
|
90
|
+
const trimmedFactIds = [];
|
|
91
|
+
const trimmedEvidenceRefIds = [];
|
|
92
|
+
const trimmedUnresolvedIssues = [];
|
|
93
|
+
let wasTrimmed = false;
|
|
94
|
+
// ── 1. Priority-based fact trimming ──
|
|
95
|
+
const sortedFacts = [...snapshot.facts].sort((a, b) => b.priority - a.priority);
|
|
96
|
+
const highPriority = sortedFacts.filter((f) => f.priority >= HIGH_PRIORITY_THRESHOLD);
|
|
97
|
+
const lowPriority = sortedFacts.filter((f) => f.priority < HIGH_PRIORITY_THRESHOLD);
|
|
98
|
+
// Always keep high-priority facts
|
|
99
|
+
const remainingBudget = effectiveBudget.maxFacts - highPriority.length;
|
|
100
|
+
const keptLowPriority = lowPriority.slice(0, Math.max(0, remainingBudget));
|
|
101
|
+
const trimmedLowPriority = lowPriority.slice(Math.max(0, remainingBudget));
|
|
102
|
+
for (const fact of trimmedLowPriority) {
|
|
103
|
+
trimmedFactIds.push(fact.factId);
|
|
104
|
+
}
|
|
105
|
+
const keptFacts = [...highPriority, ...keptLowPriority];
|
|
106
|
+
// ── 2. Evidence digest trimming ──
|
|
107
|
+
const keptEvidenceDigests = snapshot.evidenceDigests.slice(0, effectiveBudget.maxEvidenceDigests);
|
|
108
|
+
const trimmedEvidence = snapshot.evidenceDigests.slice(effectiveBudget.maxEvidenceDigests);
|
|
109
|
+
for (const ev of trimmedEvidence) {
|
|
110
|
+
trimmedEvidenceRefIds.push(ev.refId);
|
|
111
|
+
}
|
|
112
|
+
// ── 3. Unresolved issues trimming ──
|
|
113
|
+
const keptIssues = snapshot.unresolvedIssues.slice(0, effectiveBudget.maxUnresolvedIssues);
|
|
114
|
+
const trimmedIssues = snapshot.unresolvedIssues.slice(effectiveBudget.maxUnresolvedIssues);
|
|
115
|
+
trimmedUnresolvedIssues.push(...trimmedIssues);
|
|
116
|
+
// ── 4. Text truncation for goal/scope ──
|
|
117
|
+
// Ensure we don't cut mid-word or mid-JSON — truncate at word boundary
|
|
118
|
+
const truncatedGoal = truncateAtWordBoundary(snapshot.goal, effectiveBudget.maxGoalLength);
|
|
119
|
+
const truncatedScope = truncateAtWordBoundary(snapshot.scope, effectiveBudget.maxScopeLength);
|
|
120
|
+
wasTrimmed =
|
|
121
|
+
trimmedFactIds.length > 0 ||
|
|
122
|
+
trimmedEvidenceRefIds.length > 0 ||
|
|
123
|
+
trimmedUnresolvedIssues.length > 0 ||
|
|
124
|
+
truncatedGoal !== snapshot.goal ||
|
|
125
|
+
truncatedScope !== snapshot.scope;
|
|
126
|
+
// ── Build trimmed snapshot ──
|
|
127
|
+
const trimDigest = computeTrimDigest({
|
|
128
|
+
trimmedFactIds,
|
|
129
|
+
trimmedEvidenceRefIds,
|
|
130
|
+
trimmedUnresolvedIssues,
|
|
131
|
+
budget: effectiveBudget,
|
|
132
|
+
role,
|
|
133
|
+
});
|
|
134
|
+
const trimmedSnapshot = {
|
|
135
|
+
...snapshot,
|
|
136
|
+
goal: truncatedGoal,
|
|
137
|
+
scope: truncatedScope,
|
|
138
|
+
// Keep facts sorted by priority for the agent
|
|
139
|
+
facts: keptFacts.sort((a, b) => b.priority - a.priority),
|
|
140
|
+
evidenceDigests: keptEvidenceDigests,
|
|
141
|
+
unresolvedIssues: keptIssues,
|
|
142
|
+
};
|
|
143
|
+
const summary = toContextSummary(trimmedSnapshot);
|
|
144
|
+
return {
|
|
145
|
+
snapshot: trimmedSnapshot,
|
|
146
|
+
summary,
|
|
147
|
+
trimmedFactIds,
|
|
148
|
+
trimmedEvidenceRefIds,
|
|
149
|
+
trimmedUnresolvedIssues,
|
|
150
|
+
trimDigest,
|
|
151
|
+
wasTrimmed,
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
// ─── Helpers ───────────────────────────────────────────────────────────────
|
|
155
|
+
/**
|
|
156
|
+
* Truncate text at a word boundary, ensuring we never cut mid-word
|
|
157
|
+
* or mid-JSON structure. Appends "…" if truncated.
|
|
158
|
+
*/
|
|
159
|
+
const truncateAtWordBoundary = (text, maxLength) => {
|
|
160
|
+
if (text.length <= maxLength)
|
|
161
|
+
return text;
|
|
162
|
+
// Try to find the last space within the limit
|
|
163
|
+
let cutIndex = maxLength;
|
|
164
|
+
const lastSpace = text.lastIndexOf(" ", maxLength);
|
|
165
|
+
if (lastSpace > maxLength / 2) {
|
|
166
|
+
cutIndex = lastSpace;
|
|
167
|
+
}
|
|
168
|
+
return `${text.slice(0, cutIndex).trimEnd()}…`;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Compute a deterministic digest of the trimming metadata.
|
|
172
|
+
*/
|
|
173
|
+
const computeTrimDigest = (input) => {
|
|
174
|
+
const canonical = JSON.stringify({
|
|
175
|
+
trimmedFactIds: input.trimmedFactIds,
|
|
176
|
+
trimmedEvidenceRefIds: input.trimmedEvidenceRefIds,
|
|
177
|
+
trimmedUnresolvedIssues: input.trimmedUnresolvedIssues,
|
|
178
|
+
budget: input.budget,
|
|
179
|
+
role: input.role,
|
|
180
|
+
});
|
|
181
|
+
return `sha256:${createHash("sha256").update(canonical, "utf8").digest("hex")}`;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Which layers each role receives by default.
|
|
185
|
+
*/
|
|
186
|
+
export const DEFAULT_ROLE_LAYERS = {
|
|
187
|
+
[HARNESS_SESSION_ROLE.intake]: ["fixed_role", "run"],
|
|
188
|
+
[HARNESS_SESSION_ROLE.planner]: ["fixed_role", "run", "governance"],
|
|
189
|
+
[HARNESS_SESSION_ROLE.worker]: ["fixed_role", "run", "task", "evidence"],
|
|
190
|
+
[HARNESS_SESSION_ROLE.verifier]: ["fixed_role", "run", "task", "evidence"],
|
|
191
|
+
[HARNESS_SESSION_ROLE.acceptance]: ["fixed_role", "run", "evidence"],
|
|
192
|
+
[HARNESS_SESSION_ROLE.failureAnalyzer]: ["fixed_role", "run", "task", "evidence"],
|
|
193
|
+
[HARNESS_SESSION_ROLE.repairWorker]: ["fixed_role", "run", "task", "evidence"],
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Filter facts by layer, keeping only those whose kind matches the
|
|
197
|
+
* requested layers.
|
|
198
|
+
*/
|
|
199
|
+
export const filterFactsByLayer = (facts, layers) => {
|
|
200
|
+
const layerSet = new Set(layers);
|
|
201
|
+
return facts.filter((fact) => {
|
|
202
|
+
switch (fact.kind) {
|
|
203
|
+
case "requirement":
|
|
204
|
+
case "constraint":
|
|
205
|
+
return layerSet.has("run") || layerSet.has("task");
|
|
206
|
+
case "evidence":
|
|
207
|
+
return layerSet.has("evidence");
|
|
208
|
+
case "governance":
|
|
209
|
+
return layerSet.has("governance");
|
|
210
|
+
case "unresolved_issue":
|
|
211
|
+
return layerSet.has("run") || layerSet.has("governance");
|
|
212
|
+
case "workspace":
|
|
213
|
+
return layerSet.has("task");
|
|
214
|
+
default:
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=context-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-budget.js","sourceRoot":"","sources":["../../src/controller/context-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ControllerIdSource } from "../controller/contracts.js";
|
|
2
|
+
import { type ContextSnapshot } from "../domain/context-snapshot.js";
|
|
3
|
+
import type { Evidence } from "../domain/evidence.js";
|
|
4
|
+
import type { Run, Task } from "../domain/index.js";
|
|
5
|
+
export { computeContextDigest, toContextSummary } from "../domain/context-snapshot.js";
|
|
6
|
+
export type BuildContextSnapshotInput = {
|
|
7
|
+
readonly ids: ControllerIdSource;
|
|
8
|
+
readonly run: Run;
|
|
9
|
+
/** Optional task – when building a task-level snapshot */
|
|
10
|
+
readonly task?: Task;
|
|
11
|
+
/** The execution phase (e.g. "planning", "executing", "verifying") */
|
|
12
|
+
readonly phase: string;
|
|
13
|
+
/** Prior context to derive from, if any */
|
|
14
|
+
readonly parentContextId?: string;
|
|
15
|
+
readonly parentVersion?: number;
|
|
16
|
+
/** Current attempt number (0-based) */
|
|
17
|
+
readonly attempt?: number;
|
|
18
|
+
/** Evidence array from the run, for digest production */
|
|
19
|
+
readonly evidence?: readonly Evidence[];
|
|
20
|
+
/** Unresolved issues / blocking questions */
|
|
21
|
+
readonly unresolvedIssues?: readonly string[];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Build a versioned ContextSnapshot from Run, Task, Evidence, and governance state.
|
|
25
|
+
*/
|
|
26
|
+
export declare const buildContextSnapshot: (input: BuildContextSnapshotInput) => ContextSnapshot;
|
|
27
|
+
//# sourceMappingURL=context-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../src/controller/context-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,+BAA+B,CAAA;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAE,GAAG,EAAiB,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAItF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAA;IACpB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;IACvC,6CAA6C;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9C,CAAA;AAID;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,yBAAyB,KAAG,eA2DvE,CAAA"}
|