@cat-factory/orchestration 0.243.0 → 0.244.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.
@@ -1,5 +1,5 @@
1
1
  import type { AgentContextSnapshotRepository, AgentSearchQueryRepository, AgentToolCall, AgentToolCallRepository, AgentSearchQuery, Clock, ExecutionInstance, ExecutionRepository, ExecutionStatus, LlmCallMetricRepository, LlmCallOutcomeFilter, LlmRollupCell, ProvisioningLogRecord, ProvisioningLogRepository } from '@cat-factory/kernel';
2
- import type { DebugAgentContextDetail, DebugAgentContextEntry, DebugLlmCall, DebugRunOverview, DebugRunSummary, ToolCallOrder } from '@cat-factory/contracts';
2
+ import type { DebugAgentContextDetail, DebugAgentContextEntry, DebugLlmCall, DebugLlmExport, DebugRunOverview, DebugRunSummary, ToolCallOrder } from '@cat-factory/contracts';
3
3
  /** A decoded keyset position: a row's chronological sort key plus its id (the tiebreaker). */
4
4
  export interface DebugCursor {
5
5
  createdAt: number;
@@ -95,6 +95,29 @@ export declare class RunDebugService {
95
95
  /** Narrow to calls whose bodies contain this literal substring (matched in SQL). */
96
96
  contains?: string;
97
97
  }): Promise<DebugPage<DebugLlmCall>>;
98
+ /**
99
+ * The run's model activity as one self-describing bundle: the rollups, plus a bounded window
100
+ * of the calls behind them.
101
+ *
102
+ * The rollup half is the SAME fold {@link RunDebugService.overview} publishes, over the same
103
+ * priced cells, so the two documents cannot report different money for one run. The call half
104
+ * is `listLlmCalls` with its cursor dropped: a bundle answers a question about one end of the
105
+ * run rather than being a page of a walk, and the walk already exists for the caller that
106
+ * wants the whole sequence.
107
+ *
108
+ * Which end is the caller's to pick, and the bundle says which was kept, because the two are
109
+ * opposite readings of a long run: `oldest` shows how it went wrong, `newest` shows what it
110
+ * was doing when it died.
111
+ *
112
+ * It also states whether the sink exists at all, because both halves degrade to the same
113
+ * empty document when it does not, and this is the one bundle whose intended reader draws a
114
+ * conclusion from what it does not contain.
115
+ */
116
+ llmExport(workspaceId: string, runId: string, opts: {
117
+ limit: number;
118
+ order: 'oldest' | 'newest';
119
+ bodyChars: number;
120
+ }): Promise<DebugLlmExport>;
98
121
  /** One recorded call with its bodies windowed, or null when the workspace has no such call. */
99
122
  getLlmCall(workspaceId: string, callId: string, opts?: {
100
123
  bodyChars?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"RunDebugService.d.ts","sourceRoot":"","sources":["../../../src/modules/debug/RunDebugService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RunDebugService.d.ts","sourceRoot":"","sources":["../../../src/modules/debug/RunDebugService.ts"],"names":[],"mappings":"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"}
@@ -156,6 +156,54 @@ export class RunDebugService {
156
156
  });
157
157
  return paginate(rows, opts.limit, (call) => ({ createdAt: call.createdAt, id: call.id }), (call) => toDebugLlmCall(call));
158
158
  }
159
+ /**
160
+ * The run's model activity as one self-describing bundle: the rollups, plus a bounded window
161
+ * of the calls behind them.
162
+ *
163
+ * The rollup half is the SAME fold {@link RunDebugService.overview} publishes, over the same
164
+ * priced cells, so the two documents cannot report different money for one run. The call half
165
+ * is `listLlmCalls` with its cursor dropped: a bundle answers a question about one end of the
166
+ * run rather than being a page of a walk, and the walk already exists for the caller that
167
+ * wants the whole sequence.
168
+ *
169
+ * Which end is the caller's to pick, and the bundle says which was kept, because the two are
170
+ * opposite readings of a long run: `oldest` shows how it went wrong, `newest` shows what it
171
+ * was doing when it died.
172
+ *
173
+ * It also states whether the sink exists at all, because both halves degrade to the same
174
+ * empty document when it does not, and this is the one bundle whose intended reader draws a
175
+ * conclusion from what it does not contain.
176
+ */
177
+ async llmExport(workspaceId, runId, opts) {
178
+ const [summaries, page] = await Promise.all([
179
+ this.deps.priceRollup?.(workspaceId, runId) ?? this.unpricedRollup(workspaceId, runId),
180
+ this.listLlmCalls(workspaceId, runId, {
181
+ limit: opts.limit,
182
+ order: opts.order,
183
+ bodyChars: opts.bodyChars,
184
+ }),
185
+ ]);
186
+ const { totals, byAgentKind, byPhase } = foldLlmRollup(summaries);
187
+ return {
188
+ kind: 'cat-factory.run-llm-export',
189
+ version: 1,
190
+ runId,
191
+ generatedAt: this.deps.clock.now(),
192
+ // The SAME expression `overview` publishes as `sinks.llmCalls.available`, and stated for
193
+ // the sharper version of the same reason: with no sink wired, every rollup below folds
194
+ // an empty cell list and every call row is absent, which is a bundle indistinguishable
195
+ // from a run that made no model calls. The reader here is a model asked why the run went
196
+ // wrong, so an unstated absence reads as a finding.
197
+ available: !!this.deps.llmCallMetricRepository,
198
+ llm: { totals, byAgentKind, byPhase, costCurrency: this.deps.costCurrency ?? null },
199
+ order: opts.order,
200
+ // The page's own peek, not `totals.calls > limit`: the rollup counts every recorded call
201
+ // in the run, while this list is what the page actually holds, and only the page can say
202
+ // whether a row was left behind. They agree wherever both are complete.
203
+ truncated: page.nextCursor !== null,
204
+ calls: page.items,
205
+ };
206
+ }
159
207
  /** One recorded call with its bodies windowed, or null when the workspace has no such call. */
160
208
  async getLlmCall(workspaceId, callId, opts = {}) {
161
209
  const repo = this.deps.llmCallMetricRepository;
@@ -1 +1 @@
1
- {"version":3,"file":"RunDebugService.js","sourceRoot":"","sources":["../../../src/modules/debug/RunDebugService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RunDebugService.js","sourceRoot":"","sources":["../../../src/modules/debug/RunDebugService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,28 @@
1
- import type { ReportWindow, ReportsView } from '@cat-factory/contracts';
1
+ import type { ReportSpendDimension, ReportSpendRow, ReportSpendSource, ReportTotals, ReportWindow, ReportsView } from '@cat-factory/contracts';
2
2
  import type { Clock, ReportsRepository, SpendRollupRepository } from '@cat-factory/kernel';
3
+ /**
4
+ * One dimension's spend over a window, with the window's own facts beside it: which store
5
+ * answered, how far its sweep has covered, and the span the numbers cover.
6
+ *
7
+ * Deliberately NOT the wire shape of any surface that serves it. The public API projects this
8
+ * into its own frozen resource, exactly as it does for the usage breakdown, so an internal
9
+ * analytics shape stays free to change.
10
+ */
11
+ export interface ReportsBreakdown {
12
+ dimension: ReportSpendDimension;
13
+ window: ReportWindow;
14
+ generatedAt: number;
15
+ since: number;
16
+ currency: string;
17
+ source: ReportSpendSource;
18
+ rolledUpThrough: number | null;
19
+ /** Over the window's WHOLE population, never only the rows returned beside it. */
20
+ totals: ReportTotals;
21
+ /** The heaviest slices by metered cost, capped by the caller's `limit` when it named one. */
22
+ rows: ReportSpendRow[];
23
+ /** True when the window held more slices than `limit`, so `rows` is a prefix of them. */
24
+ truncated: boolean;
25
+ }
3
26
  export interface ReportsServiceDependencies {
4
27
  reportsRepository: ReportsRepository;
5
28
  /**
@@ -43,6 +66,23 @@ export declare class ReportsService {
43
66
  private readonly deps;
44
67
  constructor(deps: ReportsServiceDependencies);
45
68
  summarize(accountId: string, window: ReportWindow, workspaceId?: string | null): Promise<ReportsView>;
69
+ /**
70
+ * ONE spend dimension over the same window routing {@link ReportsService.summarize} uses:
71
+ * what the public `GET /api/v1/usage/spend` serves, and what a caller asking a single
72
+ * question (what did this repository cost, what did that ticket cost) actually needs.
73
+ *
74
+ * A separate method rather than a `dimension` option on `summarize`, because the two differ
75
+ * in what they COST: the panel renders every slice together and pays for eleven aggregates,
76
+ * where this is one `GROUP BY` and returning the other ten would be work nobody asked for.
77
+ * Everything else about it is deliberately the same read, so a number here and the same
78
+ * number in the panel come from one code path.
79
+ *
80
+ * `limit` bounds what is RETURNED, not what is aggregated: `totals` folds the window's whole
81
+ * population either way, so a capped breakdown still reports what was spent and only loses
82
+ * the identity of the tail. That is why the cap is applied here rather than pushed into the
83
+ * `GROUP BY` as a SQL `LIMIT`, which would take the totals down with it.
84
+ */
85
+ breakdown(accountId: string, dimension: ReportSpendDimension, window: ReportWindow, workspaceId?: string | null, limit?: number): Promise<ReportsBreakdown>;
46
86
  /**
47
87
  * Bind the window's spend reads to the store that serves them, and report which one that
48
88
  * turned out to be. The window PREFERS the rollup on the long windows; an unwired rollup
@@ -1 +1 @@
1
- {"version":3,"file":"ReportsService.d.ts","sourceRoot":"","sources":["../../../src/modules/reports/ReportsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,YAAY,EACZ,WAAW,EACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,KAAK,EAKL,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAsB5B,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,0BAA0B,EAAI;IAE3D,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,CAAC,CAsEtB;IAED;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CA6BpB"}
1
+ {"version":3,"file":"ReportsService.d.ts","sourceRoot":"","sources":["../../../src/modules/reports/ReportsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,KAAK,EAKL,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAsB5B;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,oBAAoB,CAAA;IAC/B,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,iBAAiB,CAAA;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kFAAkF;IAClF,MAAM,EAAE,YAAY,CAAA;IACpB,6FAA6F;IAC7F,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,yFAAyF;IACzF,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,0BAA0B,EAAI;IAE3D,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,CAAC,CAsEtB;IAED;;;;;;;;;;;;;;;OAeG;IACG,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,YAAY,EACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CA+B3B;IAED;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CA6BpB"}
@@ -81,6 +81,54 @@ export class ReportsService {
81
81
  trend: { bucketMs, points: buildSpendTrend(trend, since, until, bucketMs) },
82
82
  };
83
83
  }
84
+ /**
85
+ * ONE spend dimension over the same window routing {@link ReportsService.summarize} uses:
86
+ * what the public `GET /api/v1/usage/spend` serves, and what a caller asking a single
87
+ * question (what did this repository cost, what did that ticket cost) actually needs.
88
+ *
89
+ * A separate method rather than a `dimension` option on `summarize`, because the two differ
90
+ * in what they COST: the panel renders every slice together and pays for eleven aggregates,
91
+ * where this is one `GROUP BY` and returning the other ten would be work nobody asked for.
92
+ * Everything else about it is deliberately the same read, so a number here and the same
93
+ * number in the panel come from one code path.
94
+ *
95
+ * `limit` bounds what is RETURNED, not what is aggregated: `totals` folds the window's whole
96
+ * population either way, so a capped breakdown still reports what was spent and only loses
97
+ * the identity of the tail. That is why the cap is applied here rather than pushed into the
98
+ * `GROUP BY` as a SQL `LIMIT`, which would take the totals down with it.
99
+ */
100
+ async breakdown(accountId, dimension, window, workspaceId, limit) {
101
+ const { windowMs, bucketMs, source: preferred } = REPORT_WINDOWS[window];
102
+ const until = this.deps.clock.now();
103
+ // The same snapped start the panel aggregates over, so a slice read here and the same
104
+ // slice read there cover the identical span rather than differing by a partial bucket.
105
+ const since = alignWindowStart(until, windowMs, bucketMs);
106
+ const { source, spend } = this.spendSource(preferred);
107
+ const [groups, rolledUpThrough] = await Promise.all([
108
+ spend.byDimension({ accountId, workspaceId: workspaceId ?? null }, dimension, {
109
+ since,
110
+ until,
111
+ }),
112
+ spend.watermark(),
113
+ ]);
114
+ const rows = groups.map(toSpendRow);
115
+ return {
116
+ dimension,
117
+ window,
118
+ generatedAt: until,
119
+ since,
120
+ currency: this.deps.currency,
121
+ source,
122
+ rolledUpThrough,
123
+ // Folded from ALL the rows rather than queried again: this breakdown partitions the
124
+ // window's whole ledger, so the two cannot disagree by construction. Folded BEFORE the
125
+ // cap for the same reason: a total over the returned prefix would under-report the
126
+ // window while still reading as the window's total.
127
+ totals: foldTotals(rows),
128
+ truncated: limit !== undefined && rows.length > limit,
129
+ rows: limit !== undefined ? rows.slice(0, limit) : rows,
130
+ };
131
+ }
84
132
  /**
85
133
  * Bind the window's spend reads to the store that serves them, and report which one that
86
134
  * turned out to be. The window PREFERS the rollup on the long windows; an unwired rollup
@@ -1 +1 @@
1
- {"version":3,"file":"ReportsService.js","sourceRoot":"","sources":["../../../src/modules/reports/ReportsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReportsService.js","sourceRoot":"","sources":["../../../src/modules/reports/ReportsService.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,aAAa,EACb,UAAU,GACX,MAAM,oBAAoB,CAAA;AA0D3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,cAAc;IACI,IAAI;IAAjC,YAA6B,IAAgC;oBAAhC,IAAI;IAA+B,CAAC;IAEjE,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,MAAoB,EACpB,WAA2B;QAE3B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QACnC,qFAAqF;QACrF,wFAAwF;QACxF,yFAAyF;QACzF,6CAA6C;QAC7C,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACzD,MAAM,KAAK,GAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,CAAA;QAC1E,MAAM,KAAK,GAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAA;QACxC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QACrD,MAAM,CACJ,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,eAAe,EACf,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,EACL,eAAe,EAChB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;YACxC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;YAC5C,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;YAC5C,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;YAC1C,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;YACvC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;YAC3C,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;YACzC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;YACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;YACnD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;YACjD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;YAClD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;YACnC,KAAK,CAAC,SAAS,EAAE;SAClB,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC5C,OAAO;YACL,MAAM;YACN,WAAW,EAAE,KAAK;YAClB,KAAK;YACL,WAAW,EAAE,WAAW,IAAI,IAAI;YAChC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC5B,MAAM;YACN,eAAe;YACf,0EAA0E;YAC1E,8DAA8D;YAC9D,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC;YAChC,KAAK,EAAE;gBACL,OAAO,EAAE,YAAY;gBACrB,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;gBACxC,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC7C,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;gBACzC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnC,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC3C,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;gBACvC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;aAClC;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC;gBACnD,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC/C,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC;aAClD;YACD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE;SAC5E,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,SAA+B,EAC/B,MAAoB,EACpB,WAA2B,EAC3B,KAAc;QAEd,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QACnC,sFAAsF;QACtF,uFAAuF;QACvF,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACzD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QACrD,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClD,KAAK,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE;gBAC5E,KAAK;gBACL,KAAK;aACN,CAAC;YACF,KAAK,CAAC,SAAS,EAAE;SAClB,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACnC,OAAO;YACL,SAAS;YACT,MAAM;YACN,WAAW,EAAE,KAAK;YAClB,KAAK;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC5B,MAAM;YACN,eAAe;YACf,oFAAoF;YACpF,uFAAuF;YACvF,mFAAmF;YACnF,oDAAoD;YACpD,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;YACxB,SAAS,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;YACrD,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;SACxD,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,SAA4B;QAI9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAA;QAC9C,IAAI,SAAS,KAAK,cAAc,IAAI,MAAM,EAAE,CAAC;YAC3C,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,KAAK,EAAE;oBACL,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CACvC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;oBAClD,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;oBAC5E,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE;iBAC/C;aACF,CAAA;QACH,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAA;QACxC,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;gBACxF,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;gBAC1E,oFAAoF;gBACpF,sFAAsF;gBACtF,yCAAyC;gBACzC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;aACvC;SACF,CAAA;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/orchestration",
3
- "version": "0.243.0",
3
+ "version": "0.244.0",
4
4
  "description": "Delivery-workflow engine for the Agent Architecture Board (execution, bootstrap, pipelines, board, boardScan, requirements, and composition root).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,20 +25,20 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "ai": "^7.0.51",
28
- "@cat-factory/agents": "0.119.0",
29
- "@cat-factory/caching": "0.18.16",
30
- "@cat-factory/contracts": "0.276.0",
31
- "@cat-factory/integrations": "0.152.1",
32
- "@cat-factory/kernel": "0.275.0",
33
- "@cat-factory/prompt-fragments": "1.0.25",
34
- "@cat-factory/spend": "0.15.43",
35
- "@cat-factory/sandbox": "0.11.102",
36
- "@cat-factory/workspaces": "0.26.15"
28
+ "@cat-factory/agents": "0.119.2",
29
+ "@cat-factory/caching": "0.18.18",
30
+ "@cat-factory/contracts": "0.278.0",
31
+ "@cat-factory/integrations": "0.152.3",
32
+ "@cat-factory/kernel": "0.275.2",
33
+ "@cat-factory/prompt-fragments": "1.0.27",
34
+ "@cat-factory/sandbox": "0.11.104",
35
+ "@cat-factory/spend": "0.15.45",
36
+ "@cat-factory/workspaces": "0.26.17"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "7.0.2",
40
40
  "vitest": "^4.1.10",
41
- "@cat-factory/sandbox-fixtures": "0.7.311"
41
+ "@cat-factory/sandbox-fixtures": "0.7.313"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsc -b tsconfig.build.json",