@cat-factory/orchestration 0.149.2 → 0.150.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 (52) hide show
  1. package/dist/container/dependencies.d.ts +8 -1
  2. package/dist/container/dependencies.d.ts.map +1 -1
  3. package/dist/container/platform-modules.d.ts.map +1 -1
  4. package/dist/container/platform-modules.js +13 -0
  5. package/dist/container/platform-modules.js.map +1 -1
  6. package/dist/container.d.ts +3 -0
  7. package/dist/container.d.ts.map +1 -1
  8. package/dist/container.js +1 -0
  9. package/dist/container.js.map +1 -1
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/modules/execution/AgentContextBuilder.d.ts +1 -0
  15. package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
  16. package/dist/modules/execution/AgentContextBuilder.js +9 -1
  17. package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
  18. package/dist/modules/execution/ExecutionService.d.ts +8 -6
  19. package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
  20. package/dist/modules/execution/ExecutionService.js +14 -6
  21. package/dist/modules/execution/ExecutionService.js.map +1 -1
  22. package/dist/modules/execution/GateHelperDispatcher.d.ts.map +1 -1
  23. package/dist/modules/execution/GateHelperDispatcher.js +2 -2
  24. package/dist/modules/execution/GateHelperDispatcher.js.map +1 -1
  25. package/dist/modules/execution/HumanTestController.d.ts.map +1 -1
  26. package/dist/modules/execution/HumanTestController.js +2 -2
  27. package/dist/modules/execution/HumanTestController.js.map +1 -1
  28. package/dist/modules/execution/RalphController.d.ts.map +1 -1
  29. package/dist/modules/execution/RalphController.js +2 -2
  30. package/dist/modules/execution/RalphController.js.map +1 -1
  31. package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
  32. package/dist/modules/execution/RunDispatcher.js +16 -3
  33. package/dist/modules/execution/RunDispatcher.js.map +1 -1
  34. package/dist/modules/execution/TesterController.d.ts.map +1 -1
  35. package/dist/modules/execution/TesterController.js +3 -4
  36. package/dist/modules/execution/TesterController.js.map +1 -1
  37. package/dist/modules/execution/VisualConfirmationController.d.ts.map +1 -1
  38. package/dist/modules/execution/VisualConfirmationController.js +2 -2
  39. package/dist/modules/execution/VisualConfirmationController.js.map +1 -1
  40. package/dist/modules/execution/step-fold.logic.d.ts +13 -1
  41. package/dist/modules/execution/step-fold.logic.d.ts.map +1 -1
  42. package/dist/modules/execution/step-fold.logic.js +23 -2
  43. package/dist/modules/execution/step-fold.logic.js.map +1 -1
  44. package/dist/modules/reports/ReportsService.d.ts +29 -0
  45. package/dist/modules/reports/ReportsService.d.ts.map +1 -0
  46. package/dist/modules/reports/ReportsService.js +64 -0
  47. package/dist/modules/reports/ReportsService.js.map +1 -0
  48. package/dist/modules/reports/reports.logic.d.ts +36 -0
  49. package/dist/modules/reports/reports.logic.d.ts.map +1 -0
  50. package/dist/modules/reports/reports.logic.js +104 -0
  51. package/dist/modules/reports/reports.logic.js.map +1 -0
  52. package/package.json +11 -11
@@ -0,0 +1,64 @@
1
+ import { REPORT_WINDOWS, alignWindowStart, buildSpendTrend, foldTotals, toActivityRow, toSpendRow, } from './reports.logic.js';
2
+ /**
3
+ * Cross-cutting usage analytics: composes the rollups behind {@link ReportsRepository}
4
+ * into the Reports view — spend sliced by model and agent kind, spend and run activity
5
+ * sliced by workspace / service / task type, and a spend trend, over a time window.
6
+ *
7
+ * The dual of {@link PlatformObservabilityService}: that answers "is the deployment
8
+ * healthy", this answers "where are the money and the work going". Every breakdown is one
9
+ * SQL GROUP BY, and they are independent aggregates run in parallel — NOT an N+1. The
10
+ * reshaping (totals fold, trend zero-fill) is the pure logic in `reports.logic.ts`.
11
+ */
12
+ export class ReportsService {
13
+ deps;
14
+ constructor(deps) {
15
+ this.deps = deps;
16
+ }
17
+ async summarize(accountId, window, workspaceId) {
18
+ const { windowMs, bucketMs } = REPORT_WINDOWS[window];
19
+ const until = this.deps.clock.now();
20
+ // Snapped to a bucket edge so the trend's leading column is a COMPLETE bucket; every
21
+ // breakdown and the totals aggregate over the same snapped window, so the tiles and the
22
+ // chart can never describe different spans. See `alignWindowStart`.
23
+ const since = alignWindowStart(until, windowMs, bucketMs);
24
+ const scope = { accountId, workspaceId: workspaceId ?? null };
25
+ const range = { since, until };
26
+ const repo = this.deps.reportsRepository;
27
+ const [byModel, byAgentKind, spendByWorkspace, spendByService, spendByTaskType, activityByWorkspace, activityByService, activityByTaskType, trend,] = await Promise.all([
28
+ repo.spendByDimension(scope, 'model', range),
29
+ repo.spendByDimension(scope, 'agentKind', range),
30
+ repo.spendByDimension(scope, 'workspace', range),
31
+ repo.spendByDimension(scope, 'service', range),
32
+ repo.spendByDimension(scope, 'taskType', range),
33
+ repo.activityByDimension(scope, 'workspace', range),
34
+ repo.activityByDimension(scope, 'service', range),
35
+ repo.activityByDimension(scope, 'taskType', range),
36
+ repo.spendTrend(scope, range, bucketMs),
37
+ ]);
38
+ const spendByModel = byModel.map(toSpendRow);
39
+ return {
40
+ window,
41
+ generatedAt: until,
42
+ since,
43
+ workspaceId: workspaceId ?? null,
44
+ currency: this.deps.currency,
45
+ // Every spend breakdown partitions the same ledger rows, so the totals fold from
46
+ // whichever one is at hand rather than costing a sixth query.
47
+ totals: foldTotals(spendByModel),
48
+ spend: {
49
+ byModel: spendByModel,
50
+ byAgentKind: byAgentKind.map(toSpendRow),
51
+ byWorkspace: spendByWorkspace.map(toSpendRow),
52
+ byService: spendByService.map(toSpendRow),
53
+ byTaskType: spendByTaskType.map(toSpendRow),
54
+ },
55
+ activity: {
56
+ byWorkspace: activityByWorkspace.map(toActivityRow),
57
+ byService: activityByService.map(toActivityRow),
58
+ byTaskType: activityByTaskType.map(toActivityRow),
59
+ },
60
+ trend: { bucketMs, points: buildSpendTrend(trend, since, until, bucketMs) },
61
+ };
62
+ }
63
+ }
64
+ //# sourceMappingURL=ReportsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportsService.js","sourceRoot":"","sources":["../../../src/modules/reports/ReportsService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { ReportActivityRow, ReportSpendRow, ReportTotals, ReportTrendPoint, ReportWindow } from '@cat-factory/contracts';
2
+ import type { ReportActivityGroup, ReportSpendGroup, ReportSpendTrendBucket } from '@cat-factory/kernel';
3
+ /**
4
+ * The window's start, snapped DOWN to a bucket edge.
5
+ *
6
+ * `until - windowMs` lands wherever the request happened to arrive, which leaves the trend's
7
+ * first bucket holding a fraction of a bucket's data while rendering at the same width as
8
+ * its complete neighbours — a reader has no way to tell the short leading column from a
9
+ * genuinely quiet period, which is the one thing a trend must not get wrong. Snapping down
10
+ * makes every bucket complete except the trailing in-progress one, whose partialness is
11
+ * inherent and understood. The cost is that a window covers UP TO one bucket more than its
12
+ * nominal length; the projection reports the real `since` so the view says what it charted.
13
+ */
14
+ export declare function alignWindowStart(until: number, windowMs: number, bucketMs: number): number;
15
+ /** Per-window sizing: how far back to aggregate and how wide each trend bucket is. */
16
+ export declare const REPORT_WINDOWS: Record<ReportWindow, {
17
+ windowMs: number;
18
+ bucketMs: number;
19
+ }>;
20
+ /** Widen a port spend group into its wire row (the shapes match; this pins the boundary). */
21
+ export declare function toSpendRow(group: ReportSpendGroup): ReportSpendRow;
22
+ /** Widen a port activity group into its wire row. */
23
+ export declare function toActivityRow(group: ReportActivityGroup): ReportActivityRow;
24
+ /**
25
+ * Window-wide totals, summed from ONE breakdown. Every spend breakdown partitions the
26
+ * same ledger rows, so any of them totals identically — folding the model breakdown in JS
27
+ * costs nothing and avoids a sixth aggregate query purely to restate it.
28
+ */
29
+ export declare function foldTotals(rows: ReportSpendRow[]): ReportTotals;
30
+ /**
31
+ * Fold the sparse trend buckets into a contiguous, zero-filled, oldest-first series
32
+ * spanning `[since, until]` at `bucketMs` resolution — so a quiet period reads as a flat
33
+ * run of zeros rather than a collapsed gap that implies continuous spend.
34
+ */
35
+ export declare function buildSpendTrend(buckets: ReportSpendTrendBucket[], since: number, until: number, bucketMs: number): ReportTrendPoint[];
36
+ //# sourceMappingURL=reports.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/reports/reports.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,qBAAqB,CAAA;AAM5B;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED,sFAAsF;AACtF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKvF,CAAA;AAED,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,cAAc,CAUlE;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,iBAAiB,CAW3E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,YAAY,CAgB/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,EAAE,EACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,gBAAgB,EAAE,CAyBpB"}
@@ -0,0 +1,104 @@
1
+ // Pure reshaping behind the reports read: the port returns raw grouped rows; these
2
+ // functions fold them into the wire projection. Kept pure (no clock, no I/O) so they're
3
+ // unit-tested directly, mirroring `platform-observability.logic.ts`.
4
+ /**
5
+ * The window's start, snapped DOWN to a bucket edge.
6
+ *
7
+ * `until - windowMs` lands wherever the request happened to arrive, which leaves the trend's
8
+ * first bucket holding a fraction of a bucket's data while rendering at the same width as
9
+ * its complete neighbours — a reader has no way to tell the short leading column from a
10
+ * genuinely quiet period, which is the one thing a trend must not get wrong. Snapping down
11
+ * makes every bucket complete except the trailing in-progress one, whose partialness is
12
+ * inherent and understood. The cost is that a window covers UP TO one bucket more than its
13
+ * nominal length; the projection reports the real `since` so the view says what it charted.
14
+ */
15
+ export function alignWindowStart(until, windowMs, bucketMs) {
16
+ return Math.floor((until - windowMs) / bucketMs) * bucketMs;
17
+ }
18
+ /** Per-window sizing: how far back to aggregate and how wide each trend bucket is. */
19
+ export const REPORT_WINDOWS = {
20
+ '24h': { windowMs: 24 * 60 * 60_000, bucketMs: 60 * 60_000 }, // 24 × 1h buckets
21
+ '7d': { windowMs: 7 * 24 * 60 * 60_000, bucketMs: 6 * 60 * 60_000 }, // 28 × 6h buckets
22
+ '30d': { windowMs: 30 * 24 * 60 * 60_000, bucketMs: 24 * 60 * 60_000 }, // 30 × 1d buckets
23
+ '90d': { windowMs: 90 * 24 * 60 * 60_000, bucketMs: 3 * 24 * 60 * 60_000 }, // 30 × 3d buckets
24
+ };
25
+ /** Widen a port spend group into its wire row (the shapes match; this pins the boundary). */
26
+ export function toSpendRow(group) {
27
+ return {
28
+ key: group.key,
29
+ label: group.label,
30
+ inputTokens: group.inputTokens,
31
+ outputTokens: group.outputTokens,
32
+ calls: group.calls,
33
+ meteredCost: group.meteredCost,
34
+ subscriptionCost: group.subscriptionCost,
35
+ };
36
+ }
37
+ /** Widen a port activity group into its wire row. */
38
+ export function toActivityRow(group) {
39
+ return {
40
+ key: group.key,
41
+ label: group.label,
42
+ runs: group.runs,
43
+ done: group.done,
44
+ failed: group.failed,
45
+ running: group.running,
46
+ other: group.other,
47
+ avgDurationMs: group.avgDurationMs,
48
+ };
49
+ }
50
+ /**
51
+ * Window-wide totals, summed from ONE breakdown. Every spend breakdown partitions the
52
+ * same ledger rows, so any of them totals identically — folding the model breakdown in JS
53
+ * costs nothing and avoids a sixth aggregate query purely to restate it.
54
+ */
55
+ export function foldTotals(rows) {
56
+ const totals = {
57
+ inputTokens: 0,
58
+ outputTokens: 0,
59
+ calls: 0,
60
+ meteredCost: 0,
61
+ subscriptionCost: 0,
62
+ };
63
+ for (const row of rows) {
64
+ totals.inputTokens += row.inputTokens;
65
+ totals.outputTokens += row.outputTokens;
66
+ totals.calls += row.calls;
67
+ totals.meteredCost += row.meteredCost;
68
+ totals.subscriptionCost += row.subscriptionCost;
69
+ }
70
+ return totals;
71
+ }
72
+ /**
73
+ * Fold the sparse trend buckets into a contiguous, zero-filled, oldest-first series
74
+ * spanning `[since, until]` at `bucketMs` resolution — so a quiet period reads as a flat
75
+ * run of zeros rather than a collapsed gap that implies continuous spend.
76
+ */
77
+ export function buildSpendTrend(buckets, since, until, bucketMs) {
78
+ const byStart = new Map();
79
+ const empty = (start) => ({
80
+ start,
81
+ meteredCost: 0,
82
+ subscriptionCost: 0,
83
+ calls: 0,
84
+ inputTokens: 0,
85
+ outputTokens: 0,
86
+ });
87
+ const first = Math.floor(since / bucketMs) * bucketMs;
88
+ const last = Math.floor(until / bucketMs) * bucketMs;
89
+ for (let start = first; start <= last; start += bucketMs)
90
+ byStart.set(start, empty(start));
91
+ for (const bucket of buckets) {
92
+ // A bucket outside the zero-filled span (a clock skew, or a row stamped in the
93
+ // future) still belongs in the series — add it rather than silently discarding spend.
94
+ const point = byStart.get(bucket.bucketStart) ?? empty(bucket.bucketStart);
95
+ point.meteredCost += bucket.meteredCost;
96
+ point.subscriptionCost += bucket.subscriptionCost;
97
+ point.calls += bucket.calls;
98
+ point.inputTokens += bucket.inputTokens;
99
+ point.outputTokens += bucket.outputTokens;
100
+ byStart.set(bucket.bucketStart, point);
101
+ }
102
+ return [...byStart.values()].sort((a, b) => a.start - b.start);
103
+ }
104
+ //# sourceMappingURL=reports.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.logic.js","sourceRoot":"","sources":["../../../src/modules/reports/reports.logic.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/orchestration",
3
- "version": "0.149.2",
3
+ "version": "0.150.1",
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.37",
28
- "@cat-factory/agents": "0.74.0",
29
- "@cat-factory/caching": "0.10.53",
30
- "@cat-factory/contracts": "0.175.0",
31
- "@cat-factory/integrations": "0.103.0",
32
- "@cat-factory/kernel": "0.168.0",
33
- "@cat-factory/prompt-fragments": "0.14.23",
34
- "@cat-factory/sandbox": "0.9.159",
35
- "@cat-factory/spend": "0.12.97",
36
- "@cat-factory/workspaces": "0.18.13"
28
+ "@cat-factory/agents": "0.75.0",
29
+ "@cat-factory/caching": "0.10.55",
30
+ "@cat-factory/contracts": "0.177.0",
31
+ "@cat-factory/integrations": "0.103.2",
32
+ "@cat-factory/kernel": "0.170.0",
33
+ "@cat-factory/prompt-fragments": "0.15.0",
34
+ "@cat-factory/sandbox": "0.9.161",
35
+ "@cat-factory/spend": "0.12.99",
36
+ "@cat-factory/workspaces": "0.18.15"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "7.0.2",
40
40
  "vitest": "^4.1.10",
41
- "@cat-factory/sandbox-fixtures": "0.7.206"
41
+ "@cat-factory/sandbox-fixtures": "0.7.208"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsc -b tsconfig.build.json",