harness-engineering-agent 0.1.7 → 0.1.8
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 +15 -2
- package/dist/controller/agent-session.d.ts +15 -0
- package/dist/controller/agent-session.d.ts.map +1 -1
- package/dist/controller/agent-session.js +52 -7
- package/dist/controller/agent-session.js.map +1 -1
- package/dist/controller/contracts.d.ts +1 -0
- package/dist/controller/contracts.d.ts.map +1 -1
- package/dist/controller/errors.d.ts +5 -0
- package/dist/controller/errors.d.ts.map +1 -1
- package/dist/controller/errors.js +8 -0
- package/dist/controller/errors.js.map +1 -1
- package/dist/controller/run-controller.d.ts.map +1 -1
- package/dist/controller/run-controller.js +144 -78
- package/dist/controller/run-controller.js.map +1 -1
- package/dist/controller/run-state.d.ts +1 -0
- package/dist/controller/run-state.d.ts.map +1 -1
- package/dist/controller/run-state.js +12 -0
- package/dist/controller/run-state.js.map +1 -1
- package/dist/controller/task-executor.d.ts +1 -0
- package/dist/controller/task-executor.d.ts.map +1 -1
- package/dist/controller/task-executor.js +35 -0
- package/dist/controller/task-executor.js.map +1 -1
- package/dist/plugin/create-harness-plugin.d.ts.map +1 -1
- package/dist/plugin/create-harness-plugin.js +49 -1
- package/dist/plugin/create-harness-plugin.js.map +1 -1
- package/dist/plugin/harness-agent-config.js +3 -3
- package/dist/plugin/harness-agent-config.js.map +1 -1
- package/dist/plugin/harness-chat-hook.d.ts +1 -1
- package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
- package/dist/plugin/harness-chat-hook.js +15 -23
- package/dist/plugin/harness-chat-hook.js.map +1 -1
- package/dist/plugin/harness-chat-protocol.d.ts +2 -2
- package/dist/plugin/harness-chat-protocol.d.ts.map +1 -1
- package/dist/plugin/harness-chat-protocol.js +13 -2
- package/dist/plugin/harness-chat-protocol.js.map +1 -1
- package/dist/plugin/harness-coordinator.d.ts +4 -0
- package/dist/plugin/harness-coordinator.d.ts.map +1 -1
- package/dist/plugin/harness-coordinator.js +7 -1
- package/dist/plugin/harness-coordinator.js.map +1 -1
- package/dist/plugin/harness-request-router.d.ts.map +1 -1
- package/dist/plugin/harness-request-router.js +14 -23
- package/dist/plugin/harness-request-router.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ Harness 是确定性的控制平面,内部 Agent 是受约束的概率执行
|
|
|
13
13
|
- 选择 `harness` Agent 后,使用自然语言发起 `start`、`status`、`resume`、`pause`、`cancel`、`answer`、`waive`、`report` 生命周期操作。
|
|
14
14
|
- 插件只在当前消息的 `agent === "harness"` 时触发 Harness 协调。普通 Agent 和普通聊天不会自动拦截。
|
|
15
15
|
- 自然语言请求先进入内部 Intake Session,转换为严格 JSON intent,再由确定性的 RunController 执行对应操作。
|
|
16
|
-
- `chat.message`
|
|
16
|
+
- `chat.message` 采用两阶段非阻塞流程:前台先返回包含真实 `runId` 和初始状态的 synthetic 受理结果,协调工作在后台运行;后台完成后再向同一父会话补发 Harness 内部完成消息,供 `harness` Agent 做最终总结。
|
|
17
17
|
- 所有内部 Session 显式绑定到 Harness 自有 agent,并同时保留稳定兼容 ID 与英文显示名映射。
|
|
18
18
|
- Git 基线、脏工作区、外部修改、scope drift、merge conflict 与 verification evidence gap 全部由 Controller 的确定性状态机保护,不能被 Agent 自报绕过。
|
|
19
19
|
- 验证命令通过结构化 argv、`shell: false`、工作区包含校验、嵌套解释器/包管理器绕过检查和审批元数据约束执行,不接受 Agent 自报"已通过"替代命令证据。
|
|
@@ -280,7 +280,8 @@ Git 与工作区管理:
|
|
|
280
280
|
### Agent 生命周期管理
|
|
281
281
|
- 支持 `start`、`status`、`resume`、`pause`、`cancel`、`answer`、`waive`、`report` 操作
|
|
282
282
|
- 自然语言请求转换为严格 JSON intent
|
|
283
|
-
-
|
|
283
|
+
- 两阶段非阻塞流程:先返回持久化 Run 的 `runId`,后台协调运行
|
|
284
|
+
- Run 执行期间可在同一或其他 Harness 会话中查询、暂停、取消、恢复或生成报告
|
|
284
285
|
|
|
285
286
|
### 内部 Agent 链
|
|
286
287
|
当前激活链:`Nuwa → Fuxi → Luban → deterministic verification → Zhulong → Yinglong`
|
|
@@ -442,10 +443,22 @@ stateDirectory: .harness/runs
|
|
|
442
443
|
|
|
443
444
|
1. 在 OpenCode 中选择 primary `harness` Agent
|
|
444
445
|
2. 发送自然语言请求,例如:"启动一个 run,目标是实现用户登录功能"
|
|
446
|
+
3. Harness 首轮返回已持久化的 `runId` 和初始状态,规划、实现、验证和验收在后台继续
|
|
447
|
+
|
|
448
|
+
不需要打开或部署独立控制面板。Harness 会话和 `runId` 就是长任务的控制入口:
|
|
449
|
+
|
|
450
|
+
```text
|
|
451
|
+
status <runId>
|
|
452
|
+
pause <runId> 等待人工确认
|
|
453
|
+
resume <runId>
|
|
454
|
+
cancel <runId>
|
|
455
|
+
report <runId>
|
|
456
|
+
```
|
|
445
457
|
|
|
446
458
|
使用要点:
|
|
447
459
|
- `start` 请求必须能被 Intake 提炼成 title、summary、acceptanceCriteria。如果缺少必要信息,Harness 会返回 clarification 响应而不是猜测。
|
|
448
460
|
- `status`、`resume`、`cancel`、`report` 必须显式提供 `runId`。Harness 不会默认选择"最近一次运行"。
|
|
461
|
+
- `status`、`pause`、`cancel`、`resume` 和 `report` 不受父会话后台任务锁阻塞;重复推进同一 Run 不会创建重复内部 Agent Session。
|
|
449
462
|
|
|
450
463
|
### 基本操作
|
|
451
464
|
|
|
@@ -22,9 +22,24 @@ export type AgentSessionRuntime = {
|
|
|
22
22
|
readonly hasActiveSession: (runId: RunId) => boolean;
|
|
23
23
|
readonly isCancelled: (runId: RunId) => boolean;
|
|
24
24
|
readonly markCancelled: (runId: RunId) => void;
|
|
25
|
+
readonly markPaused: (runId: RunId) => void;
|
|
26
|
+
readonly clearInterruption: (runId: RunId) => void;
|
|
25
27
|
readonly listOrphanSessions: () => Promise<readonly OrphanSession[]>;
|
|
26
28
|
readonly rebindSession: (input: RebindSessionInput) => Promise<void>;
|
|
27
29
|
readonly safeAbandonSession: (input: AbandonSessionInput) => Promise<void>;
|
|
30
|
+
readonly reconcileOrphanSessions: (input: {
|
|
31
|
+
readonly runId: RunId;
|
|
32
|
+
readonly actorId: string;
|
|
33
|
+
}) => Promise<OrphanReconciliation>;
|
|
34
|
+
};
|
|
35
|
+
export type OrphanReconciliation = {
|
|
36
|
+
readonly kind: "none";
|
|
37
|
+
} | {
|
|
38
|
+
readonly kind: "rebound";
|
|
39
|
+
readonly sessionIds: readonly string[];
|
|
40
|
+
} | {
|
|
41
|
+
readonly kind: "abandoned";
|
|
42
|
+
readonly sessionIds: readonly string[];
|
|
28
43
|
};
|
|
29
44
|
export type OrphanSession = {
|
|
30
45
|
readonly runId: RunId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/controller/agent-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EAEtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAIxD,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAA;IACtD,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAA;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9D,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IAC/C,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAA;IACpE,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/controller/agent-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { readAgentOutput } from "./agent-output.js";
|
|
2
|
-
import { RunCancellationError } from "./errors.js";
|
|
2
|
+
import { RunCancellationError, RunPausedError } from "./errors.js";
|
|
3
3
|
import { roleSystemPrompt } from "./role-prompts.js";
|
|
4
4
|
export const createAgentSessionRuntime = (input) => {
|
|
5
5
|
const activeSessions = new Map();
|
|
6
|
-
const
|
|
6
|
+
const interruptedRuns = new Map();
|
|
7
7
|
const throwIfCancelled = (runId) => {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const interruption = interruptedRuns.get(runId);
|
|
9
|
+
switch (interruption) {
|
|
10
|
+
case "cancelled":
|
|
11
|
+
throw new RunCancellationError(runId);
|
|
12
|
+
case "paused":
|
|
13
|
+
throw new RunPausedError(runId);
|
|
14
|
+
default:
|
|
15
|
+
return;
|
|
10
16
|
}
|
|
11
17
|
};
|
|
12
18
|
const createPromptInput = (request) => ({
|
|
@@ -138,7 +144,6 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
138
144
|
}
|
|
139
145
|
},
|
|
140
146
|
async abortActiveSession(runId) {
|
|
141
|
-
cancelledRunIds.add(runId);
|
|
142
147
|
const sessions = activeSessions.get(runId);
|
|
143
148
|
if (sessions !== undefined) {
|
|
144
149
|
for (const activeSession of sessions.values()) {
|
|
@@ -154,10 +159,16 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
154
159
|
return (activeSessions.get(runId)?.size ?? 0) > 0;
|
|
155
160
|
},
|
|
156
161
|
isCancelled(runId) {
|
|
157
|
-
return
|
|
162
|
+
return interruptedRuns.get(runId) === "cancelled";
|
|
158
163
|
},
|
|
159
164
|
markCancelled(runId) {
|
|
160
|
-
|
|
165
|
+
interruptedRuns.set(runId, "cancelled");
|
|
166
|
+
},
|
|
167
|
+
markPaused(runId) {
|
|
168
|
+
interruptedRuns.set(runId, "paused");
|
|
169
|
+
},
|
|
170
|
+
clearInterruption(runId) {
|
|
171
|
+
interruptedRuns.delete(runId);
|
|
161
172
|
},
|
|
162
173
|
async listOrphanSessions() {
|
|
163
174
|
return listOrphanSessions();
|
|
@@ -193,6 +204,40 @@ export const createAgentSessionRuntime = (input) => {
|
|
|
193
204
|
reason: session.reason,
|
|
194
205
|
});
|
|
195
206
|
},
|
|
207
|
+
async reconcileOrphanSessions(request) {
|
|
208
|
+
const orphanSessions = (await listOrphanSessions()).filter((session) => session.runId === request.runId);
|
|
209
|
+
if (orphanSessions.length === 0) {
|
|
210
|
+
return { kind: "none" };
|
|
211
|
+
}
|
|
212
|
+
const reboundSessionIds = [];
|
|
213
|
+
const abandonedSessionIds = [];
|
|
214
|
+
for (const orphanSession of orphanSessions) {
|
|
215
|
+
const snapshot = input.sessionAdapter.getSession(orphanSession.sessionId);
|
|
216
|
+
if (snapshot !== undefined && snapshot.role === orphanSession.role) {
|
|
217
|
+
setActiveSession(request.runId, { sessionId: orphanSession.sessionId });
|
|
218
|
+
await appendSessionEvent(request.runId, "session.rebound", orphanSession.sessionId, {
|
|
219
|
+
sessionId: orphanSession.sessionId,
|
|
220
|
+
actorId: request.actorId,
|
|
221
|
+
});
|
|
222
|
+
reboundSessionIds.push(orphanSession.sessionId);
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
const reason = "session unavailable during run recovery";
|
|
226
|
+
await input.sessionAdapter.release({
|
|
227
|
+
sessionId: orphanSession.sessionId,
|
|
228
|
+
reason: `safe-abandon:${reason}`,
|
|
229
|
+
});
|
|
230
|
+
await appendSessionEvent(request.runId, "session.safe-abandoned", orphanSession.sessionId, {
|
|
231
|
+
sessionId: orphanSession.sessionId,
|
|
232
|
+
actorId: request.actorId,
|
|
233
|
+
reason,
|
|
234
|
+
});
|
|
235
|
+
abandonedSessionIds.push(orphanSession.sessionId);
|
|
236
|
+
}
|
|
237
|
+
return abandonedSessionIds.length > 0
|
|
238
|
+
? { kind: "abandoned", sessionIds: abandonedSessionIds }
|
|
239
|
+
: { kind: "rebound", sessionIds: reboundSessionIds };
|
|
240
|
+
},
|
|
196
241
|
};
|
|
197
242
|
};
|
|
198
243
|
const readStringPayload = (payload, key) => {
|
|
@@ -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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"}
|
|
@@ -54,6 +54,7 @@ export type CreateRunControllerOptions = {
|
|
|
54
54
|
};
|
|
55
55
|
export interface RunController {
|
|
56
56
|
start(input: RequirementInput): Promise<Run>;
|
|
57
|
+
advanceRun(runId: RunId): Promise<Run>;
|
|
57
58
|
status(runId: RunId): Promise<Run>;
|
|
58
59
|
pause(input: PauseRunInput): Promise<Run>;
|
|
59
60
|
answer(input: AnswerRunInput): Promise<Run>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/controller/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAElG,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,KAAK,CAAA;IACjC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACjD,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACnD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACpD,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACnD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AAEjE,eAAO,MAAM,gBAAgB,6DAA8D,CAAA;AAE3F,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7D,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAC5C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,gBAAgB,CAAA;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAA;CAC9C,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3C,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACtC"}
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/controller/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,4 +20,9 @@ export declare class RunCancellationError extends Error {
|
|
|
20
20
|
readonly name = "RunCancellationError";
|
|
21
21
|
constructor(runId: string);
|
|
22
22
|
}
|
|
23
|
+
export declare class RunPausedError extends Error {
|
|
24
|
+
readonly runId: string;
|
|
25
|
+
readonly name = "RunPausedError";
|
|
26
|
+
constructor(runId: string);
|
|
27
|
+
}
|
|
23
28
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/controller/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;IAGjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;IAF9C,QAAQ,CAAC,IAAI,0BAAyB;gBAEjB,MAAM,EAAE,SAAS,MAAM,EAAE;CAG/C;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAI1C,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAJ1B,QAAQ,CAAC,IAAI,yBAAwB;gBAG1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM;CAI3B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAI5C,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAJzB,QAAQ,CAAC,IAAI,2BAA0B;gBAG5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,YAAY;CAIzB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAGjC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAFlC,QAAQ,CAAC,IAAI,0BAAyB;gBAEjB,KAAK,EAAE,MAAM;CAGnC"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/controller/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;IAGjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;IAF9C,QAAQ,CAAC,IAAI,0BAAyB;gBAEjB,MAAM,EAAE,SAAS,MAAM,EAAE;CAG/C;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAI1C,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAJ1B,QAAQ,CAAC,IAAI,yBAAwB;gBAG1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM;CAI3B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAI5C,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAJzB,QAAQ,CAAC,IAAI,2BAA0B;gBAG5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,YAAY;CAIzB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAGjC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAFlC,QAAQ,CAAC,IAAI,0BAAyB;gBAEjB,KAAK,EAAE,MAAM;CAGnC;AAED,qBAAa,cAAe,SAAQ,KAAK;IAG3B,QAAQ,CAAC,KAAK,EAAE,MAAM;IAFlC,QAAQ,CAAC,IAAI,oBAAmB;gBAEX,KAAK,EAAE,MAAM;CAGnC"}
|
|
@@ -34,4 +34,12 @@ export class RunCancellationError extends Error {
|
|
|
34
34
|
this.runId = runId;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
export class RunPausedError extends Error {
|
|
38
|
+
runId;
|
|
39
|
+
name = "RunPausedError";
|
|
40
|
+
constructor(runId) {
|
|
41
|
+
super(`run ${runId} was paused`);
|
|
42
|
+
this.runId = runId;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
37
45
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/controller/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAGxB;IAFZ,IAAI,GAAG,sBAAsB,CAAA;IAEtC,YAAqB,MAAyB;QAC5C,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAD/B,WAAM,GAAN,MAAM,CAAmB;IAE9C,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAIjC;IACA;IAJF,IAAI,GAAG,qBAAqB,CAAA;IAErC,YACW,IAAY,EACZ,OAAe;QAExB,KAAK,CAAC,GAAG,IAAI,kBAAkB,OAAO,EAAE,CAAC,CAAA;QAHhC,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;IAG1B,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAInC;IACA;IAJF,IAAI,GAAG,uBAAuB,CAAA;IAEvC,YACW,IAAY,EACZ,MAAc,EACvB,OAAsB;QAEtB,KAAK,CAAC,GAAG,IAAI,iCAAiC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;QAJvD,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;IAIzB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAGxB;IAFZ,IAAI,GAAG,sBAAsB,CAAA;IAEtC,YAAqB,KAAa;QAChC,KAAK,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAA;QADhB,UAAK,GAAL,KAAK,CAAQ;IAElC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/controller/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAGxB;IAFZ,IAAI,GAAG,sBAAsB,CAAA;IAEtC,YAAqB,MAAyB;QAC5C,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAD/B,WAAM,GAAN,MAAM,CAAmB;IAE9C,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAIjC;IACA;IAJF,IAAI,GAAG,qBAAqB,CAAA;IAErC,YACW,IAAY,EACZ,OAAe;QAExB,KAAK,CAAC,GAAG,IAAI,kBAAkB,OAAO,EAAE,CAAC,CAAA;QAHhC,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;IAG1B,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAInC;IACA;IAJF,IAAI,GAAG,uBAAuB,CAAA;IAEvC,YACW,IAAY,EACZ,MAAc,EACvB,OAAsB;QAEtB,KAAK,CAAC,GAAG,IAAI,iCAAiC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;QAJvD,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;IAIzB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAGxB;IAFZ,IAAI,GAAG,sBAAsB,CAAA;IAEtC,YAAqB,KAAa;QAChC,KAAK,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAA;QADhB,UAAK,GAAL,KAAK,CAAQ;IAElC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGlB;IAFZ,IAAI,GAAG,gBAAgB,CAAA;IAEhC,YAAqB,KAAa;QAChC,KAAK,CAAC,OAAO,KAAK,aAAa,CAAC,CAAA;QADb,UAAK,GAAL,KAAK,CAAQ;IAElC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-controller.d.ts","sourceRoot":"","sources":["../../src/controller/run-controller.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"run-controller.d.ts","sourceRoot":"","sources":["../../src/controller/run-controller.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAqC/E,eAAO,MAAM,mBAAmB,GAAI,SAAS,0BAA0B,KAAG,aAkbzE,CAAA"}
|
|
@@ -3,12 +3,12 @@ import { HARNESS_SESSION_ROLE } from "../session/index.js";
|
|
|
3
3
|
import { createGitWorkspaceAdapter } from "../workspace/index.js";
|
|
4
4
|
import { parseAgentJson } from "./agent-output.js";
|
|
5
5
|
import { createAgentSessionRuntime } from "./agent-session.js";
|
|
6
|
-
import { AgentOutputParseError, AgentRunFailedError, GraphValidationError, RunCancellationError, } from "./errors.js";
|
|
6
|
+
import { AgentOutputParseError, AgentRunFailedError, GraphValidationError, RunCancellationError, RunPausedError, } from "./errors.js";
|
|
7
7
|
import { validateTaskGraph } from "./graph-validator.js";
|
|
8
8
|
import { createReport } from "./report-factory.js";
|
|
9
9
|
import { plannerTaskPrompt } from "./role-prompts.js";
|
|
10
10
|
import { createRunPersistence } from "./run-persistence.js";
|
|
11
|
-
import { appendAnswer, appendWaiver, canAnswer, canCancel, canPause, canWaive, consumeBudget, createBlockedQuestionId, createInitialRunBudgets, createInitialRunGovernance, hasAnswer, hasWaiver, isTerminalRunStatus, parsePlannedRun, RunBudgetExceededError, requireTransition, requireWaivableRequirement, setPaused, withGovernance, withStatus, } from "./run-state.js";
|
|
11
|
+
import { appendAnswer, appendWaiver, canAdvanceRun, canAnswer, canCancel, canPause, canWaive, consumeBudget, createBlockedQuestionId, createInitialRunBudgets, createInitialRunGovernance, hasAnswer, hasWaiver, isTerminalRunStatus, parsePlannedRun, RunBudgetExceededError, requireTransition, requireWaivableRequirement, setPaused, withGovernance, withStatus, } from "./run-state.js";
|
|
12
12
|
import { createTaskExecutor } from "./task-executor.js";
|
|
13
13
|
export const createRunController = (options) => {
|
|
14
14
|
const workspacePolicy = options.workspacePolicy ?? { allowDirty: false };
|
|
@@ -20,11 +20,27 @@ export const createRunController = (options) => {
|
|
|
20
20
|
store: options.store,
|
|
21
21
|
workingDirectory: options.workingDirectory,
|
|
22
22
|
});
|
|
23
|
+
const loadRunWithRetry = async (runId) => {
|
|
24
|
+
for (let attempt = 0; attempt < 3; attempt += 1) {
|
|
25
|
+
try {
|
|
26
|
+
return await options.store.loadState(runId);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (!isMissingRunError(error, runId) || attempt === 2) {
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
await waitForNextTurn();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
throw new TypeError(`missing run ${runId}`);
|
|
36
|
+
};
|
|
23
37
|
const { runTasks } = createTaskExecutor({
|
|
24
38
|
options,
|
|
25
39
|
runtime,
|
|
26
40
|
writer,
|
|
41
|
+
loadRun: loadRunWithRetry,
|
|
27
42
|
});
|
|
43
|
+
const advancingRuns = new Map();
|
|
28
44
|
const requestPlan = async (run, requirement) => {
|
|
29
45
|
const maxPlannerAttempts = run.budgets.planner.limit;
|
|
30
46
|
let planningRun = run;
|
|
@@ -54,7 +70,7 @@ export const createRunController = (options) => {
|
|
|
54
70
|
return parsePlannerGraph(output);
|
|
55
71
|
}
|
|
56
72
|
catch (error) {
|
|
57
|
-
if (error instanceof RunBudgetExceededError) {
|
|
73
|
+
if (error instanceof RunBudgetExceededError || error instanceof RunCancellationError) {
|
|
58
74
|
throw error;
|
|
59
75
|
}
|
|
60
76
|
if (!(error instanceof AgentRunFailedError || error instanceof AgentOutputParseError)) {
|
|
@@ -72,21 +88,118 @@ export const createRunController = (options) => {
|
|
|
72
88
|
}
|
|
73
89
|
throw lastError;
|
|
74
90
|
};
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
91
|
+
const persistPlanningState = async (run) => {
|
|
92
|
+
if (run.status === "planning") {
|
|
93
|
+
return run;
|
|
94
|
+
}
|
|
95
|
+
const planning = withStatus(run, "planning");
|
|
96
|
+
await writer.persist(planning, writer.createEvent(run.runId, "run.planning", { status: "planning" }));
|
|
97
|
+
return planning;
|
|
98
|
+
};
|
|
99
|
+
const persistExecutingState = async (run) => {
|
|
100
|
+
const executing = parsePlannedRun({ ...run, status: "executing" });
|
|
101
|
+
await writer.persist(executing, writer.createEvent(executing.runId, "run.executing", { status: "executing" }));
|
|
102
|
+
return executing;
|
|
103
|
+
};
|
|
104
|
+
const continueRun = async (runId) => {
|
|
105
|
+
const current = await loadRunWithRetry(runId);
|
|
106
|
+
if (!canAdvanceRun(current)) {
|
|
107
|
+
return current;
|
|
108
|
+
}
|
|
109
|
+
const reconciliation = await runtime.reconcileOrphanSessions({
|
|
110
|
+
runId,
|
|
111
|
+
actorId: "harness-recovery",
|
|
112
|
+
});
|
|
113
|
+
if (reconciliation.kind === "rebound") {
|
|
114
|
+
return current;
|
|
115
|
+
}
|
|
116
|
+
if (reconciliation.kind === "abandoned") {
|
|
117
|
+
const interrupted = "taskGraph" in current
|
|
118
|
+
? withStatus(current, "paused")
|
|
119
|
+
: withStatus(withGovernance(current, {
|
|
120
|
+
...current.governance,
|
|
121
|
+
blockingQuestionId: createBlockedQuestionId(current),
|
|
122
|
+
}), "clarification_required");
|
|
123
|
+
await writer.persist(interrupted, writer.createEvent(runId, "run.recovery.session_abandoned", {
|
|
124
|
+
sessionIds: reconciliation.sessionIds,
|
|
125
|
+
status: interrupted.status,
|
|
126
|
+
}));
|
|
127
|
+
return interrupted;
|
|
128
|
+
}
|
|
129
|
+
if (current.status === "created" ||
|
|
130
|
+
current.status === "analyzing" ||
|
|
131
|
+
current.status === "planning") {
|
|
132
|
+
const planning = await persistPlanningState(current);
|
|
133
|
+
const graph = await requestPlan(planning, planning.requirement);
|
|
134
|
+
validateTaskGraph(graph, planning.requirement, runId);
|
|
135
|
+
runtime.clearInterruption(runId);
|
|
136
|
+
return await runTasks(await persistExecutingState(parsePlannedRun({
|
|
137
|
+
...planning,
|
|
138
|
+
status: "executing",
|
|
139
|
+
taskGraph: graph,
|
|
140
|
+
})));
|
|
141
|
+
}
|
|
142
|
+
const planned = parsePlannedRun(setPaused(current, null));
|
|
143
|
+
runtime.clearInterruption(runId);
|
|
144
|
+
if (planned.status !== "executing" || current.governance.paused !== null) {
|
|
145
|
+
return await runTasks(await persistExecutingState(planned));
|
|
146
|
+
}
|
|
147
|
+
return await runTasks(planned);
|
|
148
|
+
};
|
|
149
|
+
const finalizeAdvanceError = async (runId, error) => {
|
|
150
|
+
if (error instanceof GraphValidationError ||
|
|
151
|
+
error instanceof AgentRunFailedError ||
|
|
152
|
+
error instanceof AgentOutputParseError ||
|
|
153
|
+
error instanceof RunBudgetExceededError) {
|
|
154
|
+
const latest = await loadRunWithRetry(runId);
|
|
155
|
+
const planning = withStatus(latest, "planning");
|
|
156
|
+
const blocked = withStatus(withGovernance(planning, {
|
|
157
|
+
...planning.governance,
|
|
158
|
+
blockingQuestionId: error instanceof RunBudgetExceededError ? createBlockedQuestionId(planning) : null,
|
|
159
|
+
}), error instanceof RunBudgetExceededError ? "paused" : "failed");
|
|
160
|
+
await writer.persist(blocked, writer.createEvent(runId, error instanceof RunBudgetExceededError ? "run.paused" : "run.failed", {
|
|
161
|
+
reason: error.message,
|
|
162
|
+
...(error instanceof RunBudgetExceededError
|
|
163
|
+
? {
|
|
164
|
+
budget: error.budget,
|
|
165
|
+
blockingQuestionId: blocked.governance.blockingQuestionId,
|
|
166
|
+
}
|
|
167
|
+
: {}),
|
|
168
|
+
}));
|
|
169
|
+
return blocked;
|
|
170
|
+
}
|
|
171
|
+
if (error instanceof RunPausedError) {
|
|
172
|
+
const latest = await loadRunWithRetry(runId);
|
|
173
|
+
if (latest.status === "paused") {
|
|
174
|
+
return latest;
|
|
79
175
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
176
|
+
return withStatus(setPaused(latest, latest.governance.paused), "paused");
|
|
177
|
+
}
|
|
178
|
+
if (error instanceof RunCancellationError) {
|
|
179
|
+
const latest = await loadRunWithRetry(runId);
|
|
180
|
+
if (latest.status === "cancelled") {
|
|
181
|
+
return latest;
|
|
85
182
|
}
|
|
183
|
+
const cancelled = withStatus(latest, "cancelled");
|
|
184
|
+
await writer.persist(cancelled, writer.createEvent(runId, "run.cancelled", { status: "cancelled" }));
|
|
185
|
+
return cancelled;
|
|
86
186
|
}
|
|
87
|
-
throw
|
|
187
|
+
throw error;
|
|
88
188
|
};
|
|
89
|
-
|
|
189
|
+
const advanceRun = async (runId) => {
|
|
190
|
+
const active = advancingRuns.get(runId);
|
|
191
|
+
if (active !== undefined) {
|
|
192
|
+
return active;
|
|
193
|
+
}
|
|
194
|
+
const pending = continueRun(runId)
|
|
195
|
+
.catch(async (error) => finalizeAdvanceError(runId, error))
|
|
196
|
+
.finally(() => {
|
|
197
|
+
advancingRuns.delete(runId);
|
|
198
|
+
});
|
|
199
|
+
advancingRuns.set(runId, pending);
|
|
200
|
+
return pending;
|
|
201
|
+
};
|
|
202
|
+
const controller = {
|
|
90
203
|
async start(input) {
|
|
91
204
|
const requirement = RequirementSchema.parse({ schemaVersion: "1.0.0", ...input });
|
|
92
205
|
const created = RunSchema.parse({
|
|
@@ -124,75 +237,35 @@ export const createRunController = (options) => {
|
|
|
124
237
|
}));
|
|
125
238
|
return blocked;
|
|
126
239
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
validateTaskGraph(graph, requirement, created.runId);
|
|
132
|
-
const executing = parsePlannedRun({ ...planning, status: "executing", taskGraph: graph });
|
|
133
|
-
await writer.persist(executing, writer.createEvent(created.runId, "run.executing", { status: "executing" }));
|
|
134
|
-
return await runTasks(executing);
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
if (error instanceof GraphValidationError ||
|
|
138
|
-
error instanceof AgentRunFailedError ||
|
|
139
|
-
error instanceof AgentOutputParseError ||
|
|
140
|
-
error instanceof RunBudgetExceededError) {
|
|
141
|
-
const failed = withStatus(withGovernance(planning, {
|
|
142
|
-
...planning.governance,
|
|
143
|
-
blockingQuestionId: error instanceof RunBudgetExceededError ? createBlockedQuestionId(planning) : null,
|
|
144
|
-
}), error instanceof RunBudgetExceededError ? "paused" : "failed");
|
|
145
|
-
await writer.persist(failed, writer.createEvent(created.runId, error instanceof RunBudgetExceededError ? "run.paused" : "run.failed", {
|
|
146
|
-
reason: error.message,
|
|
147
|
-
...(error instanceof RunBudgetExceededError
|
|
148
|
-
? {
|
|
149
|
-
budget: error.budget,
|
|
150
|
-
blockingQuestionId: failed.governance.blockingQuestionId,
|
|
151
|
-
}
|
|
152
|
-
: {}),
|
|
153
|
-
}));
|
|
154
|
-
if (error instanceof RunBudgetExceededError) {
|
|
155
|
-
return failed;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
if (error instanceof RunCancellationError) {
|
|
159
|
-
const latest = await options.store.loadState(created.runId);
|
|
160
|
-
if (latest.status === "cancelled") {
|
|
161
|
-
return latest;
|
|
162
|
-
}
|
|
163
|
-
const cancelled = withStatus(latest, "cancelled");
|
|
164
|
-
await writer.persist(cancelled, writer.createEvent(created.runId, "run.cancelled", { status: "cancelled" }));
|
|
165
|
-
return cancelled;
|
|
166
|
-
}
|
|
167
|
-
throw error;
|
|
168
|
-
}
|
|
240
|
+
return created;
|
|
241
|
+
},
|
|
242
|
+
async advanceRun(runId) {
|
|
243
|
+
return advanceRun(runId);
|
|
169
244
|
},
|
|
170
245
|
async status(runId) {
|
|
171
246
|
return loadRunWithRetry(runId);
|
|
172
247
|
},
|
|
173
248
|
async pause(input) {
|
|
174
249
|
const current = await loadRunWithRetry(input.runId);
|
|
175
|
-
if (current.status === "paused") {
|
|
176
|
-
return current;
|
|
177
|
-
}
|
|
178
|
-
if (isTerminalRunStatus(current)) {
|
|
250
|
+
if (current.status === "paused" || isTerminalRunStatus(current)) {
|
|
179
251
|
return current;
|
|
180
252
|
}
|
|
181
253
|
requireTransition(current, "pause", canPause);
|
|
182
|
-
await runtime.abortActiveSession(input.runId);
|
|
183
|
-
const pausedAt = options.clock.now().toISOString();
|
|
184
254
|
const paused = withStatus(setPaused(current, {
|
|
185
255
|
pauseId: options.ids.createEventId(`pause-${input.runId}`),
|
|
186
256
|
actor: input.actor,
|
|
187
257
|
reason: input.reason,
|
|
188
|
-
pausedAt,
|
|
258
|
+
pausedAt: options.clock.now().toISOString(),
|
|
189
259
|
}), "paused");
|
|
260
|
+
runtime.markPaused(input.runId);
|
|
190
261
|
await writer.persist(paused, writer.createEvent(input.runId, "run.paused", {
|
|
191
262
|
pauseId: paused.governance.paused?.pauseId ?? null,
|
|
192
263
|
actor: input.actor,
|
|
193
264
|
reason: input.reason,
|
|
194
265
|
}));
|
|
195
|
-
|
|
266
|
+
await runtime.abortActiveSession(input.runId);
|
|
267
|
+
const latest = await loadRunWithRetry(input.runId);
|
|
268
|
+
return latest.status === "paused" ? latest : paused;
|
|
196
269
|
},
|
|
197
270
|
async answer(input) {
|
|
198
271
|
const current = await loadRunWithRetry(input.runId);
|
|
@@ -200,13 +273,12 @@ export const createRunController = (options) => {
|
|
|
200
273
|
return current;
|
|
201
274
|
}
|
|
202
275
|
requireTransition(current, "answer", canAnswer);
|
|
203
|
-
const answeredAt = options.clock.now().toISOString();
|
|
204
276
|
const updated = withStatus(appendAnswer(current, {
|
|
205
277
|
answerId: options.ids.createEventId(`answer-${input.questionId}`),
|
|
206
278
|
questionId: input.questionId,
|
|
207
279
|
answer: input.answer,
|
|
208
280
|
actor: input.actor,
|
|
209
|
-
answeredAt,
|
|
281
|
+
answeredAt: options.clock.now().toISOString(),
|
|
210
282
|
}), "planning");
|
|
211
283
|
await writer.persist(updated, writer.createEvent(input.runId, "run.answered", {
|
|
212
284
|
answerId: updated.governance.answers.at(-1)?.answerId ?? null,
|
|
@@ -221,37 +293,30 @@ export const createRunController = (options) => {
|
|
|
221
293
|
case "completed":
|
|
222
294
|
case "cancelled":
|
|
223
295
|
case "failed":
|
|
296
|
+
case "clarification_required":
|
|
224
297
|
return run;
|
|
225
298
|
case "created":
|
|
226
299
|
case "analyzing":
|
|
227
300
|
case "planning":
|
|
228
|
-
case "clarification_required":
|
|
229
|
-
return run;
|
|
230
301
|
case "plan_ready":
|
|
231
302
|
case "executing":
|
|
232
303
|
case "verifying":
|
|
233
304
|
case "paused":
|
|
234
|
-
|
|
235
|
-
return run;
|
|
236
|
-
}
|
|
237
|
-
return "taskGraph" in run ? await runTasks(parsePlannedRun(setPaused(run, null))) : run;
|
|
305
|
+
return advanceRun(runId);
|
|
238
306
|
default:
|
|
239
307
|
return run;
|
|
240
308
|
}
|
|
241
309
|
},
|
|
242
310
|
async cancel(runId) {
|
|
243
311
|
const current = await loadRunWithRetry(runId);
|
|
244
|
-
if (current
|
|
245
|
-
current.status === "cancelled" ||
|
|
246
|
-
current.status === "failed") {
|
|
312
|
+
if (isTerminalRunStatus(current)) {
|
|
247
313
|
return current;
|
|
248
314
|
}
|
|
249
315
|
requireTransition(current, "cancel", canCancel);
|
|
316
|
+
runtime.markCancelled(runId);
|
|
250
317
|
await runtime.abortActiveSession(runId);
|
|
251
318
|
const latest = await loadRunWithRetry(runId);
|
|
252
|
-
if (latest
|
|
253
|
-
latest.status === "cancelled" ||
|
|
254
|
-
latest.status === "failed") {
|
|
319
|
+
if (isTerminalRunStatus(latest)) {
|
|
255
320
|
return latest;
|
|
256
321
|
}
|
|
257
322
|
const cancelled = withStatus(latest, "cancelled");
|
|
@@ -282,6 +347,7 @@ export const createRunController = (options) => {
|
|
|
282
347
|
return createReport(run, options.clock);
|
|
283
348
|
},
|
|
284
349
|
};
|
|
350
|
+
return controller;
|
|
285
351
|
};
|
|
286
352
|
const parsePlannerGraph = (text) => parseAgentJson(text, TaskGraphSchema, "planner");
|
|
287
353
|
const waitForNextTurn = async () => await new Promise((resolve) => {
|