@cat-factory/orchestration 0.122.0 → 0.123.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.
package/dist/index.d.ts CHANGED
@@ -36,6 +36,7 @@ export { SearchQueryObservabilityService, type SearchQueryObservabilityServiceDe
36
36
  export { PlatformObservabilityService, type PlatformObservabilityServiceDependencies, } from './modules/observability/PlatformObservabilityService.js';
37
37
  export { PLATFORM_WINDOWS, buildTrend, summarizeOutcomes, } from './modules/observability/platform-observability.logic.js';
38
38
  export { sweepPlatformMetrics, distinctAccountIds, type PlatformMetricsSink, type PlatformMetricsSweepDeps, type PlatformMetricsSweepLogger, } from './modules/observability/platformMetricsSweep.js';
39
+ export { DEFAULT_PLATFORM_ALERT_THRESHOLDS, evaluatePlatformHealth, platformAlertReasons, platformHealthCardContent, type PlatformAlertThresholds, } from './modules/observability/platform-health.logic.js';
39
40
  export { classifyCall, isWarningFinishReason, outputHeadroomRatio, transportOverheadRatio, buildLlmMetricsExport, type LlmCallOutcome, } from './modules/observability/observability.logic.js';
40
41
  export { BootstrapService, type BootstrapServiceDependencies, type BootstrapPollResult, } from './modules/bootstrap/BootstrapService.js';
41
42
  export { EnvConfigRepairService, type EnvConfigRepairServiceDependencies, type EnvConfigRepairPollResult, type StartEnvConfigRepairInput, } from './modules/envConfigRepair/EnvConfigRepairService.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -39,6 +39,7 @@ export { SearchQueryObservabilityService, MAX_SEARCH_QUERY_CHARS, } from './modu
39
39
  export { PlatformObservabilityService, } from './modules/observability/PlatformObservabilityService.js';
40
40
  export { PLATFORM_WINDOWS, buildTrend, summarizeOutcomes, } from './modules/observability/platform-observability.logic.js';
41
41
  export { sweepPlatformMetrics, distinctAccountIds, } from './modules/observability/platformMetricsSweep.js';
42
+ export { DEFAULT_PLATFORM_ALERT_THRESHOLDS, evaluatePlatformHealth, platformAlertReasons, platformHealthCardContent, } from './modules/observability/platform-health.logic.js';
42
43
  export { classifyCall, isWarningFinishReason, outputHeadroomRatio, transportOverheadRatio, buildLlmMetricsExport, } from './modules/observability/observability.logic.js';
43
44
  export { BootstrapService, } from './modules/bootstrap/BootstrapService.js';
44
45
  export { EnvConfigRepairService, } from './modules/envConfigRepair/EnvConfigRepairService.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Clock, IdGenerator, Notification, NotificationChannel, NotificationRepository, RaiseNotificationInput, ResolveNotificationAction } from '@cat-factory/kernel';
1
+ import type { Clock, IdGenerator, Notification, NotificationChannel, NotificationRepository, NotificationType, RaiseNotificationInput, ResolveNotificationAction } from '@cat-factory/kernel';
2
2
  import type { WorkspaceRepository } from '@cat-factory/kernel';
3
3
  export interface NotificationServiceDependencies {
4
4
  notificationRepository: NotificationRepository;
@@ -60,6 +60,22 @@ export declare class NotificationService {
60
60
  resolve(workspaceId: string, id: string, action: ResolveNotificationAction): Promise<Notification>;
61
61
  /** All open notifications for the workspace (for the inbox + snapshot). */
62
62
  listOpen(workspaceId: string): Promise<Notification[]>;
63
+ /**
64
+ * Batched: the open, block-less card of `type` for each of `workspaceIds` that has one. The
65
+ * platform-health sweep uses this ONCE up front to learn which workspaces already hold a card,
66
+ * so it can skip the `clearByType` point-read for the (steady-state common) healthy workspaces
67
+ * with none — avoiding a per-workspace N+1 across the whole deployment every sweep.
68
+ */
69
+ listOpenByType(workspaceIds: string[], type: NotificationType): Promise<Map<string, Notification>>;
70
+ /**
71
+ * Auto-resolve the open, block-less card of `type` for a workspace (dismiss it), if one is
72
+ * open. The self-clearing counterpart to a periodic sweep that raises a block-less card while
73
+ * a condition holds (today `platform_health`): when the condition clears the sweep calls this
74
+ * so the stale alert leaves the inbox instead of lingering (and being escalated red for a
75
+ * problem that has since resolved). Idempotent + best-effort: a no-op when no such card is
76
+ * open. Returns the dismissed card, or null when there was nothing to clear.
77
+ */
78
+ clearByType(workspaceId: string, type: NotificationType): Promise<Notification | null>;
63
79
  /**
64
80
  * Resolve the auto-raised "waiting for a human decision" cards on a block once its run
65
81
  * has advanced past the gate (the human responded, or it auto-passed). Dismisses the
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationService.d.ts","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,MAAM,WAAW,+BAA+B;IAC9C,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqB;IAE9C,YAAY,IAAI,EAAE,+BAA+B,EAMhD;IAED;;;;;;;;;;OAUG;IACG,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CAuCrF;IAED,yFAAyF;IACzF,OAAO,CAAC,cAAc;IAetB;;;;;;;;;;;OAWG;IACG,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GACxD,OAAO,CAAC,YAAY,CAAC,CA0BvB;IAED,kFAAkF;IAC5E,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,YAAY,CAAC,CAYvB;IAED,2EAA2E;IACrE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAE3D;IAED;;;;;;;;;OASG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9E;IAED;;;;;;;;OAQG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ1F;IAED,4CAA4C;IACtC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAEvE;IAED,mFAAmF;YACrE,OAAO;CAQtB"}
1
+ {"version":3,"file":"NotificationService.d.ts","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,MAAM,WAAW,+BAA+B;IAC9C,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAC9B;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqB;IAE9C,YAAY,IAAI,EAAE,+BAA+B,EAMhD;IAED;;;;;;;;;;OAUG;IACG,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0CrF;IAED,yFAAyF;IACzF,OAAO,CAAC,cAAc;IAetB;;;;;;;;;;;OAWG;IACG,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GACxD,OAAO,CAAC,YAAY,CAAC,CA0BvB;IAED,kFAAkF;IAC5E,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,YAAY,CAAC,CAYvB;IAED,2EAA2E;IACrE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAE3D;IAED;;;;;OAKG;IACG,cAAc,CAClB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAEpC;IAED;;;;;;;OAOG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAW3F;IAED;;;;;;;;;OASG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9E;IAED;;;;;;;;OAQG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ1F;IAED,4CAA4C;IACtC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAEvE;IAED,mFAAmF;YACrE,OAAO;CAQtB"}
@@ -35,7 +35,10 @@ export class NotificationService {
35
35
  async raise(workspaceId, input) {
36
36
  const existing = input.blockId
37
37
  ? await this.notifications.findOpenByBlock(workspaceId, input.blockId, input.type)
38
- : null;
38
+ : // A block-LESS card (deployment/workspace-wide, e.g. `platform_health`) de-dupes on
39
+ // (workspace, type): a periodic sweep re-raising it reuses the open row and only
40
+ // re-delivers on a content change, exactly like the block-scoped path above.
41
+ await this.notifications.findOpenByType(workspaceId, input.type);
39
42
  const now = this.clock.now();
40
43
  const notification = {
41
44
  id: existing?.id ?? this.idGenerator.next('ntf'),
@@ -144,6 +147,36 @@ export class NotificationService {
144
147
  async listOpen(workspaceId) {
145
148
  return this.notifications.listOpen(workspaceId);
146
149
  }
150
+ /**
151
+ * Batched: the open, block-less card of `type` for each of `workspaceIds` that has one. The
152
+ * platform-health sweep uses this ONCE up front to learn which workspaces already hold a card,
153
+ * so it can skip the `clearByType` point-read for the (steady-state common) healthy workspaces
154
+ * with none — avoiding a per-workspace N+1 across the whole deployment every sweep.
155
+ */
156
+ async listOpenByType(workspaceIds, type) {
157
+ return this.notifications.listOpenByType(workspaceIds, type);
158
+ }
159
+ /**
160
+ * Auto-resolve the open, block-less card of `type` for a workspace (dismiss it), if one is
161
+ * open. The self-clearing counterpart to a periodic sweep that raises a block-less card while
162
+ * a condition holds (today `platform_health`): when the condition clears the sweep calls this
163
+ * so the stale alert leaves the inbox instead of lingering (and being escalated red for a
164
+ * problem that has since resolved). Idempotent + best-effort: a no-op when no such card is
165
+ * open. Returns the dismissed card, or null when there was nothing to clear.
166
+ */
167
+ async clearByType(workspaceId, type) {
168
+ const existing = await this.notifications.findOpenByType(workspaceId, type);
169
+ if (!existing)
170
+ return null;
171
+ const resolved = {
172
+ ...existing,
173
+ status: 'dismissed',
174
+ resolvedAt: this.clock.now(),
175
+ };
176
+ await this.notifications.upsert(workspaceId, resolved);
177
+ await this.deliver(workspaceId, resolved);
178
+ return resolved;
179
+ }
147
180
  /**
148
181
  * Resolve the auto-raised "waiting for a human decision" cards on a block once its run
149
182
  * has advanced past the gate (the human responded, or it auto-passed). Dismisses the
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationService.js","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationService.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAiBnE;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAmB;IACb,aAAa,CAAwB;IACrC,mBAAmB,CAAqB;IACxC,WAAW,CAAa;IACxB,KAAK,CAAO;IACZ,OAAO,CAAsB;IAE9C,YAAY,IAAqC;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAA;QAChD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAA;QACnD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC7B,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,KAAK,CAAC,WAAmB,EAAE,KAA6B;QAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO;YAC5B,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;YAClF,CAAC,CAAC,IAAI,CAAA;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,YAAY,GAAiB;YACjC,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAChD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,MAAM;YACd,mFAAmF;YACnF,6EAA6E;YAC7E,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ;YACxC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;YAC9B,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;YACrC,UAAU,EAAE,IAAI;SACjB,CAAA;QACD,mFAAmF;QACnF,oFAAoF;QACpF,8EAA8E;QAC9E,yEAAyE;QACzE,EAAE;QACF,sFAAsF;QACtF,uFAAuF;QACvF,sFAAsF;QACtF,mFAAmF;QACnF,IAAI,SAAS,GAAG,YAAY,CAAA;QAC5B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACpF,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QAC5D,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,yFAAyF;IACjF,cAAc,CAAC,IAAkB,EAAE,IAAkB;QAC3D,OAAO,CACL,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;YACzB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YACvB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;YAC/B,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAC3B,uFAAuF;YACvF,wFAAwF;YACxF,0FAA0F;YAC1F,kDAAkD;YAClD,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAC9E,CAAA;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,GAAG,CACP,WAAmB,EACnB,EAAU,EACV,UAAyD;QAEzD,MAAM,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;QAC/F,4FAA4F;QAC5F,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,QAAQ,CAAA;QAE/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1F,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,0FAA0F;YAC1F,uDAAuD;YACvD,OAAO,WAAW,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;QACvF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yFAAyF;YACzF,2FAA2F;YAC3F,+CAA+C;YAC/C,MAAM,QAAQ,GAAiB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;YAC/E,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YACtD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YACzC,MAAM,GAAG,CAAA;QACX,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACxC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,OAAO,CACX,WAAmB,EACnB,EAAU,EACV,MAAiC;QAEjC,MAAM,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,CAAA;QAC/F,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,QAAQ,CAAA;QAC/C,MAAM,QAAQ,GAAiB;YAC7B,GAAG,QAAQ;YACX,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;YAChD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;SAC7B,CAAA;QACD,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACzC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,QAAQ,CAAC,WAAmB;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,oBAAoB,CAAC,WAAmB,EAAE,OAAe;QAC7D,KAAK,MAAM,IAAI,IAAI;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,uBAAuB;YACvB,iBAAiB;SACT,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;YACrF,IAAI,CAAC,QAAQ;gBAAE,SAAQ;YACvB,MAAM,QAAQ,GAAiB;gBAC7B,GAAG,QAAQ;gBACX,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;aAC7B,CAAA;YACD,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YACtD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,WAAmB,EAAE,GAAW;QACvE,gFAAgF;QAChF,kFAAkF;QAClF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,GAAG,GAAG,WAAW,CAAC,CAAA;QAC5F,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QACpC,CAAC;QACD,OAAO,SAAS,CAAC,MAAM,CAAA;IACzB,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAU;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,mFAAmF;IAC3E,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,YAA0B;QACnE,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;QAC/E,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"NotificationService.js","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { PlatformAlert, PlatformAlertReason, PlatformObservability, PlatformObservabilityWindow } from '@cat-factory/contracts';
2
+ /**
3
+ * The operator-configured ceilings a deployment's aggregate health is checked against. Each
4
+ * maps to one {@link PlatformAlertReason}. Deployment-level config (env-driven defaults today;
5
+ * a settings surface is a later slice), NOT per-workspace.
6
+ */
7
+ export interface PlatformAlertThresholds {
8
+ /**
9
+ * Minimum number of TERMINAL runs (done + failed) in the window before the failure-rate
10
+ * alert can fire — so a single early failure (1/1 = 100%) on a quiet deployment doesn't page.
11
+ */
12
+ minRuns: number;
13
+ /** Run failure rate (0..1) at or above which `failure_rate_high` fires. */
14
+ maxFailureRate: number;
15
+ /** p99 wall-clock run duration (ms) at or above which `duration_p99_high` fires. */
16
+ maxP99DurationMs: number;
17
+ /** Live running/blocked/paused/pending depth at or above which `backlog_high` fires. */
18
+ maxBacklog: number;
19
+ }
20
+ /** Conservative defaults: quiet unless the deployment is genuinely unhealthy. */
21
+ export declare const DEFAULT_PLATFORM_ALERT_THRESHOLDS: PlatformAlertThresholds;
22
+ /**
23
+ * Evaluate one account's windowed projection against the thresholds, returning every fired
24
+ * alert (empty when healthy). Each alert carries its observed value + the threshold it crossed
25
+ * — used for the sweep's log line and any future detail surface. The NOTIFICATION card keys its
26
+ * dedup on the reason SET only (see {@link platformAlertReasons}); the fluctuating values here
27
+ * are intentionally not carried on the card (they'd re-toast the inbox every sweep).
28
+ */
29
+ export declare function evaluatePlatformHealth(snapshot: PlatformObservability, thresholds: PlatformAlertThresholds): PlatformAlert[];
30
+ /**
31
+ * The SORTED set of reason codes from a list of fired alerts — the platform-health card's
32
+ * stable dedup identity. Sorted so the card content is a pure function of WHICH conditions
33
+ * fire (never their order), so the notification service re-delivers only when the firing set
34
+ * changes rather than on every sweep.
35
+ */
36
+ export declare function platformAlertReasons(alerts: PlatformAlert[]): PlatformAlertReason[];
37
+ /**
38
+ * The stable card title + body for a fired reason set — a pure function of the reasons + window
39
+ * (no live numbers), so a re-raise with the same firing set produces byte-identical content and
40
+ * is de-duplicated. The inbox renders this backend-composed (English) title/body directly, like
41
+ * every other notification type; the machine-readable reason set travels on
42
+ * `payload.platformAlerts` as the dedup identity and the seam for a future localized rendering
43
+ * (the `usePipelineErrorToast` mapping pattern), not yet wired in the SPA.
44
+ */
45
+ export declare function platformHealthCardContent(reasons: PlatformAlertReason[], window: PlatformObservabilityWindow): {
46
+ title: string;
47
+ body: string;
48
+ };
49
+ //# sourceMappingURL=platform-health.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-health.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/observability/platform-health.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC5B,MAAM,wBAAwB,CAAA;AAc/B;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,cAAc,EAAE,MAAM,CAAA;IACtB,oFAAoF;IACpF,gBAAgB,EAAE,MAAM,CAAA;IACxB,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,iFAAiF;AACjF,eAAO,MAAM,iCAAiC,EAAE,uBAK/C,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,uBAAuB,GAClC,aAAa,EAAE,CAiCjB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAEnF;AAeD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,EAAE,2BAA2B,GAClC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAUjC"}
@@ -0,0 +1,83 @@
1
+ /** Conservative defaults: quiet unless the deployment is genuinely unhealthy. */
2
+ export const DEFAULT_PLATFORM_ALERT_THRESHOLDS = {
3
+ minRuns: 5,
4
+ maxFailureRate: 0.5,
5
+ maxP99DurationMs: 60 * 60_000, // 60 minutes
6
+ maxBacklog: 50,
7
+ };
8
+ /**
9
+ * Evaluate one account's windowed projection against the thresholds, returning every fired
10
+ * alert (empty when healthy). Each alert carries its observed value + the threshold it crossed
11
+ * — used for the sweep's log line and any future detail surface. The NOTIFICATION card keys its
12
+ * dedup on the reason SET only (see {@link platformAlertReasons}); the fluctuating values here
13
+ * are intentionally not carried on the card (they'd re-toast the inbox every sweep).
14
+ */
15
+ export function evaluatePlatformHealth(snapshot, thresholds) {
16
+ const alerts = [];
17
+ const { outcomes, durations, live } = snapshot;
18
+ // Failure rate over terminal runs — gated by a minimum sample so a tiny window stays quiet.
19
+ const terminal = outcomes.done + outcomes.failed;
20
+ if (terminal >= thresholds.minRuns && outcomes.successRate !== null) {
21
+ const failureRate = 1 - outcomes.successRate;
22
+ if (failureRate >= thresholds.maxFailureRate) {
23
+ alerts.push({
24
+ reason: 'failure_rate_high',
25
+ value: failureRate,
26
+ threshold: thresholds.maxFailureRate,
27
+ });
28
+ }
29
+ }
30
+ // Slow-run tail: the p99 the average hides. Null (no terminal runs) → nothing to alert on.
31
+ if (durations.p99Ms !== null && durations.p99Ms >= thresholds.maxP99DurationMs) {
32
+ alerts.push({
33
+ reason: 'duration_p99_high',
34
+ value: durations.p99Ms,
35
+ threshold: thresholds.maxP99DurationMs,
36
+ });
37
+ }
38
+ // Live depth right now (a snapshot, not windowed): a growing backlog of unfinished runs.
39
+ const backlog = live.running + live.blocked + live.paused + live.pending;
40
+ if (backlog >= thresholds.maxBacklog) {
41
+ alerts.push({ reason: 'backlog_high', value: backlog, threshold: thresholds.maxBacklog });
42
+ }
43
+ return alerts;
44
+ }
45
+ /**
46
+ * The SORTED set of reason codes from a list of fired alerts — the platform-health card's
47
+ * stable dedup identity. Sorted so the card content is a pure function of WHICH conditions
48
+ * fire (never their order), so the notification service re-delivers only when the firing set
49
+ * changes rather than on every sweep.
50
+ */
51
+ export function platformAlertReasons(alerts) {
52
+ return alerts.map((a) => a.reason).sort();
53
+ }
54
+ /** Human-readable (English) fragment per reason, used to compose the card body below. */
55
+ const REASON_PHRASE = {
56
+ failure_rate_high: 'an elevated run failure rate',
57
+ duration_p99_high: 'slow run durations (p99)',
58
+ backlog_high: 'a growing backlog of unfinished runs',
59
+ };
60
+ const WINDOW_PHRASE = {
61
+ '1h': 'the last hour',
62
+ '24h': 'the last 24 hours',
63
+ '7d': 'the last 7 days',
64
+ };
65
+ /**
66
+ * The stable card title + body for a fired reason set — a pure function of the reasons + window
67
+ * (no live numbers), so a re-raise with the same firing set produces byte-identical content and
68
+ * is de-duplicated. The inbox renders this backend-composed (English) title/body directly, like
69
+ * every other notification type; the machine-readable reason set travels on
70
+ * `payload.platformAlerts` as the dedup identity and the seam for a future localized rendering
71
+ * (the `usePipelineErrorToast` mapping pattern), not yet wired in the SPA.
72
+ */
73
+ export function platformHealthCardContent(reasons, window) {
74
+ const phrases = reasons.map((r) => REASON_PHRASE[r]);
75
+ const list = phrases.length <= 1
76
+ ? (phrases[0] ?? 'a health threshold was crossed')
77
+ : `${phrases.slice(0, -1).join(', ')} and ${phrases[phrases.length - 1]}`;
78
+ return {
79
+ title: 'Platform health alert',
80
+ body: `The deployment shows ${list} over ${WINDOW_PHRASE[window]}. Open the operator dashboard for detail.`,
81
+ };
82
+ }
83
+ //# sourceMappingURL=platform-health.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-health.logic.js","sourceRoot":"","sources":["../../../src/modules/observability/platform-health.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.122.0",
3
+ "version": "0.123.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": "^6.0.224",
28
- "@cat-factory/agents": "0.62.7",
29
- "@cat-factory/caching": "0.10.4",
30
- "@cat-factory/contracts": "0.146.0",
31
- "@cat-factory/integrations": "0.85.4",
32
- "@cat-factory/kernel": "0.138.1",
33
- "@cat-factory/prompt-fragments": "0.13.35",
34
- "@cat-factory/sandbox": "0.9.98",
35
- "@cat-factory/spend": "0.12.48",
36
- "@cat-factory/workspaces": "0.16.1"
28
+ "@cat-factory/agents": "0.62.9",
29
+ "@cat-factory/caching": "0.10.6",
30
+ "@cat-factory/contracts": "0.147.1",
31
+ "@cat-factory/integrations": "0.86.1",
32
+ "@cat-factory/kernel": "0.139.1",
33
+ "@cat-factory/prompt-fragments": "0.13.37",
34
+ "@cat-factory/sandbox": "0.9.100",
35
+ "@cat-factory/spend": "0.12.50",
36
+ "@cat-factory/workspaces": "0.16.3"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "7.0.2",
40
40
  "vitest": "^4.1.10",
41
- "@cat-factory/sandbox-fixtures": "0.7.170"
41
+ "@cat-factory/sandbox-fixtures": "0.7.172"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsc -b tsconfig.build.json",