harness-engineering-agent 0.1.0
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/LICENSE +21 -0
- package/README.md +191 -0
- package/dist/config/config-defaults.d.ts +32 -0
- package/dist/config/config-defaults.d.ts.map +1 -0
- package/dist/config/config-defaults.js +32 -0
- package/dist/config/config-defaults.js.map +1 -0
- package/dist/config/config-errors.d.ts +7 -0
- package/dist/config/config-errors.d.ts.map +1 -0
- package/dist/config/config-errors.js +11 -0
- package/dist/config/config-errors.js.map +1 -0
- package/dist/config/config-file.d.ts +3 -0
- package/dist/config/config-file.d.ts.map +1 -0
- package/dist/config/config-file.js +31 -0
- package/dist/config/config-file.js.map +1 -0
- package/dist/config/config-merge.d.ts +8 -0
- package/dist/config/config-merge.d.ts.map +1 -0
- package/dist/config/config-merge.js +50 -0
- package/dist/config/config-merge.js.map +1 -0
- package/dist/config/config-schema.d.ts +135 -0
- package/dist/config/config-schema.d.ts.map +1 -0
- package/dist/config/config-schema.js +94 -0
- package/dist/config/config-schema.js.map +1 -0
- package/dist/config/config-types.d.ts +21 -0
- package/dist/config/config-types.d.ts.map +1 -0
- package/dist/config/config-types.js +2 -0
- package/dist/config/config-types.js.map +1 -0
- package/dist/config/harness-config.d.ts +6 -0
- package/dist/config/harness-config.d.ts.map +1 -0
- package/dist/config/harness-config.js +4 -0
- package/dist/config/harness-config.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/load-harness-config.d.ts +9 -0
- package/dist/config/load-harness-config.d.ts.map +1 -0
- package/dist/config/load-harness-config.js +25 -0
- package/dist/config/load-harness-config.js.map +1 -0
- package/dist/controller/agent-output.d.ts +21 -0
- package/dist/controller/agent-output.d.ts.map +1 -0
- package/dist/controller/agent-output.js +75 -0
- package/dist/controller/agent-output.js.map +1 -0
- package/dist/controller/agent-session.d.ts +49 -0
- package/dist/controller/agent-session.d.ts.map +1 -0
- package/dist/controller/agent-session.js +220 -0
- package/dist/controller/agent-session.js.map +1 -0
- package/dist/controller/contracts.d.ts +65 -0
- package/dist/controller/contracts.d.ts.map +1 -0
- package/dist/controller/contracts.js +2 -0
- package/dist/controller/contracts.js.map +1 -0
- package/dist/controller/errors.d.ts +23 -0
- package/dist/controller/errors.d.ts.map +1 -0
- package/dist/controller/errors.js +37 -0
- package/dist/controller/errors.js.map +1 -0
- package/dist/controller/evidence-factory.d.ts +15 -0
- package/dist/controller/evidence-factory.d.ts.map +1 -0
- package/dist/controller/evidence-factory.js +38 -0
- package/dist/controller/evidence-factory.js.map +1 -0
- package/dist/controller/failure-analysis.d.ts +36 -0
- package/dist/controller/failure-analysis.d.ts.map +1 -0
- package/dist/controller/failure-analysis.js +175 -0
- package/dist/controller/failure-analysis.js.map +1 -0
- package/dist/controller/failure-factory.d.ts +85 -0
- package/dist/controller/failure-factory.d.ts.map +1 -0
- package/dist/controller/failure-factory.js +124 -0
- package/dist/controller/failure-factory.js.map +1 -0
- package/dist/controller/graph-validator.d.ts +4 -0
- package/dist/controller/graph-validator.d.ts.map +1 -0
- package/dist/controller/graph-validator.js +102 -0
- package/dist/controller/graph-validator.js.map +1 -0
- package/dist/controller/index.d.ts +15 -0
- package/dist/controller/index.d.ts.map +1 -0
- package/dist/controller/index.js +11 -0
- package/dist/controller/index.js.map +1 -0
- package/dist/controller/repair-loop.d.ts +42 -0
- package/dist/controller/repair-loop.d.ts.map +1 -0
- package/dist/controller/repair-loop.js +385 -0
- package/dist/controller/repair-loop.js.map +1 -0
- package/dist/controller/report-factory.d.ts +4 -0
- package/dist/controller/report-factory.d.ts.map +1 -0
- package/dist/controller/report-factory.js +107 -0
- package/dist/controller/report-factory.js.map +1 -0
- package/dist/controller/role-prompts.d.ts +8 -0
- package/dist/controller/role-prompts.d.ts.map +1 -0
- package/dist/controller/role-prompts.js +35 -0
- package/dist/controller/role-prompts.js.map +1 -0
- package/dist/controller/run-controller.d.ts +3 -0
- package/dist/controller/run-controller.d.ts.map +1 -0
- package/dist/controller/run-controller.js +291 -0
- package/dist/controller/run-controller.js.map +1 -0
- package/dist/controller/run-persistence.d.ts +15 -0
- package/dist/controller/run-persistence.d.ts.map +1 -0
- package/dist/controller/run-persistence.js +83 -0
- package/dist/controller/run-persistence.js.map +1 -0
- package/dist/controller/run-state.d.ts +61 -0
- package/dist/controller/run-state.d.ts.map +1 -0
- package/dist/controller/run-state.js +151 -0
- package/dist/controller/run-state.js.map +1 -0
- package/dist/controller/task-agent-output.d.ts +70 -0
- package/dist/controller/task-agent-output.d.ts.map +1 -0
- package/dist/controller/task-agent-output.js +256 -0
- package/dist/controller/task-agent-output.js.map +1 -0
- package/dist/controller/task-agent-schemas.d.ts +217 -0
- package/dist/controller/task-agent-schemas.d.ts.map +1 -0
- package/dist/controller/task-agent-schemas.js +171 -0
- package/dist/controller/task-agent-schemas.js.map +1 -0
- package/dist/controller/task-executor.d.ts +15 -0
- package/dist/controller/task-executor.d.ts.map +1 -0
- package/dist/controller/task-executor.js +751 -0
- package/dist/controller/task-executor.js.map +1 -0
- package/dist/controller/task-paths.d.ts +3 -0
- package/dist/controller/task-paths.d.ts.map +1 -0
- package/dist/controller/task-paths.js +20 -0
- package/dist/controller/task-paths.js.map +1 -0
- package/dist/controller/task-retry.d.ts +24 -0
- package/dist/controller/task-retry.d.ts.map +1 -0
- package/dist/controller/task-retry.js +42 -0
- package/dist/controller/task-retry.js.map +1 -0
- package/dist/controller/worktree-eligibility.d.ts +15 -0
- package/dist/controller/worktree-eligibility.d.ts.map +1 -0
- package/dist/controller/worktree-eligibility.js +38 -0
- package/dist/controller/worktree-eligibility.js.map +1 -0
- package/dist/controller/worktree-scheduler.d.ts +72 -0
- package/dist/controller/worktree-scheduler.d.ts.map +1 -0
- package/dist/controller/worktree-scheduler.js +142 -0
- package/dist/controller/worktree-scheduler.js.map +1 -0
- package/dist/domain/agent-result.d.ts +83 -0
- package/dist/domain/agent-result.d.ts.map +1 -0
- package/dist/domain/agent-result.js +44 -0
- package/dist/domain/agent-result.js.map +1 -0
- package/dist/domain/evidence.d.ts +97 -0
- package/dist/domain/evidence.d.ts.map +1 -0
- package/dist/domain/evidence.js +85 -0
- package/dist/domain/evidence.js.map +1 -0
- package/dist/domain/failure.d.ts +121 -0
- package/dist/domain/failure.d.ts.map +1 -0
- package/dist/domain/failure.js +72 -0
- package/dist/domain/failure.js.map +1 -0
- package/dist/domain/index.d.ts +19 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +10 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/report.d.ts +904 -0
- package/dist/domain/report.d.ts.map +1 -0
- package/dist/domain/report.js +90 -0
- package/dist/domain/report.js.map +1 -0
- package/dist/domain/requirement.d.ts +10 -0
- package/dist/domain/requirement.d.ts.map +1 -0
- package/dist/domain/requirement.js +12 -0
- package/dist/domain/requirement.js.map +1 -0
- package/dist/domain/run.d.ts +857 -0
- package/dist/domain/run.d.ts.map +1 -0
- package/dist/domain/run.js +129 -0
- package/dist/domain/run.js.map +1 -0
- package/dist/domain/shared.d.ts +60 -0
- package/dist/domain/shared.d.ts.map +1 -0
- package/dist/domain/shared.js +66 -0
- package/dist/domain/shared.js.map +1 -0
- package/dist/domain/task.d.ts +316 -0
- package/dist/domain/task.d.ts.map +1 -0
- package/dist/domain/task.js +116 -0
- package/dist/domain/task.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/path/workspace-path.d.ts +6 -0
- package/dist/path/workspace-path.d.ts.map +1 -0
- package/dist/path/workspace-path.js +36 -0
- package/dist/path/workspace-path.js.map +1 -0
- package/dist/plugin/create-harness-plugin.d.ts +40 -0
- package/dist/plugin/create-harness-plugin.d.ts.map +1 -0
- package/dist/plugin/create-harness-plugin.js +169 -0
- package/dist/plugin/create-harness-plugin.js.map +1 -0
- package/dist/plugin/harness-agent-config.d.ts +6 -0
- package/dist/plugin/harness-agent-config.d.ts.map +1 -0
- package/dist/plugin/harness-agent-config.js +130 -0
- package/dist/plugin/harness-agent-config.js.map +1 -0
- package/dist/plugin/harness-chat-hook.d.ts +27 -0
- package/dist/plugin/harness-chat-hook.d.ts.map +1 -0
- package/dist/plugin/harness-chat-hook.js +72 -0
- package/dist/plugin/harness-chat-hook.js.map +1 -0
- package/dist/plugin/harness-chat-parts.d.ts +10 -0
- package/dist/plugin/harness-chat-parts.d.ts.map +1 -0
- package/dist/plugin/harness-chat-parts.js +36 -0
- package/dist/plugin/harness-chat-parts.js.map +1 -0
- package/dist/plugin/harness-chat-protocol.d.ts +9 -0
- package/dist/plugin/harness-chat-protocol.d.ts.map +1 -0
- package/dist/plugin/harness-chat-protocol.js +23 -0
- package/dist/plugin/harness-chat-protocol.js.map +1 -0
- package/dist/plugin/harness-coordinator.d.ts +33 -0
- package/dist/plugin/harness-coordinator.d.ts.map +1 -0
- package/dist/plugin/harness-coordinator.js +188 -0
- package/dist/plugin/harness-coordinator.js.map +1 -0
- package/dist/plugin/harness-intake-prompt.d.ts +2 -0
- package/dist/plugin/harness-intake-prompt.d.ts.map +1 -0
- package/dist/plugin/harness-intake-prompt.js +52 -0
- package/dist/plugin/harness-intake-prompt.js.map +1 -0
- package/dist/plugin/harness-intent.d.ts +72 -0
- package/dist/plugin/harness-intent.d.ts.map +1 -0
- package/dist/plugin/harness-intent.js +82 -0
- package/dist/plugin/harness-intent.js.map +1 -0
- package/dist/plugin/harness-parent-session-dispatcher.d.ts +46 -0
- package/dist/plugin/harness-parent-session-dispatcher.d.ts.map +1 -0
- package/dist/plugin/harness-parent-session-dispatcher.js +33 -0
- package/dist/plugin/harness-parent-session-dispatcher.js.map +1 -0
- package/dist/plugin/harness-requirement.d.ts +4 -0
- package/dist/plugin/harness-requirement.d.ts.map +1 -0
- package/dist/plugin/harness-requirement.js +37 -0
- package/dist/plugin/harness-requirement.js.map +1 -0
- package/dist/session/contracts.d.ts +178 -0
- package/dist/session/contracts.d.ts.map +1 -0
- package/dist/session/contracts.js +28 -0
- package/dist/session/contracts.js.map +1 -0
- package/dist/session/fake-session-adapter.d.ts +22 -0
- package/dist/session/fake-session-adapter.d.ts.map +1 -0
- package/dist/session/fake-session-adapter.js +238 -0
- package/dist/session/fake-session-adapter.js.map +1 -0
- package/dist/session/fake-session-errors.d.ts +23 -0
- package/dist/session/fake-session-errors.d.ts.map +1 -0
- package/dist/session/fake-session-errors.js +37 -0
- package/dist/session/fake-session-errors.js.map +1 -0
- package/dist/session/harness-agent-names.d.ts +51 -0
- package/dist/session/harness-agent-names.d.ts.map +1 -0
- package/dist/session/harness-agent-names.js +98 -0
- package/dist/session/harness-agent-names.js.map +1 -0
- package/dist/session/index.d.ts +9 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +9 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/opencode-session-adapter.d.ts +9 -0
- package/dist/session/opencode-session-adapter.d.ts.map +1 -0
- package/dist/session/opencode-session-adapter.js +243 -0
- package/dist/session/opencode-session-adapter.js.map +1 -0
- package/dist/session/opencode-session-client.d.ts +58 -0
- package/dist/session/opencode-session-client.d.ts.map +1 -0
- package/dist/session/opencode-session-client.js +17 -0
- package/dist/session/opencode-session-client.js.map +1 -0
- package/dist/session/opencode-session-errors.d.ts +15 -0
- package/dist/session/opencode-session-errors.d.ts.map +1 -0
- package/dist/session/opencode-session-errors.js +19 -0
- package/dist/session/opencode-session-errors.js.map +1 -0
- package/dist/session/opencode-session-prompts.d.ts +12 -0
- package/dist/session/opencode-session-prompts.d.ts.map +1 -0
- package/dist/session/opencode-session-prompts.js +16 -0
- package/dist/session/opencode-session-prompts.js.map +1 -0
- package/dist/store/filesystem-run-store-io.d.ts +9 -0
- package/dist/store/filesystem-run-store-io.d.ts.map +1 -0
- package/dist/store/filesystem-run-store-io.js +85 -0
- package/dist/store/filesystem-run-store-io.js.map +1 -0
- package/dist/store/filesystem-run-store.d.ts +16 -0
- package/dist/store/filesystem-run-store.d.ts.map +1 -0
- package/dist/store/filesystem-run-store.js +286 -0
- package/dist/store/filesystem-run-store.js.map +1 -0
- package/dist/store/index.d.ts +5 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +4 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/run-event.d.ts +786 -0
- package/dist/store/run-event.d.ts.map +1 -0
- package/dist/store/run-event.js +24 -0
- package/dist/store/run-event.js.map +1 -0
- package/dist/store/run-store-errors.d.ts +38 -0
- package/dist/store/run-store-errors.d.ts.map +1 -0
- package/dist/store/run-store-errors.js +62 -0
- package/dist/store/run-store-errors.js.map +1 -0
- package/dist/tools/context7-client.d.ts +22 -0
- package/dist/tools/context7-client.d.ts.map +1 -0
- package/dist/tools/context7-client.js +108 -0
- package/dist/tools/context7-client.js.map +1 -0
- package/dist/tools/grep-app-client.d.ts +21 -0
- package/dist/tools/grep-app-client.d.ts.map +1 -0
- package/dist/tools/grep-app-client.js +136 -0
- package/dist/tools/grep-app-client.js.map +1 -0
- package/dist/tools/harness-research-tools.d.ts +21 -0
- package/dist/tools/harness-research-tools.d.ts.map +1 -0
- package/dist/tools/harness-research-tools.js +101 -0
- package/dist/tools/harness-research-tools.js.map +1 -0
- package/dist/tools/lsp-client.d.ts +32 -0
- package/dist/tools/lsp-client.d.ts.map +1 -0
- package/dist/tools/lsp-client.js +234 -0
- package/dist/tools/lsp-client.js.map +1 -0
- package/dist/tools/lsp-json-rpc.d.ts +13 -0
- package/dist/tools/lsp-json-rpc.d.ts.map +1 -0
- package/dist/tools/lsp-json-rpc.js +98 -0
- package/dist/tools/lsp-json-rpc.js.map +1 -0
- package/dist/verification/command-policy.d.ts +11 -0
- package/dist/verification/command-policy.d.ts.map +1 -0
- package/dist/verification/command-policy.js +262 -0
- package/dist/verification/command-policy.js.map +1 -0
- package/dist/verification/contracts.d.ts +82 -0
- package/dist/verification/contracts.d.ts.map +1 -0
- package/dist/verification/contracts.js +6 -0
- package/dist/verification/contracts.js.map +1 -0
- package/dist/verification/fake-process-runner.d.ts +16 -0
- package/dist/verification/fake-process-runner.d.ts.map +1 -0
- package/dist/verification/fake-process-runner.js +28 -0
- package/dist/verification/fake-process-runner.js.map +1 -0
- package/dist/verification/index.d.ts +6 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +5 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/node-process-runner.d.ts +12 -0
- package/dist/verification/node-process-runner.d.ts.map +1 -0
- package/dist/verification/node-process-runner.js +103 -0
- package/dist/verification/node-process-runner.js.map +1 -0
- package/dist/verification/verification-runner.d.ts +3 -0
- package/dist/verification/verification-runner.d.ts.map +1 -0
- package/dist/verification/verification-runner.js +101 -0
- package/dist/verification/verification-runner.js.map +1 -0
- package/dist/workspace/git-baseline.d.ts +63 -0
- package/dist/workspace/git-baseline.d.ts.map +1 -0
- package/dist/workspace/git-baseline.js +53 -0
- package/dist/workspace/git-baseline.js.map +1 -0
- package/dist/workspace/git-workspace-adapter.d.ts +43 -0
- package/dist/workspace/git-workspace-adapter.d.ts.map +1 -0
- package/dist/workspace/git-workspace-adapter.js +279 -0
- package/dist/workspace/git-workspace-adapter.js.map +1 -0
- package/dist/workspace/git-worktree-adapter.d.ts +45 -0
- package/dist/workspace/git-worktree-adapter.d.ts.map +1 -0
- package/dist/workspace/git-worktree-adapter.js +104 -0
- package/dist/workspace/git-worktree-adapter.js.map +1 -0
- package/dist/workspace/index.d.ts +7 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +4 -0
- package/dist/workspace/index.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { AgentResultSchema, } from "../domain/index.js";
|
|
2
|
+
import { VerificationExecutionStatus } from "../verification/index.js";
|
|
3
|
+
import { createEvidence } from "./evidence-factory.js";
|
|
4
|
+
import { createContextGapFailure, createImplementationFailure, createScopeDriftFailure, } from "./failure-factory.js";
|
|
5
|
+
import { withParts } from "./run-state.js";
|
|
6
|
+
import { readRepairWorkerOutput, readWorkerOutput } from "./task-agent-output.js";
|
|
7
|
+
import { isAllowedPath } from "./task-paths.js";
|
|
8
|
+
import { persistTaskFailed, persistTaskPaused } from "./task-retry.js";
|
|
9
|
+
export const runRepairLoop = async (input) => {
|
|
10
|
+
const repairAttempt = input.repairAttempt ?? 1;
|
|
11
|
+
const seenRootCauseFingerprints = input.seenRootCauseFingerprints ?? [];
|
|
12
|
+
if (repairAttempt > input.task.retryBudget.maxRepairAttempts) {
|
|
13
|
+
const budgetFailure = createImplementationFailure({
|
|
14
|
+
failureId: input.executor.options.ids.createFailureId(`${input.task.taskId}-${input.attempt}-repair-budget`),
|
|
15
|
+
runId: input.run.runId,
|
|
16
|
+
taskId: input.task.taskId,
|
|
17
|
+
summary: "Repair budget exhausted before another automatic fix.",
|
|
18
|
+
detail: `task ${input.task.taskId} exhausted repair budget at attempt ${repairAttempt}`,
|
|
19
|
+
recoveryPlan: "Pause automatic repair and request a manual decision.",
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
kind: "terminal",
|
|
23
|
+
run: await persistTaskFailed({
|
|
24
|
+
run: input.run,
|
|
25
|
+
failure: budgetFailure,
|
|
26
|
+
task: input.task,
|
|
27
|
+
writer: input.executor.writer,
|
|
28
|
+
}),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const repairOutput = await readRepairWorkerOutput({
|
|
32
|
+
input: input.executor,
|
|
33
|
+
run: input.run,
|
|
34
|
+
task: input.task,
|
|
35
|
+
attempt: repairAttempt,
|
|
36
|
+
failure: input.failure,
|
|
37
|
+
evidence: input.evidence,
|
|
38
|
+
});
|
|
39
|
+
if (repairOutput.kind === "failed") {
|
|
40
|
+
return {
|
|
41
|
+
kind: "terminal",
|
|
42
|
+
run: await persistTaskFailed({
|
|
43
|
+
run: input.run,
|
|
44
|
+
failure: repairOutput.failure,
|
|
45
|
+
task: input.task,
|
|
46
|
+
writer: input.executor.writer,
|
|
47
|
+
}),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const repairTask = repairOutput.repairTask;
|
|
51
|
+
const validationFailure = validateRepairTask({
|
|
52
|
+
options: input.executor.options,
|
|
53
|
+
run: input.run,
|
|
54
|
+
task: input.task,
|
|
55
|
+
failure: input.failure,
|
|
56
|
+
repairTask,
|
|
57
|
+
seenRootCauseFingerprints,
|
|
58
|
+
});
|
|
59
|
+
if (validationFailure?.kind === "failed") {
|
|
60
|
+
return {
|
|
61
|
+
kind: "terminal",
|
|
62
|
+
run: await persistTaskFailed({
|
|
63
|
+
run: input.run,
|
|
64
|
+
failure: validationFailure.failure,
|
|
65
|
+
task: input.task,
|
|
66
|
+
writer: input.executor.writer,
|
|
67
|
+
}),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (validationFailure?.kind === "paused") {
|
|
71
|
+
return {
|
|
72
|
+
kind: "terminal",
|
|
73
|
+
run: await persistTaskPaused({
|
|
74
|
+
run: input.run,
|
|
75
|
+
failure: validationFailure.failure,
|
|
76
|
+
task: input.task,
|
|
77
|
+
writer: input.executor.writer,
|
|
78
|
+
eventPayload: { rootCauseFingerprint: repairTask.rootCauseFingerprint },
|
|
79
|
+
}),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const repairResult = AgentResultSchema.parse({
|
|
83
|
+
schemaVersion: "1.0.0",
|
|
84
|
+
resultId: input.executor.options.ids.createAgentResultId(`repair-worker-${input.task.taskId}-${repairAttempt}`),
|
|
85
|
+
runId: input.run.runId,
|
|
86
|
+
taskId: input.task.taskId,
|
|
87
|
+
role: "repair-worker",
|
|
88
|
+
status: "completed",
|
|
89
|
+
summary: repairOutput.output.summary,
|
|
90
|
+
evidenceIds: repairTask.failureEvidenceIds,
|
|
91
|
+
changedPaths: [],
|
|
92
|
+
});
|
|
93
|
+
let currentRun = withParts(input.run, {
|
|
94
|
+
evidence: input.run.evidence,
|
|
95
|
+
failures: input.run.failures,
|
|
96
|
+
agentResults: [...input.run.agentResults, repairResult],
|
|
97
|
+
workspace: input.run.workspace,
|
|
98
|
+
});
|
|
99
|
+
const redResult = await runVerificationPhase({
|
|
100
|
+
options: input.executor.options,
|
|
101
|
+
run: currentRun,
|
|
102
|
+
task: input.task,
|
|
103
|
+
commands: repairTask.verificationPlan.minimalFailureSet,
|
|
104
|
+
kind: "red",
|
|
105
|
+
label: `repair-red-${repairAttempt}`,
|
|
106
|
+
expectedStatus: "failed",
|
|
107
|
+
});
|
|
108
|
+
if (redResult.kind === "terminal") {
|
|
109
|
+
return { kind: "terminal", run: redResult.run };
|
|
110
|
+
}
|
|
111
|
+
currentRun = redResult.run;
|
|
112
|
+
const repairScopedTask = {
|
|
113
|
+
...input.task,
|
|
114
|
+
allowedPaths: repairTask.allowedPaths,
|
|
115
|
+
evidenceRefs: [...input.task.evidenceRefs, ...repairTask.failureEvidenceIds],
|
|
116
|
+
};
|
|
117
|
+
const workerOutput = await readWorkerOutput({
|
|
118
|
+
input: input.executor,
|
|
119
|
+
run: currentRun,
|
|
120
|
+
task: repairScopedTask,
|
|
121
|
+
attempt: repairAttempt,
|
|
122
|
+
});
|
|
123
|
+
if (workerOutput.kind === "failed") {
|
|
124
|
+
return {
|
|
125
|
+
kind: "terminal",
|
|
126
|
+
run: await persistTaskFailed({
|
|
127
|
+
run: currentRun,
|
|
128
|
+
failure: workerOutput.failure,
|
|
129
|
+
task: input.task,
|
|
130
|
+
writer: input.executor.writer,
|
|
131
|
+
}),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (!workerOutput.output.changedPaths.every((path) => isAllowedPath(path, repairTask.allowedPaths))) {
|
|
135
|
+
const scopeFailure = createScopeDriftFailure({
|
|
136
|
+
failureId: input.executor.options.ids.createFailureId(`${input.task.taskId}-${repairAttempt}-repair-scope`),
|
|
137
|
+
runId: currentRun.runId,
|
|
138
|
+
taskId: input.task.taskId,
|
|
139
|
+
driftedPaths: workerOutput.output.changedPaths,
|
|
140
|
+
summary: "Repair worker reported paths outside the approved repair scope.",
|
|
141
|
+
detail: workerOutput.output.changedPaths.join(", "),
|
|
142
|
+
recoveryPlan: "Stop automatic repair and require manual review of the widened path set.",
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
kind: "terminal",
|
|
146
|
+
run: await persistTaskFailed({
|
|
147
|
+
run: currentRun,
|
|
148
|
+
failure: scopeFailure,
|
|
149
|
+
task: input.task,
|
|
150
|
+
writer: input.executor.writer,
|
|
151
|
+
}),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
const greenResult = await runVerificationPhase({
|
|
155
|
+
options: input.executor.options,
|
|
156
|
+
run: currentRun,
|
|
157
|
+
task: input.task,
|
|
158
|
+
commands: repairTask.verificationPlan.minimalFailureSet,
|
|
159
|
+
kind: "green",
|
|
160
|
+
label: `repair-green-${repairAttempt}`,
|
|
161
|
+
expectedStatus: "passed",
|
|
162
|
+
});
|
|
163
|
+
if (greenResult.kind === "terminal") {
|
|
164
|
+
const analyzed = await input.analyzeFailure({
|
|
165
|
+
run: greenResult.run,
|
|
166
|
+
task: input.task,
|
|
167
|
+
attempt: input.attempt,
|
|
168
|
+
failure: greenResult.failure,
|
|
169
|
+
evidence: greenResult.evidence,
|
|
170
|
+
});
|
|
171
|
+
if (!analyzed.repairRequested || analyzed.run.status !== "executing") {
|
|
172
|
+
return { kind: "terminal", run: analyzed.run };
|
|
173
|
+
}
|
|
174
|
+
return runRepairLoop({
|
|
175
|
+
...input,
|
|
176
|
+
run: analyzed.run,
|
|
177
|
+
failure: analyzed.failure,
|
|
178
|
+
evidence: greenResult.evidence,
|
|
179
|
+
repairAttempt: repairAttempt + 1,
|
|
180
|
+
seenRootCauseFingerprints: [...seenRootCauseFingerprints, repairTask.rootCauseFingerprint],
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
currentRun = greenResult.run;
|
|
184
|
+
const refactorResult = await runVerificationPhase({
|
|
185
|
+
options: input.executor.options,
|
|
186
|
+
run: currentRun,
|
|
187
|
+
task: input.task,
|
|
188
|
+
commands: repairTask.verificationPlan.fullVerification,
|
|
189
|
+
kind: "refactor",
|
|
190
|
+
label: `repair-refactor-${repairAttempt}`,
|
|
191
|
+
expectedStatus: "passed",
|
|
192
|
+
});
|
|
193
|
+
if (refactorResult.kind === "terminal") {
|
|
194
|
+
const analyzed = await input.analyzeFailure({
|
|
195
|
+
run: refactorResult.run,
|
|
196
|
+
task: input.task,
|
|
197
|
+
attempt: input.attempt,
|
|
198
|
+
failure: refactorResult.failure,
|
|
199
|
+
evidence: refactorResult.evidence,
|
|
200
|
+
});
|
|
201
|
+
if (!analyzed.repairRequested || analyzed.run.status !== "executing") {
|
|
202
|
+
return { kind: "terminal", run: analyzed.run };
|
|
203
|
+
}
|
|
204
|
+
return runRepairLoop({
|
|
205
|
+
...input,
|
|
206
|
+
run: analyzed.run,
|
|
207
|
+
failure: analyzed.failure,
|
|
208
|
+
evidence: refactorResult.evidence,
|
|
209
|
+
repairAttempt: repairAttempt + 1,
|
|
210
|
+
seenRootCauseFingerprints: [...seenRootCauseFingerprints, repairTask.rootCauseFingerprint],
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
kind: "completed",
|
|
215
|
+
run: refactorResult.run,
|
|
216
|
+
evidence: refactorResult.evidence,
|
|
217
|
+
changedPaths: workerOutput.output.changedPaths,
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
const validateRepairTask = (input) => {
|
|
221
|
+
if (input.repairTask.sourceTaskId !== input.task.taskId) {
|
|
222
|
+
return {
|
|
223
|
+
kind: "failed",
|
|
224
|
+
failure: createImplementationFailure({
|
|
225
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-repair-source-task`),
|
|
226
|
+
runId: input.run.runId,
|
|
227
|
+
taskId: input.task.taskId,
|
|
228
|
+
summary: "Repair task source task does not match the active task.",
|
|
229
|
+
detail: input.repairTask.sourceTaskId,
|
|
230
|
+
recoveryPlan: "Reject the repair task and request a fresh structured repair plan.",
|
|
231
|
+
}),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
if (input.repairTask.sourceFailureId !== input.failure.failureId) {
|
|
235
|
+
return {
|
|
236
|
+
kind: "failed",
|
|
237
|
+
failure: createImplementationFailure({
|
|
238
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-repair-source-failure`),
|
|
239
|
+
runId: input.run.runId,
|
|
240
|
+
taskId: input.task.taskId,
|
|
241
|
+
summary: "Repair task failure reference does not match the analyzed failure.",
|
|
242
|
+
detail: input.repairTask.sourceFailureId,
|
|
243
|
+
recoveryPlan: "Reject the repair task and regenerate it from the current failure record.",
|
|
244
|
+
}),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
if (!input.repairTask.allowedPaths.every((path) => isAllowedPath(path, input.task.allowedPaths))) {
|
|
248
|
+
return {
|
|
249
|
+
kind: "failed",
|
|
250
|
+
failure: createScopeDriftFailure({
|
|
251
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-repair-allowed-paths`),
|
|
252
|
+
runId: input.run.runId,
|
|
253
|
+
taskId: input.task.taskId,
|
|
254
|
+
driftedPaths: input.repairTask.allowedPaths,
|
|
255
|
+
summary: "Repair task widened allowedPaths beyond the source task scope.",
|
|
256
|
+
detail: input.repairTask.allowedPaths.join(", "),
|
|
257
|
+
recoveryPlan: "Reject the widened repair scope and require a narrower repair task.",
|
|
258
|
+
}),
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
if (input.repairTask.retryBudget.maxRepairAttempts > input.task.retryBudget.maxRepairAttempts) {
|
|
262
|
+
return {
|
|
263
|
+
kind: "failed",
|
|
264
|
+
failure: createImplementationFailure({
|
|
265
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-repair-budget-scope`),
|
|
266
|
+
runId: input.run.runId,
|
|
267
|
+
taskId: input.task.taskId,
|
|
268
|
+
summary: "Repair task widened the approved repair budget.",
|
|
269
|
+
detail: JSON.stringify(input.repairTask.retryBudget),
|
|
270
|
+
recoveryPlan: "Reject the repair task until its budget is equal to or narrower than the source task.",
|
|
271
|
+
}),
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
if (input.repairTask.retryBudget.maxAttempts > input.task.retryBudget.maxAttempts) {
|
|
275
|
+
return {
|
|
276
|
+
kind: "failed",
|
|
277
|
+
failure: createImplementationFailure({
|
|
278
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-repair-task-budget`),
|
|
279
|
+
runId: input.run.runId,
|
|
280
|
+
taskId: input.task.taskId,
|
|
281
|
+
summary: "Repair task widened the approved attempt budget.",
|
|
282
|
+
detail: JSON.stringify(input.repairTask.retryBudget),
|
|
283
|
+
recoveryPlan: "Reject the repair task until its attempt budget is equal to or narrower than the source task.",
|
|
284
|
+
}),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
const evidenceIds = new Set(input.run.evidence.map((evidence) => evidence.evidenceId));
|
|
288
|
+
if (!input.repairTask.failureEvidenceIds.every((evidenceId) => evidenceIds.has(evidenceId))) {
|
|
289
|
+
return {
|
|
290
|
+
kind: "failed",
|
|
291
|
+
failure: createContextGapFailure({
|
|
292
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-repair-evidence-gap`),
|
|
293
|
+
runId: input.run.runId,
|
|
294
|
+
taskId: input.task.taskId,
|
|
295
|
+
relatedEvidenceIds: input.repairTask.failureEvidenceIds,
|
|
296
|
+
summary: "Repair task referenced missing failure evidence.",
|
|
297
|
+
detail: input.repairTask.failureEvidenceIds.join(", "),
|
|
298
|
+
recoveryPlan: "Regenerate the repair task with real failure evidence references.",
|
|
299
|
+
missingContext: ["failure-evidence"],
|
|
300
|
+
}),
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
if (input.seenRootCauseFingerprints.includes(input.repairTask.rootCauseFingerprint)) {
|
|
304
|
+
return {
|
|
305
|
+
kind: "paused",
|
|
306
|
+
failure: createImplementationFailure({
|
|
307
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-repair-repeated-root-cause`),
|
|
308
|
+
runId: input.run.runId,
|
|
309
|
+
taskId: input.task.taskId,
|
|
310
|
+
rootCauseFingerprint: input.repairTask.rootCauseFingerprint,
|
|
311
|
+
summary: "Repeated repair root cause detected.",
|
|
312
|
+
detail: `Repeated rootCauseFingerprint: ${input.repairTask.rootCauseFingerprint}`,
|
|
313
|
+
recoveryPlan: "Pause automatic repair and request human review for the repeated root cause.",
|
|
314
|
+
}),
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
return undefined;
|
|
318
|
+
};
|
|
319
|
+
const runVerificationPhase = async (input) => {
|
|
320
|
+
let verificationResult;
|
|
321
|
+
try {
|
|
322
|
+
verificationResult = await input.options.verificationRunner.run({
|
|
323
|
+
verificationCommands: input.commands,
|
|
324
|
+
defaultWorkingDirectory: input.options.workingDirectory,
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
catch (error) {
|
|
328
|
+
if (!(error instanceof Error)) {
|
|
329
|
+
throw error;
|
|
330
|
+
}
|
|
331
|
+
const failure = createImplementationFailure({
|
|
332
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-${input.label}-environment`),
|
|
333
|
+
runId: input.run.runId,
|
|
334
|
+
taskId: input.task.taskId,
|
|
335
|
+
summary: `Repair verification phase ${input.kind} could not run.`,
|
|
336
|
+
detail: error.message,
|
|
337
|
+
recoveryPlan: "Fix the verification environment before continuing the repair loop.",
|
|
338
|
+
});
|
|
339
|
+
return { kind: "terminal", run: input.run, evidence: [], failure };
|
|
340
|
+
}
|
|
341
|
+
if (verificationResult.records.length === 0) {
|
|
342
|
+
const failure = createContextGapFailure({
|
|
343
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-${input.label}-empty`),
|
|
344
|
+
runId: input.run.runId,
|
|
345
|
+
taskId: input.task.taskId,
|
|
346
|
+
relatedEvidenceIds: [],
|
|
347
|
+
summary: `Repair verification phase ${input.kind} produced no records.`,
|
|
348
|
+
detail: "At least one verification record is required for every repair phase.",
|
|
349
|
+
recoveryPlan: "Rerun the repair phase and capture a real verification record.",
|
|
350
|
+
missingContext: ["verification-record"],
|
|
351
|
+
});
|
|
352
|
+
return { kind: "terminal", run: input.run, evidence: [], failure };
|
|
353
|
+
}
|
|
354
|
+
const evidence = verificationResult.records.map((record, index) => createEvidence({
|
|
355
|
+
ids: input.options.ids,
|
|
356
|
+
runId: input.run.runId,
|
|
357
|
+
task: input.task,
|
|
358
|
+
record,
|
|
359
|
+
label: `${input.task.taskId}-${input.label}-${index}`,
|
|
360
|
+
kind: input.kind,
|
|
361
|
+
summary: `${input.kind}:${record.command.name}`,
|
|
362
|
+
}));
|
|
363
|
+
const nextRun = withParts(input.run, {
|
|
364
|
+
evidence: [...input.run.evidence, ...evidence],
|
|
365
|
+
failures: input.run.failures,
|
|
366
|
+
agentResults: input.run.agentResults,
|
|
367
|
+
workspace: input.run.workspace,
|
|
368
|
+
});
|
|
369
|
+
const phasePassed = verificationResult.records.every((record) => record.status === VerificationExecutionStatus.passed);
|
|
370
|
+
const expectedSatisfied = input.expectedStatus === "passed" ? phasePassed : !phasePassed;
|
|
371
|
+
if (expectedSatisfied) {
|
|
372
|
+
return { kind: "completed", run: nextRun, evidence };
|
|
373
|
+
}
|
|
374
|
+
const failure = createImplementationFailure({
|
|
375
|
+
failureId: input.options.ids.createFailureId(`${input.task.taskId}-${input.label}-mismatch`),
|
|
376
|
+
runId: input.run.runId,
|
|
377
|
+
taskId: input.task.taskId,
|
|
378
|
+
...(evidence[0] === undefined ? {} : { failingEvidenceId: evidence[0].evidenceId }),
|
|
379
|
+
summary: `Repair verification phase ${input.kind} returned an unexpected result.`,
|
|
380
|
+
detail: `expected ${input.expectedStatus}`,
|
|
381
|
+
recoveryPlan: "Analyze the repair evidence and decide whether another bounded repair attempt is allowed.",
|
|
382
|
+
});
|
|
383
|
+
return { kind: "terminal", run: nextRun, evidence, failure };
|
|
384
|
+
};
|
|
385
|
+
//# sourceMappingURL=repair-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-loop.js","sourceRoot":"","sources":["../../src/controller/repair-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-factory.d.ts","sourceRoot":"","sources":["../../src/controller/report-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAEX,KAAK,GAAG,EAET,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,eAAO,MAAM,YAAY,GAAI,KAAK,GAAG,EAAE,OAAO,eAAe,KAAG,MAsE/D,CAAA"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ReportSchema, } from "../domain/index.js";
|
|
2
|
+
export const createReport = (run, clock) => {
|
|
3
|
+
const waivedRequirementIds = run.governance.waivers.map((waiver) => waiver.requirementId);
|
|
4
|
+
const tasks = "taskGraph" in run ? run.taskGraph.tasks.map((task) => createTaskSummary(task, run)) : [];
|
|
5
|
+
const traceability = "taskGraph" in run
|
|
6
|
+
? run.requirement.acceptanceCriteria.map((criterion, index) => createAcceptanceTrace(run, criterion, index))
|
|
7
|
+
: [];
|
|
8
|
+
const evidenceGaps = run.failures
|
|
9
|
+
.filter((failure) => failure.category === "context-gap")
|
|
10
|
+
.map((failure) => ({
|
|
11
|
+
taskId: failure.taskId,
|
|
12
|
+
missing: failure.missingContext,
|
|
13
|
+
summary: failure.summary,
|
|
14
|
+
}));
|
|
15
|
+
const openRequirementIds = traceability.some((item) => item.status === "blocked")
|
|
16
|
+
? [run.requirement.requirementId]
|
|
17
|
+
: run.status === "completed" || waivedRequirementIds.includes(run.requirement.requirementId)
|
|
18
|
+
? []
|
|
19
|
+
: [run.requirement.requirementId];
|
|
20
|
+
return ReportSchema.parse({
|
|
21
|
+
schemaVersion: "1.0.0",
|
|
22
|
+
run,
|
|
23
|
+
generatedAt: clock.now().toISOString(),
|
|
24
|
+
acceptance: {
|
|
25
|
+
status: openRequirementIds.length === 0 && waivedRequirementIds.length > 0
|
|
26
|
+
? "waived"
|
|
27
|
+
: run.status === "completed"
|
|
28
|
+
? "accepted"
|
|
29
|
+
: "blocked",
|
|
30
|
+
summary: `Run ${run.runId} is ${run.status}`,
|
|
31
|
+
openRequirementIds,
|
|
32
|
+
waivedRequirementIds,
|
|
33
|
+
},
|
|
34
|
+
traceability,
|
|
35
|
+
tasks,
|
|
36
|
+
unfinishedTasks: tasks.filter((task) => task.status !== "completed"),
|
|
37
|
+
verificationSummaries: run.evidence.map((evidence) => ({
|
|
38
|
+
evidenceId: evidence.evidenceId,
|
|
39
|
+
taskId: evidence.taskId,
|
|
40
|
+
command: evidence.verificationCommand.command,
|
|
41
|
+
commandSummary: evidence.verificationCommand.name,
|
|
42
|
+
status: evidence.outcome.status,
|
|
43
|
+
exitCode: evidence.outcome.exitCode,
|
|
44
|
+
outputDigest: evidence.outcome.outputDigest,
|
|
45
|
+
outputRef: evidence.outcome.outputRef,
|
|
46
|
+
})),
|
|
47
|
+
failures: run.failures.map((failure) => ({
|
|
48
|
+
failureId: failure.failureId,
|
|
49
|
+
taskId: failure.taskId,
|
|
50
|
+
category: failure.category,
|
|
51
|
+
summary: failure.summary,
|
|
52
|
+
relatedEvidenceIds: failure.relatedEvidenceIds,
|
|
53
|
+
})),
|
|
54
|
+
evidenceGaps,
|
|
55
|
+
waivers: run.governance.waivers.map((waiver) => ({
|
|
56
|
+
waiverId: waiver.waiverId,
|
|
57
|
+
requirementId: waiver.requirementId,
|
|
58
|
+
reason: waiver.reason,
|
|
59
|
+
residualRisk: waiver.residualRisk,
|
|
60
|
+
})),
|
|
61
|
+
residualRisks: [
|
|
62
|
+
...run.governance.waivers.map((waiver) => waiver.residualRisk),
|
|
63
|
+
...evidenceGaps.map((gap) => `Evidence gap for ${gap.taskId}: ${gap.summary}`),
|
|
64
|
+
],
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const createTaskSummary = (task, run) => ({
|
|
68
|
+
taskId: task.taskId,
|
|
69
|
+
status: task.status,
|
|
70
|
+
changedPaths: run === undefined
|
|
71
|
+
? []
|
|
72
|
+
: run.agentResults
|
|
73
|
+
.filter(isCompletedAgentResult)
|
|
74
|
+
.filter((result) => result.taskId === task.taskId)
|
|
75
|
+
.flatMap((result) => result.changedPaths),
|
|
76
|
+
evidenceIds: task.evidenceRefs,
|
|
77
|
+
});
|
|
78
|
+
const createAcceptanceTrace = (run, criterion, index) => {
|
|
79
|
+
const criterionId = `${run.requirement.requirementId}-ac-${index + 1}`;
|
|
80
|
+
const taskIds = run.taskGraph.tasks
|
|
81
|
+
.filter((task) => task.requirementIds.includes(run.requirement.requirementId))
|
|
82
|
+
.map((task) => task.taskId);
|
|
83
|
+
const evidence = run.evidence.filter((item) => item.acceptanceCriterionIds.includes(criterionId));
|
|
84
|
+
const agentResultIds = run.agentResults
|
|
85
|
+
.filter((result) => taskIds.includes(result.taskId) &&
|
|
86
|
+
result.evidenceIds.some((id) => evidence.some((item) => item.evidenceId === id)))
|
|
87
|
+
.map((result) => result.resultId);
|
|
88
|
+
const failureIds = run.failures
|
|
89
|
+
.filter((failure) => taskIds.includes(failure.taskId))
|
|
90
|
+
.map((failure) => failure.failureId);
|
|
91
|
+
const changedPaths = evidence.flatMap((item) => item.changedPaths);
|
|
92
|
+
const accepted = evidence.some((item) => item.outcome.status === "passed") &&
|
|
93
|
+
taskIds.some((taskId) => run.taskGraph.tasks.some((task) => task.taskId === taskId && task.status === "completed"));
|
|
94
|
+
return {
|
|
95
|
+
criterionId,
|
|
96
|
+
requirementId: run.requirement.requirementId,
|
|
97
|
+
criterion,
|
|
98
|
+
status: accepted ? "accepted" : "blocked",
|
|
99
|
+
taskIds,
|
|
100
|
+
changedPaths: [...new Set(changedPaths)],
|
|
101
|
+
verificationEvidenceIds: evidence.map((item) => item.evidenceId),
|
|
102
|
+
agentResultIds,
|
|
103
|
+
failureIds,
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
const isCompletedAgentResult = (result) => result.status === "completed";
|
|
107
|
+
//# sourceMappingURL=report-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-factory.js","sourceRoot":"","sources":["../../src/controller/report-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Requirement, RunId } from "../domain/index.js";
|
|
2
|
+
import type { HarnessSessionRole } from "../session/index.js";
|
|
3
|
+
export declare const roleSystemPrompt: (role: HarnessSessionRole) => string;
|
|
4
|
+
export declare const plannerTaskPrompt: (input: {
|
|
5
|
+
readonly requirement: Requirement;
|
|
6
|
+
readonly runId: RunId;
|
|
7
|
+
}) => string;
|
|
8
|
+
//# sourceMappingURL=role-prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-prompts.d.ts","sourceRoot":"","sources":["../../src/controller/role-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAY7D,eAAO,MAAM,gBAAgB,GAAI,MAAM,kBAAkB,KAAG,MAAmC,CAAA;AAE/F,eAAO,MAAM,iBAAiB,GAAI,OAAO;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB,KAAG,MAwBA,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const ROLE_SYSTEM_PROMPTS = {
|
|
2
|
+
intake: "将用户需求整理成结构化 Requirement JSON;不要推进状态。",
|
|
3
|
+
planner: "根据 Requirement JSON 生成 TaskGraph JSON;只输出 JSON,不执行任务。",
|
|
4
|
+
worker: "完成指定 Task;严格遵守 allowedPaths;只输出 WorkerOutput JSON。",
|
|
5
|
+
verifier: "只依据任务与实际 evidence 判断;只输出 VerifierOutput JSON。",
|
|
6
|
+
acceptance: "检查需求、任务和 evidence 的闭环;只输出结构化验收结论。",
|
|
7
|
+
"failure-analyzer": "根据实际失败证据分类根因并给出结构化恢复建议。",
|
|
8
|
+
"repair-worker": "根据失败证据输出结构化修复建议;只建议,不直接推进状态。",
|
|
9
|
+
};
|
|
10
|
+
export const roleSystemPrompt = (role) => ROLE_SYSTEM_PROMPTS[role];
|
|
11
|
+
export const plannerTaskPrompt = (input) => JSON.stringify({
|
|
12
|
+
requirement: input.requirement,
|
|
13
|
+
runId: input.runId,
|
|
14
|
+
outputContract: {
|
|
15
|
+
schemaVersion: "1.0.0",
|
|
16
|
+
type: "TaskGraph",
|
|
17
|
+
required: ["schemaVersion", "graphId", "runId", "version", "tasks", "edges"],
|
|
18
|
+
taskRequired: [
|
|
19
|
+
"schemaVersion",
|
|
20
|
+
"taskId",
|
|
21
|
+
"runId",
|
|
22
|
+
"requirementIds",
|
|
23
|
+
"title",
|
|
24
|
+
"summary",
|
|
25
|
+
"status",
|
|
26
|
+
"allowedPaths",
|
|
27
|
+
"verificationPlan",
|
|
28
|
+
"retryBudget",
|
|
29
|
+
"dependencies",
|
|
30
|
+
"evidenceRefs",
|
|
31
|
+
"assignedAgentRole",
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=role-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-prompts.js","sourceRoot":"","sources":["../../src/controller/role-prompts.ts"],"names":[],"mappings":"AAGA,MAAM,mBAAmB,GAAG;IAC1B,MAAM,EAAE,sCAAsC;IAC9C,OAAO,EAAE,uDAAuD;IAChE,MAAM,EAAE,oDAAoD;IAC5D,QAAQ,EAAE,+CAA+C;IACzD,UAAU,EAAE,mCAAmC;IAC/C,kBAAkB,EAAE,yBAAyB;IAC7C,eAAe,EAAE,8BAA8B;CACM,CAAA;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAU,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAE/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAGjC,EAAU,EAAE,CACX,IAAI,CAAC,SAAS,CAAC;IACb,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,cAAc,EAAE;QACd,aAAa,EAAE,OAAO;QACtB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;QAC5E,YAAY,EAAE;YACZ,eAAe;YACf,QAAQ;YACR,OAAO;YACP,gBAAgB;YAChB,OAAO;YACP,SAAS;YACT,QAAQ;YACR,cAAc;YACd,kBAAkB;YAClB,aAAa;YACb,cAAc;YACd,cAAc;YACd,mBAAmB;SACpB;KACF;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +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;AAmC/E,eAAO,MAAM,mBAAmB,GAAI,SAAS,0BAA0B,KAAG,aAsVzE,CAAA"}
|