@generacy-ai/orchestrator 0.7.0 → 0.9.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/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +47 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +459 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +13 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/launcher/agent-launcher.d.ts +15 -16
- package/dist/launcher/agent-launcher.d.ts.map +1 -1
- package/dist/launcher/agent-launcher.js +54 -23
- package/dist/launcher/agent-launcher.js.map +1 -1
- package/dist/launcher/constants.d.ts +5 -0
- package/dist/launcher/constants.d.ts.map +1 -0
- package/dist/launcher/constants.js +5 -0
- package/dist/launcher/constants.js.map +1 -0
- package/dist/launcher/errors.d.ts +15 -0
- package/dist/launcher/errors.d.ts.map +1 -0
- package/dist/launcher/errors.js +25 -0
- package/dist/launcher/errors.js.map +1 -0
- package/dist/launcher/generic-subprocess-plugin.d.ts +1 -0
- package/dist/launcher/generic-subprocess-plugin.d.ts.map +1 -1
- package/dist/launcher/generic-subprocess-plugin.js +2 -0
- package/dist/launcher/generic-subprocess-plugin.js.map +1 -1
- package/dist/launcher/index.d.ts +2 -1
- package/dist/launcher/index.d.ts.map +1 -1
- package/dist/launcher/index.js +1 -0
- package/dist/launcher/index.js.map +1 -1
- package/dist/launcher/types.d.ts +81 -4
- package/dist/launcher/types.d.ts.map +1 -1
- package/dist/routes/health.d.ts +7 -0
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +5 -0
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/internal-relay-events.d.ts +2 -2
- package/dist/routes/internal-relay-events.d.ts.map +1 -1
- package/dist/routes/internal-relay-events.js +12 -0
- package/dist/routes/internal-relay-events.js.map +1 -1
- package/dist/routes/retained-tunnel-event.d.ts +20 -0
- package/dist/routes/retained-tunnel-event.d.ts.map +1 -0
- package/dist/routes/retained-tunnel-event.js +67 -0
- package/dist/routes/retained-tunnel-event.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +168 -27
- package/dist/server.js.map +1 -1
- package/dist/services/adaptive-poll-controller.d.ts +75 -0
- package/dist/services/adaptive-poll-controller.d.ts.map +1 -0
- package/dist/services/adaptive-poll-controller.js +96 -0
- package/dist/services/adaptive-poll-controller.js.map +1 -0
- package/dist/services/clarification-answer-monitor-service.d.ts +71 -0
- package/dist/services/clarification-answer-monitor-service.d.ts.map +1 -0
- package/dist/services/clarification-answer-monitor-service.js +366 -0
- package/dist/services/clarification-answer-monitor-service.js.map +1 -0
- package/dist/services/failure-fingerprint-tracker.d.ts +28 -0
- package/dist/services/failure-fingerprint-tracker.d.ts.map +1 -0
- package/dist/services/failure-fingerprint-tracker.js +38 -0
- package/dist/services/failure-fingerprint-tracker.js.map +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/label-monitor-service.d.ts +2 -2
- package/dist/services/label-monitor-service.d.ts.map +1 -1
- package/dist/services/label-monitor-service.js +33 -16
- package/dist/services/label-monitor-service.js.map +1 -1
- package/dist/services/merge-conflict-monitor-service.d.ts +1 -1
- package/dist/services/merge-conflict-monitor-service.d.ts.map +1 -1
- package/dist/services/merge-conflict-monitor-service.js +33 -13
- package/dist/services/merge-conflict-monitor-service.js.map +1 -1
- package/dist/services/post-activation-retry.d.ts +3 -0
- package/dist/services/post-activation-retry.d.ts.map +1 -1
- package/dist/services/post-activation-retry.js +34 -2
- package/dist/services/post-activation-retry.js.map +1 -1
- package/dist/services/pr-feedback-monitor-service.d.ts +1 -1
- package/dist/services/pr-feedback-monitor-service.d.ts.map +1 -1
- package/dist/services/pr-feedback-monitor-service.js +33 -16
- package/dist/services/pr-feedback-monitor-service.js.map +1 -1
- package/dist/services/relay-bridge.d.ts +1 -0
- package/dist/services/relay-bridge.d.ts.map +1 -1
- package/dist/services/relay-bridge.js +21 -0
- package/dist/services/relay-bridge.js.map +1 -1
- package/dist/services/smee-channel-resolver.d.ts +60 -0
- package/dist/services/smee-channel-resolver.d.ts.map +1 -0
- package/dist/services/smee-channel-resolver.js +177 -0
- package/dist/services/smee-channel-resolver.js.map +1 -0
- package/dist/services/webhook-setup-service.d.ts +115 -111
- package/dist/services/webhook-setup-service.d.ts.map +1 -1
- package/dist/services/webhook-setup-service.js +377 -209
- package/dist/services/webhook-setup-service.js.map +1 -1
- package/dist/types/api.d.ts +3 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +1 -0
- package/dist/types/api.js.map +1 -1
- package/dist/types/monitor.d.ts +15 -2
- package/dist/types/monitor.d.ts.map +1 -1
- package/dist/worker/clarification-markers.d.ts +62 -0
- package/dist/worker/clarification-markers.d.ts.map +1 -1
- package/dist/worker/clarification-markers.js +101 -0
- package/dist/worker/clarification-markers.js.map +1 -1
- package/dist/worker/clarification-poster.d.ts +102 -6
- package/dist/worker/clarification-poster.d.ts.map +1 -1
- package/dist/worker/clarification-poster.js +299 -89
- package/dist/worker/clarification-poster.js.map +1 -1
- package/dist/worker/claude-cli-worker.d.ts +7 -0
- package/dist/worker/claude-cli-worker.d.ts.map +1 -1
- package/dist/worker/claude-cli-worker.js +7 -3
- package/dist/worker/claude-cli-worker.js.map +1 -1
- package/dist/worker/cli-spawner.d.ts.map +1 -1
- package/dist/worker/cli-spawner.js +2 -0
- package/dist/worker/cli-spawner.js.map +1 -1
- package/dist/worker/config.d.ts +396 -0
- package/dist/worker/config.d.ts.map +1 -1
- package/dist/worker/config.js +142 -0
- package/dist/worker/config.js.map +1 -1
- package/dist/worker/failure-fingerprint.d.ts +41 -0
- package/dist/worker/failure-fingerprint.d.ts.map +1 -0
- package/dist/worker/failure-fingerprint.js +75 -0
- package/dist/worker/failure-fingerprint.js.map +1 -0
- package/dist/worker/label-manager.d.ts +42 -0
- package/dist/worker/label-manager.d.ts.map +1 -1
- package/dist/worker/label-manager.js +108 -4
- package/dist/worker/label-manager.js.map +1 -1
- package/dist/worker/phase-loop.d.ts +30 -0
- package/dist/worker/phase-loop.d.ts.map +1 -1
- package/dist/worker/phase-loop.js +158 -27
- package/dist/worker/phase-loop.js.map +1 -1
- package/dist/worker/pr-feedback-handler.d.ts +13 -0
- package/dist/worker/pr-feedback-handler.d.ts.map +1 -1
- package/dist/worker/pr-feedback-handler.js +58 -3
- package/dist/worker/pr-feedback-handler.js.map +1 -1
- package/dist/worker/stage-comment-manager.d.ts +5 -0
- package/dist/worker/stage-comment-manager.d.ts.map +1 -1
- package/dist/worker/stage-comment-manager.js +8 -1
- package/dist/worker/stage-comment-manager.js.map +1 -1
- package/dist/worker/terminal-label-op-error.d.ts +1 -1
- package/dist/worker/terminal-label-op-error.d.ts.map +1 -1
- package/dist/worker/terminal-label-op-error.js.map +1 -1
- package/dist/worker/types.d.ts +51 -0
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/types.js +11 -0
- package/dist/worker/types.js.map +1 -1
- package/package.json +11 -7
package/dist/worker/config.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import type { OrchestratorSettings } from '@generacy-ai/config';
|
|
3
3
|
import type { WorkflowPhase } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Built-in provider fallback used by `resolveAgentForPhase` when no tier of
|
|
6
|
+
* the precedence chain (config, repo `defaults.agent`, or env) supplies a
|
|
7
|
+
* provider name.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_PROVIDER = "claude-code";
|
|
4
10
|
/**
|
|
5
11
|
* Gate definition schema for pausing workflow at review checkpoints
|
|
6
12
|
*/
|
|
@@ -94,6 +100,289 @@ export declare const WorkerConfigSchema: z.ZodObject<{
|
|
|
94
100
|
maxImplementRetries: z.ZodDefault<z.ZodNumber>;
|
|
95
101
|
/** Credential role from .generacy/config.yaml defaults.role — when set, credentials are populated on launch requests */
|
|
96
102
|
credentialRole: z.ZodOptional<z.ZodString>;
|
|
103
|
+
/**
|
|
104
|
+
* Per-workflow-phase `{ provider, model }` selection. See `AgentsConfigSchema`
|
|
105
|
+
* for the shape. Repo-level overrides from `.generacy/config.yaml` are merged
|
|
106
|
+
* onto this via `applyRepoAgentOverrides`.
|
|
107
|
+
*/
|
|
108
|
+
agents: z.ZodOptional<z.ZodObject<{
|
|
109
|
+
default: z.ZodOptional<z.ZodObject<{
|
|
110
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
111
|
+
model: z.ZodOptional<z.ZodString>;
|
|
112
|
+
}, "strip", z.ZodTypeAny, {
|
|
113
|
+
provider?: string | undefined;
|
|
114
|
+
model?: string | undefined;
|
|
115
|
+
}, {
|
|
116
|
+
provider?: string | undefined;
|
|
117
|
+
model?: string | undefined;
|
|
118
|
+
}>>;
|
|
119
|
+
workflows: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
120
|
+
default: z.ZodOptional<z.ZodObject<{
|
|
121
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
122
|
+
model: z.ZodOptional<z.ZodString>;
|
|
123
|
+
}, "strip", z.ZodTypeAny, {
|
|
124
|
+
provider?: string | undefined;
|
|
125
|
+
model?: string | undefined;
|
|
126
|
+
}, {
|
|
127
|
+
provider?: string | undefined;
|
|
128
|
+
model?: string | undefined;
|
|
129
|
+
}>>;
|
|
130
|
+
phases: z.ZodOptional<z.ZodObject<{
|
|
131
|
+
specify: z.ZodOptional<z.ZodObject<{
|
|
132
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
133
|
+
model: z.ZodOptional<z.ZodString>;
|
|
134
|
+
}, "strip", z.ZodTypeAny, {
|
|
135
|
+
provider?: string | undefined;
|
|
136
|
+
model?: string | undefined;
|
|
137
|
+
}, {
|
|
138
|
+
provider?: string | undefined;
|
|
139
|
+
model?: string | undefined;
|
|
140
|
+
}>>;
|
|
141
|
+
clarify: z.ZodOptional<z.ZodObject<{
|
|
142
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
143
|
+
model: z.ZodOptional<z.ZodString>;
|
|
144
|
+
}, "strip", z.ZodTypeAny, {
|
|
145
|
+
provider?: string | undefined;
|
|
146
|
+
model?: string | undefined;
|
|
147
|
+
}, {
|
|
148
|
+
provider?: string | undefined;
|
|
149
|
+
model?: string | undefined;
|
|
150
|
+
}>>;
|
|
151
|
+
plan: z.ZodOptional<z.ZodObject<{
|
|
152
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
153
|
+
model: z.ZodOptional<z.ZodString>;
|
|
154
|
+
}, "strip", z.ZodTypeAny, {
|
|
155
|
+
provider?: string | undefined;
|
|
156
|
+
model?: string | undefined;
|
|
157
|
+
}, {
|
|
158
|
+
provider?: string | undefined;
|
|
159
|
+
model?: string | undefined;
|
|
160
|
+
}>>;
|
|
161
|
+
tasks: z.ZodOptional<z.ZodObject<{
|
|
162
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
163
|
+
model: z.ZodOptional<z.ZodString>;
|
|
164
|
+
}, "strip", z.ZodTypeAny, {
|
|
165
|
+
provider?: string | undefined;
|
|
166
|
+
model?: string | undefined;
|
|
167
|
+
}, {
|
|
168
|
+
provider?: string | undefined;
|
|
169
|
+
model?: string | undefined;
|
|
170
|
+
}>>;
|
|
171
|
+
implement: z.ZodOptional<z.ZodObject<{
|
|
172
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
173
|
+
model: z.ZodOptional<z.ZodString>;
|
|
174
|
+
}, "strip", z.ZodTypeAny, {
|
|
175
|
+
provider?: string | undefined;
|
|
176
|
+
model?: string | undefined;
|
|
177
|
+
}, {
|
|
178
|
+
provider?: string | undefined;
|
|
179
|
+
model?: string | undefined;
|
|
180
|
+
}>>;
|
|
181
|
+
validate: z.ZodOptional<z.ZodObject<{
|
|
182
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
183
|
+
model: z.ZodOptional<z.ZodString>;
|
|
184
|
+
}, "strip", z.ZodTypeAny, {
|
|
185
|
+
provider?: string | undefined;
|
|
186
|
+
model?: string | undefined;
|
|
187
|
+
}, {
|
|
188
|
+
provider?: string | undefined;
|
|
189
|
+
model?: string | undefined;
|
|
190
|
+
}>>;
|
|
191
|
+
}, "strip", z.ZodTypeAny, {
|
|
192
|
+
specify?: {
|
|
193
|
+
provider?: string | undefined;
|
|
194
|
+
model?: string | undefined;
|
|
195
|
+
} | undefined;
|
|
196
|
+
clarify?: {
|
|
197
|
+
provider?: string | undefined;
|
|
198
|
+
model?: string | undefined;
|
|
199
|
+
} | undefined;
|
|
200
|
+
plan?: {
|
|
201
|
+
provider?: string | undefined;
|
|
202
|
+
model?: string | undefined;
|
|
203
|
+
} | undefined;
|
|
204
|
+
tasks?: {
|
|
205
|
+
provider?: string | undefined;
|
|
206
|
+
model?: string | undefined;
|
|
207
|
+
} | undefined;
|
|
208
|
+
implement?: {
|
|
209
|
+
provider?: string | undefined;
|
|
210
|
+
model?: string | undefined;
|
|
211
|
+
} | undefined;
|
|
212
|
+
validate?: {
|
|
213
|
+
provider?: string | undefined;
|
|
214
|
+
model?: string | undefined;
|
|
215
|
+
} | undefined;
|
|
216
|
+
}, {
|
|
217
|
+
specify?: {
|
|
218
|
+
provider?: string | undefined;
|
|
219
|
+
model?: string | undefined;
|
|
220
|
+
} | undefined;
|
|
221
|
+
clarify?: {
|
|
222
|
+
provider?: string | undefined;
|
|
223
|
+
model?: string | undefined;
|
|
224
|
+
} | undefined;
|
|
225
|
+
plan?: {
|
|
226
|
+
provider?: string | undefined;
|
|
227
|
+
model?: string | undefined;
|
|
228
|
+
} | undefined;
|
|
229
|
+
tasks?: {
|
|
230
|
+
provider?: string | undefined;
|
|
231
|
+
model?: string | undefined;
|
|
232
|
+
} | undefined;
|
|
233
|
+
implement?: {
|
|
234
|
+
provider?: string | undefined;
|
|
235
|
+
model?: string | undefined;
|
|
236
|
+
} | undefined;
|
|
237
|
+
validate?: {
|
|
238
|
+
provider?: string | undefined;
|
|
239
|
+
model?: string | undefined;
|
|
240
|
+
} | undefined;
|
|
241
|
+
}>>;
|
|
242
|
+
}, "strip", z.ZodTypeAny, {
|
|
243
|
+
default?: {
|
|
244
|
+
provider?: string | undefined;
|
|
245
|
+
model?: string | undefined;
|
|
246
|
+
} | undefined;
|
|
247
|
+
phases?: {
|
|
248
|
+
specify?: {
|
|
249
|
+
provider?: string | undefined;
|
|
250
|
+
model?: string | undefined;
|
|
251
|
+
} | undefined;
|
|
252
|
+
clarify?: {
|
|
253
|
+
provider?: string | undefined;
|
|
254
|
+
model?: string | undefined;
|
|
255
|
+
} | undefined;
|
|
256
|
+
plan?: {
|
|
257
|
+
provider?: string | undefined;
|
|
258
|
+
model?: string | undefined;
|
|
259
|
+
} | undefined;
|
|
260
|
+
tasks?: {
|
|
261
|
+
provider?: string | undefined;
|
|
262
|
+
model?: string | undefined;
|
|
263
|
+
} | undefined;
|
|
264
|
+
implement?: {
|
|
265
|
+
provider?: string | undefined;
|
|
266
|
+
model?: string | undefined;
|
|
267
|
+
} | undefined;
|
|
268
|
+
validate?: {
|
|
269
|
+
provider?: string | undefined;
|
|
270
|
+
model?: string | undefined;
|
|
271
|
+
} | undefined;
|
|
272
|
+
} | undefined;
|
|
273
|
+
}, {
|
|
274
|
+
default?: {
|
|
275
|
+
provider?: string | undefined;
|
|
276
|
+
model?: string | undefined;
|
|
277
|
+
} | undefined;
|
|
278
|
+
phases?: {
|
|
279
|
+
specify?: {
|
|
280
|
+
provider?: string | undefined;
|
|
281
|
+
model?: string | undefined;
|
|
282
|
+
} | undefined;
|
|
283
|
+
clarify?: {
|
|
284
|
+
provider?: string | undefined;
|
|
285
|
+
model?: string | undefined;
|
|
286
|
+
} | undefined;
|
|
287
|
+
plan?: {
|
|
288
|
+
provider?: string | undefined;
|
|
289
|
+
model?: string | undefined;
|
|
290
|
+
} | undefined;
|
|
291
|
+
tasks?: {
|
|
292
|
+
provider?: string | undefined;
|
|
293
|
+
model?: string | undefined;
|
|
294
|
+
} | undefined;
|
|
295
|
+
implement?: {
|
|
296
|
+
provider?: string | undefined;
|
|
297
|
+
model?: string | undefined;
|
|
298
|
+
} | undefined;
|
|
299
|
+
validate?: {
|
|
300
|
+
provider?: string | undefined;
|
|
301
|
+
model?: string | undefined;
|
|
302
|
+
} | undefined;
|
|
303
|
+
} | undefined;
|
|
304
|
+
}>>>;
|
|
305
|
+
}, "strip", z.ZodTypeAny, {
|
|
306
|
+
default?: {
|
|
307
|
+
provider?: string | undefined;
|
|
308
|
+
model?: string | undefined;
|
|
309
|
+
} | undefined;
|
|
310
|
+
workflows?: Record<string, {
|
|
311
|
+
default?: {
|
|
312
|
+
provider?: string | undefined;
|
|
313
|
+
model?: string | undefined;
|
|
314
|
+
} | undefined;
|
|
315
|
+
phases?: {
|
|
316
|
+
specify?: {
|
|
317
|
+
provider?: string | undefined;
|
|
318
|
+
model?: string | undefined;
|
|
319
|
+
} | undefined;
|
|
320
|
+
clarify?: {
|
|
321
|
+
provider?: string | undefined;
|
|
322
|
+
model?: string | undefined;
|
|
323
|
+
} | undefined;
|
|
324
|
+
plan?: {
|
|
325
|
+
provider?: string | undefined;
|
|
326
|
+
model?: string | undefined;
|
|
327
|
+
} | undefined;
|
|
328
|
+
tasks?: {
|
|
329
|
+
provider?: string | undefined;
|
|
330
|
+
model?: string | undefined;
|
|
331
|
+
} | undefined;
|
|
332
|
+
implement?: {
|
|
333
|
+
provider?: string | undefined;
|
|
334
|
+
model?: string | undefined;
|
|
335
|
+
} | undefined;
|
|
336
|
+
validate?: {
|
|
337
|
+
provider?: string | undefined;
|
|
338
|
+
model?: string | undefined;
|
|
339
|
+
} | undefined;
|
|
340
|
+
} | undefined;
|
|
341
|
+
}> | undefined;
|
|
342
|
+
}, {
|
|
343
|
+
default?: {
|
|
344
|
+
provider?: string | undefined;
|
|
345
|
+
model?: string | undefined;
|
|
346
|
+
} | undefined;
|
|
347
|
+
workflows?: Record<string, {
|
|
348
|
+
default?: {
|
|
349
|
+
provider?: string | undefined;
|
|
350
|
+
model?: string | undefined;
|
|
351
|
+
} | undefined;
|
|
352
|
+
phases?: {
|
|
353
|
+
specify?: {
|
|
354
|
+
provider?: string | undefined;
|
|
355
|
+
model?: string | undefined;
|
|
356
|
+
} | undefined;
|
|
357
|
+
clarify?: {
|
|
358
|
+
provider?: string | undefined;
|
|
359
|
+
model?: string | undefined;
|
|
360
|
+
} | undefined;
|
|
361
|
+
plan?: {
|
|
362
|
+
provider?: string | undefined;
|
|
363
|
+
model?: string | undefined;
|
|
364
|
+
} | undefined;
|
|
365
|
+
tasks?: {
|
|
366
|
+
provider?: string | undefined;
|
|
367
|
+
model?: string | undefined;
|
|
368
|
+
} | undefined;
|
|
369
|
+
implement?: {
|
|
370
|
+
provider?: string | undefined;
|
|
371
|
+
model?: string | undefined;
|
|
372
|
+
} | undefined;
|
|
373
|
+
validate?: {
|
|
374
|
+
provider?: string | undefined;
|
|
375
|
+
model?: string | undefined;
|
|
376
|
+
} | undefined;
|
|
377
|
+
} | undefined;
|
|
378
|
+
}> | undefined;
|
|
379
|
+
}>>;
|
|
380
|
+
/**
|
|
381
|
+
* Repo-level default provider from `.generacy/config.yaml` `defaults.agent`.
|
|
382
|
+
* Provider-only — `defaults.agent` is a single string, not an `AgentEntry`.
|
|
383
|
+
* Consumed by `resolveAgentForPhase` as the tier below `agents.default`.
|
|
384
|
+
*/
|
|
385
|
+
defaultsAgent: z.ZodOptional<z.ZodString>;
|
|
97
386
|
/** Gate definitions keyed by issue label */
|
|
98
387
|
gates: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
|
|
99
388
|
/** Phase that triggers gate check */
|
|
@@ -130,8 +419,85 @@ export declare const WorkerConfigSchema: z.ZodObject<{
|
|
|
130
419
|
gateLabel: string;
|
|
131
420
|
condition: "always" | "on-request" | "on-questions" | "on-failure" | "on-sibling-review" | "on-merge-conflict";
|
|
132
421
|
}[]>;
|
|
422
|
+
agents?: {
|
|
423
|
+
default?: {
|
|
424
|
+
provider?: string | undefined;
|
|
425
|
+
model?: string | undefined;
|
|
426
|
+
} | undefined;
|
|
427
|
+
workflows?: Record<string, {
|
|
428
|
+
default?: {
|
|
429
|
+
provider?: string | undefined;
|
|
430
|
+
model?: string | undefined;
|
|
431
|
+
} | undefined;
|
|
432
|
+
phases?: {
|
|
433
|
+
specify?: {
|
|
434
|
+
provider?: string | undefined;
|
|
435
|
+
model?: string | undefined;
|
|
436
|
+
} | undefined;
|
|
437
|
+
clarify?: {
|
|
438
|
+
provider?: string | undefined;
|
|
439
|
+
model?: string | undefined;
|
|
440
|
+
} | undefined;
|
|
441
|
+
plan?: {
|
|
442
|
+
provider?: string | undefined;
|
|
443
|
+
model?: string | undefined;
|
|
444
|
+
} | undefined;
|
|
445
|
+
tasks?: {
|
|
446
|
+
provider?: string | undefined;
|
|
447
|
+
model?: string | undefined;
|
|
448
|
+
} | undefined;
|
|
449
|
+
implement?: {
|
|
450
|
+
provider?: string | undefined;
|
|
451
|
+
model?: string | undefined;
|
|
452
|
+
} | undefined;
|
|
453
|
+
validate?: {
|
|
454
|
+
provider?: string | undefined;
|
|
455
|
+
model?: string | undefined;
|
|
456
|
+
} | undefined;
|
|
457
|
+
} | undefined;
|
|
458
|
+
}> | undefined;
|
|
459
|
+
} | undefined;
|
|
133
460
|
credentialRole?: string | undefined;
|
|
461
|
+
defaultsAgent?: string | undefined;
|
|
134
462
|
}, {
|
|
463
|
+
agents?: {
|
|
464
|
+
default?: {
|
|
465
|
+
provider?: string | undefined;
|
|
466
|
+
model?: string | undefined;
|
|
467
|
+
} | undefined;
|
|
468
|
+
workflows?: Record<string, {
|
|
469
|
+
default?: {
|
|
470
|
+
provider?: string | undefined;
|
|
471
|
+
model?: string | undefined;
|
|
472
|
+
} | undefined;
|
|
473
|
+
phases?: {
|
|
474
|
+
specify?: {
|
|
475
|
+
provider?: string | undefined;
|
|
476
|
+
model?: string | undefined;
|
|
477
|
+
} | undefined;
|
|
478
|
+
clarify?: {
|
|
479
|
+
provider?: string | undefined;
|
|
480
|
+
model?: string | undefined;
|
|
481
|
+
} | undefined;
|
|
482
|
+
plan?: {
|
|
483
|
+
provider?: string | undefined;
|
|
484
|
+
model?: string | undefined;
|
|
485
|
+
} | undefined;
|
|
486
|
+
tasks?: {
|
|
487
|
+
provider?: string | undefined;
|
|
488
|
+
model?: string | undefined;
|
|
489
|
+
} | undefined;
|
|
490
|
+
implement?: {
|
|
491
|
+
provider?: string | undefined;
|
|
492
|
+
model?: string | undefined;
|
|
493
|
+
} | undefined;
|
|
494
|
+
validate?: {
|
|
495
|
+
provider?: string | undefined;
|
|
496
|
+
model?: string | undefined;
|
|
497
|
+
} | undefined;
|
|
498
|
+
} | undefined;
|
|
499
|
+
}> | undefined;
|
|
500
|
+
} | undefined;
|
|
135
501
|
phaseTimeoutMs?: number | undefined;
|
|
136
502
|
phaseTimeoutOverrides?: {
|
|
137
503
|
specify?: number | undefined;
|
|
@@ -146,6 +512,7 @@ export declare const WorkerConfigSchema: z.ZodObject<{
|
|
|
146
512
|
preValidateCommand?: string | undefined;
|
|
147
513
|
maxImplementRetries?: number | undefined;
|
|
148
514
|
credentialRole?: string | undefined;
|
|
515
|
+
defaultsAgent?: string | undefined;
|
|
149
516
|
gates?: Record<string, {
|
|
150
517
|
phase: "specify" | "clarify" | "plan" | "tasks" | "implement" | "validate";
|
|
151
518
|
gateLabel: string;
|
|
@@ -173,4 +540,33 @@ export declare function applyRepoValidateOverrides(config: WorkerConfig, setting
|
|
|
173
540
|
* if one is configured, otherwise the flat `phaseTimeoutMs` fallback.
|
|
174
541
|
*/
|
|
175
542
|
export declare function resolvePhaseTimeoutMs(config: WorkerConfig, phase: Exclude<WorkflowPhase, 'validate'>): number;
|
|
543
|
+
/**
|
|
544
|
+
* Sibling of `applyRepoValidateOverrides` — merges the target repo's
|
|
545
|
+
* `orchestrator.agents` block onto the cluster-default `agents` block on
|
|
546
|
+
* `WorkerConfig`. Field-by-field so partial `{ provider }`-only or
|
|
547
|
+
* `{ model }`-only overrides preserve missing sibling fields from the base.
|
|
548
|
+
*
|
|
549
|
+
* Returns the original config unchanged when `settings.agents` is absent so
|
|
550
|
+
* callers can cheaply detect "no override" via reference equality.
|
|
551
|
+
*/
|
|
552
|
+
export declare function applyRepoAgentOverrides(config: WorkerConfig, settings: OrchestratorSettings | null | undefined): WorkerConfig;
|
|
553
|
+
/**
|
|
554
|
+
* Resolve `{ provider, model }` for a phase within a workflow. Provider and
|
|
555
|
+
* model resolve INDEPENDENTLY over the same tier list — a phase override may
|
|
556
|
+
* set only `model` while `provider` falls through from a lower tier.
|
|
557
|
+
*
|
|
558
|
+
* Precedence:
|
|
559
|
+
* 1. `config.agents.workflows[workflowName].phases[phase]`
|
|
560
|
+
* 2. `config.agents.workflows[workflowName].default`
|
|
561
|
+
* 3. `config.agents.default` (cluster env folds into this tier via loader)
|
|
562
|
+
* 4. `config.defaultsAgent` (**provider only** — `defaults.agent` is a bare string)
|
|
563
|
+
* 5. Built-in `DEFAULT_PROVIDER = 'claude-code'` (**provider only**)
|
|
564
|
+
*
|
|
565
|
+
* The `model` walk terminates at tier 3 returning `undefined` (no built-in
|
|
566
|
+
* model default). The `provider` walk always returns a value.
|
|
567
|
+
*/
|
|
568
|
+
export declare function resolveAgentForPhase(config: WorkerConfig, workflowName: string, phase: WorkflowPhase): {
|
|
569
|
+
provider: string;
|
|
570
|
+
model?: string;
|
|
571
|
+
};
|
|
176
572
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/worker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/worker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,oBAAoB,EAAgB,MAAM,qBAAqB,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAC/B,qCAAqC;;IAErC,uCAAuC;;IAEvC,gCAAgC;;;;;;;;;;EAEhC,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;GAQ1B,CAAC;AACf,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC7B,2FAA2F;;IAE3F,sDAAsD;;;;;;;;;;;;;;;;;;;;IAEtD,wCAAwC;;IAExC,gDAAgD;;IAEhD,+CAA+C;;IAE/C,sFAAsF;;IAMtF,4EAA4E;;IAE5E,wHAAwH;;IAExH;;;;OAIG;;;;;;oBAsG0C,CAAC;iBACvB,CAAC;;oBACjB,CAAC;iBAAmC,CAAC;;;;;;;wBAM/B,CAAC;qBACK,CAAC;;wBAEb,CAAC;qBACJ,CAAC;;;;;;;4BAQ8B,CAAC;yBACV,CAAA;;4BAEN,CAAC;yBAEF,CAAC;;;;;;4BAIO,CAAC;yBACE,CAAC;;4BAG3B,CAAJ;yBACmC,CAAC;;;;;;4BAMY,CAAC;yBAA2C,CAAC;;4BACpC,CAAC;yBAEtD,CAAF;;;;;;4BAOI,CAAJ;yBAEyB,CAAC;;4BACT,CAAC;yBAA2C,CAAC;;;;;;4BAWpC,CAAC;yBAC3B,CAAC;;4BAA+D,CAAC;yBAC/B,CAAC;;;;;;4BAMvC,CAAC;yBACE,CAAC;;4BACuC,CAAC;yBAE5B,CAAC;;;uBAGY,CAAC;4BAA4B,CAAC;yBACzB,CAAC;;uBAIqB,CAAC;4BAChD,CAAA;yBAA2C,CAAC;;oBACb,CAAC;4BACxC,CAAD;yBAEyB,CAAC;;qBACI,CAAC;4BAC1B,CAAD;yBAA2C,CAAC;;yBACT,CAAC;4BAA4B,CAAC;yBAC9C,CAAC;;wBAEN,CAAC;4BAA4B,CAAC;yBACjC,CAAC;;;uBAEc,CAAC;4BACV,CAAC;yBAEL,CAAC;;uBAEE,CAAC;4BAA4B,CAAC;yBACvB,CAAC;;oBACM,CAAC;4BAE/B,CAAJ;yBAEU,CAAC;;qBAAkE,CAAC;4BACxD,CAAC;yBAA2C,CAAC;;yBACZ,CAAC;4BACrC,CAAA;yBAA2C,CAAC;;wBAEA,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;;;mBAA6G,CAAC;wBAAwB,CAAC;qBAAuC,CAAC;;kBAA2D,CAAC;uBAAuB,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;uBAAoE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;oBAAiE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;qBAAkE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;yBAAsE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;wBAAqE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;;;mBAAgG,CAAC;wBAAwB,CAAC;qBAAuC,CAAC;;kBAA2D,CAAC;uBAAuB,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;uBAAoE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;oBAAiE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;qBAAkE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;yBAAsE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;wBAAqE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;;;;;oBAA8I,CAAC;iBAAmC,CAAC;;;mBAAyF,CAAC;wBAAwB,CAAC;qBAAuC,CAAC;;kBAA2D,CAAC;uBAAuB,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;uBAAoE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;oBAAiE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;qBAAkE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;yBAAsE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;wBAAqE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;;;;;oBAAiI,CAAC;iBAAmC,CAAC;;;mBAAyF,CAAC;wBAAwB,CAAC;qBAAuC,CAAC;;kBAA2D,CAAC;uBAAuB,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;uBAAoE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;oBAAiE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;qBAAkE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;yBAAsE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;wBAAqE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;;;;IAtN3+I;;;;OAIG;;IAEH,4CAA4C;;QAvE5C,qCAAqC;;QAErC,uCAAuC;;QAEvC,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAmRwwE,CAAC;iBAAmC,CAAC;;;mBAAyF,CAAC;wBAAwB,CAAC;qBAAuC,CAAC;;kBAA2D,CAAC;uBAAuB,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;uBAAoE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;oBAAiE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;qBAAkE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;yBAAsE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;wBAAqE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;;;;;;;;;oBAAiI,CAAC;iBAAmC,CAAC;;;mBAAyF,CAAC;wBAAwB,CAAC;qBAAuC,CAAC;;kBAA2D,CAAC;uBAAuB,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;uBAAoE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;oBAAiE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;qBAAkE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;yBAAsE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;wBAAqE,CAAC;4BAA4B,CAAC;yBAA2C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EA5L3+I,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAChD,YAAY,CAgBd;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,GACxC,MAAM,CAIR;AAuFD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAChD,YAAY,CAMd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,GACnB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAWtC"}
|
package/dist/worker/config.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { AgentsConfigSchema } from '@generacy-ai/config';
|
|
3
|
+
/**
|
|
4
|
+
* Built-in provider fallback used by `resolveAgentForPhase` when no tier of
|
|
5
|
+
* the precedence chain (config, repo `defaults.agent`, or env) supplies a
|
|
6
|
+
* provider name.
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_PROVIDER = 'claude-code';
|
|
2
9
|
/**
|
|
3
10
|
* Gate definition schema for pausing workflow at review checkpoints
|
|
4
11
|
*/
|
|
@@ -57,6 +64,18 @@ export const WorkerConfigSchema = z.object({
|
|
|
57
64
|
maxImplementRetries: z.number().int().min(0).max(5).default(2),
|
|
58
65
|
/** Credential role from .generacy/config.yaml defaults.role — when set, credentials are populated on launch requests */
|
|
59
66
|
credentialRole: z.string().optional(),
|
|
67
|
+
/**
|
|
68
|
+
* Per-workflow-phase `{ provider, model }` selection. See `AgentsConfigSchema`
|
|
69
|
+
* for the shape. Repo-level overrides from `.generacy/config.yaml` are merged
|
|
70
|
+
* onto this via `applyRepoAgentOverrides`.
|
|
71
|
+
*/
|
|
72
|
+
agents: AgentsConfigSchema.optional(),
|
|
73
|
+
/**
|
|
74
|
+
* Repo-level default provider from `.generacy/config.yaml` `defaults.agent`.
|
|
75
|
+
* Provider-only — `defaults.agent` is a single string, not an `AgentEntry`.
|
|
76
|
+
* Consumed by `resolveAgentForPhase` as the tier below `agents.default`.
|
|
77
|
+
*/
|
|
78
|
+
defaultsAgent: z.string().min(1).optional(),
|
|
60
79
|
/** Gate definitions keyed by issue label */
|
|
61
80
|
gates: z.record(z.string(), z.array(GateDefinitionSchema)).default({
|
|
62
81
|
'speckit-feature': [
|
|
@@ -116,4 +135,127 @@ export function resolvePhaseTimeoutMs(config, phase) {
|
|
|
116
135
|
// Zod and may omit phaseTimeoutOverrides entirely.
|
|
117
136
|
return config.phaseTimeoutOverrides?.[phase] ?? config.phaseTimeoutMs;
|
|
118
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Field-by-field merge of two `AgentEntry` objects. Target-repo values overlay
|
|
140
|
+
* cluster-default values; missing fields on the target preserve the cluster
|
|
141
|
+
* default (`{ provider: 'X' }` on target keeps cluster's `model`).
|
|
142
|
+
*/
|
|
143
|
+
function mergeAgentEntry(base, override) {
|
|
144
|
+
if (base === undefined)
|
|
145
|
+
return override;
|
|
146
|
+
if (override === undefined)
|
|
147
|
+
return base;
|
|
148
|
+
return {
|
|
149
|
+
...(base.provider !== undefined || override.provider !== undefined
|
|
150
|
+
? { provider: override.provider ?? base.provider }
|
|
151
|
+
: {}),
|
|
152
|
+
...(base.model !== undefined || override.model !== undefined
|
|
153
|
+
? { model: override.model ?? base.model }
|
|
154
|
+
: {}),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Deep merge two `AgentsConfig` values. Merge semantics:
|
|
159
|
+
* - `agents.default`: field-by-field on `{ provider, model }`.
|
|
160
|
+
* - `agents.workflows.<name>.default`: same field-by-field merge.
|
|
161
|
+
* - `agents.workflows.<name>.phases.<phase>`: same field-by-field merge.
|
|
162
|
+
* - Workflow names present only on the target pass through untouched; workflow
|
|
163
|
+
* names present only on the base survive when the target adds new ones.
|
|
164
|
+
*/
|
|
165
|
+
function mergeAgentsConfig(base, override) {
|
|
166
|
+
if (base === undefined)
|
|
167
|
+
return override;
|
|
168
|
+
if (override === undefined)
|
|
169
|
+
return base;
|
|
170
|
+
const merged = {};
|
|
171
|
+
const mergedDefault = mergeAgentEntry(base.default, override.default);
|
|
172
|
+
if (mergedDefault !== undefined)
|
|
173
|
+
merged.default = mergedDefault;
|
|
174
|
+
const baseWorkflows = base.workflows ?? {};
|
|
175
|
+
const overrideWorkflows = override.workflows ?? {};
|
|
176
|
+
const workflowNames = new Set([
|
|
177
|
+
...Object.keys(baseWorkflows),
|
|
178
|
+
...Object.keys(overrideWorkflows),
|
|
179
|
+
]);
|
|
180
|
+
if (workflowNames.size > 0) {
|
|
181
|
+
const workflows = {};
|
|
182
|
+
for (const name of workflowNames) {
|
|
183
|
+
const b = baseWorkflows[name];
|
|
184
|
+
const o = overrideWorkflows[name];
|
|
185
|
+
if (b === undefined && o !== undefined) {
|
|
186
|
+
workflows[name] = o;
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if (o === undefined && b !== undefined) {
|
|
190
|
+
workflows[name] = b;
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
// Both defined — merge default + phases field-by-field
|
|
194
|
+
const mergedWorkflowDefault = mergeAgentEntry(b?.default, o?.default);
|
|
195
|
+
const phaseKeys = ['specify', 'clarify', 'plan', 'tasks', 'implement', 'validate'];
|
|
196
|
+
const mergedPhases = {};
|
|
197
|
+
let anyPhase = false;
|
|
198
|
+
for (const phase of phaseKeys) {
|
|
199
|
+
const bp = b?.phases?.[phase];
|
|
200
|
+
const op = o?.phases?.[phase];
|
|
201
|
+
const mp = mergeAgentEntry(bp, op);
|
|
202
|
+
if (mp !== undefined) {
|
|
203
|
+
mergedPhases[phase] = mp;
|
|
204
|
+
anyPhase = true;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const entry = {};
|
|
208
|
+
if (mergedWorkflowDefault !== undefined)
|
|
209
|
+
entry.default = mergedWorkflowDefault;
|
|
210
|
+
if (anyPhase)
|
|
211
|
+
entry.phases = mergedPhases;
|
|
212
|
+
workflows[name] = entry;
|
|
213
|
+
}
|
|
214
|
+
merged.workflows = workflows;
|
|
215
|
+
}
|
|
216
|
+
return merged;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Sibling of `applyRepoValidateOverrides` — merges the target repo's
|
|
220
|
+
* `orchestrator.agents` block onto the cluster-default `agents` block on
|
|
221
|
+
* `WorkerConfig`. Field-by-field so partial `{ provider }`-only or
|
|
222
|
+
* `{ model }`-only overrides preserve missing sibling fields from the base.
|
|
223
|
+
*
|
|
224
|
+
* Returns the original config unchanged when `settings.agents` is absent so
|
|
225
|
+
* callers can cheaply detect "no override" via reference equality.
|
|
226
|
+
*/
|
|
227
|
+
export function applyRepoAgentOverrides(config, settings) {
|
|
228
|
+
if (settings == null || settings.agents === undefined) {
|
|
229
|
+
return config;
|
|
230
|
+
}
|
|
231
|
+
const merged = mergeAgentsConfig(config.agents, settings.agents);
|
|
232
|
+
return { ...config, agents: merged };
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Resolve `{ provider, model }` for a phase within a workflow. Provider and
|
|
236
|
+
* model resolve INDEPENDENTLY over the same tier list — a phase override may
|
|
237
|
+
* set only `model` while `provider` falls through from a lower tier.
|
|
238
|
+
*
|
|
239
|
+
* Precedence:
|
|
240
|
+
* 1. `config.agents.workflows[workflowName].phases[phase]`
|
|
241
|
+
* 2. `config.agents.workflows[workflowName].default`
|
|
242
|
+
* 3. `config.agents.default` (cluster env folds into this tier via loader)
|
|
243
|
+
* 4. `config.defaultsAgent` (**provider only** — `defaults.agent` is a bare string)
|
|
244
|
+
* 5. Built-in `DEFAULT_PROVIDER = 'claude-code'` (**provider only**)
|
|
245
|
+
*
|
|
246
|
+
* The `model` walk terminates at tier 3 returning `undefined` (no built-in
|
|
247
|
+
* model default). The `provider` walk always returns a value.
|
|
248
|
+
*/
|
|
249
|
+
export function resolveAgentForPhase(config, workflowName, phase) {
|
|
250
|
+
const workflowEntry = config.agents?.workflows?.[workflowName];
|
|
251
|
+
const tiers = [
|
|
252
|
+
workflowEntry?.phases?.[phase],
|
|
253
|
+
workflowEntry?.default,
|
|
254
|
+
config.agents?.default,
|
|
255
|
+
];
|
|
256
|
+
const providerFromTiers = tiers.find((t) => t?.provider !== undefined)?.provider;
|
|
257
|
+
const provider = providerFromTiers ?? config.defaultsAgent ?? DEFAULT_PROVIDER;
|
|
258
|
+
const model = tiers.find((t) => t?.model !== undefined)?.model;
|
|
259
|
+
return model !== undefined ? { provider, model } : { provider };
|
|
260
|
+
}
|
|
119
261
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/worker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/worker/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #942: Failure fingerprint primitive.
|
|
3
|
+
*
|
|
4
|
+
* `computeFailureFingerprint({ phase, evidence })` returns a stable
|
|
5
|
+
* 16-char lowercase hex sha256 prefix that is byte-identical across worker
|
|
6
|
+
* invocations for the same underlying defect (same phase + classifier +
|
|
7
|
+
* reason text). It is the load-bearing invariant for repeat-failure detection.
|
|
8
|
+
*
|
|
9
|
+
* `parseFailureAlertMarker(commentBody)` reads line 1 of a previously-posted
|
|
10
|
+
* failure-alert comment and returns the fingerprint + occurrence when the v2
|
|
11
|
+
* sibling marker (`<!-- fp:HEX:N -->`) is present, or `null` when it's absent
|
|
12
|
+
* (v1 / pre-#942 comments). Never throws.
|
|
13
|
+
*/
|
|
14
|
+
import type { CommandExitEvidence, FailureFingerprint, WorkflowPhase } from './types.js';
|
|
15
|
+
/** Q3→A: escalate on the 2nd same-fingerprint failure. */
|
|
16
|
+
export declare const REPEAT_FAILURE_THRESHOLD = 2;
|
|
17
|
+
/** Q1→B: hex prefix length. 16 chars = 64 bits — sufficient for per-issue scan. */
|
|
18
|
+
export declare const FINGERPRINT_HEX_LENGTH = 16;
|
|
19
|
+
export interface FailureFingerprintInput {
|
|
20
|
+
phase: WorkflowPhase | string;
|
|
21
|
+
evidence: CommandExitEvidence;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Compute the fingerprint per contract §Semantics.
|
|
25
|
+
*
|
|
26
|
+
* `sha256(phase + '\x00' + classifier + '\x00' + reasonText).slice(0, 16)`
|
|
27
|
+
* — hex, lowercase. Null-byte joiner prevents field-boundary collisions.
|
|
28
|
+
*/
|
|
29
|
+
export declare function computeFailureFingerprint(input: FailureFingerprintInput): FailureFingerprint;
|
|
30
|
+
export interface ParsedFailureAlertMarker {
|
|
31
|
+
fingerprint: FailureFingerprint;
|
|
32
|
+
occurrence: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse the v2 marker on line 1 of a failure-alert comment body.
|
|
36
|
+
*
|
|
37
|
+
* Returns `null` for v1 (pre-#942) comments, malformed markers, or bodies
|
|
38
|
+
* where line 1 does not contain the v2 sibling marker. Never throws.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseFailureAlertMarker(commentBody: string): ParsedFailureAlertMarker | null;
|
|
41
|
+
//# sourceMappingURL=failure-fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure-fingerprint.d.ts","sourceRoot":"","sources":["../../src/worker/failure-fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGzF,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAwBzC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,GAC7B,kBAAkB,CAQpB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,kBAAkB,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAClB,wBAAwB,GAAG,IAAI,CAOjC"}
|