harness-engineering-agent 0.3.27 → 0.3.29
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 +3 -0
- package/dist/controller/agent-output-contracts.d.ts +16 -0
- package/dist/controller/agent-output-contracts.d.ts.map +1 -1
- package/dist/controller/agent-output.d.ts.map +1 -1
- package/dist/controller/agent-output.js +48 -1
- package/dist/controller/agent-output.js.map +1 -1
- package/dist/controller/agent-session.d.ts +2 -0
- package/dist/controller/agent-session.d.ts.map +1 -1
- package/dist/controller/agent-session.js +1 -0
- package/dist/controller/agent-session.js.map +1 -1
- package/dist/controller/contracts.d.ts +7 -0
- package/dist/controller/contracts.d.ts.map +1 -1
- package/dist/controller/contracts.js.map +1 -1
- package/dist/controller/failure-classification.d.ts +5 -0
- package/dist/controller/failure-classification.d.ts.map +1 -0
- package/dist/controller/failure-classification.js +6 -0
- package/dist/controller/failure-classification.js.map +1 -0
- package/dist/controller/index.d.ts +5 -0
- package/dist/controller/index.d.ts.map +1 -1
- package/dist/controller/index.js +5 -0
- package/dist/controller/index.js.map +1 -1
- package/dist/controller/planner-context-contract.d.ts +12 -0
- package/dist/controller/planner-context-contract.d.ts.map +1 -1
- package/dist/controller/route-resolver.d.ts.map +1 -1
- package/dist/controller/route-resolver.js +19 -8
- package/dist/controller/route-resolver.js.map +1 -1
- package/dist/controller/run-controller.d.ts.map +1 -1
- package/dist/controller/run-controller.js +110 -9
- package/dist/controller/run-controller.js.map +1 -1
- package/dist/controller/run-error-finalizer.d.ts +15 -0
- package/dist/controller/run-error-finalizer.d.ts.map +1 -1
- package/dist/controller/run-error-finalizer.js +103 -4
- package/dist/controller/run-error-finalizer.js.map +1 -1
- package/dist/controller/run-lease.d.ts +26 -0
- package/dist/controller/run-lease.d.ts.map +1 -0
- package/dist/controller/run-lease.js +63 -0
- package/dist/controller/run-lease.js.map +1 -0
- package/dist/controller/run-persistence.d.ts +1 -1
- package/dist/controller/run-persistence.d.ts.map +1 -1
- package/dist/controller/run-persistence.js +14 -12
- package/dist/controller/run-persistence.js.map +1 -1
- package/dist/controller/run-stage-projection.d.ts +64 -0
- package/dist/controller/run-stage-projection.d.ts.map +1 -0
- package/dist/controller/run-stage-projection.js +184 -0
- package/dist/controller/run-stage-projection.js.map +1 -0
- package/dist/controller/run-watchdog.d.ts +36 -0
- package/dist/controller/run-watchdog.d.ts.map +1 -0
- package/dist/controller/run-watchdog.js +124 -0
- package/dist/controller/run-watchdog.js.map +1 -0
- package/dist/controller/task-agent-schemas.d.ts +20 -0
- package/dist/controller/task-agent-schemas.d.ts.map +1 -1
- package/dist/controller/task-executor.d.ts.map +1 -1
- package/dist/controller/task-executor.js +22 -0
- package/dist/controller/task-executor.js.map +1 -1
- package/dist/controller/task-graph-contract.d.ts +1 -0
- package/dist/controller/task-graph-contract.d.ts.map +1 -1
- package/dist/controller/task-graph-contract.js +1 -0
- package/dist/controller/task-graph-contract.js.map +1 -1
- package/dist/domain/context-package.d.ts +4 -0
- package/dist/domain/context-package.d.ts.map +1 -1
- package/dist/domain/context-package.js +8 -0
- package/dist/domain/context-package.js.map +1 -1
- package/dist/domain/failure.d.ts +100 -0
- package/dist/domain/failure.d.ts.map +1 -1
- package/dist/domain/failure.js +9 -0
- package/dist/domain/failure.js.map +1 -1
- package/dist/domain/index.d.ts +1 -1
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +1 -1
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/plan-artifacts.d.ts +8 -0
- package/dist/domain/plan-artifacts.d.ts.map +1 -1
- package/dist/domain/report.d.ts +232 -0
- package/dist/domain/report.d.ts.map +1 -1
- package/dist/domain/requirement.d.ts +17 -0
- package/dist/domain/requirement.d.ts.map +1 -1
- package/dist/domain/requirement.js +10 -0
- package/dist/domain/requirement.js.map +1 -1
- package/dist/domain/run.d.ts +232 -0
- package/dist/domain/run.d.ts.map +1 -1
- package/dist/plugin/create-harness-plugin.d.ts.map +1 -1
- package/dist/plugin/create-harness-plugin.js +35 -6
- package/dist/plugin/create-harness-plugin.js.map +1 -1
- package/dist/plugin/harness-chat-hook.d.ts +2 -1
- package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
- package/dist/plugin/harness-chat-hook.js +15 -16
- package/dist/plugin/harness-chat-hook.js.map +1 -1
- package/dist/plugin/harness-delivery-envelope.d.ts +19 -0
- package/dist/plugin/harness-delivery-envelope.d.ts.map +1 -0
- package/dist/plugin/harness-delivery-envelope.js +105 -0
- package/dist/plugin/harness-delivery-envelope.js.map +1 -0
- package/dist/plugin/harness-escalate-tool.d.ts +2 -1
- package/dist/plugin/harness-escalate-tool.d.ts.map +1 -1
- package/dist/plugin/harness-escalate-tool.js +11 -2
- package/dist/plugin/harness-escalate-tool.js.map +1 -1
- package/dist/plugin/harness-intent.d.ts +12 -0
- package/dist/plugin/harness-intent.d.ts.map +1 -1
- package/dist/plugin/harness-intent.js +2 -1
- package/dist/plugin/harness-intent.js.map +1 -1
- package/dist/plugin/harness-plugin-runtime.d.ts +2 -0
- package/dist/plugin/harness-plugin-runtime.d.ts.map +1 -1
- package/dist/plugin/harness-plugin-runtime.js +40 -7
- package/dist/plugin/harness-plugin-runtime.js.map +1 -1
- package/dist/plugin/harness-plugin-scheduler.d.ts +7 -2
- package/dist/plugin/harness-plugin-scheduler.d.ts.map +1 -1
- package/dist/plugin/harness-plugin-scheduler.js +16 -14
- package/dist/plugin/harness-plugin-scheduler.js.map +1 -1
- package/dist/plugin/harness-requirement.d.ts.map +1 -1
- package/dist/plugin/harness-requirement.js +4 -0
- package/dist/plugin/harness-requirement.js.map +1 -1
- package/dist/plugin/harness-run-status-tool.d.ts +7 -0
- package/dist/plugin/harness-run-status-tool.d.ts.map +1 -0
- package/dist/plugin/harness-run-status-tool.js +33 -0
- package/dist/plugin/harness-run-status-tool.js.map +1 -0
- package/dist/store/filesystem-run-store.js +5 -0
- package/dist/store/filesystem-run-store.js.map +1 -1
- package/dist/store/pending-start.d.ts +4 -0
- package/dist/store/pending-start.d.ts.map +1 -1
- package/dist/store/run-event.d.ts +232 -0
- package/dist/store/run-event.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-chat-hook.js","sourceRoot":"","sources":["../../src/plugin/harness-chat-hook.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,4BAA4B,GAC7B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,+BAA+B,EAC/B
|
|
1
|
+
{"version":3,"file":"harness-chat-hook.js","sourceRoot":"","sources":["../../src/plugin/harness-chat-hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HarnessCoordinatorResponse } from "./harness-coordinator.js";
|
|
2
|
+
export type HarnessDeliveryEnvelope = {
|
|
3
|
+
/** Agent 间私有通道:HARNESS_* 协议标记 + 原始回执 JSON,禁止进入用户可见通道 */
|
|
4
|
+
readonly agentChannel: string;
|
|
5
|
+
/** 用户可见通道:仅承载渲染后的自然语言摘要 */
|
|
6
|
+
readonly userChannel: string;
|
|
7
|
+
};
|
|
8
|
+
/** 回执投递双通道信封:协议负载与用户可见摘要分离。 */
|
|
9
|
+
export declare const createSuccessDeliveryEnvelope: (response: HarnessCoordinatorResponse) => HarnessDeliveryEnvelope;
|
|
10
|
+
export declare const createFailureDeliveryEnvelope: (message: string) => HarnessDeliveryEnvelope;
|
|
11
|
+
export declare const createProgressDeliveryEnvelope: (response: HarnessCoordinatorResponse) => HarnessDeliveryEnvelope;
|
|
12
|
+
export declare const createBusyDuplicateEnvelope: (deliveryStatus: "busy" | "duplicate", runId?: string) => HarnessDeliveryEnvelope;
|
|
13
|
+
/**
|
|
14
|
+
* 静默剥离用户消息中误粘贴的 HARNESS_* 协议标记与其后的协议 JSON 负载;
|
|
15
|
+
* 剥离结果按普通上下文处理,不向用户回显协议解析细节。
|
|
16
|
+
*/
|
|
17
|
+
export declare const stripProtocolPayload: (inputText: string) => string;
|
|
18
|
+
export declare const containsHarnessProtocolPayload: (inputText: string) => boolean;
|
|
19
|
+
//# sourceMappingURL=harness-delivery-envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-delivery-envelope.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-delivery-envelope.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAE1E,MAAM,MAAM,uBAAuB,GAAG;IACpC,wDAAwD;IACxD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,+BAA+B;AAC/B,eAAO,MAAM,6BAA6B,GACxC,UAAU,0BAA0B,KACnC,uBAGD,CAAA;AAEF,eAAO,MAAM,6BAA6B,GAAI,SAAS,MAAM,KAAG,uBAG9D,CAAA;AAEF,eAAO,MAAM,8BAA8B,GACzC,UAAU,0BAA0B,KACnC,uBAGD,CAAA;AAOF,eAAO,MAAM,2BAA2B,GACtC,gBAAgB,MAAM,GAAG,WAAW,EACpC,QAAQ,MAAM,KACb,uBAGD,CAAA;AAiEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,KAAG,MAoBxD,CAAA;AAED,eAAO,MAAM,8BAA8B,GAAI,WAAW,MAAM,KAAG,OAClB,CAAA"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { createInternalCompletionMessage, createInternalFailureMessage, } from "./harness-chat-protocol.js";
|
|
2
|
+
/** 回执投递双通道信封:协议负载与用户可见摘要分离。 */
|
|
3
|
+
export const createSuccessDeliveryEnvelope = (response) => ({
|
|
4
|
+
agentChannel: createInternalCompletionMessage(response),
|
|
5
|
+
userChannel: renderUserSummary(response),
|
|
6
|
+
});
|
|
7
|
+
export const createFailureDeliveryEnvelope = (message) => ({
|
|
8
|
+
agentChannel: createInternalFailureMessage(message),
|
|
9
|
+
userChannel: renderFailureSummary(message),
|
|
10
|
+
});
|
|
11
|
+
export const createProgressDeliveryEnvelope = (response) => ({
|
|
12
|
+
agentChannel: createInternalCompletionMessage(response),
|
|
13
|
+
userChannel: renderUserSummary(response, true),
|
|
14
|
+
});
|
|
15
|
+
const busyDuplicatePhrase = (deliveryStatus) => deliveryStatus === "busy"
|
|
16
|
+
? "当前会话已有工程任务在后台处理中,请等待其完成后再提交新任务。"
|
|
17
|
+
: "该工程任务已提交,正在后台处理中,请勿重复提交。";
|
|
18
|
+
export const createBusyDuplicateEnvelope = (deliveryStatus, runId) => ({
|
|
19
|
+
agentChannel: busyDuplicatePayload(deliveryStatus, runId),
|
|
20
|
+
userChannel: busyDuplicatePhrase(deliveryStatus),
|
|
21
|
+
});
|
|
22
|
+
const busyDuplicatePayload = (deliveryStatus, runId) => {
|
|
23
|
+
const marker = "<!-- HARNESS_INTERNAL_RESULT -->";
|
|
24
|
+
return `${marker}\n${JSON.stringify({
|
|
25
|
+
schemaVersion: "1.0.0",
|
|
26
|
+
kind: "background-result",
|
|
27
|
+
deliveryStatus,
|
|
28
|
+
...(runId === undefined ? {} : { runId }),
|
|
29
|
+
})}`;
|
|
30
|
+
};
|
|
31
|
+
const statusPhrase = (status, isProgress) => {
|
|
32
|
+
if (isProgress)
|
|
33
|
+
return `任务仍在后台推进(当前阶段:${status})。`;
|
|
34
|
+
switch (status) {
|
|
35
|
+
case "completed":
|
|
36
|
+
return "任务已完成。";
|
|
37
|
+
case "failed":
|
|
38
|
+
return "任务未完成,已停止执行。";
|
|
39
|
+
case "paused":
|
|
40
|
+
return "任务已暂停,可提供补充信息后恢复。";
|
|
41
|
+
case "cancelled":
|
|
42
|
+
return "任务已取消。";
|
|
43
|
+
case "clarification_required":
|
|
44
|
+
return "任务需要补充业务信息后才能继续。";
|
|
45
|
+
case "evidence_gap":
|
|
46
|
+
return "任务存在证据缺口,需要补充证据后继续。";
|
|
47
|
+
case "blocked":
|
|
48
|
+
case "env_blocked":
|
|
49
|
+
return "任务当前受阻,需要先处理环境或信息问题。";
|
|
50
|
+
default:
|
|
51
|
+
return `任务仍在后台处理中(当前阶段:${status})。`;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const renderUserSummary = (response, isProgress = false) => {
|
|
55
|
+
if (response.kind === "clarification") {
|
|
56
|
+
return response.message;
|
|
57
|
+
}
|
|
58
|
+
if (response.kind === "report") {
|
|
59
|
+
return "运行报告已生成,请查看报告内容。";
|
|
60
|
+
}
|
|
61
|
+
const run = response.run;
|
|
62
|
+
const lines = [`${statusPhrase(run.status, isProgress)}(runId:${run.runId})`];
|
|
63
|
+
const failure = run.failures.at(-1);
|
|
64
|
+
if (failure !== undefined && ["failed", "paused"].includes(run.status)) {
|
|
65
|
+
lines.push(`失败摘要:${failure.summary}`);
|
|
66
|
+
}
|
|
67
|
+
const nextActions = run.blockingDetails !== undefined
|
|
68
|
+
? run.blockingDetails.nextActions
|
|
69
|
+
: failure?.category === "planner-contract"
|
|
70
|
+
? ["修复契约对齐后执行 resume"]
|
|
71
|
+
: [];
|
|
72
|
+
if (nextActions.length > 0) {
|
|
73
|
+
lines.push(`下一步:${nextActions.join(";")}`);
|
|
74
|
+
}
|
|
75
|
+
return lines.join("\n");
|
|
76
|
+
};
|
|
77
|
+
const renderFailureSummary = (message) => `后台任务处理失败:${message}\n可稍后重试或使用 run_status 查询最近一次运行状态。`;
|
|
78
|
+
const HARNESS_MARKER_PATTERN = /^<!--\s*HARNESS_[A-Z_]+\s*-->\s*$/u;
|
|
79
|
+
/**
|
|
80
|
+
* 静默剥离用户消息中误粘贴的 HARNESS_* 协议标记与其后的协议 JSON 负载;
|
|
81
|
+
* 剥离结果按普通上下文处理,不向用户回显协议解析细节。
|
|
82
|
+
*/
|
|
83
|
+
export const stripProtocolPayload = (inputText) => {
|
|
84
|
+
const lines = inputText.split("\n");
|
|
85
|
+
const cleanedLines = [];
|
|
86
|
+
let stripping = false;
|
|
87
|
+
for (const line of lines) {
|
|
88
|
+
if (HARNESS_MARKER_PATTERN.test(line.trim())) {
|
|
89
|
+
stripping = true;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (stripping) {
|
|
93
|
+
// 标记之后的协议 JSON 负载一并静默剥离;遇到普通自然语言行则恢复
|
|
94
|
+
const trimmed = line.trim();
|
|
95
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("}") || trimmed.startsWith('"')) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
stripping = false;
|
|
99
|
+
}
|
|
100
|
+
cleanedLines.push(line);
|
|
101
|
+
}
|
|
102
|
+
return cleanedLines.join("\n").trim();
|
|
103
|
+
};
|
|
104
|
+
export const containsHarnessProtocolPayload = (inputText) => /<!--\s*HARNESS_[A-Z_]+\s*-->/u.test(inputText);
|
|
105
|
+
//# sourceMappingURL=harness-delivery-envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-delivery-envelope.js","sourceRoot":"","sources":["../../src/plugin/harness-delivery-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { ToolDefinition } from "@opencode-ai/plugin";
|
|
2
2
|
import { type SessionGuards } from "./harness-chat-hook.js";
|
|
3
3
|
import type { HarnessCoordinator } from "./harness-coordinator.js";
|
|
4
|
+
import type { HarnessDeliveryEnvelope } from "./harness-delivery-envelope.js";
|
|
4
5
|
export declare const HARNESS_ESCALATE_TOOL_NAME: "harness_escalate";
|
|
5
6
|
export declare const createHarnessEscalateTool: (input: {
|
|
6
7
|
readonly coordinator: HarnessCoordinator;
|
|
7
8
|
readonly guards: SessionGuards;
|
|
8
9
|
readonly deliverInternalResult: (input: {
|
|
9
10
|
readonly sessionID: string;
|
|
10
|
-
readonly
|
|
11
|
+
readonly envelope: HarnessDeliveryEnvelope;
|
|
11
12
|
}) => Promise<void>;
|
|
12
13
|
}) => ToolDefinition;
|
|
13
14
|
//# sourceMappingURL=harness-escalate-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-escalate-tool.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-escalate-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAItE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"harness-escalate-tool.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-escalate-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAItE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAG7E,eAAO,MAAM,0BAA0B,EAAG,kBAA2B,CAAA;AAErE,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAC/C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE;QACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAA;KAC3C,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpB,KAAG,cA2CA,CAAA"}
|
|
@@ -8,18 +8,27 @@ export const createHarnessEscalateTool = (input) => tool({
|
|
|
8
8
|
args: {
|
|
9
9
|
request: tool.schema.string().min(1),
|
|
10
10
|
reason: tool.schema.string().min(1).optional(),
|
|
11
|
+
hypotheses: tool.schema
|
|
12
|
+
.array(tool.schema.string().min(1))
|
|
13
|
+
.describe("未经验证的判断假设列表(可选)。已通过验证命令确认的事实应写进 request 正文,只有未核实的推测才放入此列表。")
|
|
14
|
+
.optional(),
|
|
11
15
|
},
|
|
12
16
|
execute: async (args, context) => {
|
|
13
17
|
assertPrimary(context);
|
|
14
18
|
const request = args.reason === undefined ? args.request : `${args.request}\n移交原因:${args.reason}`;
|
|
19
|
+
const withHypotheses = args.hypotheses === undefined || args.hypotheses.length === 0
|
|
20
|
+
? request
|
|
21
|
+
: `${request}\n\n待核实假设(未经证实,规划时须逐条核实,证伪结论需记录):\n${args.hypotheses
|
|
22
|
+
.map((claim, index) => `${index + 1}. ${claim}`)
|
|
23
|
+
.join("\n")}`;
|
|
15
24
|
const result = admitHarnessRequest({
|
|
16
25
|
coordinator: input.coordinator,
|
|
17
26
|
guards: input.guards,
|
|
18
27
|
deliverInternalResult: input.deliverInternalResult,
|
|
19
28
|
sessionID: context.sessionID,
|
|
20
29
|
messageID: context.messageID,
|
|
21
|
-
inputText:
|
|
22
|
-
routeDecision: classifyHarnessRequest(
|
|
30
|
+
inputText: withHypotheses,
|
|
31
|
+
routeDecision: classifyHarnessRequest(withHypotheses),
|
|
23
32
|
});
|
|
24
33
|
return {
|
|
25
34
|
title: "Harness 工程任务移交",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-escalate-tool.js","sourceRoot":"","sources":["../../src/plugin/harness-escalate-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"harness-escalate-tool.js","sourceRoot":"","sources":["../../src/plugin/harness-escalate-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAA;AAGhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAA2B,CAAA;AAErE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAOzC,EAAkB,EAAE,CACnB,IAAI,CAAC;IACH,WAAW,EACT,8DAA8D;IAChE,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC9C,UAAU,EAAE,IAAI,CAAC,MAAM;aACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAClC,QAAQ,CACP,4DAA4D,CAC7D;aACA,QAAQ,EAAE;KACd;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC/B,aAAa,CAAC,OAAO,CAAC,CAAA;QACtB,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,CAAA;QACnF,MAAM,cAAc,GAClB,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAC3D,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,GAAG,OAAO,sCAAsC,IAAI,CAAC,UAAU;iBAC5D,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;iBAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACrB,MAAM,MAAM,GAAG,mBAAmB,CAAC;YACjC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,cAAc;YACzB,aAAa,EAAE,sBAAsB,CAAC,cAAc,CAAC;SACtD,CAAC,CAAA;QACF,OAAO;YACL,KAAK,EAAE,gBAAgB;YACvB,MAAM,EACJ,MAAM,KAAK,MAAM;gBACf,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,MAAM,KAAK,WAAW;oBACtB,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,gDAAgD;SACzD,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEJ,MAAM,aAAa,GAAG,CAAC,OAAoB,EAAQ,EAAE;IACnD,IAAI,OAAO,CAAC,KAAK,KAAK,0BAA0B,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IACtE,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -43,6 +43,10 @@ declare const IntakeRequirementSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
43
43
|
routingRationale: z.ZodString;
|
|
44
44
|
rejudgementTriggers: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
45
45
|
}, z.core.$strict>>>;
|
|
46
|
+
hypotheses: z.ZodOptional<z.ZodArray<z.ZodReadonly<z.ZodObject<{
|
|
47
|
+
claim: z.ZodString;
|
|
48
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
49
|
+
}, z.core.$strict>>>>;
|
|
46
50
|
targetRepository: z.ZodOptional<z.ZodString>;
|
|
47
51
|
workspaceMutation: z.ZodOptional<z.ZodEnum<{
|
|
48
52
|
allowed: "allowed";
|
|
@@ -95,6 +99,10 @@ declare const StartIntentSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
95
99
|
routingRationale: z.ZodString;
|
|
96
100
|
rejudgementTriggers: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
97
101
|
}, z.core.$strict>>>;
|
|
102
|
+
hypotheses: z.ZodOptional<z.ZodArray<z.ZodReadonly<z.ZodObject<{
|
|
103
|
+
claim: z.ZodString;
|
|
104
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
105
|
+
}, z.core.$strict>>>>;
|
|
98
106
|
targetRepository: z.ZodOptional<z.ZodString>;
|
|
99
107
|
workspaceMutation: z.ZodOptional<z.ZodEnum<{
|
|
100
108
|
allowed: "allowed";
|
|
@@ -148,6 +156,10 @@ export declare const HarnessIntentSchema: z.ZodDiscriminatedUnion<[z.ZodReadonly
|
|
|
148
156
|
routingRationale: z.ZodString;
|
|
149
157
|
rejudgementTriggers: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
150
158
|
}, z.core.$strict>>>;
|
|
159
|
+
hypotheses: z.ZodOptional<z.ZodArray<z.ZodReadonly<z.ZodObject<{
|
|
160
|
+
claim: z.ZodString;
|
|
161
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
162
|
+
}, z.core.$strict>>>>;
|
|
151
163
|
targetRepository: z.ZodOptional<z.ZodString>;
|
|
152
164
|
workspaceMutation: z.ZodOptional<z.ZodEnum<{
|
|
153
165
|
allowed: "allowed";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-intent.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAwBvB,QAAA,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"harness-intent.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAwBvB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAuBhB,CAAA;AAEb,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAMV,CAAA;AAsDb,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAU9B,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { ComplexityAssessmentSchema, RunIdSchema } from "../domain/index.js";
|
|
2
|
+
import { ComplexityAssessmentSchema, HypothesisSchema, RunIdSchema } from "../domain/index.js";
|
|
3
3
|
import { RequirementIdSchema, WorkspaceMutationSchema } from "../domain/shared.js";
|
|
4
4
|
const ActorSchema = z
|
|
5
5
|
.object({
|
|
@@ -36,6 +36,7 @@ const IntakeRequirementSchema = z
|
|
|
36
36
|
.readonly()
|
|
37
37
|
.optional(),
|
|
38
38
|
taskSchedulingAnalysis: TaskSchedulingAnalysisSchema.optional(),
|
|
39
|
+
hypotheses: z.array(HypothesisSchema).optional(),
|
|
39
40
|
targetRepository: z.string().trim().min(1).optional(),
|
|
40
41
|
workspaceMutation: WorkspaceMutationSchema.optional(),
|
|
41
42
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-intent.js","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"harness-intent.js","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ type DefaultControllerInput = {
|
|
|
16
16
|
readonly verificationRunner: VerificationRunner;
|
|
17
17
|
readonly clock: ControllerClock;
|
|
18
18
|
readonly ids: ControllerIdSource;
|
|
19
|
+
readonly onAgentSettled?: (runId: string, role: string, status: "completed" | "failed") => void;
|
|
19
20
|
};
|
|
20
21
|
export type HarnessPluginDependencies = {
|
|
21
22
|
readonly loadConfig?: (projectRoot: string) => Promise<HarnessConfig>;
|
|
@@ -37,6 +38,7 @@ export type HarnessPluginRuntime = {
|
|
|
37
38
|
readonly researchClients?: ResearchClients;
|
|
38
39
|
readonly sessionGuards?: SessionGuards;
|
|
39
40
|
readonly sessionAdapter?: SessionAdapter;
|
|
41
|
+
readonly store?: RunStore;
|
|
40
42
|
};
|
|
41
43
|
export type CreateHarnessCoordinatorOptions = CoordinatorOptions;
|
|
42
44
|
export declare const createRuntime: ({ client, input, dependencies, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-plugin-runtime.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-plugin-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"harness-plugin-runtime.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-plugin-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { createLspClient } from "../tools/lsp-client.js";
|
|
|
10
10
|
import { createNodeProcessRunner, createVerificationRunner, } from "../verification/index.js";
|
|
11
11
|
import { createHarnessCoordinator, } from "./harness-coordinator.js";
|
|
12
12
|
import { createHarnessIdSource, resolveHarnessProjectRoot } from "./harness-plugin-identifiers.js";
|
|
13
|
-
import { createHarnessPluginScheduler } from "./harness-plugin-scheduler.js";
|
|
13
|
+
import { createHarnessPluginScheduler, } from "./harness-plugin-scheduler.js";
|
|
14
14
|
const HARNESS_RESEARCH_ROLE_PAIRS = [
|
|
15
15
|
[HARNESS_SESSION_ROLE.intake, HARNESS_ROLE_TO_AGENT_NAME.intake],
|
|
16
16
|
[HARNESS_SESSION_ROLE.planner, HARNESS_ROLE_TO_AGENT_NAME.planner],
|
|
@@ -47,6 +47,26 @@ export const createRuntime = async ({ client, input, dependencies, }) => {
|
|
|
47
47
|
completedAdmissionKeys: new Set(),
|
|
48
48
|
internalSessionIds: new Set(),
|
|
49
49
|
};
|
|
50
|
+
// 阶段推进闭环:子 agent 会话 settle 后,若该 run 无在途 advancement 且非终态则重踢推进。
|
|
51
|
+
// scheduler 在 controller 之后创建,这里用可变引用承接。
|
|
52
|
+
let scheduleAdvanceRef;
|
|
53
|
+
const kickAgentSettled = (runId) => {
|
|
54
|
+
const schedule = scheduleAdvanceRef;
|
|
55
|
+
if (schedule === undefined)
|
|
56
|
+
return;
|
|
57
|
+
const sessionID = [...sessionGuards.activeRunIdsBySession.entries()].find(([, mappedRunId]) => mappedRunId === runId)?.[0];
|
|
58
|
+
if (sessionID !== undefined) {
|
|
59
|
+
schedule({ sessionID, runId: runId });
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// 无宿主会话可投递进度时,仍以保证推进为目的:直接走带守卫的推进
|
|
63
|
+
const existing = sessionGuards.inFlightAdvancements.get(runId);
|
|
64
|
+
if (existing !== undefined)
|
|
65
|
+
return;
|
|
66
|
+
const advancement = controller.advanceRun(runId).then(() => undefined, () => undefined);
|
|
67
|
+
sessionGuards.inFlightAdvancements.set(runId, advancement);
|
|
68
|
+
void advancement.finally(() => sessionGuards.inFlightAdvancements.delete(runId));
|
|
69
|
+
};
|
|
50
70
|
const controller = (dependencies.createController ?? defaultCreateController)({
|
|
51
71
|
config,
|
|
52
72
|
projectRoot,
|
|
@@ -55,6 +75,14 @@ export const createRuntime = async ({ client, input, dependencies, }) => {
|
|
|
55
75
|
verificationRunner,
|
|
56
76
|
clock,
|
|
57
77
|
ids,
|
|
78
|
+
onAgentSettled: (runId, role, status) => {
|
|
79
|
+
try {
|
|
80
|
+
kickAgentSettled(runId);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
process.stderr.write(`HARNESS_AGENT_SETTLED_KICK_FAILED ${JSON.stringify({ runId, role, status, error: String(error) })}\n`);
|
|
84
|
+
}
|
|
85
|
+
},
|
|
58
86
|
});
|
|
59
87
|
const coordinator = (dependencies.createCoordinator ?? defaultCreateCoordinator)({
|
|
60
88
|
config,
|
|
@@ -88,12 +116,15 @@ export const createRuntime = async ({ client, input, dependencies, }) => {
|
|
|
88
116
|
...(store.deletePendingStart === undefined
|
|
89
117
|
? {}
|
|
90
118
|
: { deletePendingStart: store.deletePendingStart.bind(store) }),
|
|
91
|
-
scheduleAdvance:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
119
|
+
scheduleAdvance: (input) => {
|
|
120
|
+
scheduleAdvanceRef?.(input);
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
scheduleAdvanceRef = createHarnessPluginScheduler({
|
|
124
|
+
client,
|
|
125
|
+
controller,
|
|
126
|
+
guards: sessionGuards,
|
|
127
|
+
projectRoot,
|
|
97
128
|
});
|
|
98
129
|
return {
|
|
99
130
|
config,
|
|
@@ -103,6 +134,7 @@ export const createRuntime = async ({ client, input, dependencies, }) => {
|
|
|
103
134
|
researchClients,
|
|
104
135
|
sessionGuards,
|
|
105
136
|
sessionAdapter,
|
|
137
|
+
store,
|
|
106
138
|
};
|
|
107
139
|
};
|
|
108
140
|
const defaultLoadConfig = (projectRoot) => loadHarnessConfig({ projectRoot });
|
|
@@ -142,6 +174,7 @@ const defaultCreateController = (input) => createRunController({
|
|
|
142
174
|
maxRunAttempts: input.config.maxRunAttempts,
|
|
143
175
|
sessionTimeoutMs: input.config.sessionTimeoutMs,
|
|
144
176
|
executionCategories: input.config.executionCategories,
|
|
177
|
+
...(input.onAgentSettled === undefined ? {} : { onAgentSettled: input.onAgentSettled }),
|
|
145
178
|
workspacePolicy: {
|
|
146
179
|
allowDirty: false,
|
|
147
180
|
allowNonGit: input.config.allowNonGitWorkspace,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-plugin-runtime.js","sourceRoot":"","sources":["../../src/plugin/harness-plugin-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,OAAO,EAAsB,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAGL,mBAAmB,GAEpB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"harness-plugin-runtime.js","sourceRoot":"","sources":["../../src/plugin/harness-plugin-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,14 @@ type HarnessPluginSchedulerInput = {
|
|
|
8
8
|
readonly guards: SessionGuards;
|
|
9
9
|
readonly projectRoot: string;
|
|
10
10
|
};
|
|
11
|
-
export
|
|
11
|
+
export type HarnessPluginScheduler = (input: {
|
|
12
12
|
readonly sessionID: string;
|
|
13
13
|
readonly runId: Run["runId"];
|
|
14
|
-
}) => void
|
|
14
|
+
}) => void;
|
|
15
|
+
/**
|
|
16
|
+
* 子 agent 会话 settle 后的重踢入口:仅在该 run 无在途 advancement 且非终态时
|
|
17
|
+
* 调度推进循环;sessionID 未知(钩子触发)时复用 activeRunIdsBySession 反查或直接推进。
|
|
18
|
+
*/
|
|
19
|
+
export declare const createHarnessPluginScheduler: (input: HarnessPluginSchedulerInput) => HarnessPluginScheduler;
|
|
15
20
|
export {};
|
|
16
21
|
//# sourceMappingURL=harness-plugin-scheduler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-plugin-scheduler.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-plugin-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"harness-plugin-scheduler.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-plugin-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAS3D,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAA;AAuED,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;CAC7B,KAAK,IAAI,CAAA;AAEV;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACvC,OAAO,2BAA2B,KACjC,sBAuCF,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isTerminalRunStatus } from "../controller/run-state.js";
|
|
2
|
-
import {
|
|
2
|
+
import { createFailureDeliveryEnvelope, createProgressDeliveryEnvelope, createSuccessDeliveryEnvelope, } from "./harness-delivery-envelope.js";
|
|
3
3
|
import { sanitizeHarnessUserFacingError } from "./harness-user-facing-errors.js";
|
|
4
4
|
const promptHarnessSyntheticResult = async (input) => {
|
|
5
5
|
await input.client.session.promptAsync({
|
|
@@ -10,21 +10,21 @@ const promptHarnessSyntheticResult = async (input) => {
|
|
|
10
10
|
parts: [
|
|
11
11
|
{
|
|
12
12
|
type: "text",
|
|
13
|
-
text: input.
|
|
13
|
+
text: input.envelope.userChannel,
|
|
14
14
|
synthetic: true,
|
|
15
|
-
metadata: { source: "harness" },
|
|
15
|
+
metadata: { source: "harness", channel: "user" },
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
type: "text",
|
|
19
|
+
text: input.envelope.agentChannel,
|
|
20
|
+
synthetic: true,
|
|
21
|
+
metadata: { source: "harness", channel: "agent" },
|
|
16
22
|
},
|
|
17
23
|
],
|
|
18
24
|
},
|
|
19
25
|
throwOnError: true,
|
|
20
26
|
});
|
|
21
27
|
};
|
|
22
|
-
const createAdvanceSuccessMessage = (run) => createInternalCompletionMessage({
|
|
23
|
-
kind: "run",
|
|
24
|
-
operation: "status",
|
|
25
|
-
run,
|
|
26
|
-
});
|
|
27
|
-
const createAdvanceFailureMessage = (error) => createInternalFailureMessage(sanitizeHarnessUserFacingError(error));
|
|
28
28
|
const ADVANCE_STOP_STATUSES = new Set([
|
|
29
29
|
"clarification_required",
|
|
30
30
|
"evidence_gap",
|
|
@@ -52,12 +52,14 @@ const advanceUntilSettled = async (controller, runId, onProgress) => {
|
|
|
52
52
|
return current;
|
|
53
53
|
const next = await controller.advanceRun(runId);
|
|
54
54
|
await reportProgress(next);
|
|
55
|
-
if (next.status === current.status)
|
|
56
|
-
return next;
|
|
57
55
|
current = next;
|
|
58
56
|
}
|
|
59
57
|
return current;
|
|
60
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* 子 agent 会话 settle 后的重踢入口:仅在该 run 无在途 advancement 且非终态时
|
|
61
|
+
* 调度推进循环;sessionID 未知(钩子触发)时复用 activeRunIdsBySession 反查或直接推进。
|
|
62
|
+
*/
|
|
61
63
|
export const createHarnessPluginScheduler = (input) => {
|
|
62
64
|
return ({ sessionID, runId }) => {
|
|
63
65
|
const existing = input.guards.inFlightAdvancements.get(runId);
|
|
@@ -69,21 +71,21 @@ export const createHarnessPluginScheduler = (input) => {
|
|
|
69
71
|
client: input.client,
|
|
70
72
|
projectRoot: input.projectRoot,
|
|
71
73
|
sessionID,
|
|
72
|
-
|
|
74
|
+
envelope: createProgressDeliveryEnvelope({ kind: "run", operation: "status", run }),
|
|
73
75
|
});
|
|
74
76
|
}).then(async (run) => {
|
|
75
77
|
await promptHarnessSyntheticResult({
|
|
76
78
|
client: input.client,
|
|
77
79
|
projectRoot: input.projectRoot,
|
|
78
80
|
sessionID,
|
|
79
|
-
|
|
81
|
+
envelope: createSuccessDeliveryEnvelope({ kind: "run", operation: "status", run }),
|
|
80
82
|
});
|
|
81
83
|
}, async (error) => {
|
|
82
84
|
await promptHarnessSyntheticResult({
|
|
83
85
|
client: input.client,
|
|
84
86
|
projectRoot: input.projectRoot,
|
|
85
87
|
sessionID,
|
|
86
|
-
|
|
88
|
+
envelope: createFailureDeliveryEnvelope(sanitizeHarnessUserFacingError(error)),
|
|
87
89
|
});
|
|
88
90
|
});
|
|
89
91
|
input.guards.inFlightAdvancements.set(runId, advancement.then(() => undefined));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-plugin-scheduler.js","sourceRoot":"","sources":["../../src/plugin/harness-plugin-scheduler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGhE,OAAO,EACL
|
|
1
|
+
{"version":3,"file":"harness-plugin-scheduler.js","sourceRoot":"","sources":["../../src/plugin/harness-plugin-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-requirement.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-requirement.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAA;AAEhF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,
|
|
1
|
+
{"version":3,"file":"harness-requirement.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-requirement.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAA;AAEhF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,gBA8C/D,CAAA"}
|
|
@@ -15,6 +15,9 @@ export const toRequirementInput = (intent) => {
|
|
|
15
15
|
...(intent.requirement.taskSchedulingAnalysis
|
|
16
16
|
? { taskSchedulingAnalysis: intent.requirement.taskSchedulingAnalysis }
|
|
17
17
|
: {}),
|
|
18
|
+
...(intent.requirement.hypotheses === undefined
|
|
19
|
+
? {}
|
|
20
|
+
: { hypotheses: intent.requirement.hypotheses }),
|
|
18
21
|
...(intent.requirement.targetRepository
|
|
19
22
|
? { targetRepository: intent.requirement.targetRepository }
|
|
20
23
|
: {}),
|
|
@@ -36,6 +39,7 @@ export const toRequirementInput = (intent) => {
|
|
|
36
39
|
...(requirement.taskSchedulingAnalysis
|
|
37
40
|
? { taskSchedulingAnalysis: requirement.taskSchedulingAnalysis }
|
|
38
41
|
: {}),
|
|
42
|
+
...(requirement.hypotheses === undefined ? {} : { hypotheses: requirement.hypotheses }),
|
|
39
43
|
...(requirement.targetRepository ? { targetRepository: requirement.targetRepository } : {}),
|
|
40
44
|
...(requirement.workspaceMutation === undefined
|
|
41
45
|
? {}
|