@cat-factory/orchestration 0.177.0 → 0.178.1

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.
Files changed (61) hide show
  1. package/dist/container/dependencies.d.ts +9 -1
  2. package/dist/container/dependencies.d.ts.map +1 -1
  3. package/dist/container.d.ts.map +1 -1
  4. package/dist/container.js +1 -0
  5. package/dist/container.js.map +1 -1
  6. package/dist/modules/execution/AgentContextBuilder.d.ts +5 -24
  7. package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
  8. package/dist/modules/execution/AgentContextBuilder.js +10 -42
  9. package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
  10. package/dist/modules/execution/ExecutionService.d.ts +14 -72
  11. package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
  12. package/dist/modules/execution/ExecutionService.js +70 -353
  13. package/dist/modules/execution/ExecutionService.js.map +1 -1
  14. package/dist/modules/execution/ExecutionServiceDependencies.d.ts +7 -1
  15. package/dist/modules/execution/ExecutionServiceDependencies.d.ts.map +1 -1
  16. package/dist/modules/execution/OneShotStepController.d.ts +92 -0
  17. package/dist/modules/execution/OneShotStepController.d.ts.map +1 -0
  18. package/dist/modules/execution/OneShotStepController.js +202 -0
  19. package/dist/modules/execution/OneShotStepController.js.map +1 -0
  20. package/dist/modules/execution/PollRunningController.d.ts +113 -0
  21. package/dist/modules/execution/PollRunningController.d.ts.map +1 -0
  22. package/dist/modules/execution/PollRunningController.js +298 -0
  23. package/dist/modules/execution/PollRunningController.js.map +1 -0
  24. package/dist/modules/execution/RunAdmission.d.ts.map +1 -1
  25. package/dist/modules/execution/RunAdmission.js +4 -2
  26. package/dist/modules/execution/RunAdmission.js.map +1 -1
  27. package/dist/modules/execution/RunDispatcher.d.ts +4 -108
  28. package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
  29. package/dist/modules/execution/RunDispatcher.js +51 -468
  30. package/dist/modules/execution/RunDispatcher.js.map +1 -1
  31. package/dist/modules/execution/RunStateMachine.d.ts +44 -1
  32. package/dist/modules/execution/RunStateMachine.d.ts.map +1 -1
  33. package/dist/modules/execution/RunStateMachine.js +92 -1
  34. package/dist/modules/execution/RunStateMachine.js.map +1 -1
  35. package/dist/modules/execution/StepDecisionController.d.ts +120 -0
  36. package/dist/modules/execution/StepDecisionController.d.ts.map +1 -0
  37. package/dist/modules/execution/StepDecisionController.js +347 -0
  38. package/dist/modules/execution/StepDecisionController.js.map +1 -0
  39. package/dist/modules/execution/dispatchPromptSettings.d.ts +43 -0
  40. package/dist/modules/execution/dispatchPromptSettings.d.ts.map +1 -0
  41. package/dist/modules/execution/dispatchPromptSettings.js +76 -0
  42. package/dist/modules/execution/dispatchPromptSettings.js.map +1 -0
  43. package/dist/modules/execution/runStart.d.ts +50 -0
  44. package/dist/modules/execution/runStart.d.ts.map +1 -0
  45. package/dist/modules/execution/runStart.js +53 -0
  46. package/dist/modules/execution/runStart.js.map +1 -0
  47. package/dist/modules/kaizen/KaizenService.d.ts.map +1 -1
  48. package/dist/modules/kaizen/KaizenService.js +7 -5
  49. package/dist/modules/kaizen/KaizenService.js.map +1 -1
  50. package/dist/modules/kaizen/kaizen.logic.d.ts +24 -9
  51. package/dist/modules/kaizen/kaizen.logic.d.ts.map +1 -1
  52. package/dist/modules/kaizen/kaizen.logic.js +25 -10
  53. package/dist/modules/kaizen/kaizen.logic.js.map +1 -1
  54. package/dist/modules/pipelines/pipelineShape.d.ts +27 -0
  55. package/dist/modules/pipelines/pipelineShape.d.ts.map +1 -1
  56. package/dist/modules/pipelines/pipelineShape.js +44 -1
  57. package/dist/modules/pipelines/pipelineShape.js.map +1 -1
  58. package/dist/validation/validateRegistrations.d.ts.map +1 -1
  59. package/dist/validation/validateRegistrations.js +92 -0
  60. package/dist/validation/validateRegistrations.js.map +1 -1
  61. package/package.json +11 -11
@@ -0,0 +1,50 @@
1
+ import type { Block, ExecutionInstance } from '@cat-factory/kernel';
2
+ export interface RunStartDeps {
3
+ /** `ExecutionRepository.insertLive` — the atomic one-live-run-per-block claim. */
4
+ insertLive: (workspaceId: string, instance: ExecutionInstance, options: {
5
+ replaceId?: string;
6
+ }) => Promise<boolean>;
7
+ /** Hand the run to the durable runner (`WorkRunner.startRun`). */
8
+ startRun: (workspaceId: string, executionId: string) => Promise<void>;
9
+ /** Push the run to the SPA (`RunStateMachine.emitInstance`). */
10
+ emitInstance: (workspaceId: string, instance: ExecutionInstance) => Promise<void>;
11
+ /** Announce `run.started` outward (`RunStateMachine.publishRunStarted`). */
12
+ publishRunStarted: (workspaceId: string, instance: ExecutionInstance, block: Block | null | undefined) => Promise<void>;
13
+ }
14
+ /**
15
+ * Insert a freshly-built run, enforcing the one-live-run-per-block invariant at the DB in a single
16
+ * atomic write (see `ExecutionRepository.insertLive`). Callers must NOT `deleteByBlock` first:
17
+ * `insertLive` itself clears the block's terminal rows (and `replaceId`, the specific prior run a
18
+ * `retry`/`restart` is knowingly superseding) in the SAME transaction as the insert.
19
+ *
20
+ * A `false` return means a genuinely-concurrent start (double click, recurring-vs-manual,
21
+ * notification-vs-human retry) already created the block's live run — so we REFUSE this duplicate
22
+ * rather than materialise a second driver + container on the same branch. The winning run is
23
+ * untouched (the losing transaction only deletes terminal rows / its own `replaceId`, never the
24
+ * winner). Surfaces as a 409 the SPA shows as a toast.
25
+ *
26
+ * Nothing else belongs in here. This is the run's atomic claim, and an external call placed
27
+ * between it and the caller's block write is a fault that can strand a live run on a block never
28
+ * marked `in_progress` and never handed to a driver — see {@link handOffLiveRun}.
29
+ */
30
+ export declare function claimLiveRunOrConflict(deps: RunStartDeps, workspaceId: string, instance: ExecutionInstance, replaceId?: string): Promise<void>;
31
+ /**
32
+ * The ONE hand-off every start path ends with, once the run is claimed and the block committed:
33
+ * give the run to the durable runner, push it to the SPA, then announce `run.started` outward.
34
+ *
35
+ * The order is the point. The outbound announcement is LAST because it is the only step that
36
+ * leaves the deployment — the platform's rule is to commit local state first and run the external
37
+ * call behind it, so a slow or black-holing receiver costs the announcement and never the run.
38
+ *
39
+ * `run.started` is still exactly once per run: {@link claimLiveRunOrConflict} is what mints a live
40
+ * run, so a concurrent double-start has already lost by the time we get here. A start path added
41
+ * later inherits the announcement because skipping this funnel would also skip `startRun` — a run
42
+ * that never progresses, not an event that silently never fires. `retry`/`restartFrom` each mint a
43
+ * FRESH run id, so they announce genuinely new runs; otherwise a receiver would see `run.failed`
44
+ * for one id and later `run.completed` for another it never learned about.
45
+ *
46
+ * The block is threaded through because every caller already holds it — re-reading it here would
47
+ * be an extra round trip per run start (a NETWORK one on a mothership deployment).
48
+ */
49
+ export declare function handOffLiveRun(deps: RunStartDeps, workspaceId: string, instance: ExecutionInstance, block: Block | null | undefined): Promise<void>;
50
+ //# sourceMappingURL=runStart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runStart.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/runStart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAgBnE,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,UAAU,EAAE,CACV,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAC5B,OAAO,CAAC,OAAO,CAAC,CAAA;IACrB,kEAAkE;IAClE,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,gEAAgE;IAChE,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjF,4EAA4E;IAC5E,iBAAiB,EAAE,CACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAC5B,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,GAC9B,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -0,0 +1,53 @@
1
+ import { ConflictError } from '@cat-factory/kernel';
2
+ /**
3
+ * Insert a freshly-built run, enforcing the one-live-run-per-block invariant at the DB in a single
4
+ * atomic write (see `ExecutionRepository.insertLive`). Callers must NOT `deleteByBlock` first:
5
+ * `insertLive` itself clears the block's terminal rows (and `replaceId`, the specific prior run a
6
+ * `retry`/`restart` is knowingly superseding) in the SAME transaction as the insert.
7
+ *
8
+ * A `false` return means a genuinely-concurrent start (double click, recurring-vs-manual,
9
+ * notification-vs-human retry) already created the block's live run — so we REFUSE this duplicate
10
+ * rather than materialise a second driver + container on the same branch. The winning run is
11
+ * untouched (the losing transaction only deletes terminal rows / its own `replaceId`, never the
12
+ * winner). Surfaces as a 409 the SPA shows as a toast.
13
+ *
14
+ * Nothing else belongs in here. This is the run's atomic claim, and an external call placed
15
+ * between it and the caller's block write is a fault that can strand a live run on a block never
16
+ * marked `in_progress` and never handed to a driver — see {@link handOffLiveRun}.
17
+ */
18
+ export async function claimLiveRunOrConflict(deps, workspaceId, instance, replaceId) {
19
+ const inserted = await deps.insertLive(workspaceId, instance, { replaceId });
20
+ if (!inserted) {
21
+ // No machine `reason`: this is a rare double-start edge, not a distinct client-handled
22
+ // conflict, so the human message drives the SPA's generic 409 toast (no new
23
+ // ConflictReason + exhaustive-Record/i18n cascade for a transient race).
24
+ throw new ConflictError('A run is already active for this block.');
25
+ }
26
+ }
27
+ /**
28
+ * The ONE hand-off every start path ends with, once the run is claimed and the block committed:
29
+ * give the run to the durable runner, push it to the SPA, then announce `run.started` outward.
30
+ *
31
+ * The order is the point. The outbound announcement is LAST because it is the only step that
32
+ * leaves the deployment — the platform's rule is to commit local state first and run the external
33
+ * call behind it, so a slow or black-holing receiver costs the announcement and never the run.
34
+ *
35
+ * `run.started` is still exactly once per run: {@link claimLiveRunOrConflict} is what mints a live
36
+ * run, so a concurrent double-start has already lost by the time we get here. A start path added
37
+ * later inherits the announcement because skipping this funnel would also skip `startRun` — a run
38
+ * that never progresses, not an event that silently never fires. `retry`/`restartFrom` each mint a
39
+ * FRESH run id, so they announce genuinely new runs; otherwise a receiver would see `run.failed`
40
+ * for one id and later `run.completed` for another it never learned about.
41
+ *
42
+ * The block is threaded through because every caller already holds it — re-reading it here would
43
+ * be an extra round trip per run start (a NETWORK one on a mothership deployment).
44
+ */
45
+ export async function handOffLiveRun(deps, workspaceId, instance, block) {
46
+ // Hand the run off to the durable runner so it progresses server-side without a browser open.
47
+ // With the no-op runner (tests) this does nothing and the run is advanced directly via
48
+ // advanceInstance.
49
+ await deps.startRun(workspaceId, instance.id);
50
+ await deps.emitInstance(workspaceId, instance);
51
+ await deps.publishRunStarted(workspaceId, instance, block);
52
+ }
53
+ //# sourceMappingURL=runStart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runStart.js","sourceRoot":"","sources":["../../../src/modules/execution/runStart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAkCnD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAkB,EAClB,WAAmB,EACnB,QAA2B,EAC3B,SAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;IAC5E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,uFAAuF;QACvF,4EAA4E;QAC5E,yEAAyE;QACzE,MAAM,IAAI,aAAa,CAAC,yCAAyC,CAAC,CAAA;IACpE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAkB,EAClB,WAAmB,EACnB,QAA2B,EAC3B,KAA+B;IAE/B,8FAA8F;IAC9F,uFAAuF;IACvF,mBAAmB;IACnB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC9C,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"KaizenService.d.ts","sourceRoot":"","sources":["../../../src/modules/kaizen/KaizenService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EACf,KAAK,EACL,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,cAAc,EACd,6BAA6B,EAE7B,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACrB,QAAQ,EAER,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAa5B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAA;AAS5G,MAAM,WAAW,yBAAyB;IACxC,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,6BAA6B,EAAE,6BAA6B,CAAA;IAC5D,eAAe,EAAE,eAAe,CAAA;IAChC,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,6FAA6F;IAC7F,yBAAyB,EAAE,gCAAgC,CAAA;IAC3D,gFAAgF;IAChF,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,qFAAqF;IACrF,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,kFAAkF;IAClF,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAA;IACzE;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAA;IACvC,+EAA+E;IAC/E,4BAA4B,CAAC,EAAE,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACjC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,yBAAyB,EAAI;IAEhE,qFAAqF;IACrF,IAAI,OAAO,IAAI,OAAO,CAErB;IAID;;;;OAIG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CpF;IAID;;;OAGG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBpE;IAED,+FAA+F;IACzF,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E3E;IAID,8EAA8E;IACxE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAM3E;IAED,8EAA8E;IAC9E,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAEnF;YAIa,aAAa;IAM3B,yFAAyF;IACzF,OAAO,CAAC,WAAW;YAIL,eAAe;YAef,YAAY;IAe1B;;;;;;OAMG;YACW,QAAQ;YAmBR,WAAW;YAaX,IAAI;YAWJ,IAAI;CAOnB"}
1
+ {"version":3,"file":"KaizenService.d.ts","sourceRoot":"","sources":["../../../src/modules/kaizen/KaizenService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EACf,KAAK,EACL,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,cAAc,EACd,6BAA6B,EAE7B,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACrB,QAAQ,EAER,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAa5B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAA;AAS5G,MAAM,WAAW,yBAAyB;IACxC,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,6BAA6B,EAAE,6BAA6B,CAAA;IAC5D,eAAe,EAAE,eAAe,CAAA;IAChC,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,6FAA6F;IAC7F,yBAAyB,EAAE,gCAAgC,CAAA;IAC3D,gFAAgF;IAChF,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,qFAAqF;IACrF,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,kFAAkF;IAClF,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAA;IACzE;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAA;IACvC,+EAA+E;IAC/E,4BAA4B,CAAC,EAAE,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACjC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,yBAAyB,EAAI;IAEhE,qFAAqF;IACrF,IAAI,OAAO,IAAI,OAAO,CAErB;IAID;;;;OAIG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDpF;IAID;;;OAGG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBpE;IAED,+FAA+F;IACzF,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E3E;IAID,8EAA8E;IACxE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAM3E;IAED,8EAA8E;IAC9E,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAEnF;YAIa,aAAa;IAM3B,yFAAyF;IACzF,OAAO,CAAC,WAAW;YAIL,eAAe;YAef,YAAY;IAe1B;;;;;;OAMG;YACW,QAAQ;YAmBR,WAAW;YAaX,IAAI;YAWJ,IAAI;CAOnB"}
@@ -45,11 +45,13 @@ export class KaizenService {
45
45
  continue;
46
46
  const model = step.model;
47
47
  const promptVersion = promptVersionForKind(step.agentKind);
48
- // `promptRevision` is the workspace's own prompt for this kind, pinned onto the step at
49
- // dispatch (absent ⇒ it ran the shipped prompt). Read off the STEP rather than the prompt
50
- // log, which is append-only: a later revision would otherwise re-key gradings of text the
51
- // step never saw.
52
- const comboKey = comboKeyFor(step.agentKind, model, promptVersion, step.promptRevision);
48
+ // Both prompt-text facts are read off the STEP, where the dispatch pinned them, rather than
49
+ // re-resolved here: the prompt log is append-only, so a later revision would re-key
50
+ // gradings of text the step never saw, and the variant registry can have moved on too.
51
+ // `promptVariant` is deliberately the PIN and not `stepOptions.agentVariantId` — the option
52
+ // is what the pipeline asked for, while the pin says what actually reached the prompt, and
53
+ // keying on the ask would credit a variant whose text a workspace override displaced.
54
+ const comboKey = comboKeyFor(step.agentKind, model, promptVersion, step.promptRevision, step.promptVariant);
53
55
  const combo = await this.deps.kaizenVerifiedComboRepository.getByKey(workspaceId, comboKey);
54
56
  if (isVerified(combo))
55
57
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"KaizenService.js","sourceRoot":"","sources":["../../../src/modules/kaizen/KaizenService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KaizenService.js","sourceRoot":"","sources":["../../../src/modules/kaizen/KaizenService.ts"],"names":[],"mappings":"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"}
@@ -4,18 +4,33 @@ export declare const HIGH_GRADE = 4;
4
4
  /** Consecutive high-grade-with-no-recommendations gradings needed to verify a combo. */
5
5
  export declare const VERIFICATION_STREAK = 5;
6
6
  /**
7
- * `agentKind|model|promptVersion[|wN]` — the key a verified combo is tracked under.
7
+ * `agentKind|model|promptVersion[|vID@FP][|wN]` — the key a verified combo is tracked under.
8
8
  *
9
- * The optional `wN` suffix is the WORKSPACE's agent-prompt revision when the step ran an edited
10
- * prompt (`PipelineStep.promptRevision`). Without it a workspace that rewrote a kind's prompt
11
- * would share a key with the shipped one, so Kaizen would skip grading text it never graded —
12
- * inheriting a verification the shipped prompt earned — and, in the other direction, let an
13
- * edit's gradings advance the streak of a prompt that is not running anywhere. `promptVersion`
14
- * alone cannot express this: it numbers the PRODUCT's prompt, which an override replaces.
9
+ * Two optional suffixes, both naming text `promptVersion` cannot: it numbers the PRODUCT's
10
+ * prompt, and each of these replaces or extends it.
15
11
  *
16
- * Absent suffix the shipped prompt, so an unedited workspace keeps the key it always had.
12
+ * - `vID@FP` is the deployment's registered agent-kind VARIANT the step ran under, taken from the
13
+ * dispatch-time pin (`PipelineStep.promptVariant`). A variant runs the base kind under
14
+ * different text, so sharing a key with the stock kind would let one's gradings verify the
15
+ * other. `FP` fingerprints the text the variant actually CONTRIBUTED, because re-registering an
16
+ * id is a supported way to re-word a variant — keyed on the id alone, a re-wording would
17
+ * inherit the streak its previous wording earned, which is the very hazard `wN` exists for on
18
+ * the workspace side. A variant that contributed NOTHING (withdrawn mid-run, or its
19
+ * replacement displaced by a workspace override with no addition of its own) carries no
20
+ * fingerprint and so does not enter the key at all: the key describes the text that ran, and
21
+ * that text is the shipped or workspace prompt alone.
22
+ * - `wN` is the WORKSPACE's agent-prompt revision when the step ran an edited prompt
23
+ * (`PipelineStep.promptRevision`). Without it a workspace that rewrote a kind's prompt would
24
+ * share a key with the shipped one, so Kaizen would skip grading text it never graded —
25
+ * inheriting a verification the shipped prompt earned — and, in the other direction, let an
26
+ * edit's gradings advance the streak of a prompt that is not running anywhere.
27
+ *
28
+ * Neither suffix ⇒ the shipped prompt, so an unedited workspace keeps the key it always had.
17
29
  */
18
- export declare function comboKeyFor(agentKind: string, model: string, promptVersion: number, promptRevision?: number): string;
30
+ export declare function comboKeyFor(agentKind: string, model: string, promptVersion: number, promptRevision?: number, promptVariant?: {
31
+ id: string;
32
+ fingerprint?: string;
33
+ }): string;
19
34
  /**
20
35
  * Whether a completed grading is a "high grade": a strong score AND no recommendations.
21
36
  * The no-recommendations gate is the real quality signal — the grader found nothing to
@@ -1 +1 @@
1
- {"version":3,"file":"kaizen.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/kaizen/kaizen.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAKhF,kFAAkF;AAClF,eAAO,MAAM,UAAU,IAAI,CAAA;AAE3B,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAGR;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAChC,OAAO,EAAE,IAAI,CACX,aAAa,EACb,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,eAAe,GAAG,OAAO,GAAG,iBAAiB,CACnF,EACD,GAAG,EAAE,MAAM,GACV,mBAAmB,CAgBrB;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAErE"}
1
+ {"version":3,"file":"kaizen.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/kaizen/kaizen.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAKhF,kFAAkF;AAClF,eAAO,MAAM,UAAU,IAAI,CAAA;AAE3B,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAChC,OAAO,EAAE,IAAI,CACX,aAAa,EACb,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,eAAe,GAAG,OAAO,GAAG,iBAAiB,CACnF,EACD,GAAG,EAAE,MAAM,GACV,mBAAmB,CAgBrB;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAErE"}
@@ -5,20 +5,35 @@ export const HIGH_GRADE = 4;
5
5
  /** Consecutive high-grade-with-no-recommendations gradings needed to verify a combo. */
6
6
  export const VERIFICATION_STREAK = 5;
7
7
  /**
8
- * `agentKind|model|promptVersion[|wN]` — the key a verified combo is tracked under.
8
+ * `agentKind|model|promptVersion[|vID@FP][|wN]` — the key a verified combo is tracked under.
9
9
  *
10
- * The optional `wN` suffix is the WORKSPACE's agent-prompt revision when the step ran an edited
11
- * prompt (`PipelineStep.promptRevision`). Without it a workspace that rewrote a kind's prompt
12
- * would share a key with the shipped one, so Kaizen would skip grading text it never graded —
13
- * inheriting a verification the shipped prompt earned — and, in the other direction, let an
14
- * edit's gradings advance the streak of a prompt that is not running anywhere. `promptVersion`
15
- * alone cannot express this: it numbers the PRODUCT's prompt, which an override replaces.
10
+ * Two optional suffixes, both naming text `promptVersion` cannot: it numbers the PRODUCT's
11
+ * prompt, and each of these replaces or extends it.
16
12
  *
17
- * Absent suffix the shipped prompt, so an unedited workspace keeps the key it always had.
13
+ * - `vID@FP` is the deployment's registered agent-kind VARIANT the step ran under, taken from the
14
+ * dispatch-time pin (`PipelineStep.promptVariant`). A variant runs the base kind under
15
+ * different text, so sharing a key with the stock kind would let one's gradings verify the
16
+ * other. `FP` fingerprints the text the variant actually CONTRIBUTED, because re-registering an
17
+ * id is a supported way to re-word a variant — keyed on the id alone, a re-wording would
18
+ * inherit the streak its previous wording earned, which is the very hazard `wN` exists for on
19
+ * the workspace side. A variant that contributed NOTHING (withdrawn mid-run, or its
20
+ * replacement displaced by a workspace override with no addition of its own) carries no
21
+ * fingerprint and so does not enter the key at all: the key describes the text that ran, and
22
+ * that text is the shipped or workspace prompt alone.
23
+ * - `wN` is the WORKSPACE's agent-prompt revision when the step ran an edited prompt
24
+ * (`PipelineStep.promptRevision`). Without it a workspace that rewrote a kind's prompt would
25
+ * share a key with the shipped one, so Kaizen would skip grading text it never graded —
26
+ * inheriting a verification the shipped prompt earned — and, in the other direction, let an
27
+ * edit's gradings advance the streak of a prompt that is not running anywhere.
28
+ *
29
+ * Neither suffix ⇒ the shipped prompt, so an unedited workspace keeps the key it always had.
18
30
  */
19
- export function comboKeyFor(agentKind, model, promptVersion, promptRevision) {
31
+ export function comboKeyFor(agentKind, model, promptVersion, promptRevision, promptVariant) {
20
32
  const base = `${agentKind}|${model}|${promptVersion}`;
21
- return promptRevision === undefined ? base : `${base}|w${promptRevision}`;
33
+ const varied = promptVariant?.fingerprint
34
+ ? `${base}|v${promptVariant.id}@${promptVariant.fingerprint}`
35
+ : base;
36
+ return promptRevision === undefined ? varied : `${varied}|w${promptRevision}`;
22
37
  }
23
38
  /**
24
39
  * Whether a completed grading is a "high grade": a strong score AND no recommendations.
@@ -1 +1 @@
1
- {"version":3,"file":"kaizen.logic.js","sourceRoot":"","sources":["../../../src/modules/kaizen/kaizen.logic.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,2EAA2E;AAE3E,kFAAkF;AAClF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAA;AAE3B,wFAAwF;AACxF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CACzB,SAAiB,EACjB,KAAa,EACb,aAAqB,EACrB,cAAuB;IAEvB,MAAM,IAAI,GAAG,GAAG,SAAS,IAAI,KAAK,IAAI,aAAa,EAAE,CAAA;IACrD,OAAO,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,cAAc,EAAE,CAAA;AAC3E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAoB,EAAE,eAAkC;IAClF,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,UAAU,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAgC,EAChC,OAGC,EACD,GAAW;IAEX,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG,IAAI,EAAE,qBAAqB,IAAI,CAAC,CAAA;IACpD,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,qBAAqB,IAAI,mBAAmB,CAAA;IAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9D,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,qBAAqB;QACrB,QAAQ;QACR,UAAU;QACV,SAAS,EAAE,GAAG;KACf,CAAA;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,KAAiC;IAC1D,OAAO,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"kaizen.logic.js","sourceRoot":"","sources":["../../../src/modules/kaizen/kaizen.logic.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,2EAA2E;AAE3E,kFAAkF;AAClF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAA;AAE3B,wFAAwF;AACxF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,WAAW,CACzB,SAAiB,EACjB,KAAa,EACb,aAAqB,EACrB,cAAuB,EACvB,aAAoD;IAEpD,MAAM,IAAI,GAAG,GAAG,SAAS,IAAI,KAAK,IAAI,aAAa,EAAE,CAAA;IACrD,MAAM,MAAM,GAAG,aAAa,EAAE,WAAW;QACvC,CAAC,CAAC,GAAG,IAAI,KAAK,aAAa,CAAC,EAAE,IAAI,aAAa,CAAC,WAAW,EAAE;QAC7D,CAAC,CAAC,IAAI,CAAA;IACR,OAAO,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,cAAc,EAAE,CAAA;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAoB,EAAE,eAAkC;IAClF,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,UAAU,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAgC,EAChC,OAGC,EACD,GAAW;IAEX,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG,IAAI,EAAE,qBAAqB,IAAI,CAAC,CAAA;IACpD,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,qBAAqB,IAAI,mBAAmB,CAAA;IAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9D,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,qBAAqB;QACrB,QAAQ;QACR,UAAU;QACV,SAAS,EAAE,GAAG;KACf,CAAA;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,KAAiC;IAC1D,OAAO,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;AACjC,CAAC"}
@@ -40,6 +40,9 @@ export declare function pipelineHasEnabledBugIntake(agentKinds: string[], enable
40
40
  * structurally), must not also carry a human approval gate, must set at least one axis
41
41
  * threshold (or it would always skip), and needs a `task-estimator` to have run before it (or
42
42
  * the gate has nothing to consult).
43
+ * - {@link assertValidAgentVariants}: a step selecting a registered agent-kind VARIANT must name
44
+ * one that exists and that varies THIS step's kind — an unknown id would silently fall back to
45
+ * the shipped prompt, and a mismatched one would run the step under another role's prompt.
43
46
  * - {@link assertValidTesterQualityGating}: the test quality-control companion's optional
44
47
  * estimate gate lives on the Tester step itself (not a companion row), so it is validated
45
48
  * separately — but under the same "threshold set + estimator earlier" rules, since a
@@ -71,6 +74,30 @@ export interface PipelineShape {
71
74
  agentKindRegistry?: AgentKindRegistry;
72
75
  }
73
76
  export declare function validatePipelineShape(pipeline: PipelineShape): void;
77
+ /**
78
+ * Every ENABLED step that selects an agent-kind VARIANT (`stepOptions[i].agentVariantId`) must
79
+ * name one the deployment registered, that variant's `baseKind` must be the step's own kind, and
80
+ * the step's kind must be one whose prompt the DISPATCH composes.
81
+ *
82
+ * None of the three fails loudly on its own. An unknown id would simply run the shipped prompt —
83
+ * the step still works, so nothing surfaces except that it silently stopped being the variation
84
+ * someone configured. A MISMATCHED one is worse: the variant's prompt is written for a different
85
+ * role, so the step would run a Coder told to be a reviewer and the output would look like a model
86
+ * failure rather than a configuration error.
87
+ *
88
+ * The third is {@link INLINE_ENGINE_SYSTEM_PROMPTS} — the requirements + clarity reviewers, both
89
+ * brainstorm stages and their rework editors. `IterativeReviewService` drives those as bare inline
90
+ * calls and composes their prompt from (workspace, kind) with no STEP in hand, so a variant
91
+ * selected on one of them cannot reach the model at all. Refusing it is the honest disposition
92
+ * until that path can resolve a step: a per-workspace prompt override is what varies those kinds
93
+ * today. Note this is NOT the whole bespoke-prompt family — `merger` and `on-call` dispatch through
94
+ * the engine like any container kind, so a variant works there and is covered by tests.
95
+ *
96
+ * Skipped entirely when no registry is supplied — the caller is validating a built-in catalog
97
+ * with no deployment registrations in view (the kernel seed test), where refusing an id it
98
+ * cannot resolve would be wrong. Both real boundaries (builder save, run start) pass one.
99
+ */
100
+ export declare function assertValidAgentVariants({ agentKinds, enabled, stepOptions, agentKindRegistry, }: PipelineShape): void;
74
101
  /**
75
102
  * Every ENABLED `skill` step must name the skill it runs (`stepOptions[i].skillId`). The one
76
103
  * generic `skill` agent kind is parametrized entirely by that id — with none it has nothing to
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineShape.d.ts","sourceRoot":"","sources":["../../../src/modules/pipelines/pipelineShape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAQ5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG5D;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,eAAe,CAAA;AAEjD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAE9F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAA;IAC9B,aAAa,CAAC,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAA;IAC9C,WAAW,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAA;IACpC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACtC;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAKnE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,aAAa,GAAG,IAAI,CAU/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,aAAa,GAAG,IAAI,CAoB1F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,OAAO,EACP,KAAK,EACL,MAAM,EACN,iBAAiB,GAClB,EAAE,aAAa,GAAG,IAAI,CA+BtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,EAC7C,UAAU,EACV,OAAO,EACP,aAAa,GACd,EAAE,aAAa,GAAG,IAAI,CAuBtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAAE,EACpB,YAAY,EAAE,oBAAoB,GAAG,SAAS,EAC9C,MAAM,CAAC,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,OAAO,EAAE,GAClB,IAAI,CAkBN"}
1
+ {"version":3,"file":"pipelineShape.d.ts","sourceRoot":"","sources":["../../../src/modules/pipelines/pipelineShape.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAS5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG5D;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,eAAe,CAAA;AAEjD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAE9F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAA;IAC9B,aAAa,CAAC,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAA;IAC9C,WAAW,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAA;IACpC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACtC;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAMnE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,UAAU,EACV,OAAO,EACP,WAAW,EACX,iBAAiB,GAClB,EAAE,aAAa,GAAG,IAAI,CAsBtB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,aAAa,GAAG,IAAI,CAU/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,aAAa,GAAG,IAAI,CAoB1F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,OAAO,EACP,KAAK,EACL,MAAM,EACN,iBAAiB,GAClB,EAAE,aAAa,GAAG,IAAI,CA+BtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,EAC7C,UAAU,EACV,OAAO,EACP,aAAa,GACd,EAAE,aAAa,GAAG,IAAI,CAuBtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAAE,EACpB,YAAY,EAAE,oBAAoB,GAAG,SAAS,EAC9C,MAAM,CAAC,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,OAAO,EAAE,GAClB,IAAI,CAkBN"}
@@ -1,5 +1,5 @@
1
1
  import { ValidationError } from '@cat-factory/kernel';
2
- import { companionTargets, isCompanionKind, isGatableKind, SKILL_AGENT_KIND, TASK_ESTIMATOR_AGENT_KIND, } from '@cat-factory/agents';
2
+ import { companionTargets, INLINE_ENGINE_SYSTEM_PROMPTS, isCompanionKind, isGatableKind, SKILL_AGENT_KIND, TASK_ESTIMATOR_AGENT_KIND, } from '@cat-factory/agents';
3
3
  import { isTesterKind } from '../execution/ci.logic.js';
4
4
  /**
5
5
  * The `bug-intake` engine step pulls one issue from the schedule's configured tracker board, so
@@ -23,6 +23,49 @@ export function validatePipelineShape(pipeline) {
23
23
  assertValidGating(pipeline);
24
24
  assertValidTesterQualityGating(pipeline);
25
25
  assertValidSkillSteps(pipeline);
26
+ assertValidAgentVariants(pipeline);
27
+ }
28
+ /**
29
+ * Every ENABLED step that selects an agent-kind VARIANT (`stepOptions[i].agentVariantId`) must
30
+ * name one the deployment registered, that variant's `baseKind` must be the step's own kind, and
31
+ * the step's kind must be one whose prompt the DISPATCH composes.
32
+ *
33
+ * None of the three fails loudly on its own. An unknown id would simply run the shipped prompt —
34
+ * the step still works, so nothing surfaces except that it silently stopped being the variation
35
+ * someone configured. A MISMATCHED one is worse: the variant's prompt is written for a different
36
+ * role, so the step would run a Coder told to be a reviewer and the output would look like a model
37
+ * failure rather than a configuration error.
38
+ *
39
+ * The third is {@link INLINE_ENGINE_SYSTEM_PROMPTS} — the requirements + clarity reviewers, both
40
+ * brainstorm stages and their rework editors. `IterativeReviewService` drives those as bare inline
41
+ * calls and composes their prompt from (workspace, kind) with no STEP in hand, so a variant
42
+ * selected on one of them cannot reach the model at all. Refusing it is the honest disposition
43
+ * until that path can resolve a step: a per-workspace prompt override is what varies those kinds
44
+ * today. Note this is NOT the whole bespoke-prompt family — `merger` and `on-call` dispatch through
45
+ * the engine like any container kind, so a variant works there and is covered by tests.
46
+ *
47
+ * Skipped entirely when no registry is supplied — the caller is validating a built-in catalog
48
+ * with no deployment registrations in view (the kernel seed test), where refusing an id it
49
+ * cannot resolve would be wrong. Both real boundaries (builder save, run start) pass one.
50
+ */
51
+ export function assertValidAgentVariants({ agentKinds, enabled, stepOptions, agentKindRegistry, }) {
52
+ if (!stepOptions || !agentKindRegistry)
53
+ return;
54
+ for (let i = 0; i < agentKinds.length; i++) {
55
+ const variantId = stepOptions[i]?.agentVariantId;
56
+ if (!variantId || enabled?.[i] === false)
57
+ continue;
58
+ const variant = agentKindRegistry.variant(variantId);
59
+ if (!variant) {
60
+ throw new ValidationError(`Step '${agentKinds[i]}' selects the agent variant '${variantId}', which this deployment does not register.`);
61
+ }
62
+ if (variant.baseKind !== agentKinds[i]) {
63
+ throw new ValidationError(`Agent variant '${variantId}' varies '${variant.baseKind}', so it cannot be selected on a '${agentKinds[i]}' step.`);
64
+ }
65
+ if (agentKinds[i] && agentKinds[i] in INLINE_ENGINE_SYSTEM_PROMPTS) {
66
+ throw new ValidationError(`Agent variant '${variantId}' cannot be selected on a '${agentKinds[i]}' step: that step runs inline in the engine, which composes its prompt without a step, so the variant would never reach the model. Edit the agent's prompt for this workspace instead.`);
67
+ }
68
+ }
26
69
  }
27
70
  /**
28
71
  * Every ENABLED `skill` step must name the skill it runs (`stepOptions[i].skillId`). The one
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineShape.js","sourceRoot":"","sources":["../../../src/modules/pipelines/pipelineShape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipelineShape.js","sourceRoot":"","sources":["../../../src/modules/pipelines/pipelineShape.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateRegistrations.d.ts","sourceRoot":"","sources":["../../src/validation/validateRegistrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAEV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAsC5B,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,uFAAuF;AACvF,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAA;IACpC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAA;IAC1B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,qGAAqG;IACrG,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACxC,qGAAqG;IACrG,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACxC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACrC;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAChD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,4BAA4B,GACjC,mBAAmB,EAAE,CA0EvB;AA4QD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,4BAA4B,GAAG,IAAI,CAY9E;AAOD,yGAAyG;AACzG,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,4BAA4B,GAAG,IAAI,CASlF;AAED,uFAAuF;AACvF,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}
1
+ {"version":3,"file":"validateRegistrations.d.ts","sourceRoot":"","sources":["../../src/validation/validateRegistrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,EAEV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAsC5B,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,uFAAuF;AACvF,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAA;IACpC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAA;IAC1B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,qGAAqG;IACrG,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACxC,qGAAqG;IACrG,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACxC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACrC;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAChD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,4BAA4B,GACjC,mBAAmB,EAAE,CA6EvB;AA2WD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,4BAA4B,GAAG,IAAI,CAY9E;AAOD,yGAAyG;AACzG,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,4BAA4B,GAAG,IAAI,CASlF;AAED,uFAAuF;AACvF,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}
@@ -1,3 +1,4 @@
1
+ import { INLINE_ENGINE_SYSTEM_PROMPTS } from '@cat-factory/agents';
1
2
  import { CI_FIXER_AGENT_KIND, CONFLICT_RESOLVER_AGENT_KIND, FIXER_AGENT_KIND, ON_CALL_AGENT_KIND, isAllowedMcpHttpUrl, isValidMcpServerId, seedPipelines, stubGateContext, } from '@cat-factory/kernel';
2
3
  import { isNamespacedId, isValidResultViewId, RESULT_VIEW_ID_SET } from '@cat-factory/contracts';
3
4
  // ---------------------------------------------------------------------------
@@ -90,6 +91,97 @@ export function collectRegistrationProblems(opts) {
90
91
  problems.push(...checkCustomTaskTypes(opts));
91
92
  // 6. Agent capabilities: the skills + tool servers each kind declares.
92
93
  problems.push(...checkAgentCapabilities(agentKinds, registry));
94
+ // 7. Agent-kind VARIANTS: their base kind must exist and they must actually change the prompt.
95
+ problems.push(...checkAgentKindVariants(opts, registeredKindIds));
96
+ return problems;
97
+ }
98
+ /**
99
+ * Section 7 of {@link collectRegistrationProblems}: every registered agent-kind VARIANT must vary
100
+ * a kind that exists and must change something.
101
+ *
102
+ * Both failures are invisible at run time, which is why boot is the place to be loud. A variant of
103
+ * a kind nobody registers can never be selected by a step that passes pipeline validation, so it
104
+ * is simply dead configuration — the deployment believes a variation is available and no pipeline
105
+ * can use it. A variant that sets NEITHER prompt field is worse than dead: it validates, it is
106
+ * selectable, and the step runs exactly as if it were never configured, so the only symptom is
107
+ * that a deliberately varied step behaves like the stock one.
108
+ *
109
+ * The base-kind check needs the built-in catalog (`knownAgentKinds`) for the same reason the
110
+ * pipeline-kind check does — the backend has no runtime catalog of built-in kinds, so without it
111
+ * a variant of `coder` would false-positive. The empty-prompt check needs nothing and always runs.
112
+ */
113
+ function checkAgentKindVariants(opts, registeredKindIds) {
114
+ const problems = [];
115
+ for (const variant of opts.agentKindRegistry.variants()) {
116
+ if (!variant.systemPrompt?.trim() && !variant.promptAddition?.trim()) {
117
+ problems.push({
118
+ severity: 'error',
119
+ code: 'variant_changes_nothing',
120
+ message: `Agent variant "${variant.id}" sets neither systemPrompt nor promptAddition, so a step ` +
121
+ `selecting it runs exactly the shipped "${variant.baseKind}" prompt. Give it one, or ` +
122
+ `drop the registration.`,
123
+ });
124
+ }
125
+ // A kind whose prompt `IterativeReviewService` composes from (workspace, kind) with no step in
126
+ // hand: the variant could be selected on the step and would never reach the model. Refused at
127
+ // pipeline save too (`assertValidAgentVariants`), but a deployment that registers one should
128
+ // hear it at BOOT rather than the first time somebody tries to use it.
129
+ if (variant.baseKind in INLINE_ENGINE_SYSTEM_PROMPTS) {
130
+ problems.push({
131
+ severity: 'error',
132
+ code: 'variant_inline_engine_kind',
133
+ message: `Agent variant "${variant.id}" varies "${variant.baseKind}", which runs inline in the ` +
134
+ `engine and composes its prompt without a step, so no step could ever apply the ` +
135
+ `variant. Vary a dispatched kind, or edit that agent's prompt per workspace instead.`,
136
+ });
137
+ }
138
+ if (registeredKindIds.has(variant.baseKind))
139
+ continue;
140
+ if (opts.knownAgentKinds && !opts.knownAgentKinds.has(variant.baseKind)) {
141
+ problems.push({
142
+ severity: 'error',
143
+ code: 'variant_unknown_base_kind',
144
+ message: `Agent variant "${variant.id}" varies agent kind "${variant.baseKind}", which is ` +
145
+ `neither a known built-in nor a registered kind. No pipeline step can select it.`,
146
+ });
147
+ }
148
+ }
149
+ problems.push(...checkPipelineVariantSelections(opts));
150
+ return problems;
151
+ }
152
+ /**
153
+ * A registered PIPELINE selecting a variant on one of its steps must select one that exists and
154
+ * that varies THAT step's kind — the same rule `assertValidAgentVariants` applies at pipeline save
155
+ * and run start, applied at BOOT for the pipelines a deployment ships in code, which reach neither
156
+ * of those boundaries until somebody starts a run.
157
+ *
158
+ * "The same rule" is load-bearing: a DISABLED step never runs, so it imposes no requirement here
159
+ * either. Refusing one at boot while the builder saves it happily would make a shape valid or
160
+ * invalid depending on which door it came through.
161
+ */
162
+ function checkPipelineVariantSelections(opts) {
163
+ const problems = [];
164
+ for (const pipeline of opts.pipelineRegistry?.registered() ?? []) {
165
+ pipeline.stepOptions?.forEach((options, i) => {
166
+ const variantId = options?.agentVariantId;
167
+ if (!variantId || pipeline.enabled?.[i] === false)
168
+ return;
169
+ const variant = opts.agentKindRegistry.variant(variantId);
170
+ const problem = !variant
171
+ ? 'which this deployment does not register'
172
+ : variant.baseKind !== pipeline.agentKinds[i]
173
+ ? `which varies "${variant.baseKind}", not this step's kind`
174
+ : undefined;
175
+ if (!problem)
176
+ return;
177
+ problems.push({
178
+ severity: 'error',
179
+ code: 'pipeline_variant_unresolved',
180
+ message: `Pipeline "${pipeline.id}" step ${i} ("${pipeline.agentKinds[i]}") selects agent ` +
181
+ `variant "${variantId}", ${problem}.`,
182
+ });
183
+ });
184
+ }
93
185
  return problems;
94
186
  }
95
187
  /**