@agent-vm/agent-vm-worker 0.0.20
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/dist/config/worker-config.d.ts +158 -0
- package/dist/config/worker-config.d.ts.map +1 -0
- package/dist/config/worker-config.js +280 -0
- package/dist/config/worker-config.js.map +1 -0
- package/dist/context/gather-context.d.ts +9 -0
- package/dist/context/gather-context.d.ts.map +1 -0
- package/dist/context/gather-context.js +72 -0
- package/dist/context/gather-context.js.map +1 -0
- package/dist/coordinator/coordinator-helpers.d.ts +13 -0
- package/dist/coordinator/coordinator-helpers.d.ts.map +1 -0
- package/dist/coordinator/coordinator-helpers.js +63 -0
- package/dist/coordinator/coordinator-helpers.js.map +1 -0
- package/dist/coordinator/coordinator-types.d.ts +25 -0
- package/dist/coordinator/coordinator-types.d.ts.map +1 -0
- package/dist/coordinator/coordinator-types.js +2 -0
- package/dist/coordinator/coordinator-types.js.map +1 -0
- package/dist/coordinator/coordinator.d.ts +4 -0
- package/dist/coordinator/coordinator.d.ts.map +1 -0
- package/dist/coordinator/coordinator.js +74 -0
- package/dist/coordinator/coordinator.js.map +1 -0
- package/dist/coordinator/task-runner.d.ts +5 -0
- package/dist/coordinator/task-runner.d.ts.map +1 -0
- package/dist/coordinator/task-runner.js +310 -0
- package/dist/coordinator/task-runner.js.map +1 -0
- package/dist/git/git-operations.d.ts +33 -0
- package/dist/git/git-operations.d.ts.map +1 -0
- package/dist/git/git-operations.js +109 -0
- package/dist/git/git-operations.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +11 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +140 -0
- package/dist/main.js.map +1 -0
- package/dist/plan-phase/plan-cycle.d.ts +27 -0
- package/dist/plan-phase/plan-cycle.d.ts.map +1 -0
- package/dist/plan-phase/plan-cycle.js +83 -0
- package/dist/plan-phase/plan-cycle.js.map +1 -0
- package/dist/prompt/message-builders.d.ts +44 -0
- package/dist/prompt/message-builders.d.ts.map +1 -0
- package/dist/prompt/message-builders.js +83 -0
- package/dist/prompt/message-builders.js.map +1 -0
- package/dist/prompt/prompt-assembler.d.ts +11 -0
- package/dist/prompt/prompt-assembler.d.ts.map +1 -0
- package/dist/prompt/prompt-assembler.js +34 -0
- package/dist/prompt/prompt-assembler.js.map +1 -0
- package/dist/prompt/prompt-defaults.d.ts +10 -0
- package/dist/prompt/prompt-defaults.d.ts.map +1 -0
- package/dist/prompt/prompt-defaults.js +200 -0
- package/dist/prompt/prompt-defaults.js.map +1 -0
- package/dist/server.d.ts +32 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +75 -0
- package/dist/server.js.map +1 -0
- package/dist/shared/phase-names.d.ts +8 -0
- package/dist/shared/phase-names.d.ts.map +1 -0
- package/dist/shared/phase-names.js +11 -0
- package/dist/shared/phase-names.js.map +1 -0
- package/dist/shared/repo-location.d.ts +13 -0
- package/dist/shared/repo-location.d.ts.map +1 -0
- package/dist/shared/repo-location.js +9 -0
- package/dist/shared/repo-location.js.map +1 -0
- package/dist/shared/review-result.d.ts +17 -0
- package/dist/shared/review-result.d.ts.map +1 -0
- package/dist/shared/review-result.js +12 -0
- package/dist/shared/review-result.js.map +1 -0
- package/dist/shared/skill-types.d.ts +7 -0
- package/dist/shared/skill-types.d.ts.map +1 -0
- package/dist/shared/skill-types.js +6 -0
- package/dist/shared/skill-types.js.map +1 -0
- package/dist/shared/stderr.d.ts +2 -0
- package/dist/shared/stderr.d.ts.map +1 -0
- package/dist/shared/stderr.js +4 -0
- package/dist/shared/stderr.js.map +1 -0
- package/dist/state/event-log.d.ts +4 -0
- package/dist/state/event-log.d.ts.map +1 -0
- package/dist/state/event-log.js +67 -0
- package/dist/state/event-log.js.map +1 -0
- package/dist/state/task-event-types.d.ts +280 -0
- package/dist/state/task-event-types.d.ts.map +1 -0
- package/dist/state/task-event-types.js +106 -0
- package/dist/state/task-event-types.js.map +1 -0
- package/dist/state/task-state.d.ts +35 -0
- package/dist/state/task-state.d.ts.map +1 -0
- package/dist/state/task-state.js +191 -0
- package/dist/state/task-state.js.map +1 -0
- package/dist/validation-runner/verification-runner.d.ts +30 -0
- package/dist/validation-runner/verification-runner.d.ts.map +1 -0
- package/dist/validation-runner/verification-runner.js +196 -0
- package/dist/validation-runner/verification-runner.js.map +1 -0
- package/dist/work-executor/codex-executor.d.ts +9 -0
- package/dist/work-executor/codex-executor.d.ts.map +1 -0
- package/dist/work-executor/codex-executor.js +159 -0
- package/dist/work-executor/codex-executor.js.map +1 -0
- package/dist/work-executor/executor-factory.d.ts +4 -0
- package/dist/work-executor/executor-factory.d.ts.map +1 -0
- package/dist/work-executor/executor-factory.js +17 -0
- package/dist/work-executor/executor-factory.js.map +1 -0
- package/dist/work-executor/executor-interface.d.ts +33 -0
- package/dist/work-executor/executor-interface.d.ts.map +1 -0
- package/dist/work-executor/executor-interface.js +2 -0
- package/dist/work-executor/executor-interface.js.map +1 -0
- package/dist/work-executor/local-tool-mcp-server.d.ts +8 -0
- package/dist/work-executor/local-tool-mcp-server.d.ts.map +1 -0
- package/dist/work-executor/local-tool-mcp-server.js +187 -0
- package/dist/work-executor/local-tool-mcp-server.js.map +1 -0
- package/dist/work-executor/persistent-thread.d.ts +16 -0
- package/dist/work-executor/persistent-thread.d.ts.map +1 -0
- package/dist/work-executor/persistent-thread.js +37 -0
- package/dist/work-executor/persistent-thread.js.map +1 -0
- package/dist/work-phase/controller-tools/controller-tool-support.d.ts +19 -0
- package/dist/work-phase/controller-tools/controller-tool-support.d.ts.map +1 -0
- package/dist/work-phase/controller-tools/controller-tool-support.js +92 -0
- package/dist/work-phase/controller-tools/controller-tool-support.js.map +1 -0
- package/dist/work-phase/controller-tools/git-pull-default-tool.d.ts +10 -0
- package/dist/work-phase/controller-tools/git-pull-default-tool.d.ts.map +1 -0
- package/dist/work-phase/controller-tools/git-pull-default-tool.js +36 -0
- package/dist/work-phase/controller-tools/git-pull-default-tool.js.map +1 -0
- package/dist/work-phase/controller-tools/git-push-tool.d.ts +10 -0
- package/dist/work-phase/controller-tools/git-push-tool.d.ts.map +1 -0
- package/dist/work-phase/controller-tools/git-push-tool.js +45 -0
- package/dist/work-phase/controller-tools/git-push-tool.js.map +1 -0
- package/dist/work-phase/validation-tool.d.ts +11 -0
- package/dist/work-phase/validation-tool.d.ts.map +1 -0
- package/dist/work-phase/validation-tool.js +25 -0
- package/dist/work-phase/validation-tool.js.map +1 -0
- package/dist/work-phase/work-cycle.d.ts +28 -0
- package/dist/work-phase/work-cycle.d.ts.map +1 -0
- package/dist/work-phase/work-cycle.js +122 -0
- package/dist/work-phase/work-cycle.js.map +1 -0
- package/dist/wrapup-phase/wrapup-runner.d.ts +30 -0
- package/dist/wrapup-phase/wrapup-runner.d.ts.map +1 -0
- package/dist/wrapup-phase/wrapup-runner.js +91 -0
- package/dist/wrapup-phase/wrapup-runner.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const phaseNameSchema: z.ZodEnum<{
|
|
3
|
+
plan: "plan";
|
|
4
|
+
work: "work";
|
|
5
|
+
wrapup: "wrapup";
|
|
6
|
+
}>;
|
|
7
|
+
export type PhaseName = z.infer<typeof phaseNameSchema>;
|
|
8
|
+
export declare const taskStatusValues: readonly ["pending", "plan-agent", "plan-reviewer", "work-agent", "work-reviewer", "wrapup", "completed", "closed", "failed"];
|
|
9
|
+
export declare const taskStatusSchema: z.ZodEnum<{
|
|
10
|
+
wrapup: "wrapup";
|
|
11
|
+
pending: "pending";
|
|
12
|
+
"plan-agent": "plan-agent";
|
|
13
|
+
"plan-reviewer": "plan-reviewer";
|
|
14
|
+
"work-agent": "work-agent";
|
|
15
|
+
"work-reviewer": "work-reviewer";
|
|
16
|
+
completed: "completed";
|
|
17
|
+
closed: "closed";
|
|
18
|
+
failed: "failed";
|
|
19
|
+
}>;
|
|
20
|
+
export type TaskStatus = z.infer<typeof taskStatusSchema>;
|
|
21
|
+
export declare const TERMINAL_STATUSES: readonly ["completed", "closed", "failed"];
|
|
22
|
+
export declare const taskConfigSchema: z.ZodObject<{
|
|
23
|
+
taskId: z.ZodString;
|
|
24
|
+
prompt: z.ZodString;
|
|
25
|
+
repos: z.ZodArray<z.ZodObject<{
|
|
26
|
+
repoUrl: z.ZodString;
|
|
27
|
+
baseBranch: z.ZodString;
|
|
28
|
+
workspacePath: z.ZodString;
|
|
29
|
+
}, z.core.$strip>>;
|
|
30
|
+
context: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
31
|
+
effectiveConfig: z.ZodObject<{
|
|
32
|
+
instructions: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
|
|
33
|
+
defaults: z.ZodDefault<z.ZodObject<{
|
|
34
|
+
provider: z.ZodDefault<z.ZodString>;
|
|
35
|
+
model: z.ZodDefault<z.ZodString>;
|
|
36
|
+
}, z.core.$strip>>;
|
|
37
|
+
phases: z.ZodObject<{
|
|
38
|
+
plan: z.ZodObject<{
|
|
39
|
+
cycle: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
40
|
+
kind: z.ZodLiteral<"noReview">;
|
|
41
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
42
|
+
kind: z.ZodLiteral<"review">;
|
|
43
|
+
cycleCount: z.ZodNumber;
|
|
44
|
+
}, z.core.$strip>], "kind">;
|
|
45
|
+
agentInstructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
46
|
+
reviewerInstructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
47
|
+
agentTurnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
48
|
+
reviewerTurnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
49
|
+
skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
50
|
+
name: z.ZodString;
|
|
51
|
+
path: z.ZodString;
|
|
52
|
+
}, z.core.$strip>>>;
|
|
53
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
54
|
+
model: z.ZodOptional<z.ZodString>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
work: z.ZodObject<{
|
|
57
|
+
cycle: z.ZodObject<{
|
|
58
|
+
kind: z.ZodLiteral<"review">;
|
|
59
|
+
cycleCount: z.ZodNumber;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
agentInstructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
62
|
+
reviewerInstructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
63
|
+
agentTurnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
64
|
+
reviewerTurnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
65
|
+
skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
66
|
+
name: z.ZodString;
|
|
67
|
+
path: z.ZodString;
|
|
68
|
+
}, z.core.$strip>>>;
|
|
69
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
70
|
+
model: z.ZodOptional<z.ZodString>;
|
|
71
|
+
}, z.core.$strip>;
|
|
72
|
+
wrapup: z.ZodObject<{
|
|
73
|
+
instructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
74
|
+
turnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
75
|
+
skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
76
|
+
name: z.ZodString;
|
|
77
|
+
path: z.ZodString;
|
|
78
|
+
}, z.core.$strip>>>;
|
|
79
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
80
|
+
model: z.ZodOptional<z.ZodString>;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
}, z.core.$strict>;
|
|
83
|
+
mcpServers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
84
|
+
name: z.ZodString;
|
|
85
|
+
url: z.ZodString;
|
|
86
|
+
}, z.core.$strip>>>;
|
|
87
|
+
verification: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
command: z.ZodString;
|
|
90
|
+
}, z.core.$strip>>>;
|
|
91
|
+
verificationTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
92
|
+
branchPrefix: z.ZodDefault<z.ZodString>;
|
|
93
|
+
stateDir: z.ZodDefault<z.ZodString>;
|
|
94
|
+
}, z.core.$strict>;
|
|
95
|
+
}, z.core.$strip>;
|
|
96
|
+
export type TaskConfig = z.infer<typeof taskConfigSchema>;
|
|
97
|
+
export declare const verificationCommandResultSchema: z.ZodObject<{
|
|
98
|
+
name: z.ZodString;
|
|
99
|
+
passed: z.ZodBoolean;
|
|
100
|
+
exitCode: z.ZodNumber;
|
|
101
|
+
output: z.ZodString;
|
|
102
|
+
logPath: z.ZodOptional<z.ZodString>;
|
|
103
|
+
}, z.core.$strip>;
|
|
104
|
+
export type VerificationCommandResult = z.infer<typeof verificationCommandResultSchema>;
|
|
105
|
+
export declare const taskEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
106
|
+
event: z.ZodLiteral<"task-accepted">;
|
|
107
|
+
taskId: z.ZodString;
|
|
108
|
+
config: z.ZodObject<{
|
|
109
|
+
taskId: z.ZodString;
|
|
110
|
+
prompt: z.ZodString;
|
|
111
|
+
repos: z.ZodArray<z.ZodObject<{
|
|
112
|
+
repoUrl: z.ZodString;
|
|
113
|
+
baseBranch: z.ZodString;
|
|
114
|
+
workspacePath: z.ZodString;
|
|
115
|
+
}, z.core.$strip>>;
|
|
116
|
+
context: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
117
|
+
effectiveConfig: z.ZodObject<{
|
|
118
|
+
instructions: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
|
|
119
|
+
defaults: z.ZodDefault<z.ZodObject<{
|
|
120
|
+
provider: z.ZodDefault<z.ZodString>;
|
|
121
|
+
model: z.ZodDefault<z.ZodString>;
|
|
122
|
+
}, z.core.$strip>>;
|
|
123
|
+
phases: z.ZodObject<{
|
|
124
|
+
plan: z.ZodObject<{
|
|
125
|
+
cycle: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
126
|
+
kind: z.ZodLiteral<"noReview">;
|
|
127
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
128
|
+
kind: z.ZodLiteral<"review">;
|
|
129
|
+
cycleCount: z.ZodNumber;
|
|
130
|
+
}, z.core.$strip>], "kind">;
|
|
131
|
+
agentInstructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
132
|
+
reviewerInstructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
133
|
+
agentTurnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
134
|
+
reviewerTurnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
135
|
+
skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
136
|
+
name: z.ZodString;
|
|
137
|
+
path: z.ZodString;
|
|
138
|
+
}, z.core.$strip>>>;
|
|
139
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
140
|
+
model: z.ZodOptional<z.ZodString>;
|
|
141
|
+
}, z.core.$strip>;
|
|
142
|
+
work: z.ZodObject<{
|
|
143
|
+
cycle: z.ZodObject<{
|
|
144
|
+
kind: z.ZodLiteral<"review">;
|
|
145
|
+
cycleCount: z.ZodNumber;
|
|
146
|
+
}, z.core.$strip>;
|
|
147
|
+
agentInstructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
148
|
+
reviewerInstructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
149
|
+
agentTurnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
150
|
+
reviewerTurnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
151
|
+
skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
152
|
+
name: z.ZodString;
|
|
153
|
+
path: z.ZodString;
|
|
154
|
+
}, z.core.$strip>>>;
|
|
155
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
156
|
+
model: z.ZodOptional<z.ZodString>;
|
|
157
|
+
}, z.core.$strip>;
|
|
158
|
+
wrapup: z.ZodObject<{
|
|
159
|
+
instructions: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
|
|
160
|
+
turnTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
161
|
+
skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
162
|
+
name: z.ZodString;
|
|
163
|
+
path: z.ZodString;
|
|
164
|
+
}, z.core.$strip>>>;
|
|
165
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
166
|
+
model: z.ZodOptional<z.ZodString>;
|
|
167
|
+
}, z.core.$strip>;
|
|
168
|
+
}, z.core.$strict>;
|
|
169
|
+
mcpServers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
170
|
+
name: z.ZodString;
|
|
171
|
+
url: z.ZodString;
|
|
172
|
+
}, z.core.$strip>>>;
|
|
173
|
+
verification: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
174
|
+
name: z.ZodString;
|
|
175
|
+
command: z.ZodString;
|
|
176
|
+
}, z.core.$strip>>>;
|
|
177
|
+
verificationTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
178
|
+
branchPrefix: z.ZodDefault<z.ZodString>;
|
|
179
|
+
stateDir: z.ZodDefault<z.ZodString>;
|
|
180
|
+
}, z.core.$strict>;
|
|
181
|
+
}, z.core.$strip>;
|
|
182
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
183
|
+
event: z.ZodLiteral<"context-gather-failed">;
|
|
184
|
+
reason: z.ZodString;
|
|
185
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
186
|
+
event: z.ZodLiteral<"phase-started">;
|
|
187
|
+
phase: z.ZodEnum<{
|
|
188
|
+
plan: "plan";
|
|
189
|
+
work: "work";
|
|
190
|
+
wrapup: "wrapup";
|
|
191
|
+
}>;
|
|
192
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
193
|
+
event: z.ZodLiteral<"phase-completed">;
|
|
194
|
+
phase: z.ZodEnum<{
|
|
195
|
+
plan: "plan";
|
|
196
|
+
work: "work";
|
|
197
|
+
wrapup: "wrapup";
|
|
198
|
+
}>;
|
|
199
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
200
|
+
event: z.ZodLiteral<"plan-agent-turn">;
|
|
201
|
+
cycle: z.ZodNumber;
|
|
202
|
+
threadId: z.ZodString;
|
|
203
|
+
tokenCount: z.ZodNumber;
|
|
204
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
205
|
+
event: z.ZodLiteral<"plan-reviewer-turn">;
|
|
206
|
+
cycle: z.ZodNumber;
|
|
207
|
+
threadId: z.ZodString;
|
|
208
|
+
tokenCount: z.ZodNumber;
|
|
209
|
+
review: z.ZodObject<{
|
|
210
|
+
approved: z.ZodBoolean;
|
|
211
|
+
comments: z.ZodArray<z.ZodObject<{
|
|
212
|
+
file: z.ZodString;
|
|
213
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
214
|
+
severity: z.ZodEnum<{
|
|
215
|
+
critical: "critical";
|
|
216
|
+
suggestion: "suggestion";
|
|
217
|
+
nitpick: "nitpick";
|
|
218
|
+
}>;
|
|
219
|
+
comment: z.ZodString;
|
|
220
|
+
}, z.core.$strip>>;
|
|
221
|
+
summary: z.ZodString;
|
|
222
|
+
}, z.core.$strip>;
|
|
223
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
224
|
+
event: z.ZodLiteral<"plan-finalized">;
|
|
225
|
+
plan: z.ZodString;
|
|
226
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
227
|
+
event: z.ZodLiteral<"work-agent-turn">;
|
|
228
|
+
cycle: z.ZodNumber;
|
|
229
|
+
threadId: z.ZodString;
|
|
230
|
+
tokenCount: z.ZodNumber;
|
|
231
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
232
|
+
event: z.ZodLiteral<"work-reviewer-turn">;
|
|
233
|
+
cycle: z.ZodNumber;
|
|
234
|
+
threadId: z.ZodString;
|
|
235
|
+
tokenCount: z.ZodNumber;
|
|
236
|
+
review: z.ZodObject<{
|
|
237
|
+
approved: z.ZodBoolean;
|
|
238
|
+
comments: z.ZodArray<z.ZodObject<{
|
|
239
|
+
file: z.ZodString;
|
|
240
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
241
|
+
severity: z.ZodEnum<{
|
|
242
|
+
critical: "critical";
|
|
243
|
+
suggestion: "suggestion";
|
|
244
|
+
nitpick: "nitpick";
|
|
245
|
+
}>;
|
|
246
|
+
comment: z.ZodString;
|
|
247
|
+
}, z.core.$strip>>;
|
|
248
|
+
summary: z.ZodString;
|
|
249
|
+
}, z.core.$strip>;
|
|
250
|
+
validationResults: z.ZodArray<z.ZodObject<{
|
|
251
|
+
name: z.ZodString;
|
|
252
|
+
passed: z.ZodBoolean;
|
|
253
|
+
exitCode: z.ZodNumber;
|
|
254
|
+
output: z.ZodString;
|
|
255
|
+
logPath: z.ZodOptional<z.ZodString>;
|
|
256
|
+
}, z.core.$strip>>;
|
|
257
|
+
validationSkipped: z.ZodDefault<z.ZodBoolean>;
|
|
258
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
259
|
+
event: z.ZodLiteral<"wrapup-turn">;
|
|
260
|
+
threadId: z.ZodString;
|
|
261
|
+
tokenCount: z.ZodNumber;
|
|
262
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
263
|
+
event: z.ZodLiteral<"wrapup-result">;
|
|
264
|
+
prUrl: z.ZodNullable<z.ZodString>;
|
|
265
|
+
branchName: z.ZodNullable<z.ZodString>;
|
|
266
|
+
pushedCommits: z.ZodArray<z.ZodString>;
|
|
267
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
268
|
+
event: z.ZodLiteral<"task-completed">;
|
|
269
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
270
|
+
event: z.ZodLiteral<"task-failed">;
|
|
271
|
+
reason: z.ZodString;
|
|
272
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
273
|
+
event: z.ZodLiteral<"task-closed">;
|
|
274
|
+
}, z.core.$strip>], "event">;
|
|
275
|
+
export type TaskEvent = z.infer<typeof taskEventSchema>;
|
|
276
|
+
export interface TimestampedEvent {
|
|
277
|
+
readonly ts: string;
|
|
278
|
+
readonly data: TaskEvent;
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=task-event-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-event-types.d.ts","sourceRoot":"","sources":["../../src/state/task-event-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,eAAe;;;;EAAqB,CAAC;AAClD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,gBAAgB,+HAUS,CAAC;AAEvC,eAAO,MAAM,gBAAgB;;;;;;;;;;EAA2B,CAAC;AACzD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,iBAAiB,4CAA6C,CAAC;AAE5E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,+BAA+B;;;;;;iBAM1C,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAuE1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CACzB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { workerConfigSchema } from '../config/worker-config.js';
|
|
3
|
+
import { phaseNames } from '../shared/phase-names.js';
|
|
4
|
+
import { repoLocationSchema } from '../shared/repo-location.js';
|
|
5
|
+
import { reviewResultSchema } from '../shared/review-result.js';
|
|
6
|
+
export const phaseNameSchema = z.enum(phaseNames);
|
|
7
|
+
export const taskStatusValues = [
|
|
8
|
+
'pending',
|
|
9
|
+
'plan-agent',
|
|
10
|
+
'plan-reviewer',
|
|
11
|
+
'work-agent',
|
|
12
|
+
'work-reviewer',
|
|
13
|
+
'wrapup',
|
|
14
|
+
'completed',
|
|
15
|
+
'closed',
|
|
16
|
+
'failed',
|
|
17
|
+
];
|
|
18
|
+
export const taskStatusSchema = z.enum(taskStatusValues);
|
|
19
|
+
export const TERMINAL_STATUSES = ['completed', 'closed', 'failed'];
|
|
20
|
+
export const taskConfigSchema = z.object({
|
|
21
|
+
taskId: z.string().min(1),
|
|
22
|
+
prompt: z.string().min(1),
|
|
23
|
+
repos: z.array(repoLocationSchema),
|
|
24
|
+
context: z.record(z.string(), z.unknown()),
|
|
25
|
+
effectiveConfig: workerConfigSchema,
|
|
26
|
+
});
|
|
27
|
+
export const verificationCommandResultSchema = z.object({
|
|
28
|
+
name: z.string(),
|
|
29
|
+
passed: z.boolean(),
|
|
30
|
+
exitCode: z.number().int(),
|
|
31
|
+
output: z.string(),
|
|
32
|
+
logPath: z.string().optional(),
|
|
33
|
+
});
|
|
34
|
+
export const taskEventSchema = z.discriminatedUnion('event', [
|
|
35
|
+
z.object({
|
|
36
|
+
event: z.literal('task-accepted'),
|
|
37
|
+
taskId: z.string().min(1),
|
|
38
|
+
config: taskConfigSchema,
|
|
39
|
+
}),
|
|
40
|
+
z.object({
|
|
41
|
+
event: z.literal('context-gather-failed'),
|
|
42
|
+
reason: z.string(),
|
|
43
|
+
}),
|
|
44
|
+
z.object({
|
|
45
|
+
event: z.literal('phase-started'),
|
|
46
|
+
phase: phaseNameSchema,
|
|
47
|
+
}),
|
|
48
|
+
z.object({
|
|
49
|
+
event: z.literal('phase-completed'),
|
|
50
|
+
phase: phaseNameSchema,
|
|
51
|
+
}),
|
|
52
|
+
z.object({
|
|
53
|
+
event: z.literal('plan-agent-turn'),
|
|
54
|
+
cycle: z.number().int().nonnegative(),
|
|
55
|
+
threadId: z.string(),
|
|
56
|
+
tokenCount: z.number().int().nonnegative(),
|
|
57
|
+
}),
|
|
58
|
+
z.object({
|
|
59
|
+
event: z.literal('plan-reviewer-turn'),
|
|
60
|
+
cycle: z.number().int().positive(),
|
|
61
|
+
threadId: z.string(),
|
|
62
|
+
tokenCount: z.number().int().nonnegative(),
|
|
63
|
+
review: reviewResultSchema,
|
|
64
|
+
}),
|
|
65
|
+
z.object({
|
|
66
|
+
event: z.literal('plan-finalized'),
|
|
67
|
+
plan: z.string(),
|
|
68
|
+
}),
|
|
69
|
+
z.object({
|
|
70
|
+
event: z.literal('work-agent-turn'),
|
|
71
|
+
cycle: z.number().int().nonnegative(),
|
|
72
|
+
threadId: z.string(),
|
|
73
|
+
tokenCount: z.number().int().nonnegative(),
|
|
74
|
+
}),
|
|
75
|
+
z.object({
|
|
76
|
+
event: z.literal('work-reviewer-turn'),
|
|
77
|
+
cycle: z.number().int().positive(),
|
|
78
|
+
threadId: z.string(),
|
|
79
|
+
tokenCount: z.number().int().nonnegative(),
|
|
80
|
+
review: reviewResultSchema,
|
|
81
|
+
validationResults: z.array(verificationCommandResultSchema),
|
|
82
|
+
validationSkipped: z.boolean().default(false),
|
|
83
|
+
}),
|
|
84
|
+
z.object({
|
|
85
|
+
event: z.literal('wrapup-turn'),
|
|
86
|
+
threadId: z.string(),
|
|
87
|
+
tokenCount: z.number().int().nonnegative(),
|
|
88
|
+
}),
|
|
89
|
+
z.object({
|
|
90
|
+
event: z.literal('wrapup-result'),
|
|
91
|
+
prUrl: z.string().url().nullable(),
|
|
92
|
+
branchName: z.string().nullable(),
|
|
93
|
+
pushedCommits: z.array(z.string()),
|
|
94
|
+
}),
|
|
95
|
+
z.object({
|
|
96
|
+
event: z.literal('task-completed'),
|
|
97
|
+
}),
|
|
98
|
+
z.object({
|
|
99
|
+
event: z.literal('task-failed'),
|
|
100
|
+
reason: z.string(),
|
|
101
|
+
}),
|
|
102
|
+
z.object({
|
|
103
|
+
event: z.literal('task-closed'),
|
|
104
|
+
}),
|
|
105
|
+
]);
|
|
106
|
+
//# sourceMappingURL=task-event-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-event-types.js","sourceRoot":"","sources":["../../src/state/task-event-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReviewResult } from '../shared/review-result.js';
|
|
2
|
+
import type { TaskConfig, TaskEvent, TaskStatus, VerificationCommandResult } from './task-event-types.js';
|
|
3
|
+
export interface TaskState {
|
|
4
|
+
readonly taskId: string;
|
|
5
|
+
readonly status: TaskStatus;
|
|
6
|
+
readonly config: TaskConfig;
|
|
7
|
+
readonly failureReason: string | null;
|
|
8
|
+
readonly plan: string | null;
|
|
9
|
+
readonly lastContextError: string | null;
|
|
10
|
+
readonly planAgentThreadId: string | null;
|
|
11
|
+
readonly planReviewerThreadId: string | null;
|
|
12
|
+
readonly workAgentThreadId: string | null;
|
|
13
|
+
readonly workReviewerThreadId: string | null;
|
|
14
|
+
readonly wrapupThreadId: string | null;
|
|
15
|
+
readonly planReviewCycle: number;
|
|
16
|
+
readonly workReviewCycle: number;
|
|
17
|
+
readonly currentCycle: number;
|
|
18
|
+
readonly currentMaxCycles: number;
|
|
19
|
+
readonly lastPlanReview: ReviewResult | null;
|
|
20
|
+
readonly lastWorkReview: ReviewResult | null;
|
|
21
|
+
readonly lastValidationResults: readonly VerificationCommandResult[] | null;
|
|
22
|
+
readonly wrapupResult: {
|
|
23
|
+
readonly prUrl: string | null;
|
|
24
|
+
readonly branchName: string | null;
|
|
25
|
+
readonly pushedCommits: readonly string[];
|
|
26
|
+
} | null;
|
|
27
|
+
readonly createdAt: string;
|
|
28
|
+
readonly updatedAt: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function createInitialState(taskId: string, config: TaskConfig): TaskState;
|
|
31
|
+
export declare function applyEvent(state: TaskState, event: TaskEvent): TaskState;
|
|
32
|
+
export declare function isTerminal(state: TaskState): boolean;
|
|
33
|
+
export declare function loadTaskStateFromLog(filePath: string): Promise<TaskState | null>;
|
|
34
|
+
export declare function hydrateTaskStates(stateDir: string): Promise<Map<string, TaskState>>;
|
|
35
|
+
//# sourceMappingURL=task-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-state.d.ts","sourceRoot":"","sources":["../../src/state/task-state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,KAAK,EAEX,UAAU,EACV,SAAS,EACT,UAAU,EACV,yBAAyB,EACzB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,SAAS,yBAAyB,EAAE,GAAG,IAAI,CAAC;IAC5E,QAAQ,CAAC,YAAY,EAAE;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;KAC1C,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAUD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,CA0BhF;AAiBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,CAsFxE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEpD;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA0BtF;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAyBzF"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { writeStderr } from '../shared/stderr.js';
|
|
4
|
+
import { replayEvents } from './event-log.js';
|
|
5
|
+
import { TERMINAL_STATUSES } from './task-event-types.js';
|
|
6
|
+
const terminalStatusSet = new Set(TERMINAL_STATUSES);
|
|
7
|
+
const phaseStatusMap = {
|
|
8
|
+
plan: 'plan-agent',
|
|
9
|
+
work: 'work-agent',
|
|
10
|
+
wrapup: 'wrapup',
|
|
11
|
+
};
|
|
12
|
+
export function createInitialState(taskId, config) {
|
|
13
|
+
const now = new Date().toISOString();
|
|
14
|
+
return {
|
|
15
|
+
taskId,
|
|
16
|
+
status: 'pending',
|
|
17
|
+
config,
|
|
18
|
+
failureReason: null,
|
|
19
|
+
plan: null,
|
|
20
|
+
lastContextError: null,
|
|
21
|
+
planAgentThreadId: null,
|
|
22
|
+
planReviewerThreadId: null,
|
|
23
|
+
workAgentThreadId: null,
|
|
24
|
+
workReviewerThreadId: null,
|
|
25
|
+
wrapupThreadId: null,
|
|
26
|
+
planReviewCycle: 0,
|
|
27
|
+
workReviewCycle: 0,
|
|
28
|
+
currentCycle: 0,
|
|
29
|
+
currentMaxCycles: 0,
|
|
30
|
+
lastPlanReview: null,
|
|
31
|
+
lastWorkReview: null,
|
|
32
|
+
lastValidationResults: null,
|
|
33
|
+
wrapupResult: null,
|
|
34
|
+
createdAt: now,
|
|
35
|
+
updatedAt: now,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function maxCyclesForPhase(state, phase) {
|
|
39
|
+
switch (phase) {
|
|
40
|
+
case 'plan': {
|
|
41
|
+
const planCycle = state.config.effectiveConfig.phases.plan.cycle;
|
|
42
|
+
return planCycle.kind === 'review' ? planCycle.cycleCount : 0;
|
|
43
|
+
}
|
|
44
|
+
case 'work':
|
|
45
|
+
return state.config.effectiveConfig.phases.work.cycle.cycleCount;
|
|
46
|
+
case 'wrapup':
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
const exhaustivePhase = phase;
|
|
50
|
+
throw new Error(`Unhandled phase '${String(exhaustivePhase)}'.`);
|
|
51
|
+
}
|
|
52
|
+
export function applyEvent(state, event) {
|
|
53
|
+
const updatedAt = new Date().toISOString();
|
|
54
|
+
switch (event.event) {
|
|
55
|
+
case 'task-accepted':
|
|
56
|
+
// Controller may persist this before VM boot, and the worker may replay it when accepted.
|
|
57
|
+
return { ...state, status: 'pending', updatedAt };
|
|
58
|
+
case 'context-gather-failed':
|
|
59
|
+
return { ...state, lastContextError: event.reason, updatedAt };
|
|
60
|
+
case 'phase-started':
|
|
61
|
+
return {
|
|
62
|
+
...state,
|
|
63
|
+
status: phaseStatusMap[event.phase],
|
|
64
|
+
currentCycle: 0,
|
|
65
|
+
currentMaxCycles: maxCyclesForPhase(state, event.phase),
|
|
66
|
+
updatedAt,
|
|
67
|
+
};
|
|
68
|
+
case 'phase-completed':
|
|
69
|
+
return { ...state, updatedAt };
|
|
70
|
+
case 'plan-agent-turn':
|
|
71
|
+
return {
|
|
72
|
+
...state,
|
|
73
|
+
status: 'plan-agent',
|
|
74
|
+
planAgentThreadId: event.threadId,
|
|
75
|
+
currentCycle: event.cycle,
|
|
76
|
+
updatedAt,
|
|
77
|
+
};
|
|
78
|
+
case 'plan-reviewer-turn':
|
|
79
|
+
return {
|
|
80
|
+
...state,
|
|
81
|
+
status: 'plan-reviewer',
|
|
82
|
+
planReviewerThreadId: event.threadId,
|
|
83
|
+
planReviewCycle: event.cycle,
|
|
84
|
+
currentCycle: event.cycle,
|
|
85
|
+
lastPlanReview: event.review,
|
|
86
|
+
updatedAt,
|
|
87
|
+
};
|
|
88
|
+
case 'plan-finalized':
|
|
89
|
+
return { ...state, plan: event.plan, updatedAt };
|
|
90
|
+
case 'work-agent-turn':
|
|
91
|
+
return {
|
|
92
|
+
...state,
|
|
93
|
+
status: 'work-agent',
|
|
94
|
+
workAgentThreadId: event.threadId,
|
|
95
|
+
currentCycle: event.cycle,
|
|
96
|
+
updatedAt,
|
|
97
|
+
};
|
|
98
|
+
case 'work-reviewer-turn':
|
|
99
|
+
return {
|
|
100
|
+
...state,
|
|
101
|
+
status: 'work-reviewer',
|
|
102
|
+
workReviewerThreadId: event.threadId,
|
|
103
|
+
workReviewCycle: event.cycle,
|
|
104
|
+
currentCycle: event.cycle,
|
|
105
|
+
lastWorkReview: event.review,
|
|
106
|
+
lastValidationResults: event.validationResults,
|
|
107
|
+
updatedAt,
|
|
108
|
+
};
|
|
109
|
+
case 'wrapup-turn':
|
|
110
|
+
return {
|
|
111
|
+
...state,
|
|
112
|
+
status: 'wrapup',
|
|
113
|
+
wrapupThreadId: event.threadId,
|
|
114
|
+
updatedAt,
|
|
115
|
+
};
|
|
116
|
+
case 'wrapup-result':
|
|
117
|
+
return {
|
|
118
|
+
...state,
|
|
119
|
+
wrapupResult: {
|
|
120
|
+
prUrl: event.prUrl,
|
|
121
|
+
branchName: event.branchName,
|
|
122
|
+
pushedCommits: event.pushedCommits,
|
|
123
|
+
},
|
|
124
|
+
updatedAt,
|
|
125
|
+
};
|
|
126
|
+
case 'task-completed':
|
|
127
|
+
return { ...state, status: 'completed', updatedAt };
|
|
128
|
+
case 'task-failed':
|
|
129
|
+
return { ...state, status: 'failed', failureReason: event.reason, updatedAt };
|
|
130
|
+
case 'task-closed':
|
|
131
|
+
return { ...state, status: 'closed', updatedAt };
|
|
132
|
+
default: {
|
|
133
|
+
const exhaustiveCheck = event;
|
|
134
|
+
throw new Error(`Unhandled task event: ${JSON.stringify(exhaustiveCheck)}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export function isTerminal(state) {
|
|
139
|
+
return terminalStatusSet.has(state.status);
|
|
140
|
+
}
|
|
141
|
+
export async function loadTaskStateFromLog(filePath) {
|
|
142
|
+
const events = await replayEvents(filePath);
|
|
143
|
+
if (events.length === 0) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const firstEvent = events[0];
|
|
147
|
+
if (!firstEvent || firstEvent.data.event !== 'task-accepted') {
|
|
148
|
+
writeStderr(`Skipping ${filePath}: first event is not task-accepted`);
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
let state = createInitialState(firstEvent.data.taskId, firstEvent.data.config);
|
|
152
|
+
state = {
|
|
153
|
+
...state,
|
|
154
|
+
createdAt: firstEvent.ts,
|
|
155
|
+
updatedAt: firstEvent.ts,
|
|
156
|
+
};
|
|
157
|
+
for (let index = 1; index < events.length; index += 1) {
|
|
158
|
+
const event = events[index];
|
|
159
|
+
if (!event)
|
|
160
|
+
continue;
|
|
161
|
+
state = applyEvent(state, event.data);
|
|
162
|
+
}
|
|
163
|
+
return state;
|
|
164
|
+
}
|
|
165
|
+
export async function hydrateTaskStates(stateDir) {
|
|
166
|
+
const tasksDir = join(stateDir, 'tasks');
|
|
167
|
+
const taskStates = new Map();
|
|
168
|
+
try {
|
|
169
|
+
const files = await fs.readdir(tasksDir);
|
|
170
|
+
for (const file of files) {
|
|
171
|
+
if (!file.endsWith('.jsonl')) {
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
const filePath = join(tasksDir, file);
|
|
175
|
+
// Replay stays sequential so stderr warnings and corruption errors point at one file at a time.
|
|
176
|
+
// oxlint-disable-next-line eslint/no-await-in-loop
|
|
177
|
+
const state = await loadTaskStateFromLog(filePath);
|
|
178
|
+
if (state) {
|
|
179
|
+
taskStates.set(state.taskId, state);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return taskStates;
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT') {
|
|
186
|
+
return new Map();
|
|
187
|
+
}
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=task-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-state.js","sourceRoot":"","sources":["../../src/state/task-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type CommandStatus = 'passed' | 'failed' | 'timeout';
|
|
2
|
+
export interface VerificationCommand {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly command: string;
|
|
5
|
+
}
|
|
6
|
+
export interface VerificationCommandResult {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly passed: boolean;
|
|
9
|
+
readonly exitCode: number;
|
|
10
|
+
readonly output: string;
|
|
11
|
+
readonly logPath?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface RunVerificationOptions {
|
|
14
|
+
readonly commands: readonly VerificationCommand[];
|
|
15
|
+
readonly cwd: string;
|
|
16
|
+
readonly attemptLabel?: string;
|
|
17
|
+
readonly rawLogDir?: string;
|
|
18
|
+
readonly timeoutMs: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function parseCommand(command: string): readonly [string, ...string[]];
|
|
21
|
+
export declare function runCommandWithTimeout(command: string, cwd: string, timeoutMs: number): Promise<{
|
|
22
|
+
readonly status: CommandStatus;
|
|
23
|
+
readonly output: string;
|
|
24
|
+
readonly rawOutput: string;
|
|
25
|
+
readonly exitCode: number;
|
|
26
|
+
}>;
|
|
27
|
+
export declare function runVerification(options: RunVerificationOptions): Promise<readonly VerificationCommandResult[]>;
|
|
28
|
+
export declare function allVerificationsPassed(results: readonly VerificationCommandResult[]): boolean;
|
|
29
|
+
export declare function buildVerificationFailureSummary(results: readonly VerificationCommandResult[]): string;
|
|
30
|
+
//# sourceMappingURL=verification-runner.d.ts.map
|