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 @@
|
|
|
1
|
+
{"version":3,"file":"command-policy.js","sourceRoot":"","sources":["../../src/verification/command-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { VerificationCommand } from "../domain/index.js";
|
|
2
|
+
export declare const VerificationExecutionStatus: {
|
|
3
|
+
readonly passed: "passed";
|
|
4
|
+
readonly failed: "failed";
|
|
5
|
+
readonly timedOut: "timed_out";
|
|
6
|
+
};
|
|
7
|
+
export type VerificationExecutionStatusValue = (typeof VerificationExecutionStatus)[keyof typeof VerificationExecutionStatus];
|
|
8
|
+
export type ProcessRunnerCommand = {
|
|
9
|
+
readonly command: string;
|
|
10
|
+
readonly args?: readonly string[];
|
|
11
|
+
readonly cwd: string;
|
|
12
|
+
readonly timeoutMs: number;
|
|
13
|
+
readonly env?: Readonly<Record<string, string>>;
|
|
14
|
+
readonly shell?: false;
|
|
15
|
+
};
|
|
16
|
+
export type ProcessRunnerStreamResult = {
|
|
17
|
+
readonly content: string;
|
|
18
|
+
readonly truncated: boolean;
|
|
19
|
+
};
|
|
20
|
+
export type ProcessRunnerResult = {
|
|
21
|
+
readonly exitCode: number;
|
|
22
|
+
readonly stdout: ProcessRunnerStreamResult;
|
|
23
|
+
readonly stderr: ProcessRunnerStreamResult;
|
|
24
|
+
readonly timedOut: boolean;
|
|
25
|
+
readonly signal: NodeJS.Signals | null;
|
|
26
|
+
};
|
|
27
|
+
export interface ProcessRunner {
|
|
28
|
+
run(command: ProcessRunnerCommand): Promise<ProcessRunnerResult>;
|
|
29
|
+
}
|
|
30
|
+
export type VerificationRunnerClock = {
|
|
31
|
+
readonly now: () => Date;
|
|
32
|
+
};
|
|
33
|
+
export type VerificationOutputArtifact = {
|
|
34
|
+
readonly digest: string;
|
|
35
|
+
readonly reference: string;
|
|
36
|
+
readonly summary: string;
|
|
37
|
+
readonly content: string;
|
|
38
|
+
readonly truncated: boolean;
|
|
39
|
+
};
|
|
40
|
+
type VerificationRunRecordBase = {
|
|
41
|
+
readonly command: VerificationCommand;
|
|
42
|
+
readonly cwd: string;
|
|
43
|
+
readonly startedAt: string;
|
|
44
|
+
readonly completedAt: string;
|
|
45
|
+
readonly durationMs: number;
|
|
46
|
+
readonly exitCode: number;
|
|
47
|
+
readonly signal: NodeJS.Signals | null;
|
|
48
|
+
readonly output: {
|
|
49
|
+
readonly stdout: VerificationOutputArtifact;
|
|
50
|
+
readonly stderr: VerificationOutputArtifact;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export type PassedVerificationRunRecord = VerificationRunRecordBase & {
|
|
54
|
+
readonly status: typeof VerificationExecutionStatus.passed;
|
|
55
|
+
};
|
|
56
|
+
export type FailedVerificationRunRecord = VerificationRunRecordBase & {
|
|
57
|
+
readonly status: typeof VerificationExecutionStatus.failed;
|
|
58
|
+
};
|
|
59
|
+
export type TimedOutVerificationRunRecord = VerificationRunRecordBase & {
|
|
60
|
+
readonly status: typeof VerificationExecutionStatus.timedOut;
|
|
61
|
+
};
|
|
62
|
+
export type VerificationRunRecord = PassedVerificationRunRecord | FailedVerificationRunRecord | TimedOutVerificationRunRecord;
|
|
63
|
+
export type VerificationRunRequest = {
|
|
64
|
+
readonly verificationCommands: readonly VerificationCommand[];
|
|
65
|
+
readonly defaultWorkingDirectory: string;
|
|
66
|
+
};
|
|
67
|
+
export type VerificationRunResult = {
|
|
68
|
+
readonly records: readonly VerificationRunRecord[];
|
|
69
|
+
readonly stoppedEarly: boolean;
|
|
70
|
+
};
|
|
71
|
+
export type VerificationRunnerOptions = {
|
|
72
|
+
readonly processRunner: ProcessRunner;
|
|
73
|
+
readonly clock: VerificationRunnerClock;
|
|
74
|
+
readonly createOutputRefId: () => string;
|
|
75
|
+
readonly maxCapturedOutputBytes: number;
|
|
76
|
+
readonly outputSummaryMaxLength: number;
|
|
77
|
+
};
|
|
78
|
+
export interface VerificationRunner {
|
|
79
|
+
run(request: VerificationRunRequest): Promise<VerificationRunResult>;
|
|
80
|
+
}
|
|
81
|
+
export {};
|
|
82
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/verification/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/verification/contracts.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,WAAW;CACb,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ProcessRunner, ProcessRunnerCommand, ProcessRunnerResult } from "./contracts.js";
|
|
2
|
+
export declare class FakeProcessRunnerExhaustedError extends Error {
|
|
3
|
+
readonly command: string;
|
|
4
|
+
readonly cwd: string;
|
|
5
|
+
readonly queuedResultCount: number;
|
|
6
|
+
readonly name = "FakeProcessRunnerExhaustedError";
|
|
7
|
+
constructor(command: string, cwd: string, queuedResultCount: number);
|
|
8
|
+
}
|
|
9
|
+
export type CreateFakeProcessRunnerOptions = {
|
|
10
|
+
readonly results: readonly ProcessRunnerResult[];
|
|
11
|
+
};
|
|
12
|
+
export type FakeProcessRunner = ProcessRunner & {
|
|
13
|
+
readonly calls: readonly ProcessRunnerCommand[];
|
|
14
|
+
};
|
|
15
|
+
export declare const createFakeProcessRunner: (options: CreateFakeProcessRunnerOptions) => FakeProcessRunner;
|
|
16
|
+
//# sourceMappingURL=fake-process-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-process-runner.d.ts","sourceRoot":"","sources":["../../src/verification/fake-process-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAE9F,qBAAa,+BAAgC,SAAQ,KAAK;IAItD,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IALpC,QAAQ,CAAC,IAAI,qCAAoC;gBAGtC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM;CAIrC;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAChD,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,SAAS,8BAA8B,KACtC,iBAoBF,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export class FakeProcessRunnerExhaustedError extends Error {
|
|
2
|
+
command;
|
|
3
|
+
cwd;
|
|
4
|
+
queuedResultCount;
|
|
5
|
+
name = "FakeProcessRunnerExhaustedError";
|
|
6
|
+
constructor(command, cwd, queuedResultCount) {
|
|
7
|
+
super(`fake process runner has no queued result for ${command} in ${cwd}`);
|
|
8
|
+
this.command = command;
|
|
9
|
+
this.cwd = cwd;
|
|
10
|
+
this.queuedResultCount = queuedResultCount;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export const createFakeProcessRunner = (options) => {
|
|
14
|
+
const queuedResults = [...options.results];
|
|
15
|
+
const calls = [];
|
|
16
|
+
return {
|
|
17
|
+
calls,
|
|
18
|
+
async run(command) {
|
|
19
|
+
calls.push(command);
|
|
20
|
+
const nextResult = queuedResults.shift();
|
|
21
|
+
if (nextResult === undefined) {
|
|
22
|
+
throw new FakeProcessRunnerExhaustedError(command.command, command.cwd, options.results.length);
|
|
23
|
+
}
|
|
24
|
+
return nextResult;
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=fake-process-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-process-runner.js","sourceRoot":"","sources":["../../src/verification/fake-process-runner.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAI7C;IACA;IACA;IALF,IAAI,GAAG,iCAAiC,CAAA;IAEjD,YACW,OAAe,EACf,GAAW,EACX,iBAAyB;QAElC,KAAK,CAAC,gDAAgD,OAAO,OAAO,GAAG,EAAE,CAAC,CAAA;QAJjE,YAAO,GAAP,OAAO,CAAQ;QACf,QAAG,GAAH,GAAG,CAAQ;QACX,sBAAiB,GAAjB,iBAAiB,CAAQ;IAGpC,CAAC;CACF;AAUD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAuC,EACpB,EAAE;IACrB,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,KAAK,GAA2B,EAAE,CAAA;IAExC,OAAO;QACL,KAAK;QACL,KAAK,CAAC,GAAG,CAAC,OAAO;YACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnB,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,CAAA;YACxC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,+BAA+B,CACvC,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,OAAO,CAAC,MAAM,CACvB,CAAA;YACH,CAAC;YAED,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { FailedVerificationRunRecord, PassedVerificationRunRecord, ProcessRunner, ProcessRunnerCommand, ProcessRunnerResult, TimedOutVerificationRunRecord, VerificationExecutionStatusValue, VerificationOutputArtifact, VerificationRunner, VerificationRunnerClock, VerificationRunnerOptions, VerificationRunRecord, VerificationRunRequest, VerificationRunResult, } from "./contracts.js";
|
|
2
|
+
export { VerificationExecutionStatus } from "./contracts.js";
|
|
3
|
+
export { type CreateFakeProcessRunnerOptions, createFakeProcessRunner, type FakeProcessRunner, FakeProcessRunnerExhaustedError, } from "./fake-process-runner.js";
|
|
4
|
+
export { type CreateNodeProcessRunnerOptions, createNodeProcessRunner, NodeProcessRunnerSpawnError, } from "./node-process-runner.js";
|
|
5
|
+
export { createVerificationRunner } from "./verification-runner.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,+BAA+B,GAChC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { VerificationExecutionStatus } from "./contracts.js";
|
|
2
|
+
export { createFakeProcessRunner, FakeProcessRunnerExhaustedError, } from "./fake-process-runner.js";
|
|
3
|
+
export { createNodeProcessRunner, NodeProcessRunnerSpawnError, } from "./node-process-runner.js";
|
|
4
|
+
export { createVerificationRunner } from "./verification-runner.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAEL,uBAAuB,EAEvB,+BAA+B,GAChC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAEL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProcessRunner } from "./contracts.js";
|
|
2
|
+
export declare class NodeProcessRunnerSpawnError extends Error {
|
|
3
|
+
readonly command: string;
|
|
4
|
+
readonly cwd: string;
|
|
5
|
+
readonly name = "NodeProcessRunnerSpawnError";
|
|
6
|
+
constructor(command: string, cwd: string, options?: ErrorOptions);
|
|
7
|
+
}
|
|
8
|
+
export type CreateNodeProcessRunnerOptions = {
|
|
9
|
+
readonly maxCapturedOutputBytes: number;
|
|
10
|
+
};
|
|
11
|
+
export declare const createNodeProcessRunner: (options: CreateNodeProcessRunnerOptions) => ProcessRunner;
|
|
12
|
+
//# sourceMappingURL=node-process-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-process-runner.d.ts","sourceRoot":"","sources":["../../src/verification/node-process-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAkD,MAAM,gBAAgB,CAAA;AAEnG,qBAAa,2BAA4B,SAAQ,KAAK;IAIlD,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM;IAJtB,QAAQ,CAAC,IAAI,iCAAgC;gBAGlC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,YAAY;CAIzB;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;CACxC,CAAA;AAmCD,eAAO,MAAM,uBAAuB,GAAI,SAAS,8BAA8B,KAAG,aA0DjF,CAAA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
export class NodeProcessRunnerSpawnError extends Error {
|
|
3
|
+
command;
|
|
4
|
+
cwd;
|
|
5
|
+
name = "NodeProcessRunnerSpawnError";
|
|
6
|
+
constructor(command, cwd, options) {
|
|
7
|
+
super(`failed to spawn verification command ${command} in ${cwd}`, options);
|
|
8
|
+
this.command = command;
|
|
9
|
+
this.cwd = cwd;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const createBoundedCollector = (maxCapturedOutputBytes) => {
|
|
13
|
+
const chunks = [];
|
|
14
|
+
let capturedBytes = 0;
|
|
15
|
+
let truncated = false;
|
|
16
|
+
return {
|
|
17
|
+
append(chunk) {
|
|
18
|
+
const buffer = typeof chunk === "string" ? Buffer.from(chunk) : chunk;
|
|
19
|
+
const remainingBytes = maxCapturedOutputBytes - capturedBytes;
|
|
20
|
+
if (remainingBytes <= 0) {
|
|
21
|
+
truncated = true;
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const slice = buffer.subarray(0, remainingBytes);
|
|
25
|
+
truncated = truncated || slice.byteLength < buffer.byteLength;
|
|
26
|
+
chunks.push(slice);
|
|
27
|
+
capturedBytes += slice.byteLength;
|
|
28
|
+
},
|
|
29
|
+
result() {
|
|
30
|
+
return {
|
|
31
|
+
content: Buffer.concat(chunks).toString("utf8"),
|
|
32
|
+
truncated,
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export const createNodeProcessRunner = (options) => {
|
|
38
|
+
return {
|
|
39
|
+
async run(command) {
|
|
40
|
+
const stdoutCollector = createBoundedCollector(options.maxCapturedOutputBytes);
|
|
41
|
+
const stderrCollector = createBoundedCollector(options.maxCapturedOutputBytes);
|
|
42
|
+
const abortController = new AbortController();
|
|
43
|
+
let timedOut = false;
|
|
44
|
+
return await new Promise((resolve, reject) => {
|
|
45
|
+
const child = spawn(command.command, command.args ?? [], {
|
|
46
|
+
cwd: command.cwd,
|
|
47
|
+
...(command.env === undefined ? {} : { env: { ...command.env } }),
|
|
48
|
+
...(command.shell === undefined ? {} : { shell: command.shell }),
|
|
49
|
+
detached: true,
|
|
50
|
+
signal: abortController.signal,
|
|
51
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
52
|
+
});
|
|
53
|
+
const timer = setTimeout(() => {
|
|
54
|
+
timedOut = true;
|
|
55
|
+
abortController.abort();
|
|
56
|
+
terminateChildProcess(child.pid);
|
|
57
|
+
}, command.timeoutMs);
|
|
58
|
+
const clearTimer = () => {
|
|
59
|
+
clearTimeout(timer);
|
|
60
|
+
};
|
|
61
|
+
child.stdout.on("data", (chunk) => {
|
|
62
|
+
stdoutCollector.append(chunk);
|
|
63
|
+
});
|
|
64
|
+
child.stderr.on("data", (chunk) => {
|
|
65
|
+
stderrCollector.append(chunk);
|
|
66
|
+
});
|
|
67
|
+
child.on("error", (error) => {
|
|
68
|
+
if (timedOut && error.name === "AbortError") {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
clearTimer();
|
|
72
|
+
reject(new NodeProcessRunnerSpawnError(command.command, command.cwd, { cause: error }));
|
|
73
|
+
});
|
|
74
|
+
child.on("close", (exitCode, signal) => {
|
|
75
|
+
clearTimer();
|
|
76
|
+
resolve({
|
|
77
|
+
exitCode: exitCode ?? -1,
|
|
78
|
+
stdout: stdoutCollector.result(),
|
|
79
|
+
stderr: stderrCollector.result(),
|
|
80
|
+
timedOut,
|
|
81
|
+
signal,
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
const terminateChildProcess = (pid) => {
|
|
89
|
+
if (pid === undefined) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
process.kill(-pid, "SIGTERM");
|
|
94
|
+
}
|
|
95
|
+
catch { }
|
|
96
|
+
setTimeout(() => {
|
|
97
|
+
try {
|
|
98
|
+
process.kill(-pid, "SIGKILL");
|
|
99
|
+
}
|
|
100
|
+
catch { }
|
|
101
|
+
}, 100).unref();
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=node-process-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-process-runner.js","sourceRoot":"","sources":["../../src/verification/node-process-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAI1C,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAIzC;IACA;IAJF,IAAI,GAAG,6BAA6B,CAAA;IAE7C,YACW,OAAe,EACf,GAAW,EACpB,OAAsB;QAEtB,KAAK,CAAC,wCAAwC,OAAO,OAAO,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;QAJlE,YAAO,GAAP,OAAO,CAAQ;QACf,QAAG,GAAH,GAAG,CAAQ;IAItB,CAAC;CACF;AAWD,MAAM,sBAAsB,GAAG,CAAC,sBAA8B,EAAoB,EAAE;IAClF,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,OAAO;QACL,MAAM,CAAC,KAAK;YACV,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YACrE,MAAM,cAAc,GAAG,sBAAsB,GAAG,aAAa,CAAA;YAC7D,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;gBACxB,SAAS,GAAG,IAAI,CAAA;gBAChB,OAAM;YACR,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;YAChD,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;YAC7D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAClB,aAAa,IAAI,KAAK,CAAC,UAAU,CAAA;QACnC,CAAC;QACD,MAAM;YACJ,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC/C,SAAS;aACV,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAuC,EAAiB,EAAE;IAChG,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,OAAO;YACf,MAAM,eAAe,GAAG,sBAAsB,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;YAC9E,MAAM,eAAe,GAAG,sBAAsB,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;YAC9E,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;YAC7C,IAAI,QAAQ,GAAG,KAAK,CAAA;YAEpB,OAAO,MAAM,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAChE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE;oBACvD,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;oBACjE,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;oBAChE,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,eAAe,CAAC,MAAM;oBAC9B,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;iBAClC,CAAC,CAAA;gBAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,QAAQ,GAAG,IAAI,CAAA;oBACf,eAAe,CAAC,KAAK,EAAE,CAAA;oBACvB,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAClC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;gBAErB,MAAM,UAAU,GAAG,GAAS,EAAE;oBAC5B,YAAY,CAAC,KAAK,CAAC,CAAA;gBACrB,CAAC,CAAA;gBAED,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;oBACjD,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC/B,CAAC,CAAC,CAAA;gBAEF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;oBACjD,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC/B,CAAC,CAAC,CAAA;gBAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;oBACjC,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC5C,OAAM;oBACR,CAAC;oBAED,UAAU,EAAE,CAAA;oBACZ,MAAM,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;gBACzF,CAAC,CAAC,CAAA;gBAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;oBACrC,UAAU,EAAE,CAAA;oBACZ,OAAO,CAAC;wBACN,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC;wBACxB,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE;wBAChC,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE;wBAChC,QAAQ;wBACR,MAAM;qBACP,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,GAAuB,EAAQ,EAAE;IAC9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAC/B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-runner.d.ts","sourceRoot":"","sources":["../../src/verification/verification-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAKV,kBAAkB,EAClB,yBAAyB,EAE1B,MAAM,gBAAgB,CAAA;AA6FvB,eAAO,MAAM,wBAAwB,GACnC,SAAS,yBAAyB,KACjC,kBAsCF,CAAA"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { normalizeVerificationCommand } from "./command-policy.js";
|
|
3
|
+
import { VerificationExecutionStatus } from "./contracts.js";
|
|
4
|
+
const EMPTY_OUTPUT_SUMMARY = "(empty output)";
|
|
5
|
+
const createDigest = (value) => {
|
|
6
|
+
return `sha256:${createHash("sha256").update(value).digest("hex")}`;
|
|
7
|
+
};
|
|
8
|
+
const createOutputSummary = (content, truncated, maxLength) => {
|
|
9
|
+
const normalized = content.trim();
|
|
10
|
+
const baseSummary = normalized.length > 0 ? normalized : EMPTY_OUTPUT_SUMMARY;
|
|
11
|
+
const truncatedSummary = baseSummary.slice(0, maxLength);
|
|
12
|
+
return truncated ? `${truncatedSummary}...` : truncatedSummary;
|
|
13
|
+
};
|
|
14
|
+
const createOutputArtifact = (input) => {
|
|
15
|
+
return {
|
|
16
|
+
digest: createDigest(input.stream.content),
|
|
17
|
+
reference: input.reference,
|
|
18
|
+
summary: createOutputSummary(input.stream.content, input.stream.truncated, input.outputSummaryMaxLength),
|
|
19
|
+
content: input.stream.content,
|
|
20
|
+
truncated: input.stream.truncated,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
const createStatus = (result) => {
|
|
24
|
+
if (result.timedOut) {
|
|
25
|
+
return VerificationExecutionStatus.timedOut;
|
|
26
|
+
}
|
|
27
|
+
if (result.exitCode === 0) {
|
|
28
|
+
return VerificationExecutionStatus.passed;
|
|
29
|
+
}
|
|
30
|
+
return VerificationExecutionStatus.failed;
|
|
31
|
+
};
|
|
32
|
+
const createRecord = (input) => {
|
|
33
|
+
return {
|
|
34
|
+
status: createStatus(input.result),
|
|
35
|
+
command: input.command,
|
|
36
|
+
cwd: input.cwd,
|
|
37
|
+
startedAt: input.startedAt.toISOString(),
|
|
38
|
+
completedAt: input.completedAt.toISOString(),
|
|
39
|
+
durationMs: input.completedAt.getTime() - input.startedAt.getTime(),
|
|
40
|
+
exitCode: input.result.exitCode,
|
|
41
|
+
signal: input.result.signal,
|
|
42
|
+
output: {
|
|
43
|
+
stdout: createOutputArtifact({
|
|
44
|
+
reference: `${input.outputRefId}-stdout`,
|
|
45
|
+
stream: input.result.stdout,
|
|
46
|
+
outputSummaryMaxLength: input.outputSummaryMaxLength,
|
|
47
|
+
}),
|
|
48
|
+
stderr: createOutputArtifact({
|
|
49
|
+
reference: `${input.outputRefId}-stderr`,
|
|
50
|
+
stream: input.result.stderr,
|
|
51
|
+
outputSummaryMaxLength: input.outputSummaryMaxLength,
|
|
52
|
+
}),
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
const shouldStop = (record) => {
|
|
57
|
+
switch (record.status) {
|
|
58
|
+
case VerificationExecutionStatus.passed:
|
|
59
|
+
return false;
|
|
60
|
+
case VerificationExecutionStatus.failed:
|
|
61
|
+
case VerificationExecutionStatus.timedOut:
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export const createVerificationRunner = (options) => {
|
|
66
|
+
return {
|
|
67
|
+
async run(request) {
|
|
68
|
+
const records = [];
|
|
69
|
+
for (const command of request.verificationCommands) {
|
|
70
|
+
const normalizedCommand = normalizeVerificationCommand({
|
|
71
|
+
workspaceRoot: request.defaultWorkingDirectory,
|
|
72
|
+
command,
|
|
73
|
+
});
|
|
74
|
+
const startedAt = options.clock.now();
|
|
75
|
+
const result = await options.processRunner.run(normalizedCommand);
|
|
76
|
+
const completedAt = options.clock.now();
|
|
77
|
+
const record = createRecord({
|
|
78
|
+
command,
|
|
79
|
+
cwd: normalizedCommand.cwd,
|
|
80
|
+
startedAt,
|
|
81
|
+
completedAt,
|
|
82
|
+
result,
|
|
83
|
+
outputRefId: options.createOutputRefId(),
|
|
84
|
+
outputSummaryMaxLength: options.outputSummaryMaxLength,
|
|
85
|
+
});
|
|
86
|
+
records.push(record);
|
|
87
|
+
if (shouldStop(record)) {
|
|
88
|
+
return {
|
|
89
|
+
records,
|
|
90
|
+
stoppedEarly: true,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
records,
|
|
96
|
+
stoppedEarly: false,
|
|
97
|
+
};
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=verification-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-runner.js","sourceRoot":"","sources":["../../src/verification/verification-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const GitWorkspaceStateSchema: z.ZodReadonly<z.ZodObject<{
|
|
3
|
+
mode: z.ZodLiteral<"git">;
|
|
4
|
+
headRef: z.ZodNullable<z.ZodString>;
|
|
5
|
+
baselineDiffDigest: z.ZodString;
|
|
6
|
+
managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
7
|
+
initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
8
|
+
dirtyAllowed: z.ZodBoolean;
|
|
9
|
+
harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
10
|
+
}, z.core.$strip>>;
|
|
11
|
+
export declare const NonGitWorkspaceStateSchema: z.ZodReadonly<z.ZodObject<{
|
|
12
|
+
mode: z.ZodLiteral<"non-git">;
|
|
13
|
+
headRef: z.ZodNull;
|
|
14
|
+
baselineDiffDigest: z.ZodString;
|
|
15
|
+
managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
16
|
+
initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
17
|
+
dirtyAllowed: z.ZodBoolean;
|
|
18
|
+
harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
19
|
+
}, z.core.$strip>>;
|
|
20
|
+
export declare const WorkspaceGitStateSchema: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
21
|
+
mode: z.ZodLiteral<"git">;
|
|
22
|
+
headRef: z.ZodNullable<z.ZodString>;
|
|
23
|
+
baselineDiffDigest: z.ZodString;
|
|
24
|
+
managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
25
|
+
initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
26
|
+
dirtyAllowed: z.ZodBoolean;
|
|
27
|
+
harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
28
|
+
}, z.core.$strip>>, z.ZodReadonly<z.ZodObject<{
|
|
29
|
+
mode: z.ZodLiteral<"non-git">;
|
|
30
|
+
headRef: z.ZodNull;
|
|
31
|
+
baselineDiffDigest: z.ZodString;
|
|
32
|
+
managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
33
|
+
initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
34
|
+
dirtyAllowed: z.ZodBoolean;
|
|
35
|
+
harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
36
|
+
}, z.core.$strip>>]>;
|
|
37
|
+
export declare const RunWorkspaceSchema: z.ZodReadonly<z.ZodObject<{
|
|
38
|
+
git: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
39
|
+
mode: z.ZodLiteral<"git">;
|
|
40
|
+
headRef: z.ZodNullable<z.ZodString>;
|
|
41
|
+
baselineDiffDigest: z.ZodString;
|
|
42
|
+
managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
43
|
+
initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
44
|
+
dirtyAllowed: z.ZodBoolean;
|
|
45
|
+
harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
46
|
+
}, z.core.$strip>>, z.ZodReadonly<z.ZodObject<{
|
|
47
|
+
mode: z.ZodLiteral<"non-git">;
|
|
48
|
+
headRef: z.ZodNull;
|
|
49
|
+
baselineDiffDigest: z.ZodString;
|
|
50
|
+
managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
51
|
+
initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
52
|
+
dirtyAllowed: z.ZodBoolean;
|
|
53
|
+
harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
54
|
+
}, z.core.$strip>>]>;
|
|
55
|
+
}, z.core.$strip>>;
|
|
56
|
+
export type GitWorkspaceState = z.infer<typeof GitWorkspaceStateSchema>;
|
|
57
|
+
export type NonGitWorkspaceState = z.infer<typeof NonGitWorkspaceStateSchema>;
|
|
58
|
+
export type WorkspaceGitState = z.infer<typeof WorkspaceGitStateSchema>;
|
|
59
|
+
export type RunWorkspace = z.infer<typeof RunWorkspaceSchema>;
|
|
60
|
+
export declare const createWorkspaceDigest: (value: string) => string;
|
|
61
|
+
export declare const createBufferDigest: (value: Buffer) => string;
|
|
62
|
+
export declare const createDefaultRunWorkspace: () => RunWorkspace;
|
|
63
|
+
//# sourceMappingURL=git-baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-baseline.d.ts","sourceRoot":"","sources":["../../src/workspace/git-baseline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,eAAO,MAAM,uBAAuB;;;;;;;;kBAavB,CAAA;AAEb,eAAO,MAAM,0BAA0B;;;;;;;;kBAU1B,CAAA;AAEb,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;oBAGlC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;kBAIlB,CAAA;AAEb,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,MACgB,CAAA;AAEtE,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MACW,CAAA;AAE9D,eAAO,MAAM,yBAAyB,QAAO,YAU3C,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { WorkspaceRelativePathSchema } from "../path/workspace-path.js";
|
|
4
|
+
const Sha256DigestSchema = z.string().regex(/^sha256:[a-f0-9]{64}$/);
|
|
5
|
+
const ManagedFileHashesSchema = z.record(WorkspaceRelativePathSchema, Sha256DigestSchema).readonly();
|
|
6
|
+
export const GitWorkspaceStateSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
mode: z.literal("git"),
|
|
9
|
+
headRef: z
|
|
10
|
+
.string()
|
|
11
|
+
.regex(/^[a-f0-9]{40}$/)
|
|
12
|
+
.nullable(),
|
|
13
|
+
baselineDiffDigest: Sha256DigestSchema,
|
|
14
|
+
managedFileHashes: ManagedFileHashesSchema,
|
|
15
|
+
initialDirtyPaths: z.array(WorkspaceRelativePathSchema).readonly(),
|
|
16
|
+
dirtyAllowed: z.boolean(),
|
|
17
|
+
harnessChangedPaths: z.array(WorkspaceRelativePathSchema).readonly(),
|
|
18
|
+
})
|
|
19
|
+
.readonly();
|
|
20
|
+
export const NonGitWorkspaceStateSchema = z
|
|
21
|
+
.object({
|
|
22
|
+
mode: z.literal("non-git"),
|
|
23
|
+
headRef: z.null(),
|
|
24
|
+
baselineDiffDigest: Sha256DigestSchema,
|
|
25
|
+
managedFileHashes: ManagedFileHashesSchema,
|
|
26
|
+
initialDirtyPaths: z.array(WorkspaceRelativePathSchema).readonly(),
|
|
27
|
+
dirtyAllowed: z.boolean(),
|
|
28
|
+
harnessChangedPaths: z.array(WorkspaceRelativePathSchema).readonly(),
|
|
29
|
+
})
|
|
30
|
+
.readonly();
|
|
31
|
+
export const WorkspaceGitStateSchema = z.union([
|
|
32
|
+
GitWorkspaceStateSchema,
|
|
33
|
+
NonGitWorkspaceStateSchema,
|
|
34
|
+
]);
|
|
35
|
+
export const RunWorkspaceSchema = z
|
|
36
|
+
.object({
|
|
37
|
+
git: WorkspaceGitStateSchema,
|
|
38
|
+
})
|
|
39
|
+
.readonly();
|
|
40
|
+
export const createWorkspaceDigest = (value) => `sha256:${createHash("sha256").update(value, "utf8").digest("hex")}`;
|
|
41
|
+
export const createBufferDigest = (value) => `sha256:${createHash("sha256").update(value).digest("hex")}`;
|
|
42
|
+
export const createDefaultRunWorkspace = () => ({
|
|
43
|
+
git: {
|
|
44
|
+
mode: "non-git",
|
|
45
|
+
headRef: null,
|
|
46
|
+
baselineDiffDigest: createWorkspaceDigest(""),
|
|
47
|
+
managedFileHashes: {},
|
|
48
|
+
initialDirtyPaths: [],
|
|
49
|
+
dirtyAllowed: false,
|
|
50
|
+
harnessChangedPaths: [],
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=git-baseline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-baseline.js","sourceRoot":"","sources":["../../src/workspace/git-baseline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAEvE,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;AAEpE,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAA;AAEpG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACtB,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,KAAK,CAAC,gBAAgB,CAAC;SACvB,QAAQ,EAAE;IACb,kBAAkB,EAAE,kBAAkB;IACtC,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;IAClE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;CACrE,CAAC;KACD,QAAQ,EAAE,CAAA;AAEb,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;IACjB,kBAAkB,EAAE,kBAAkB;IACtC,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;IAClE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;CACrE,CAAC;KACD,QAAQ,EAAE,CAAA;AAEb,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC7C,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,GAAG,EAAE,uBAAuB;CAC7B,CAAC;KACD,QAAQ,EAAE,CAAA;AAOb,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAU,EAAE,CAC7D,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAEtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE,CAC1D,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAE9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAiB,EAAE,CAAC,CAAC;IAC5D,GAAG,EAAE;QACH,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,kBAAkB,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAC7C,iBAAiB,EAAE,EAAE;QACrB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,KAAK;QACnB,mBAAmB,EAAE,EAAE;KACxB;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type GitWorkspaceState, type WorkspaceGitState } from "./git-baseline.js";
|
|
2
|
+
export type WorkspacePolicy = {
|
|
3
|
+
readonly allowDirty: boolean;
|
|
4
|
+
};
|
|
5
|
+
type GitRepositoryState = {
|
|
6
|
+
readonly mode: "git";
|
|
7
|
+
readonly repoRoot: string;
|
|
8
|
+
readonly projectRoot: string;
|
|
9
|
+
readonly headRef: string | null;
|
|
10
|
+
readonly dirtyPaths: readonly string[];
|
|
11
|
+
readonly diffDigest: string;
|
|
12
|
+
readonly managedFileHashes: Readonly<Record<string, string>>;
|
|
13
|
+
};
|
|
14
|
+
type NonGitRepositoryState = {
|
|
15
|
+
readonly mode: "non-git";
|
|
16
|
+
readonly managedFileHashes: Readonly<Record<string, string>>;
|
|
17
|
+
};
|
|
18
|
+
type RepositoryState = GitRepositoryState | NonGitRepositoryState;
|
|
19
|
+
export type WorkspaceChangeAssessment = {
|
|
20
|
+
readonly status: "ok";
|
|
21
|
+
readonly actualChangedPaths: readonly string[];
|
|
22
|
+
readonly nextWorkspace: GitWorkspaceState;
|
|
23
|
+
} | {
|
|
24
|
+
readonly status: "paused";
|
|
25
|
+
readonly actualChangedPaths: readonly string[];
|
|
26
|
+
readonly detail: string;
|
|
27
|
+
readonly driftedPaths: readonly string[];
|
|
28
|
+
};
|
|
29
|
+
export interface WorkspaceAdapter {
|
|
30
|
+
captureBaseline(policy: WorkspacePolicy): Promise<WorkspaceGitState>;
|
|
31
|
+
captureCurrentState(): Promise<RepositoryState>;
|
|
32
|
+
assessTaskChanges(input: {
|
|
33
|
+
readonly baseline: GitWorkspaceState;
|
|
34
|
+
readonly before: RepositoryState;
|
|
35
|
+
readonly afterWorker: RepositoryState;
|
|
36
|
+
readonly afterVerification: RepositoryState;
|
|
37
|
+
readonly claimedChangedPaths: readonly string[];
|
|
38
|
+
readonly allowedPaths: readonly string[];
|
|
39
|
+
}): Promise<WorkspaceChangeAssessment>;
|
|
40
|
+
}
|
|
41
|
+
export declare const createGitWorkspaceAdapter: (projectRoot: string) => WorkspaceAdapter;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=git-workspace-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-workspace-adapter.d.ts","sourceRoot":"","sources":["../../src/workspace/git-workspace-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B,CAAA;AAQD,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,eAAe,GAAG,kBAAkB,GAAG,qBAAqB,CAAA;AAEjE,MAAM,MAAM,yBAAyB,GACjC;IACE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;IACrB,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9C,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAA;CAC1C,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IACzB,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC,CAAA;AAEL,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACpE,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAA;IAC/C,iBAAiB,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;QACpC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;QAChC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;QACrC,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAA;QAC3C,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAA;QAC/C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;KACzC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAA;CACvC;AAED,eAAO,MAAM,yBAAyB,GAAI,aAAa,MAAM,KAAG,gBA+G9D,CAAA"}
|