lastlight-workflow-engine 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.
@@ -0,0 +1,344 @@
1
+ import { z } from "zod";
2
+ declare const OutputRuleSchema: z.ZodObject<{
3
+ action: z.ZodEnum<{
4
+ fail: "fail";
5
+ continue: "continue";
6
+ pause: "pause";
7
+ }>;
8
+ message: z.ZodOptional<z.ZodString>;
9
+ unless_label: z.ZodOptional<z.ZodString>;
10
+ unless_title_matches: z.ZodOptional<z.ZodString>;
11
+ bypass_message: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strip>;
13
+ declare const PhaseLoopSchema: z.ZodObject<{
14
+ max_cycles: z.ZodNumber;
15
+ on_request_changes: z.ZodObject<{
16
+ fix_prompt: z.ZodString;
17
+ fix_model: z.ZodOptional<z.ZodString>;
18
+ fix_variant: z.ZodOptional<z.ZodString>;
19
+ re_review_prompt: z.ZodString;
20
+ }, z.core.$strip>;
21
+ approval_gate: z.ZodOptional<z.ZodString>;
22
+ approval_artifact: z.ZodOptional<z.ZodString>;
23
+ messages: z.ZodOptional<z.ZodObject<{
24
+ on_cycle_start: z.ZodOptional<z.ZodString>;
25
+ on_approved: z.ZodOptional<z.ZodString>;
26
+ on_request_changes: z.ZodOptional<z.ZodString>;
27
+ on_max_cycles: z.ZodOptional<z.ZodString>;
28
+ on_fix_start: z.ZodOptional<z.ZodString>;
29
+ on_fix_failed: z.ZodOptional<z.ZodString>;
30
+ on_pause_for_approval: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>>;
32
+ }, z.core.$strip>;
33
+ declare const GenericLoopSchema: z.ZodObject<{
34
+ max_iterations: z.ZodNumber;
35
+ until: z.ZodOptional<z.ZodString>;
36
+ until_bash: z.ZodOptional<z.ZodString>;
37
+ interactive: z.ZodDefault<z.ZodBoolean>;
38
+ gate_message: z.ZodOptional<z.ZodString>;
39
+ gate_kind: z.ZodOptional<z.ZodEnum<{
40
+ approve: "approve";
41
+ reply: "reply";
42
+ }>>;
43
+ scratch_key: z.ZodOptional<z.ZodString>;
44
+ fresh_context: z.ZodDefault<z.ZodBoolean>;
45
+ on_soft_failure: z.ZodOptional<z.ZodObject<{
46
+ retries: z.ZodDefault<z.ZodNumber>;
47
+ then: z.ZodDefault<z.ZodEnum<{
48
+ fail: "fail";
49
+ complete: "complete";
50
+ }>>;
51
+ }, z.core.$strip>>;
52
+ }, z.core.$strip>;
53
+ declare const PhaseDefinitionSchema: z.ZodObject<{
54
+ name: z.ZodString;
55
+ label: z.ZodOptional<z.ZodString>;
56
+ type: z.ZodDefault<z.ZodEnum<{
57
+ bash: "bash";
58
+ script: "script";
59
+ context: "context";
60
+ agent: "agent";
61
+ "post-review": "post-review";
62
+ }>>;
63
+ command: z.ZodOptional<z.ZodString>;
64
+ script: z.ZodOptional<z.ZodString>;
65
+ runtime: z.ZodOptional<z.ZodEnum<{
66
+ js: "js";
67
+ ts: "ts";
68
+ python: "python";
69
+ }>>;
70
+ timeout_seconds: z.ZodOptional<z.ZodNumber>;
71
+ prompt: z.ZodOptional<z.ZodString>;
72
+ skill: z.ZodOptional<z.ZodString>;
73
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
74
+ model: z.ZodOptional<z.ZodString>;
75
+ variant: z.ZodOptional<z.ZodString>;
76
+ unrestricted_egress: z.ZodOptional<z.ZodBoolean>;
77
+ web_search: z.ZodOptional<z.ZodBoolean>;
78
+ requires_sandbox: z.ZodOptional<z.ZodEnum<{
79
+ gondolin: "gondolin";
80
+ docker: "docker";
81
+ none: "none";
82
+ }>>;
83
+ sandbox_image: z.ZodOptional<z.ZodEnum<{
84
+ default: "default";
85
+ qa: "qa";
86
+ }>>;
87
+ approval_gate: z.ZodOptional<z.ZodString>;
88
+ approval_artifact: z.ZodOptional<z.ZodString>;
89
+ approval_gate_message: z.ZodOptional<z.ZodString>;
90
+ messages: z.ZodOptional<z.ZodObject<{
91
+ on_start: z.ZodOptional<z.ZodString>;
92
+ on_success: z.ZodOptional<z.ZodString>;
93
+ on_failure: z.ZodOptional<z.ZodString>;
94
+ on_skipped_done: z.ZodOptional<z.ZodString>;
95
+ on_blocked: z.ZodOptional<z.ZodString>;
96
+ on_blocked_bypassed: z.ZodOptional<z.ZodString>;
97
+ }, z.core.$strip>>;
98
+ loop: z.ZodOptional<z.ZodObject<{
99
+ max_cycles: z.ZodNumber;
100
+ on_request_changes: z.ZodObject<{
101
+ fix_prompt: z.ZodString;
102
+ fix_model: z.ZodOptional<z.ZodString>;
103
+ fix_variant: z.ZodOptional<z.ZodString>;
104
+ re_review_prompt: z.ZodString;
105
+ }, z.core.$strip>;
106
+ approval_gate: z.ZodOptional<z.ZodString>;
107
+ approval_artifact: z.ZodOptional<z.ZodString>;
108
+ messages: z.ZodOptional<z.ZodObject<{
109
+ on_cycle_start: z.ZodOptional<z.ZodString>;
110
+ on_approved: z.ZodOptional<z.ZodString>;
111
+ on_request_changes: z.ZodOptional<z.ZodString>;
112
+ on_max_cycles: z.ZodOptional<z.ZodString>;
113
+ on_fix_start: z.ZodOptional<z.ZodString>;
114
+ on_fix_failed: z.ZodOptional<z.ZodString>;
115
+ on_pause_for_approval: z.ZodOptional<z.ZodString>;
116
+ }, z.core.$strip>>;
117
+ }, z.core.$strip>>;
118
+ generic_loop: z.ZodOptional<z.ZodObject<{
119
+ max_iterations: z.ZodNumber;
120
+ until: z.ZodOptional<z.ZodString>;
121
+ until_bash: z.ZodOptional<z.ZodString>;
122
+ interactive: z.ZodDefault<z.ZodBoolean>;
123
+ gate_message: z.ZodOptional<z.ZodString>;
124
+ gate_kind: z.ZodOptional<z.ZodEnum<{
125
+ approve: "approve";
126
+ reply: "reply";
127
+ }>>;
128
+ scratch_key: z.ZodOptional<z.ZodString>;
129
+ fresh_context: z.ZodDefault<z.ZodBoolean>;
130
+ on_soft_failure: z.ZodOptional<z.ZodObject<{
131
+ retries: z.ZodDefault<z.ZodNumber>;
132
+ then: z.ZodDefault<z.ZodEnum<{
133
+ fail: "fail";
134
+ complete: "complete";
135
+ }>>;
136
+ }, z.core.$strip>>;
137
+ }, z.core.$strip>>;
138
+ on_output: z.ZodOptional<z.ZodObject<{
139
+ contains_BLOCKED: z.ZodOptional<z.ZodObject<{
140
+ action: z.ZodEnum<{
141
+ fail: "fail";
142
+ continue: "continue";
143
+ pause: "pause";
144
+ }>;
145
+ message: z.ZodOptional<z.ZodString>;
146
+ unless_label: z.ZodOptional<z.ZodString>;
147
+ unless_title_matches: z.ZodOptional<z.ZodString>;
148
+ bypass_message: z.ZodOptional<z.ZodString>;
149
+ }, z.core.$strip>>;
150
+ contains_READY: z.ZodOptional<z.ZodObject<{
151
+ action: z.ZodEnum<{
152
+ fail: "fail";
153
+ continue: "continue";
154
+ pause: "pause";
155
+ }>;
156
+ message: z.ZodOptional<z.ZodString>;
157
+ unless_label: z.ZodOptional<z.ZodString>;
158
+ unless_title_matches: z.ZodOptional<z.ZodString>;
159
+ bypass_message: z.ZodOptional<z.ZodString>;
160
+ }, z.core.$strip>>;
161
+ }, z.core.$strip>>;
162
+ on_success: z.ZodOptional<z.ZodObject<{
163
+ set_phase: z.ZodOptional<z.ZodString>;
164
+ }, z.core.$strip>>;
165
+ depends_on: z.ZodOptional<z.ZodArray<z.ZodString>>;
166
+ trigger_rule: z.ZodOptional<z.ZodEnum<{
167
+ all_success: "all_success";
168
+ one_success: "one_success";
169
+ none_failed_min_one_success: "none_failed_min_one_success";
170
+ all_done: "all_done";
171
+ }>>;
172
+ output_var: z.ZodOptional<z.ZodString>;
173
+ }, z.core.$strip>;
174
+ export type PhaseDefinition = z.infer<typeof PhaseDefinitionSchema>;
175
+ /**
176
+ * Normalize a phase's skill declaration to a single list of names.
177
+ * Returns `[]` for phases that have neither `skill` nor `skills`
178
+ * (e.g. `prompt:`-only or `context:` phases).
179
+ */
180
+ export declare function phaseSkillNames(phase: PhaseDefinition): string[];
181
+ export type PhaseLoop = z.infer<typeof PhaseLoopSchema>;
182
+ export type GenericLoop = z.infer<typeof GenericLoopSchema>;
183
+ export type OutputRule = z.infer<typeof OutputRuleSchema>;
184
+ /**
185
+ * Intents owned by the harness itself (workflow gates / session control), not by
186
+ * any workflow. A workflow's `classification.intent` may not claim one of these.
187
+ * The classifier keeps their category text + examples in its base prompt template.
188
+ */
189
+ export declare const RESERVED_CONTROL_INTENTS: readonly ["approve", "reject", "status", "reset", "chat"];
190
+ /**
191
+ * Uppercase prompt token for an intent — the string the classifier emits on its
192
+ * `INTENT:` line and parses back. `qa-test` → `QATEST`, `incident` → `INCIDENT`.
193
+ * Kept here (workflows layer) so the loader's validation and the classifier's
194
+ * prompt/parser derive tokens the same way.
195
+ */
196
+ export declare function intentToken(intent: string): string;
197
+ export declare const AgentWorkflowSchema: z.ZodObject<{
198
+ kind: z.ZodDefault<z.ZodString>;
199
+ name: z.ZodString;
200
+ description: z.ZodOptional<z.ZodString>;
201
+ trigger: z.ZodOptional<z.ZodString>;
202
+ status_checklist: z.ZodOptional<z.ZodBoolean>;
203
+ final_message: z.ZodOptional<z.ZodString>;
204
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
205
+ classification: z.ZodOptional<z.ZodObject<{
206
+ intent: z.ZodString;
207
+ description: z.ZodString;
208
+ examples: z.ZodOptional<z.ZodArray<z.ZodString>>;
209
+ }, z.core.$strip>>;
210
+ phases: z.ZodArray<z.ZodObject<{
211
+ name: z.ZodString;
212
+ label: z.ZodOptional<z.ZodString>;
213
+ type: z.ZodDefault<z.ZodEnum<{
214
+ bash: "bash";
215
+ script: "script";
216
+ context: "context";
217
+ agent: "agent";
218
+ "post-review": "post-review";
219
+ }>>;
220
+ command: z.ZodOptional<z.ZodString>;
221
+ script: z.ZodOptional<z.ZodString>;
222
+ runtime: z.ZodOptional<z.ZodEnum<{
223
+ js: "js";
224
+ ts: "ts";
225
+ python: "python";
226
+ }>>;
227
+ timeout_seconds: z.ZodOptional<z.ZodNumber>;
228
+ prompt: z.ZodOptional<z.ZodString>;
229
+ skill: z.ZodOptional<z.ZodString>;
230
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
231
+ model: z.ZodOptional<z.ZodString>;
232
+ variant: z.ZodOptional<z.ZodString>;
233
+ unrestricted_egress: z.ZodOptional<z.ZodBoolean>;
234
+ web_search: z.ZodOptional<z.ZodBoolean>;
235
+ requires_sandbox: z.ZodOptional<z.ZodEnum<{
236
+ gondolin: "gondolin";
237
+ docker: "docker";
238
+ none: "none";
239
+ }>>;
240
+ sandbox_image: z.ZodOptional<z.ZodEnum<{
241
+ default: "default";
242
+ qa: "qa";
243
+ }>>;
244
+ approval_gate: z.ZodOptional<z.ZodString>;
245
+ approval_artifact: z.ZodOptional<z.ZodString>;
246
+ approval_gate_message: z.ZodOptional<z.ZodString>;
247
+ messages: z.ZodOptional<z.ZodObject<{
248
+ on_start: z.ZodOptional<z.ZodString>;
249
+ on_success: z.ZodOptional<z.ZodString>;
250
+ on_failure: z.ZodOptional<z.ZodString>;
251
+ on_skipped_done: z.ZodOptional<z.ZodString>;
252
+ on_blocked: z.ZodOptional<z.ZodString>;
253
+ on_blocked_bypassed: z.ZodOptional<z.ZodString>;
254
+ }, z.core.$strip>>;
255
+ loop: z.ZodOptional<z.ZodObject<{
256
+ max_cycles: z.ZodNumber;
257
+ on_request_changes: z.ZodObject<{
258
+ fix_prompt: z.ZodString;
259
+ fix_model: z.ZodOptional<z.ZodString>;
260
+ fix_variant: z.ZodOptional<z.ZodString>;
261
+ re_review_prompt: z.ZodString;
262
+ }, z.core.$strip>;
263
+ approval_gate: z.ZodOptional<z.ZodString>;
264
+ approval_artifact: z.ZodOptional<z.ZodString>;
265
+ messages: z.ZodOptional<z.ZodObject<{
266
+ on_cycle_start: z.ZodOptional<z.ZodString>;
267
+ on_approved: z.ZodOptional<z.ZodString>;
268
+ on_request_changes: z.ZodOptional<z.ZodString>;
269
+ on_max_cycles: z.ZodOptional<z.ZodString>;
270
+ on_fix_start: z.ZodOptional<z.ZodString>;
271
+ on_fix_failed: z.ZodOptional<z.ZodString>;
272
+ on_pause_for_approval: z.ZodOptional<z.ZodString>;
273
+ }, z.core.$strip>>;
274
+ }, z.core.$strip>>;
275
+ generic_loop: z.ZodOptional<z.ZodObject<{
276
+ max_iterations: z.ZodNumber;
277
+ until: z.ZodOptional<z.ZodString>;
278
+ until_bash: z.ZodOptional<z.ZodString>;
279
+ interactive: z.ZodDefault<z.ZodBoolean>;
280
+ gate_message: z.ZodOptional<z.ZodString>;
281
+ gate_kind: z.ZodOptional<z.ZodEnum<{
282
+ approve: "approve";
283
+ reply: "reply";
284
+ }>>;
285
+ scratch_key: z.ZodOptional<z.ZodString>;
286
+ fresh_context: z.ZodDefault<z.ZodBoolean>;
287
+ on_soft_failure: z.ZodOptional<z.ZodObject<{
288
+ retries: z.ZodDefault<z.ZodNumber>;
289
+ then: z.ZodDefault<z.ZodEnum<{
290
+ fail: "fail";
291
+ complete: "complete";
292
+ }>>;
293
+ }, z.core.$strip>>;
294
+ }, z.core.$strip>>;
295
+ on_output: z.ZodOptional<z.ZodObject<{
296
+ contains_BLOCKED: z.ZodOptional<z.ZodObject<{
297
+ action: z.ZodEnum<{
298
+ fail: "fail";
299
+ continue: "continue";
300
+ pause: "pause";
301
+ }>;
302
+ message: z.ZodOptional<z.ZodString>;
303
+ unless_label: z.ZodOptional<z.ZodString>;
304
+ unless_title_matches: z.ZodOptional<z.ZodString>;
305
+ bypass_message: z.ZodOptional<z.ZodString>;
306
+ }, z.core.$strip>>;
307
+ contains_READY: z.ZodOptional<z.ZodObject<{
308
+ action: z.ZodEnum<{
309
+ fail: "fail";
310
+ continue: "continue";
311
+ pause: "pause";
312
+ }>;
313
+ message: z.ZodOptional<z.ZodString>;
314
+ unless_label: z.ZodOptional<z.ZodString>;
315
+ unless_title_matches: z.ZodOptional<z.ZodString>;
316
+ bypass_message: z.ZodOptional<z.ZodString>;
317
+ }, z.core.$strip>>;
318
+ }, z.core.$strip>>;
319
+ on_success: z.ZodOptional<z.ZodObject<{
320
+ set_phase: z.ZodOptional<z.ZodString>;
321
+ }, z.core.$strip>>;
322
+ depends_on: z.ZodOptional<z.ZodArray<z.ZodString>>;
323
+ trigger_rule: z.ZodOptional<z.ZodEnum<{
324
+ all_success: "all_success";
325
+ one_success: "one_success";
326
+ none_failed_min_one_success: "none_failed_min_one_success";
327
+ all_done: "all_done";
328
+ }>>;
329
+ output_var: z.ZodOptional<z.ZodString>;
330
+ }, z.core.$strip>>;
331
+ }, z.core.$strip>;
332
+ export type AgentWorkflowDefinition = z.infer<typeof AgentWorkflowSchema>;
333
+ export declare const CronWorkflowSchema: z.ZodObject<{
334
+ kind: z.ZodLiteral<"cron">;
335
+ name: z.ZodString;
336
+ schedule: z.ZodString;
337
+ workflow: z.ZodString;
338
+ context: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
339
+ condition: z.ZodOptional<z.ZodObject<{
340
+ unless: z.ZodOptional<z.ZodString>;
341
+ }, z.core.$strip>>;
342
+ }, z.core.$strip>;
343
+ export type CronWorkflowDefinition = z.infer<typeof CronWorkflowSchema>;
344
+ export {};