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,124 @@
|
|
|
1
|
+
import { FailureSchema } from "../domain/index.js";
|
|
2
|
+
export const createModelFailure = (input) => FailureSchema.parse({
|
|
3
|
+
schemaVersion: "1.0.0",
|
|
4
|
+
failureId: input.failureId,
|
|
5
|
+
runId: input.runId,
|
|
6
|
+
taskId: input.taskId,
|
|
7
|
+
category: "model-failure",
|
|
8
|
+
summary: input.summary,
|
|
9
|
+
detail: input.detail,
|
|
10
|
+
recoveryPlan: input.recoveryPlan,
|
|
11
|
+
confidence: 0.9,
|
|
12
|
+
relatedEvidenceIds: [],
|
|
13
|
+
provider: input.provider,
|
|
14
|
+
});
|
|
15
|
+
export const createImplementationFailure = (input) => FailureSchema.parse({
|
|
16
|
+
schemaVersion: "1.0.0",
|
|
17
|
+
failureId: input.failureId,
|
|
18
|
+
runId: input.runId,
|
|
19
|
+
taskId: input.taskId,
|
|
20
|
+
category: "implementation-defect",
|
|
21
|
+
summary: input.summary,
|
|
22
|
+
detail: input.detail,
|
|
23
|
+
recoveryPlan: input.recoveryPlan,
|
|
24
|
+
confidence: 0.9,
|
|
25
|
+
relatedEvidenceIds: input.failingEvidenceId === undefined ? [] : [input.failingEvidenceId],
|
|
26
|
+
...(input.rootCauseFingerprint === undefined
|
|
27
|
+
? {}
|
|
28
|
+
: { rootCauseFingerprint: input.rootCauseFingerprint }),
|
|
29
|
+
...(input.failingEvidenceId === undefined
|
|
30
|
+
? {}
|
|
31
|
+
: { failingEvidenceId: input.failingEvidenceId }),
|
|
32
|
+
});
|
|
33
|
+
export const createVerificationEnvironmentFailure = (input) => FailureSchema.parse({
|
|
34
|
+
schemaVersion: "1.0.0",
|
|
35
|
+
failureId: input.failureId,
|
|
36
|
+
runId: input.runId,
|
|
37
|
+
taskId: input.taskId,
|
|
38
|
+
category: "verification-environment",
|
|
39
|
+
summary: `Verification environment failed while running ${input.commandName}.`,
|
|
40
|
+
detail: input.detail,
|
|
41
|
+
recoveryPlan: "Retry within the bounded task budget after checking the verification environment.",
|
|
42
|
+
confidence: 0.9,
|
|
43
|
+
relatedEvidenceIds: [],
|
|
44
|
+
verificationCommandName: input.commandName,
|
|
45
|
+
});
|
|
46
|
+
export const createAcceptanceFailure = (input) => FailureSchema.parse({
|
|
47
|
+
schemaVersion: "1.0.0",
|
|
48
|
+
failureId: input.failureId,
|
|
49
|
+
runId: input.runId,
|
|
50
|
+
taskId: input.taskId,
|
|
51
|
+
category: "acceptance-failure",
|
|
52
|
+
summary: input.summary,
|
|
53
|
+
detail: input.detail,
|
|
54
|
+
recoveryPlan: input.recoveryPlan,
|
|
55
|
+
confidence: 0.9,
|
|
56
|
+
relatedEvidenceIds: [input.failingEvidenceId],
|
|
57
|
+
failingEvidenceId: input.failingEvidenceId,
|
|
58
|
+
});
|
|
59
|
+
export const createContextGapFailure = (input) => FailureSchema.parse({
|
|
60
|
+
schemaVersion: "1.0.0",
|
|
61
|
+
failureId: input.failureId,
|
|
62
|
+
runId: input.runId,
|
|
63
|
+
taskId: input.taskId,
|
|
64
|
+
category: "context-gap",
|
|
65
|
+
summary: input.summary,
|
|
66
|
+
detail: input.detail,
|
|
67
|
+
recoveryPlan: input.recoveryPlan,
|
|
68
|
+
confidence: 0.9,
|
|
69
|
+
relatedEvidenceIds: input.relatedEvidenceIds,
|
|
70
|
+
missingContext: input.missingContext,
|
|
71
|
+
});
|
|
72
|
+
export const createRequirementAmbiguityFailure = (input) => FailureSchema.parse({
|
|
73
|
+
schemaVersion: "1.0.0",
|
|
74
|
+
failureId: input.failureId,
|
|
75
|
+
runId: input.runId,
|
|
76
|
+
taskId: input.taskId,
|
|
77
|
+
category: "requirement-ambiguity",
|
|
78
|
+
summary: input.summary,
|
|
79
|
+
detail: input.detail,
|
|
80
|
+
recoveryPlan: input.recoveryPlan,
|
|
81
|
+
confidence: 0.9,
|
|
82
|
+
relatedEvidenceIds: input.relatedEvidenceIds,
|
|
83
|
+
blockingQuestionId: input.blockingQuestionId,
|
|
84
|
+
});
|
|
85
|
+
export const createDependencyBlockedFailure = (input) => FailureSchema.parse({
|
|
86
|
+
schemaVersion: "1.0.0",
|
|
87
|
+
failureId: input.failureId,
|
|
88
|
+
runId: input.runId,
|
|
89
|
+
taskId: input.taskId,
|
|
90
|
+
category: "dependency-blocked",
|
|
91
|
+
summary: input.summary,
|
|
92
|
+
detail: input.detail,
|
|
93
|
+
recoveryPlan: input.recoveryPlan,
|
|
94
|
+
confidence: 0.9,
|
|
95
|
+
relatedEvidenceIds: input.relatedEvidenceIds,
|
|
96
|
+
blockedDependency: input.blockedDependency,
|
|
97
|
+
});
|
|
98
|
+
export const createScopeDriftFailure = (input) => FailureSchema.parse({
|
|
99
|
+
schemaVersion: "1.0.0",
|
|
100
|
+
failureId: input.failureId,
|
|
101
|
+
runId: input.runId,
|
|
102
|
+
taskId: input.taskId,
|
|
103
|
+
category: "scope-drift",
|
|
104
|
+
summary: input.summary,
|
|
105
|
+
detail: input.detail,
|
|
106
|
+
recoveryPlan: input.recoveryPlan,
|
|
107
|
+
confidence: 0.9,
|
|
108
|
+
relatedEvidenceIds: [],
|
|
109
|
+
driftedPaths: input.driftedPaths,
|
|
110
|
+
});
|
|
111
|
+
export const createMergeConflictFailure = (input) => FailureSchema.parse({
|
|
112
|
+
schemaVersion: "1.0.0",
|
|
113
|
+
failureId: input.failureId,
|
|
114
|
+
runId: input.runId,
|
|
115
|
+
taskId: input.taskId,
|
|
116
|
+
category: "merge-conflict",
|
|
117
|
+
summary: input.summary,
|
|
118
|
+
detail: input.detail,
|
|
119
|
+
recoveryPlan: input.recoveryPlan,
|
|
120
|
+
confidence: 0.9,
|
|
121
|
+
relatedEvidenceIds: [],
|
|
122
|
+
conflictingPaths: input.conflictingPaths,
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=failure-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure-factory.js","sourceRoot":"","sources":["../../src/controller/failure-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Requirement, RunId, Task, TaskGraph } from "../domain/index.js";
|
|
2
|
+
export declare const validateTaskGraph: (graph: TaskGraph, requirement: Requirement, runId: RunId) => void;
|
|
3
|
+
export declare const orderTasks: (graph: TaskGraph) => readonly Task[];
|
|
4
|
+
//# sourceMappingURL=graph-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-validator.d.ts","sourceRoot":"","sources":["../../src/controller/graph-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAU,MAAM,oBAAoB,CAAA;AAKrF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,SAAS,EAChB,aAAa,WAAW,EACxB,OAAO,KAAK,KACX,IAYF,CAAA;AAiBD,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,KAAG,SAAS,IAAI,EAkB1D,CAAA"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { GraphValidationError } from "./errors.js";
|
|
2
|
+
export const validateTaskGraph = (graph, requirement, runId) => {
|
|
3
|
+
const issues = [
|
|
4
|
+
...validateRunIds(graph, runId),
|
|
5
|
+
...validateTaskIds(graph.tasks),
|
|
6
|
+
...validateTaskReferences(graph.tasks),
|
|
7
|
+
...validateRequirementCoverage(graph.tasks, requirement),
|
|
8
|
+
...validateAcyclic(graph.tasks),
|
|
9
|
+
];
|
|
10
|
+
if (issues.length > 0) {
|
|
11
|
+
throw new GraphValidationError(issues);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const validateRunIds = (graph, runId) => {
|
|
15
|
+
const issues = [];
|
|
16
|
+
if (graph.runId !== runId) {
|
|
17
|
+
issues.push(`Graph runId ${graph.runId} does not match current runId ${runId}`);
|
|
18
|
+
}
|
|
19
|
+
for (const task of graph.tasks) {
|
|
20
|
+
if (task.runId !== graph.runId) {
|
|
21
|
+
issues.push(`Task ${task.taskId} runId ${task.runId} does not match graph runId ${graph.runId}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return issues;
|
|
25
|
+
};
|
|
26
|
+
export const orderTasks = (graph) => {
|
|
27
|
+
const ordered = [];
|
|
28
|
+
const remaining = new Set(graph.tasks.map((task) => task.taskId));
|
|
29
|
+
while (remaining.size > 0) {
|
|
30
|
+
const ready = graph.tasks.find((task) => remaining.has(task.taskId) &&
|
|
31
|
+
task.dependencies.every((dependency) => !remaining.has(dependency)));
|
|
32
|
+
if (ready === undefined) {
|
|
33
|
+
throw new GraphValidationError(["Task graph contains a dependency cycle"]);
|
|
34
|
+
}
|
|
35
|
+
remaining.delete(ready.taskId);
|
|
36
|
+
ordered.push(ready);
|
|
37
|
+
}
|
|
38
|
+
return ordered;
|
|
39
|
+
};
|
|
40
|
+
const validateTaskIds = (tasks) => {
|
|
41
|
+
const seen = new Set();
|
|
42
|
+
const issues = [];
|
|
43
|
+
for (const task of tasks) {
|
|
44
|
+
if (seen.has(task.taskId)) {
|
|
45
|
+
issues.push(`Duplicate task id: ${task.taskId}`);
|
|
46
|
+
}
|
|
47
|
+
seen.add(task.taskId);
|
|
48
|
+
}
|
|
49
|
+
return issues;
|
|
50
|
+
};
|
|
51
|
+
const validateTaskReferences = (tasks) => {
|
|
52
|
+
const ids = new Set(tasks.map((task) => task.taskId));
|
|
53
|
+
const issues = [];
|
|
54
|
+
for (const task of tasks) {
|
|
55
|
+
for (const dependency of task.dependencies) {
|
|
56
|
+
if (!ids.has(dependency)) {
|
|
57
|
+
issues.push(`Unknown dependency ${dependency} for task ${task.taskId}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return issues;
|
|
62
|
+
};
|
|
63
|
+
const validateRequirementCoverage = (tasks, requirement) => {
|
|
64
|
+
// MVP mapping: every acceptance criterion belongs to the single Requirement object.
|
|
65
|
+
// A graph covers each criterion when at least one task references that requirementId.
|
|
66
|
+
const covered = tasks.some((task) => task.requirementIds.includes(requirement.requirementId));
|
|
67
|
+
return covered ? [] : [`Requirement ${requirement.requirementId} is not covered by any task`];
|
|
68
|
+
};
|
|
69
|
+
const validateAcyclic = (tasks) => {
|
|
70
|
+
const taskById = new Map(tasks.map((task) => [task.taskId, task]));
|
|
71
|
+
const states = new Map();
|
|
72
|
+
for (const task of tasks) {
|
|
73
|
+
const issue = visitTask(task, taskById, states);
|
|
74
|
+
if (issue !== undefined) {
|
|
75
|
+
return [issue];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return [];
|
|
79
|
+
};
|
|
80
|
+
const visitTask = (task, taskById, states) => {
|
|
81
|
+
const state = states.get(task.taskId);
|
|
82
|
+
if (state === "visiting") {
|
|
83
|
+
return `Task graph contains a cycle at ${task.taskId}`;
|
|
84
|
+
}
|
|
85
|
+
if (state === "visited") {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
states.set(task.taskId, "visiting");
|
|
89
|
+
for (const dependencyId of task.dependencies) {
|
|
90
|
+
const dependency = taskById.get(dependencyId);
|
|
91
|
+
if (dependency === undefined) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const issue = visitTask(dependency, taskById, states);
|
|
95
|
+
if (issue !== undefined) {
|
|
96
|
+
return issue;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
states.set(task.taskId, "visited");
|
|
100
|
+
return undefined;
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=graph-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-validator.js","sourceRoot":"","sources":["../../src/controller/graph-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type { WorkspaceAdapter, WorkspaceChangeAssessment, WorkspacePolicy, } from "../workspace/index.js";
|
|
2
|
+
export { createGitWorkspaceAdapter, createGitWorktreeAdapter } from "../workspace/index.js";
|
|
3
|
+
export { type AbandonSessionInput, type AgentSessionRuntime, createAgentSessionRuntime, type OrphanSession, type RebindSessionInput, type SendAgentInput, } from "./agent-session.js";
|
|
4
|
+
export type { AnswerRunInput, ControllerClock, ControllerIdSource, CreateRunControllerOptions, PauseRunInput, RequirementInput, RunBudgetKind, RunController, WaiveRunInput, } from "./contracts.js";
|
|
5
|
+
export { AgentOutputParseError, AgentRunFailedError, GraphValidationError } from "./errors.js";
|
|
6
|
+
export { createEvidence } from "./evidence-factory.js";
|
|
7
|
+
export { orderTasks, validateTaskGraph } from "./graph-validator.js";
|
|
8
|
+
export { createReport } from "./report-factory.js";
|
|
9
|
+
export { createRunController } from "./run-controller.js";
|
|
10
|
+
export { createRunPersistence, type RunPersistence } from "./run-persistence.js";
|
|
11
|
+
export type { WorktreeEligibilityDecision, WorktreeEligibilityReason, } from "./worktree-eligibility.js";
|
|
12
|
+
export { analyzeWorktreeEligibility } from "./worktree-eligibility.js";
|
|
13
|
+
export type { WorktreeScheduler, WorktreeSchedulerInput, WorktreeSchedulerResult, WorktreeTaskResult, } from "./worktree-scheduler.js";
|
|
14
|
+
export { createWorktreeScheduler } from "./worktree-scheduler.js";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,yBAAyB,EACzB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAChF,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { createGitWorkspaceAdapter, createGitWorktreeAdapter } from "../workspace/index.js";
|
|
2
|
+
export { createAgentSessionRuntime, } from "./agent-session.js";
|
|
3
|
+
export { AgentOutputParseError, AgentRunFailedError, GraphValidationError } from "./errors.js";
|
|
4
|
+
export { createEvidence } from "./evidence-factory.js";
|
|
5
|
+
export { orderTasks, validateTaskGraph } from "./graph-validator.js";
|
|
6
|
+
export { createReport } from "./report-factory.js";
|
|
7
|
+
export { createRunController } from "./run-controller.js";
|
|
8
|
+
export { createRunPersistence } from "./run-persistence.js";
|
|
9
|
+
export { analyzeWorktreeEligibility } from "./worktree-eligibility.js";
|
|
10
|
+
export { createWorktreeScheduler } from "./worktree-scheduler.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EAGL,yBAAyB,GAI1B,MAAM,oBAAoB,CAAA;AAY3B,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAA;AAKhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAOtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type Evidence, type Failure, type Task } from "../domain/index.js";
|
|
2
|
+
import type { AgentSessionRuntime } from "./agent-session.js";
|
|
3
|
+
import type { CreateRunControllerOptions } from "./contracts.js";
|
|
4
|
+
import type { RunPersistence } from "./run-persistence.js";
|
|
5
|
+
import type { PlannedRun } from "./run-state.js";
|
|
6
|
+
type AnalyzeFailure = (input: {
|
|
7
|
+
readonly run: PlannedRun;
|
|
8
|
+
readonly task: Task;
|
|
9
|
+
readonly attempt: number;
|
|
10
|
+
readonly failure: Failure;
|
|
11
|
+
readonly evidence: readonly Evidence[];
|
|
12
|
+
}) => Promise<{
|
|
13
|
+
readonly run: PlannedRun;
|
|
14
|
+
readonly repairRequested: boolean;
|
|
15
|
+
readonly failure: Failure;
|
|
16
|
+
}>;
|
|
17
|
+
type RepairLoopResult = {
|
|
18
|
+
readonly kind: "completed";
|
|
19
|
+
readonly run: PlannedRun;
|
|
20
|
+
readonly evidence: readonly Evidence[];
|
|
21
|
+
readonly changedPaths: readonly string[];
|
|
22
|
+
} | {
|
|
23
|
+
readonly kind: "terminal";
|
|
24
|
+
readonly run: PlannedRun;
|
|
25
|
+
};
|
|
26
|
+
export declare const runRepairLoop: (input: {
|
|
27
|
+
readonly executor: {
|
|
28
|
+
readonly options: CreateRunControllerOptions;
|
|
29
|
+
readonly runtime: AgentSessionRuntime;
|
|
30
|
+
readonly writer: RunPersistence;
|
|
31
|
+
};
|
|
32
|
+
readonly run: PlannedRun;
|
|
33
|
+
readonly task: Task;
|
|
34
|
+
readonly attempt: number;
|
|
35
|
+
readonly failure: Failure;
|
|
36
|
+
readonly evidence: readonly Evidence[];
|
|
37
|
+
readonly analyzeFailure: AnalyzeFailure;
|
|
38
|
+
readonly repairAttempt?: number;
|
|
39
|
+
readonly seenRootCauseFingerprints?: readonly string[];
|
|
40
|
+
}) => Promise<RepairLoopResult>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=repair-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-loop.d.ts","sourceRoot":"","sources":["../../src/controller/repair-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,OAAO,EAEZ,KAAK,IAAI,EACV,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAOhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAMhD,KAAK,cAAc,GAAG,CAAC,KAAK,EAAE;IAC5B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAA;CACvC,KAAK,OAAO,CAAC;IACZ,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B,CAAC,CAAA;AAEF,KAAK,gBAAgB,GACjB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAA;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACzB,CAAA;AAEL,eAAO,MAAM,aAAa,GAAU,OAAO;IACzC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAA;QAC5C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;QACrC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;KAChC,CAAA;IACD,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAA;IACtC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,yBAAyB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACvD,KAAG,OAAO,CAAC,gBAAgB,CAmO3B,CAAA"}
|