@cat-factory/orchestration 0.154.0 → 0.156.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.
Files changed (40) hide show
  1. package/dist/modules/execution/AgentContextBuilder.d.ts +16 -18
  2. package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
  3. package/dist/modules/execution/AgentContextBuilder.js +28 -33
  4. package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
  5. package/dist/modules/execution/RalphController.d.ts +9 -3
  6. package/dist/modules/execution/RalphController.d.ts.map +1 -1
  7. package/dist/modules/execution/RalphController.js +43 -13
  8. package/dist/modules/execution/RalphController.js.map +1 -1
  9. package/dist/modules/execution/RunStateMachine.d.ts.map +1 -1
  10. package/dist/modules/execution/RunStateMachine.js +2 -1
  11. package/dist/modules/execution/RunStateMachine.js.map +1 -1
  12. package/dist/modules/execution/StepGraph.d.ts.map +1 -1
  13. package/dist/modules/execution/StepGraph.js +9 -0
  14. package/dist/modules/execution/StepGraph.js.map +1 -1
  15. package/dist/modules/execution/ralph.logic.d.ts +65 -4
  16. package/dist/modules/execution/ralph.logic.d.ts.map +1 -1
  17. package/dist/modules/execution/ralph.logic.js +89 -2
  18. package/dist/modules/execution/ralph.logic.js.map +1 -1
  19. package/dist/modules/execution/retry.logic.d.ts.map +1 -1
  20. package/dist/modules/execution/retry.logic.js +11 -0
  21. package/dist/modules/execution/retry.logic.js.map +1 -1
  22. package/dist/modules/execution/run-context-admission.d.ts +1 -1
  23. package/dist/modules/execution/run-context-admission.d.ts.map +1 -1
  24. package/dist/modules/execution/run-context-admission.js +1 -0
  25. package/dist/modules/execution/run-context-admission.js.map +1 -1
  26. package/dist/modules/execution/run-skills.d.ts +38 -0
  27. package/dist/modules/execution/run-skills.d.ts.map +1 -0
  28. package/dist/modules/execution/run-skills.js +92 -0
  29. package/dist/modules/execution/run-skills.js.map +1 -0
  30. package/dist/modules/observability/LlmObservabilityService.d.ts +5 -1
  31. package/dist/modules/observability/LlmObservabilityService.d.ts.map +1 -1
  32. package/dist/modules/observability/LlmObservabilityService.js +5 -2
  33. package/dist/modules/observability/LlmObservabilityService.js.map +1 -1
  34. package/dist/modules/observability/observability.logic.d.ts.map +1 -1
  35. package/dist/modules/observability/observability.logic.js +23 -12
  36. package/dist/modules/observability/observability.logic.js.map +1 -1
  37. package/dist/validation/validateRegistrations.d.ts.map +1 -1
  38. package/dist/validation/validateRegistrations.js +107 -1
  39. package/dist/validation/validateRegistrations.js.map +1 -1
  40. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"StepGraph.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/StepGraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGjF;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,KAAK,EAAI;IAE7C,4FAA4F;IAC5F,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAMlC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAInC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAG1C;IAED;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CA+B1C;IAED;;;;;;OAMG;IACH,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAIrF;IAED;;;;;OAKG;IACH,sBAAsB,CACpB,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,GACzC,MAAM,CAGR;IAED;;;;;;;OAOG;IACH,oBAAoB,CAClB,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAC1C,IAAI,CAQN;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAMlF;IAED;;;;;;OAMG;IACH,qBAAqB,CACnB,QAAQ,EAAE,iBAAiB,EAC3B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAC1C,IAAI,CAqBN;CACF"}
1
+ {"version":3,"file":"StepGraph.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/StepGraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIjF;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,KAAK,EAAI;IAE7C,4FAA4F;IAC5F,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAMlC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAInC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAG1C;IAED;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAsC1C;IAED;;;;;;OAMG;IACH,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAIrF;IAED;;;;;OAKG;IACH,sBAAsB,CACpB,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,GACzC,MAAM,CAGR;IAED;;;;;;;OAOG;IACH,oBAAoB,CAClB,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAC1C,IAAI,CAQN;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAMlF;IAED;;;;;;OAMG;IACH,qBAAqB,CACnB,QAAQ,EAAE,iBAAiB,EAC3B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAC1C,IAAI,CAqBN;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { companionTargets } from '@cat-factory/agents';
2
+ import { restartRalphState } from './ralph.logic.js';
2
3
  /**
3
4
  * The pure, synchronous step/cursor mutators of the execution engine — the dependency-free
4
5
  * inner layer of the run state-machine spine. Every method operates on a passed
@@ -90,6 +91,14 @@ export class StepGraph {
90
91
  step.deployFrameId = undefined;
91
92
  step.deployProvisioning = undefined;
92
93
  step.deployPrimaryFrameId = undefined;
94
+ // Re-seed a `ralph` step's loop state: unlike the fields above it must NOT be dropped (a
95
+ // ralph step with no state dispatches with no completion command and silently degrades to a
96
+ // one-shot coder), but keeping it as-is is just as wrong — a spent `attempts` would send the
97
+ // re-run's very first verdict straight to `exhausted`. Keep the frozen config, zero the
98
+ // counters; a non-ralph step is untouched.
99
+ const ralph = restartRalphState(step.ralph);
100
+ if (ralph)
101
+ step.ralph = ralph;
93
102
  }
94
103
  /**
95
104
  * Loop the run back to `fromIndex` and re-run every step through `throughIndex` — each reset to a
@@ -1 +1 @@
1
- {"version":3,"file":"StepGraph.js","sourceRoot":"","sources":["../../../src/modules/execution/StepGraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StepGraph.js","sourceRoot":"","sources":["../../../src/modules/execution/StepGraph.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AgentConfigValues, RalphStepState, RalphVerdict } from '@cat-factory/kernel';
1
+ import type { AgentConfigValues, RalphAttempt, RalphStepState, RalphVerdict } from '@cat-factory/kernel';
2
2
  import { RALPH_AGENT_KIND } from '@cat-factory/agents';
3
3
  export { RALPH_AGENT_KIND };
4
4
  /** Default repo-relative path of the append-only progress log the ralph agent maintains. */
@@ -8,6 +8,23 @@ export declare const RALPH_PROGRESS_PATH = ".cat-factory/ralph-progress.md";
8
8
  * loop spin (near-)forever. Well above any sane hand-set budget; the default is much smaller.
9
9
  */
10
10
  export declare const MAX_RALPH_ITERATIONS_CAP = 50;
11
+ /**
12
+ * How many consecutive FAILING iterations against an UNCHANGED work-branch HEAD end the loop
13
+ * early. The iteration budget alone is a poor runaway guard: a loop whose agent commits nothing
14
+ * is provably not converging, and every further pass costs a full model run to re-learn that.
15
+ * Two is the smallest value that can distinguish a stall from a single unlucky pass — one
16
+ * no-commit iteration happens (a pass that only investigated), two in a row does not.
17
+ */
18
+ export declare const RALPH_NO_PROGRESS_LIMIT = 2;
19
+ /**
20
+ * How many iterations the step's inspectable {@link RalphStepState.attemptLog} keeps. The loop
21
+ * state rides the run's `detail` JSON blob, which is re-serialized on EVERY step-progress write,
22
+ * so an uncapped log of up to {@link MAX_RALPH_ITERATIONS_CAP} entries (each carrying an output
23
+ * tail and the iteration's prose summary) would bloat every write for the rest of the loop's
24
+ * life — the same reason the run's failure and output trails are capped. The newest iterations
25
+ * are the ones worth reading; what the cap drops is COUNTED, never silently discarded.
26
+ */
27
+ export declare const MAX_RALPH_ATTEMPT_LOG = 20;
11
28
  /** Whether a step's kind is the ralph-loop kind. */
12
29
  export declare function isRalphKind(kind: string): boolean;
13
30
  /** A block's resolved ralph config: the completion command + the iteration budget. */
@@ -27,6 +44,23 @@ export interface RalphConfig {
27
44
  export declare function resolveRalphConfig(agentConfig: AgentConfigValues | undefined): RalphConfig;
28
45
  /** Seed a fresh ralph step state from a resolved config (attempts start at 0, no history). */
29
46
  export declare function seedRalphState(config: RalphConfig): RalphStepState;
47
+ /**
48
+ * Re-seed a ralph step's loop state for a RE-RUN (a retry, a restart-from-step, or a loop-back),
49
+ * keeping the config frozen at run start — the completion command, the budget, the progress-log
50
+ * path — while zeroing everything the previous attempt accumulated.
51
+ *
52
+ * Both halves matter and neither used to happen. A rebuild-from-scratch reset (the retry path)
53
+ * DROPPED the state entirely, and a ralph step with no `ralph` state dispatches with no
54
+ * validation block at all: the harness then runs a plain coding pass, returns no verdict, and
55
+ * the loop interceptor never fires — the step silently completes as an ungated one-shot coder.
56
+ * A preserve-everything reset (the loop-back path) kept `attempts` at the spent budget, so the
57
+ * very first verdict of the re-run went straight to `exhausted`. Re-seeding from the step's own
58
+ * frozen config is the one answer that is right for both, and needs no re-read of the block.
59
+ *
60
+ * Returns undefined for a step that carries no ralph state (every non-ralph kind), so callers
61
+ * can spread it unconditionally.
62
+ */
63
+ export declare function restartRalphState(ralph: RalphStepState | null | undefined): RalphStepState | undefined;
30
64
  /**
31
65
  * Fold a ralph step's state into the container context's `ralphValidation` block: the command
32
66
  * the harness runs, the progress-log path, and the 1-based iteration number about to run
@@ -38,14 +72,41 @@ export declare function buildRalphValidation(ralph: RalphStepState | null | unde
38
72
  progressPath: string;
39
73
  iteration: number;
40
74
  } | undefined;
75
+ /**
76
+ * The no-progress streak a just-finished iteration leaves behind: how many consecutive failing
77
+ * iterations have now run against an unchanged work-branch HEAD.
78
+ *
79
+ * FAILS OPEN by design. A verdict with no `headSha` — a self-hosted runner pool on an older
80
+ * harness image, or a pass whose head could not be read — resets the streak rather than
81
+ * extending it: the cost of a missed stall is a few wasted iterations the budget still bounds,
82
+ * while the cost of a false stall is killing a loop that was making progress the whole time.
83
+ */
84
+ export declare function nextNoProgressStreak(ralph: RalphStepState, verdict: RalphVerdict | null, previousHeadSha: string | null | undefined): number;
85
+ /** The work-branch HEAD the most recent RECORDED iteration ran against, if it reported one. */
86
+ export declare function lastRecordedHeadSha(ralph: RalphStepState): string | null;
41
87
  /** The engine's decision after one ralph iteration's verdict is recorded. */
42
- export type RalphDecision = 'done' | 'retry' | 'exhausted';
88
+ export type RalphDecision = 'done' | 'retry' | 'exhausted' | 'stalled';
43
89
  /**
44
90
  * Decide the loop's next move from the step state (AFTER the just-finished iteration has been
45
- * counted into `attempts`) and its verdict: the criterion passed ⇒ `done`; else another
46
- * iteration remains within the budget ⇒ `retry`; else the budget is spent ⇒ `exhausted`.
91
+ * counted into `attempts` and its no-progress streak folded in) and its verdict: the criterion
92
+ * passed `done`; the loop has stopped making progress ⇒ `stalled`; else another iteration
93
+ * remains within the budget ⇒ `retry`; else the budget is spent ⇒ `exhausted`.
94
+ *
95
+ * `stalled` is checked BEFORE the budget so a stuck loop reports why it actually stopped. The
96
+ * two outcomes are terminal in the same way but mean different things to the human reading the
97
+ * notification: "the budget was not enough" invites raising it, "nothing changed for two
98
+ * iterations" says raising it will not help.
47
99
  */
48
100
  export declare function decideRalphNext(ralph: RalphStepState, verdict: RalphVerdict | null): RalphDecision;
101
+ /**
102
+ * Append a finished iteration to the step's capped history, returning the new log plus how many
103
+ * entries have now been dropped in total. Pure so the cap (and its accounting) is asserted
104
+ * without the controller's ports.
105
+ */
106
+ export declare function appendRalphAttempt(ralph: RalphStepState, entry: RalphAttempt): {
107
+ attemptLog: RalphAttempt[];
108
+ droppedAttempts: number;
109
+ };
49
110
  /** One-line, human-readable summary of a verdict for notifications / failure messages. */
50
111
  export declare function describeRalphVerdict(verdict: RalphVerdict | null): string;
51
112
  //# sourceMappingURL=ralph.logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ralph.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ralph.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC1F,OAAO,EACL,gBAAgB,EAIjB,MAAM,qBAAqB,CAAA;AAQ5B,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAE3B,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AAEnE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,gGAAgG;IAChG,iBAAiB,EAAE,MAAM,CAAA;IACzB,4FAA4F;IAC5F,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,SAAS,GAAG,WAAW,CAQ1F;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CASlE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GACvC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAO1E;AAED,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAA;AAE1D;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,YAAY,GAAG,IAAI,GAC3B,aAAa,CAGf;AAED,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,CAMzE"}
1
+ {"version":3,"file":"ralph.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ralph.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,YAAY,EACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,gBAAgB,EAIjB,MAAM,qBAAqB,CAAA;AAQ5B,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAE3B,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AAEnE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,gGAAgG;IAChG,iBAAiB,EAAE,MAAM,CAAA;IACzB,4FAA4F;IAC5F,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,SAAS,GAAG,WAAW,CAQ1F;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CASlE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GACvC,cAAc,GAAG,SAAS,CAU5B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GACvC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAO1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,YAAY,GAAG,IAAI,EAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACzC,MAAM,CAKR;AAED,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAExE;AAED,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAA;AAEtE;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,YAAY,GAAG,IAAI,GAC3B,aAAa,CAIf;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,YAAY,GAClB;IAAE,UAAU,EAAE,YAAY,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAOzD;AAED,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,CAMzE"}
@@ -12,6 +12,23 @@ export const RALPH_PROGRESS_PATH = '.cat-factory/ralph-progress.md';
12
12
  * loop spin (near-)forever. Well above any sane hand-set budget; the default is much smaller.
13
13
  */
14
14
  export const MAX_RALPH_ITERATIONS_CAP = 50;
15
+ /**
16
+ * How many consecutive FAILING iterations against an UNCHANGED work-branch HEAD end the loop
17
+ * early. The iteration budget alone is a poor runaway guard: a loop whose agent commits nothing
18
+ * is provably not converging, and every further pass costs a full model run to re-learn that.
19
+ * Two is the smallest value that can distinguish a stall from a single unlucky pass — one
20
+ * no-commit iteration happens (a pass that only investigated), two in a row does not.
21
+ */
22
+ export const RALPH_NO_PROGRESS_LIMIT = 2;
23
+ /**
24
+ * How many iterations the step's inspectable {@link RalphStepState.attemptLog} keeps. The loop
25
+ * state rides the run's `detail` JSON blob, which is re-serialized on EVERY step-progress write,
26
+ * so an uncapped log of up to {@link MAX_RALPH_ITERATIONS_CAP} entries (each carrying an output
27
+ * tail and the iteration's prose summary) would bloat every write for the rest of the loop's
28
+ * life — the same reason the run's failure and output trails are capped. The newest iterations
29
+ * are the ones worth reading; what the cap drops is COUNTED, never silently discarded.
30
+ */
31
+ export const MAX_RALPH_ATTEMPT_LOG = 20;
15
32
  /** Whether a step's kind is the ralph-loop kind. */
16
33
  export function isRalphKind(kind) {
17
34
  return kind === RALPH_AGENT_KIND;
@@ -42,6 +59,34 @@ export function seedRalphState(config) {
42
59
  attemptLog: [],
43
60
  };
44
61
  }
62
+ /**
63
+ * Re-seed a ralph step's loop state for a RE-RUN (a retry, a restart-from-step, or a loop-back),
64
+ * keeping the config frozen at run start — the completion command, the budget, the progress-log
65
+ * path — while zeroing everything the previous attempt accumulated.
66
+ *
67
+ * Both halves matter and neither used to happen. A rebuild-from-scratch reset (the retry path)
68
+ * DROPPED the state entirely, and a ralph step with no `ralph` state dispatches with no
69
+ * validation block at all: the harness then runs a plain coding pass, returns no verdict, and
70
+ * the loop interceptor never fires — the step silently completes as an ungated one-shot coder.
71
+ * A preserve-everything reset (the loop-back path) kept `attempts` at the spent budget, so the
72
+ * very first verdict of the re-run went straight to `exhausted`. Re-seeding from the step's own
73
+ * frozen config is the one answer that is right for both, and needs no re-read of the block.
74
+ *
75
+ * Returns undefined for a step that carries no ralph state (every non-ralph kind), so callers
76
+ * can spread it unconditionally.
77
+ */
78
+ export function restartRalphState(ralph) {
79
+ if (!ralph)
80
+ return undefined;
81
+ return {
82
+ phase: 'iterating',
83
+ attempts: 0,
84
+ maxIterations: ralph.maxIterations,
85
+ validationCommand: ralph.validationCommand,
86
+ progressPath: ralph.progressPath ?? RALPH_PROGRESS_PATH,
87
+ attemptLog: [],
88
+ };
89
+ }
45
90
  /**
46
91
  * Fold a ralph step's state into the container context's `ralphValidation` block: the command
47
92
  * the harness runs, the progress-log path, and the 1-based iteration number about to run
@@ -57,16 +102,58 @@ export function buildRalphValidation(ralph) {
57
102
  iteration: ralph.attempts + 1,
58
103
  };
59
104
  }
105
+ /**
106
+ * The no-progress streak a just-finished iteration leaves behind: how many consecutive failing
107
+ * iterations have now run against an unchanged work-branch HEAD.
108
+ *
109
+ * FAILS OPEN by design. A verdict with no `headSha` — a self-hosted runner pool on an older
110
+ * harness image, or a pass whose head could not be read — resets the streak rather than
111
+ * extending it: the cost of a missed stall is a few wasted iterations the budget still bounds,
112
+ * while the cost of a false stall is killing a loop that was making progress the whole time.
113
+ */
114
+ export function nextNoProgressStreak(ralph, verdict, previousHeadSha) {
115
+ if (verdict?.validationPassed)
116
+ return 0;
117
+ const head = verdict?.headSha?.trim();
118
+ if (!head || !previousHeadSha || head !== previousHeadSha)
119
+ return 0;
120
+ return (ralph.noProgressStreak ?? 0) + 1;
121
+ }
122
+ /** The work-branch HEAD the most recent RECORDED iteration ran against, if it reported one. */
123
+ export function lastRecordedHeadSha(ralph) {
124
+ return ralph.attemptLog?.at(-1)?.headSha?.trim() || null;
125
+ }
60
126
  /**
61
127
  * Decide the loop's next move from the step state (AFTER the just-finished iteration has been
62
- * counted into `attempts`) and its verdict: the criterion passed ⇒ `done`; else another
63
- * iteration remains within the budget ⇒ `retry`; else the budget is spent ⇒ `exhausted`.
128
+ * counted into `attempts` and its no-progress streak folded in) and its verdict: the criterion
129
+ * passed `done`; the loop has stopped making progress ⇒ `stalled`; else another iteration
130
+ * remains within the budget ⇒ `retry`; else the budget is spent ⇒ `exhausted`.
131
+ *
132
+ * `stalled` is checked BEFORE the budget so a stuck loop reports why it actually stopped. The
133
+ * two outcomes are terminal in the same way but mean different things to the human reading the
134
+ * notification: "the budget was not enough" invites raising it, "nothing changed for two
135
+ * iterations" says raising it will not help.
64
136
  */
65
137
  export function decideRalphNext(ralph, verdict) {
66
138
  if (verdict?.validationPassed)
67
139
  return 'done';
140
+ if ((ralph.noProgressStreak ?? 0) >= RALPH_NO_PROGRESS_LIMIT)
141
+ return 'stalled';
68
142
  return ralph.attempts < ralph.maxIterations ? 'retry' : 'exhausted';
69
143
  }
144
+ /**
145
+ * Append a finished iteration to the step's capped history, returning the new log plus how many
146
+ * entries have now been dropped in total. Pure so the cap (and its accounting) is asserted
147
+ * without the controller's ports.
148
+ */
149
+ export function appendRalphAttempt(ralph, entry) {
150
+ const appended = [...(ralph.attemptLog ?? []), entry];
151
+ const overflow = Math.max(appended.length - MAX_RALPH_ATTEMPT_LOG, 0);
152
+ return {
153
+ attemptLog: overflow > 0 ? appended.slice(overflow) : appended,
154
+ droppedAttempts: (ralph.droppedAttempts ?? 0) + overflow,
155
+ };
156
+ }
70
157
  /** One-line, human-readable summary of a verdict for notifications / failure messages. */
71
158
  export function describeRalphVerdict(verdict) {
72
159
  if (!verdict)
@@ -1 +1 @@
1
- {"version":3,"file":"ralph.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/ralph.logic.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,8BAA8B,EAC9B,kCAAkC,GACnC,MAAM,qBAAqB,CAAA;AAE5B,2FAA2F;AAC3F,0FAA0F;AAC1F,6FAA6F;AAC7F,iEAAiE;AAEjE,4FAA4F;AAC5F,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAE3B,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,gCAAgC,CAAA;AAEnE;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAA;AAE1C,oDAAoD;AACpD,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI,KAAK,gBAAgB,CAAA;AAClC,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAA0C;IAC3E,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,CAAC,kCAAkC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1F,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAA;IACjE,MAAM,aAAa,GACjB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,wBAAwB,CAAC;QACrD,CAAC,CAAC,4BAA4B,CAAA;IAClC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAA;AAC7C,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,CAAC;QACX,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,YAAY,EAAE,mBAAmB;QACjC,UAAU,EAAE,EAAE;KACf,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAwC;IAExC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAAE,OAAO,SAAS,CAAA;IAC/D,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,iBAAiB;QAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,mBAAmB;QACvD,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC;KAC9B,CAAA;AACH,CAAC;AAKD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAqB,EACrB,OAA4B;IAE5B,IAAI,OAAO,EAAE,gBAAgB;QAAE,OAAO,MAAM,CAAA;IAC5C,OAAO,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAA;AACrE,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB,CAAC,OAA4B;IAC/D,IAAI,CAAC,OAAO;QAAE,OAAO,wCAAwC,CAAA;IAC7D,IAAI,OAAO,CAAC,gBAAgB;QAAE,OAAO,+BAA+B,CAAA;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAA;IACjD,MAAM,IAAI,GAAG,uCAAuC,OAAO,CAAC,QAAQ,GAAG,CAAA;IACvE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1C,CAAC"}
1
+ {"version":3,"file":"ralph.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/ralph.logic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"retry.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/retry.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG;IACtF,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CASA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAChC,GAAG,YAAY,EAAE,CAIjB;AAED,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAE7C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,EAClE,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,GACV,eAAe,EAAE,CAmBnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,EAC/B,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAShD;AA8CD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,0EAA0E;IAC1E,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,mGAAmG;IACnG,IAAI,EAAE;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,iBAAiB,CAuBpB"}
1
+ {"version":3,"file":"retry.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/retry.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAG5B;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG;IACtF,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CASA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAChC,GAAG,YAAY,EAAE,CAIjB;AAED,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAE7C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,EAClE,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,GACV,eAAe,EAAE,CAmBnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,EAC/B,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAShD;AAwDD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,0EAA0E;IAC1E,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,mGAAmG;IACnG,IAAI,EAAE;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,iBAAiB,CAuBpB"}
@@ -1,3 +1,4 @@
1
+ import { restartRalphState } from './ralph.logic.js';
1
2
  /**
2
3
  * Plan how a failed run resumes on retry: keep the steps that already completed
3
4
  * and re-run from the one that actually failed, rather than restarting the whole
@@ -128,8 +129,17 @@ function planFromStep(prevSteps, resumeIndex) {
128
129
  * fresh timing (`startStep` re-stamps `startedAt`). The structural fields the
129
130
  * pipeline defined — `agentKind` and `requiresApproval` — are preserved so the
130
131
  * approval gate still fires after the re-run.
132
+ *
133
+ * A `ralph` step's loop state is RE-SEEDED rather than dropped. Everything else here is
134
+ * re-derived at dispatch or lazily on the way back (`step.test` is seeded when the tester's
135
+ * report arrives), but a ralph loop's completion command is needed BEFORE the dispatch: it is
136
+ * what puts the `validation` block on the job body. Rebuilding this object without it left the
137
+ * retried step with no ralph state at all, so the harness ran a plain coding pass, returned no
138
+ * verdict, and the loop interceptor never fired — the step completed as an ungated one-shot
139
+ * coder. {@link restartRalphState} keeps the frozen config and zeroes the counters.
131
140
  */
132
141
  function resetStep(step, state) {
142
+ const ralph = restartRalphState(step.ralph);
133
143
  return {
134
144
  agentKind: step.agentKind,
135
145
  state,
@@ -146,6 +156,7 @@ function resetStep(step, state) {
146
156
  startedAt: undefined,
147
157
  finishedAt: undefined,
148
158
  pausedAt: undefined,
159
+ ...(ralph ? { ralph } : {}),
149
160
  };
150
161
  }
151
162
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"retry.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/retry.logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/retry.logic.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ import type { ExecutionServiceDependencies } from './ExecutionService.js';
17
17
  * value the constructor passed inline, so the two collaborators are built from an identical
18
18
  * input to before.
19
19
  */
20
- export type RunContextAdmissionDeps = Pick<ExecutionServiceDependencies, 'workspaceRepository' | 'blockRepository' | 'executionRepository' | 'accountRepository' | 'agentKindRegistry' | 'initiativePresetRegistry' | 'documentRepository' | 'documentUrlResolver' | 'taskRepository' | 'requirementReviewRepository' | 'docInterviewRepository' | 'clarityReviewRepository' | 'brainstormSessionRepository' | 'initiativeRepository' | 'environmentProvisioning' | 'resolveTestSecretRefs' | 'resolveValidationChecks' | 'fragmentResolver' | 'skillResolver' | 'spendService' | 'workspaceSettingsService' | 'resolveBinaryArtifactStore' | 'resolveProviderCapabilities' | 'inlineHarnessRef' | 'resolveWorkspaceModelDefault' | 'assertAgentBackendConfigured'>;
20
+ export type RunContextAdmissionDeps = Pick<ExecutionServiceDependencies, 'workspaceRepository' | 'blockRepository' | 'executionRepository' | 'accountRepository' | 'agentKindRegistry' | 'initiativePresetRegistry' | 'documentRepository' | 'documentUrlResolver' | 'taskRepository' | 'requirementReviewRepository' | 'docInterviewRepository' | 'clarityReviewRepository' | 'brainstormSessionRepository' | 'initiativeRepository' | 'environmentProvisioning' | 'resolveTestSecretRefs' | 'resolveValidationChecks' | 'fragmentResolver' | 'skillResolver' | 'spendService' | 'workspaceSettingsService' | 'resolveBinaryArtifactStore' | 'resolveProviderCapabilities' | 'inlineHarnessRef' | 'resolveWorkspaceModelDefault' | 'assertAgentBackendConfigured' | 'logger'>;
21
21
  export declare function buildRunContextAndAdmission(deps: RunContextAdmissionDeps): {
22
22
  contextBuilder: AgentContextBuilder;
23
23
  admission: RunAdmission;
@@ -1 +1 @@
1
- {"version":3,"file":"run-context-admission.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-context-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AAEzE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,4BAA4B,EAC1B,qBAAqB,GACrB,iBAAiB,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,0BAA0B,GAC1B,oBAAoB,GACpB,qBAAqB,GACrB,gBAAgB,GAChB,6BAA6B,GAC7B,wBAAwB,GACxB,yBAAyB,GACzB,6BAA6B,GAC7B,sBAAsB,GACtB,yBAAyB,GACzB,uBAAuB,GACvB,yBAAyB,GACzB,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,0BAA0B,GAC1B,4BAA4B,GAC5B,6BAA6B,GAC7B,kBAAkB,GAClB,8BAA8B,GAC9B,8BAA8B,CACjC,CAAA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,uBAAuB,GAAG;IAC1E,cAAc,EAAE,mBAAmB,CAAA;IACnC,SAAS,EAAE,YAAY,CAAA;CACxB,CAuCA"}
1
+ {"version":3,"file":"run-context-admission.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-context-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AAEzE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,4BAA4B,EAC1B,qBAAqB,GACrB,iBAAiB,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,0BAA0B,GAC1B,oBAAoB,GACpB,qBAAqB,GACrB,gBAAgB,GAChB,6BAA6B,GAC7B,wBAAwB,GACxB,yBAAyB,GACzB,6BAA6B,GAC7B,sBAAsB,GACtB,yBAAyB,GACzB,uBAAuB,GACvB,yBAAyB,GACzB,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,0BAA0B,GAC1B,4BAA4B,GAC5B,6BAA6B,GAC7B,kBAAkB,GAClB,8BAA8B,GAC9B,8BAA8B,GAC9B,QAAQ,CACX,CAAA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,uBAAuB,GAAG;IAC1E,cAAc,EAAE,mBAAmB,CAAA;IACnC,SAAS,EAAE,YAAY,CAAA;CACxB,CAwCA"}
@@ -31,6 +31,7 @@ export function buildRunContextAndAdmission(deps) {
31
31
  resolveValidationChecks: deps.resolveValidationChecks,
32
32
  fragmentResolver: deps.fragmentResolver,
33
33
  skillResolver: deps.skillResolver,
34
+ logger: deps.logger,
34
35
  });
35
36
  // The run-admission preflights (the shared start/retry/restart `assert*` gate family).
36
37
  // The admission-only seams are forwarded here rather than stored on the engine.
@@ -1 +1 @@
1
- {"version":3,"file":"run-context-admission.js","sourceRoot":"","sources":["../../../src/modules/execution/run-context-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAsChD,MAAM,UAAU,2BAA2B,CAAC,IAA6B;IAIvE,MAAM,cAAc,GAAG,IAAI,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,SAAS,EAAE,IAAI,CAAC,kBAAkB;QAClC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,KAAK,EAAE,IAAI,CAAC,cAAc;QAC1B,kBAAkB,EAAE,IAAI,CAAC,2BAA2B;QACpD,aAAa,EAAE,IAAI,CAAC,sBAAsB;QAC1C,cAAc,EAAE,IAAI,CAAC,uBAAuB;QAC5C,kBAAkB,EAAE,IAAI,CAAC,2BAA2B;QACpD,WAAW,EAAE,IAAI,CAAC,oBAAoB;QACtC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAA;IACF,uFAAuF;IACvF,gFAAgF;IAChF,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC;QACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,cAAc;QACd,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,KAAK,EAAE,IAAI,CAAC,YAAY;QACxB,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;QAC3D,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;QAC7D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;QAC/D,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;KAChE,CAAC,CAAA;IACF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAA;AACtC,CAAC"}
1
+ {"version":3,"file":"run-context-admission.js","sourceRoot":"","sources":["../../../src/modules/execution/run-context-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAuChD,MAAM,UAAU,2BAA2B,CAAC,IAA6B;IAIvE,MAAM,cAAc,GAAG,IAAI,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,SAAS,EAAE,IAAI,CAAC,kBAAkB;QAClC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,KAAK,EAAE,IAAI,CAAC,cAAc;QAC1B,kBAAkB,EAAE,IAAI,CAAC,2BAA2B;QACpD,aAAa,EAAE,IAAI,CAAC,sBAAsB;QAC1C,cAAc,EAAE,IAAI,CAAC,uBAAuB;QAC5C,kBAAkB,EAAE,IAAI,CAAC,2BAA2B;QACpD,WAAW,EAAE,IAAI,CAAC,oBAAoB;QACtC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAA;IACF,uFAAuF;IACvF,gFAAgF;IAChF,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC;QACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,cAAc;QACd,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,KAAK,EAAE,IAAI,CAAC,YAAY;QACxB,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;QAC3D,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;QAC7D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;QAC/D,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;KAChE,CAAC,CAAA;IACF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAA;AACtC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { AgentKindRegistry } from '@cat-factory/agents';
2
+ import type { PipelineStep } from '@cat-factory/contracts';
3
+ import type { AgentKind, Logger, ResolvedSkill, SkillVersionPin } from '@cat-factory/kernel';
4
+ import type { SkillResolver } from './AgentContextBuilder.js';
5
+ export interface ResolveRunSkillsInput {
6
+ workspaceId: string;
7
+ /** The EFFECTIVE dispatched kind (a gate helper dispatches its own kind, not the step's). */
8
+ agentKind: AgentKind;
9
+ /** The step being dispatched; its `skillVersions` pin is written here. */
10
+ step: PipelineStep;
11
+ agentKindRegistry: AgentKindRegistry;
12
+ /** Wired only when the skill library is configured; absent ⇒ no catalog skill can resolve. */
13
+ skillResolver?: SkillResolver;
14
+ logger?: Logger;
15
+ }
16
+ /**
17
+ * Resolve every skill this dispatch applies, in the order they should be applied: the kind's own
18
+ * declarations first (its standing playbooks), then the step's picked skill. Deduplicated by
19
+ * skill id, so a step that picks a skill its kind already declares runs it once.
20
+ *
21
+ * The failure policy differs by SOURCE, deliberately:
22
+ *
23
+ * - **The step's picked skill** is a hard failure when it cannot resolve (no resolver wired) —
24
+ * the whole point of that step is to run that skill, so a silent skip is a wrong run. This is
25
+ * the pre-existing `skill`-kind contract, unchanged.
26
+ * - **A kind's declared CATALOG skill** is a hard failure too unless it declared itself
27
+ * `optional`: a kind that names a skill by id is saying it needs it to do the work. Marking it
28
+ * optional is how a kind says "apply the house playbook if this deployment has one".
29
+ * - **A kind's declared BUNDLED skill** cannot fail: it ships in the deployment's own code.
30
+ *
31
+ * Returns the resolved skills plus the CATALOG version pins (a bundled skill has no pin — its
32
+ * version is the deployment's), which the caller records on the step.
33
+ */
34
+ export declare function resolveRunSkills(input: ResolveRunSkillsInput): Promise<{
35
+ skills: ResolvedSkill[];
36
+ versions: SkillVersionPin[];
37
+ }>;
38
+ //# sourceMappingURL=run-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-skills.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAY7D,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,6FAA6F;IAC7F,SAAS,EAAE,SAAS,CAAA;IACpB,0EAA0E;IAC1E,IAAI,EAAE,YAAY,CAAA;IAClB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,8FAA8F;IAC9F,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAgDnE"}
@@ -0,0 +1,92 @@
1
+ import { bundledSkillToResolved, SKILL_AGENT_KIND } from '@cat-factory/agents';
2
+ import { ValidationError, noopLogger, runBestEffort } from '@cat-factory/kernel';
3
+ /**
4
+ * Resolve every skill this dispatch applies, in the order they should be applied: the kind's own
5
+ * declarations first (its standing playbooks), then the step's picked skill. Deduplicated by
6
+ * skill id, so a step that picks a skill its kind already declares runs it once.
7
+ *
8
+ * The failure policy differs by SOURCE, deliberately:
9
+ *
10
+ * - **The step's picked skill** is a hard failure when it cannot resolve (no resolver wired) —
11
+ * the whole point of that step is to run that skill, so a silent skip is a wrong run. This is
12
+ * the pre-existing `skill`-kind contract, unchanged.
13
+ * - **A kind's declared CATALOG skill** is a hard failure too unless it declared itself
14
+ * `optional`: a kind that names a skill by id is saying it needs it to do the work. Marking it
15
+ * optional is how a kind says "apply the house playbook if this deployment has one".
16
+ * - **A kind's declared BUNDLED skill** cannot fail: it ships in the deployment's own code.
17
+ *
18
+ * Returns the resolved skills plus the CATALOG version pins (a bundled skill has no pin — its
19
+ * version is the deployment's), which the caller records on the step.
20
+ */
21
+ export async function resolveRunSkills(input) {
22
+ const declared = input.agentKindRegistry.skillsFor(input.agentKind);
23
+ const pickedSkillId = input.agentKind === SKILL_AGENT_KIND ? input.step.stepOptions?.skillId?.trim() : undefined;
24
+ if (!declared.bundled.length && !declared.catalog.length && !pickedSkillId) {
25
+ // Clear on this path too, not just the one below: a step re-dispatched after its pick was
26
+ // removed (or its kind's declaration dropped) lands HERE, and leaving the prior round's pin
27
+ // in place would report "this run executed that version" of a skill it never touched.
28
+ input.step.skillVersions = undefined;
29
+ return { skills: [], versions: [] };
30
+ }
31
+ // A registered id with no registration is a deployment typo. It is reported at BOOT
32
+ // (`validateRegistrations`), so by the time a run reaches here the loud channel has already
33
+ // fired — dropping it with a warning is right, because failing the run cannot fix the typo.
34
+ for (const id of declared.unknown) {
35
+ input.logger?.warn('agent kind declares an unregistered skill id; skipping it', {
36
+ agentKind: input.agentKind,
37
+ skillId: id,
38
+ });
39
+ }
40
+ const skills = declared.bundled.map(bundledSkillToResolved);
41
+ const versions = [];
42
+ const seen = new Set(skills.map((s) => s.skillId));
43
+ for (const ref of declared.catalog) {
44
+ if (seen.has(ref.skillId))
45
+ continue;
46
+ const resolved = await resolveCatalogSkill(input, ref.skillId, ref.optional);
47
+ if (!resolved)
48
+ continue;
49
+ seen.add(resolved.skill.skillId);
50
+ skills.push(resolved.skill);
51
+ versions.push(resolved.version);
52
+ }
53
+ if (pickedSkillId && !seen.has(pickedSkillId)) {
54
+ const resolved = await resolveCatalogSkill(input, pickedSkillId, false);
55
+ if (resolved) {
56
+ skills.push(resolved.skill);
57
+ versions.push(resolved.version);
58
+ }
59
+ }
60
+ // Assigned unconditionally (cleared when nothing pinned) rather than only on success: a step
61
+ // re-dispatched after its skill was removed upstream would otherwise keep reporting the prior
62
+ // round's pin, which reads as "this run executed that version" when it did not.
63
+ input.step.skillVersions = versions.length ? versions : undefined;
64
+ return { skills, versions };
65
+ }
66
+ /**
67
+ * Resolve ONE account-catalog skill. An unwired resolver, or a resolver that throws (an unknown /
68
+ * tombstoned skill id), fails the dispatch unless the reference declared itself optional — in
69
+ * which case the skill is skipped with a logged reason, never in silence. A resource-fetch
70
+ * failure inside the resolver already degrades to a body-less reference and never throws, so a
71
+ * transient GitHub blip cannot reach this branch.
72
+ */
73
+ async function resolveCatalogSkill(input, skillId, optional) {
74
+ if (!input.skillResolver) {
75
+ if (!optional) {
76
+ throw new ValidationError(`This pipeline step runs the skill '${skillId}', but the skill library is not configured for this deployment.`);
77
+ }
78
+ input.logger?.info('optional skill skipped: the skill library is not configured', { skillId });
79
+ return null;
80
+ }
81
+ const resolver = input.skillResolver;
82
+ if (optional) {
83
+ const resolved = await runBestEffort(input.logger ?? noopLogger, 'resolve optional agent-kind skill', async () => {
84
+ const { skill, version } = await resolver.resolveForRun(input.workspaceId, skillId);
85
+ return { skill: { ...skill, origin: 'catalog' }, version };
86
+ }, { skillId });
87
+ return resolved ?? null;
88
+ }
89
+ const { skill, version } = await resolver.resolveForRun(input.workspaceId, skillId);
90
+ return { skill: { ...skill, origin: 'catalog' }, version };
91
+ }
92
+ //# sourceMappingURL=run-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-skills.js","sourceRoot":"","sources":["../../../src/modules/execution/run-skills.ts"],"names":[],"mappings":"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"}
@@ -71,8 +71,12 @@ export interface RecordLlmCallInput {
71
71
  messageCount: number;
72
72
  toolCount: number;
73
73
  requestMaxTokens: number | null;
74
+ /** FRESH (uncached) input tokens — exclusive of both cache classes below. */
74
75
  promptTokens: number;
75
- cachedPromptTokens: number;
76
+ /** Input tokens served from the provider's prefix cache. */
77
+ cacheReadTokens: number;
78
+ /** Input tokens written into the provider's cache. */
79
+ cacheWriteTokens: number;
76
80
  completionTokens: number;
77
81
  totalTokens: number;
78
82
  finishReason: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"LlmObservabilityService.d.ts","sourceRoot":"","sources":["../../../src/modules/observability/LlmObservabilityService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LlmObservabilityService.d.ts","sourceRoot":"","sources":["../../../src/modules/observability/LlmObservabilityService.ts"],"names":[],"mappings":"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"}
@@ -125,6 +125,8 @@ export class LlmObservabilityService {
125
125
  startedAt: Math.max(0, endedAt - input.upstreamMs),
126
126
  endedAt,
127
127
  promptTokens: input.promptTokens,
128
+ cacheReadTokens: input.cacheReadTokens,
129
+ cacheWriteTokens: input.cacheWriteTokens,
128
130
  completionTokens: input.completionTokens,
129
131
  totalTokens: input.totalTokens,
130
132
  finishReason: input.finishReason,
@@ -212,9 +214,10 @@ export function makeHarnessCallRecorder(service) {
212
214
  toolCount: 0,
213
215
  requestMaxTokens: null,
214
216
  promptTokens: call.inputTokens,
215
- cachedPromptTokens: call.cachedInputTokens,
217
+ cacheReadTokens: call.cacheReadTokens,
218
+ cacheWriteTokens: call.cacheWriteTokens,
216
219
  completionTokens: call.outputTokens,
217
- totalTokens: call.inputTokens + call.outputTokens,
220
+ totalTokens: call.inputTokens + call.cacheReadTokens + call.cacheWriteTokens + call.outputTokens,
218
221
  finishReason: call.finishReason,
219
222
  totalMs: 0,
220
223
  upstreamMs: 0,