@cat-factory/orchestration 0.240.0 → 0.241.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 (92) hide show
  1. package/dist/container/dependencies.d.ts +24 -1
  2. package/dist/container/dependencies.d.ts.map +1 -1
  3. package/dist/container/module-shapes.d.ts +8 -0
  4. package/dist/container/module-shapes.d.ts.map +1 -1
  5. package/dist/container/modules.d.ts.map +1 -1
  6. package/dist/container/modules.js +9 -2
  7. package/dist/container/modules.js.map +1 -1
  8. package/dist/container/runtime.d.ts +1 -0
  9. package/dist/container/runtime.d.ts.map +1 -1
  10. package/dist/container/runtime.js +7 -1
  11. package/dist/container/runtime.js.map +1 -1
  12. package/dist/container.d.ts +9 -1
  13. package/dist/container.d.ts.map +1 -1
  14. package/dist/container.js +2 -1
  15. package/dist/container.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +4 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/modules/artifacts/artifactRetention.d.ts +11 -4
  21. package/dist/modules/artifacts/artifactRetention.d.ts.map +1 -1
  22. package/dist/modules/artifacts/artifactRetention.js +11 -4
  23. package/dist/modules/artifacts/artifactRetention.js.map +1 -1
  24. package/dist/modules/execution/AgentDispatchController.d.ts.map +1 -1
  25. package/dist/modules/execution/AgentDispatchController.js +11 -17
  26. package/dist/modules/execution/AgentDispatchController.js.map +1 -1
  27. package/dist/modules/execution/CompanionController.d.ts.map +1 -1
  28. package/dist/modules/execution/CompanionController.js +5 -22
  29. package/dist/modules/execution/CompanionController.js.map +1 -1
  30. package/dist/modules/execution/DeployerStepController.d.ts.map +1 -1
  31. package/dist/modules/execution/DeployerStepController.js +2 -4
  32. package/dist/modules/execution/DeployerStepController.js.map +1 -1
  33. package/dist/modules/execution/FollowUpGateController.js +3 -3
  34. package/dist/modules/execution/FollowUpGateController.js.map +1 -1
  35. package/dist/modules/execution/ForkDecisionController.d.ts.map +1 -1
  36. package/dist/modules/execution/ForkDecisionController.js +1 -2
  37. package/dist/modules/execution/ForkDecisionController.js.map +1 -1
  38. package/dist/modules/execution/GateHelperDispatcher.d.ts.map +1 -1
  39. package/dist/modules/execution/GateHelperDispatcher.js +1 -2
  40. package/dist/modules/execution/GateHelperDispatcher.js.map +1 -1
  41. package/dist/modules/execution/GateStepController.d.ts.map +1 -1
  42. package/dist/modules/execution/GateStepController.js +1 -2
  43. package/dist/modules/execution/GateStepController.js.map +1 -1
  44. package/dist/modules/execution/HumanTestController.d.ts.map +1 -1
  45. package/dist/modules/execution/HumanTestController.js +7 -32
  46. package/dist/modules/execution/HumanTestController.js.map +1 -1
  47. package/dist/modules/execution/InterviewGateController.d.ts.map +1 -1
  48. package/dist/modules/execution/InterviewGateController.js +2 -21
  49. package/dist/modules/execution/InterviewGateController.js.map +1 -1
  50. package/dist/modules/execution/JudgeStepController.d.ts.map +1 -1
  51. package/dist/modules/execution/JudgeStepController.js +1 -2
  52. package/dist/modules/execution/JudgeStepController.js.map +1 -1
  53. package/dist/modules/execution/OneShotStepController.d.ts.map +1 -1
  54. package/dist/modules/execution/OneShotStepController.js +1 -2
  55. package/dist/modules/execution/OneShotStepController.js.map +1 -1
  56. package/dist/modules/execution/PollRunningController.d.ts.map +1 -1
  57. package/dist/modules/execution/PollRunningController.js +2 -4
  58. package/dist/modules/execution/PollRunningController.js.map +1 -1
  59. package/dist/modules/execution/RalphController.d.ts.map +1 -1
  60. package/dist/modules/execution/RalphController.js +5 -9
  61. package/dist/modules/execution/RalphController.js.map +1 -1
  62. package/dist/modules/execution/ReviewGateController.d.ts.map +1 -1
  63. package/dist/modules/execution/ReviewGateController.js +2 -20
  64. package/dist/modules/execution/ReviewGateController.js.map +1 -1
  65. package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
  66. package/dist/modules/execution/RunDispatcher.js +11 -54
  67. package/dist/modules/execution/RunDispatcher.js.map +1 -1
  68. package/dist/modules/execution/RunStateMachine.d.ts +49 -0
  69. package/dist/modules/execution/RunStateMachine.d.ts.map +1 -1
  70. package/dist/modules/execution/RunStateMachine.js +84 -0
  71. package/dist/modules/execution/RunStateMachine.js.map +1 -1
  72. package/dist/modules/execution/TesterController.d.ts.map +1 -1
  73. package/dist/modules/execution/TesterController.js +9 -21
  74. package/dist/modules/execution/TesterController.js.map +1 -1
  75. package/dist/modules/execution/VisualConfirmationController.d.ts.map +1 -1
  76. package/dist/modules/execution/VisualConfirmationController.js +6 -30
  77. package/dist/modules/execution/VisualConfirmationController.js.map +1 -1
  78. package/dist/modules/execution/step-fold.logic.d.ts +24 -0
  79. package/dist/modules/execution/step-fold.logic.d.ts.map +1 -1
  80. package/dist/modules/execution/step-fold.logic.js +29 -0
  81. package/dist/modules/execution/step-fold.logic.js.map +1 -1
  82. package/dist/modules/execution/stepPreamble.d.ts.map +1 -1
  83. package/dist/modules/execution/stepPreamble.js +2 -4
  84. package/dist/modules/execution/stepPreamble.js.map +1 -1
  85. package/dist/modules/notifications/NotificationService.d.ts.map +1 -1
  86. package/dist/modules/notifications/NotificationService.js +15 -9
  87. package/dist/modules/notifications/NotificationService.js.map +1 -1
  88. package/dist/modules/notifications/NotificationSettingsService.d.ts +28 -0
  89. package/dist/modules/notifications/NotificationSettingsService.d.ts.map +1 -0
  90. package/dist/modules/notifications/NotificationSettingsService.js +50 -0
  91. package/dist/modules/notifications/NotificationSettingsService.js.map +1 -0
  92. package/package.json +11 -11
@@ -25,8 +25,7 @@ export async function runStepPreamble(deps, workspaceId, instance, step) {
25
25
  if (!(await deps.currentStepIsNonMetered(workspaceId, instance, step))) {
26
26
  if (instance.status !== 'paused') {
27
27
  instance.status = 'paused';
28
- await deps.stateMachine.casPersist(workspaceId, instance);
29
- await deps.stateMachine.emitInstance(workspaceId, instance);
28
+ await deps.stateMachine.persistAndEmit(workspaceId, instance);
30
29
  // Surface the pause in the inbox (F3): a `paused` run is invisible to the sweeper and
31
30
  // has no auto-resume, so without this card the paused board badge is its only signal.
32
31
  await deps.stateMachine.raiseBudgetPaused(workspaceId);
@@ -47,8 +46,7 @@ export async function runStepPreamble(deps, workspaceId, instance, step) {
47
46
  const pendingId = step.decision?.id ?? step.approval?.id;
48
47
  if (pendingId) {
49
48
  instance.status = 'blocked';
50
- await deps.stateMachine.casPersist(workspaceId, instance);
51
- await deps.stateMachine.emitInstance(workspaceId, instance);
49
+ await deps.stateMachine.persistAndEmit(workspaceId, instance);
52
50
  return { kind: 'stop', result: { kind: 'awaiting_decision', decisionId: pendingId } };
53
51
  }
54
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stepPreamble.js","sourceRoot":"","sources":["../../../src/modules/execution/stepPreamble.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stepPreamble.js","sourceRoot":"","sources":["../../../src/modules/execution/stepPreamble.ts"],"names":[],"mappings":"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"}
@@ -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,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;;;;OAIG;IACG,gBAAgB,CACpB,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"}
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,EAEnB,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,CA6BvB;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;;;;OAIG;IACG,gBAAgB,CACpB,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,CAW1F;IAED,4CAA4C;IACtC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAEvE;IAED,mFAAmF;YACrE,OAAO;CAYtB"}
@@ -72,7 +72,7 @@ export class NotificationService {
72
72
  await this.notifications.upsert(workspaceId, notification);
73
73
  }
74
74
  if (!existing || this.contentChanged(existing, notification)) {
75
- await this.deliver(workspaceId, persisted);
75
+ await this.deliver(workspaceId, persisted, 'raised');
76
76
  }
77
77
  return persisted;
78
78
  }
@@ -122,10 +122,13 @@ export class NotificationService {
122
122
  // it and this revert can't lose an escalation.
123
123
  const reopened = { ...claimed, status: 'open', resolvedAt: null };
124
124
  await this.notifications.upsert(workspaceId, reopened);
125
- await this.deliver(workspaceId, reopened);
125
+ // `refreshed`, not `raised`: the human is at the screen they just acted from, and the card
126
+ // was already alerted on when it was raised. Re-interrupting the whole board because a
127
+ // merge call 500ed states a new decision that nobody has to make.
128
+ await this.deliver(workspaceId, reopened, 'refreshed');
126
129
  throw err;
127
130
  }
128
- await this.deliver(workspaceId, claimed);
131
+ await this.deliver(workspaceId, claimed, 'settled');
129
132
  return claimed;
130
133
  }
131
134
  /** Resolve a notification (the human acted on it or dismissed it). Idempotent. */
@@ -140,7 +143,7 @@ export class NotificationService {
140
143
  resolvedAt: this.clock.now(),
141
144
  };
142
145
  await this.notifications.upsert(workspaceId, resolved);
143
- await this.deliver(workspaceId, resolved);
146
+ await this.deliver(workspaceId, resolved, 'settled');
144
147
  return resolved;
145
148
  }
146
149
  /** All open notifications for the workspace (for the inbox + snapshot). */
@@ -182,7 +185,7 @@ export class NotificationService {
182
185
  resolvedAt: this.clock.now(),
183
186
  };
184
187
  await this.notifications.upsert(workspaceId, resolved);
185
- await this.deliver(workspaceId, resolved);
188
+ await this.deliver(workspaceId, resolved, 'settled');
186
189
  return resolved;
187
190
  }
188
191
  /**
@@ -211,7 +214,7 @@ export class NotificationService {
211
214
  resolvedAt: this.clock.now(),
212
215
  };
213
216
  await this.notifications.upsert(workspaceId, resolved);
214
- await this.deliver(workspaceId, resolved);
217
+ await this.deliver(workspaceId, resolved, 'settled');
215
218
  }
216
219
  }
217
220
  /**
@@ -228,7 +231,10 @@ export class NotificationService {
228
231
  // escalated row is then re-delivered so the inbox re-renders it red in real time.
229
232
  const escalated = await this.notifications.escalateStaleOpen(workspaceId, now - thresholdMs);
230
233
  for (const n of escalated) {
231
- await this.deliver(workspaceId, n);
234
+ // `refreshed`: the colour change is for the boards already holding the card, not a second
235
+ // ask. It is also what keeps this loop free of per-card routing and email reads: an alert
236
+ // transport and the routing gate both stand down before touching a store.
237
+ await this.deliver(workspaceId, n, 'refreshed');
232
238
  }
233
239
  return escalated.length;
234
240
  }
@@ -237,11 +243,11 @@ export class NotificationService {
237
243
  return this.notifications.get(workspaceId, id);
238
244
  }
239
245
  /** Best-effort delivery to the channel — a failure must never break the caller. */
240
- async deliver(workspaceId, notification) {
246
+ async deliver(workspaceId, notification, reason) {
241
247
  if (!this.channel)
242
248
  return;
243
249
  try {
244
- await this.channel.deliver(workspaceId, notification);
250
+ await this.channel.deliver(workspaceId, notification, reason);
245
251
  }
246
252
  catch {
247
253
  // The row is persisted; delivery is an optimisation. Swallow channel errors.
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationService.js","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotificationService.js","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type NotificationSettings } from '@cat-factory/contracts';
2
+ import type { Clock, NotificationDeliveryChannel, NotificationRouter, NotificationRoutingMatrix, NotificationSettingsRepository, NotificationType } from '@cat-factory/kernel';
3
+ export interface NotificationSettingsServiceDependencies {
4
+ notificationSettingsRepository: NotificationSettingsRepository;
5
+ clock: Clock;
6
+ }
7
+ export declare class NotificationSettingsService implements NotificationRouter {
8
+ private readonly deps;
9
+ constructor(deps: NotificationSettingsServiceDependencies);
10
+ /** A workspace's settings; the empty matrix (everything on its default) when unconfigured. */
11
+ get(workspaceId: string): Promise<NotificationSettings>;
12
+ /** Replace a workspace's routing overrides (a full replace, like the Slack routing write). */
13
+ update(workspaceId: string, matrix: NotificationRoutingMatrix): Promise<NotificationSettings>;
14
+ /**
15
+ * The routing decision, for one delivery. One point read per notification per routed
16
+ * channel: notifications are raised at human scale (a run parks, a gate gives up), so
17
+ * this is not on any hot path, and a cached copy would answer with a mute the operator
18
+ * had already lifted.
19
+ */
20
+ isRouted(workspaceId: string, type: NotificationType, channel: NotificationDeliveryChannel): Promise<boolean>;
21
+ /**
22
+ * Decode a stored matrix. The cell-by-cell tolerance (a retired type costs its own override
23
+ * and nothing else) lives in `@cat-factory/contracts` beside the resolution it feeds, so the
24
+ * settings UI decoding the same row reaches the same answer.
25
+ */
26
+ private parseMatrix;
27
+ }
28
+ //# sourceMappingURL=NotificationSettingsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationSettingsService.d.ts","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationSettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,KAAK,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAW5B,MAAM,WAAW,uCAAuC;IACtD,8BAA8B,EAAE,8BAA8B,CAAA;IAC9D,KAAK,EAAE,KAAK,CAAA;CACb;AAED,qBAAa,2BAA4B,YAAW,kBAAkB;IACxD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,uCAAuC,EAAI;IAE9E,8FAA8F;IACxF,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAI5D;IAED,8FAA8F;IACxF,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAQ/B;IAED;;;;;OAKG;IACG,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,OAAO,CAAC,CAGlB;IAED;;;;OAIG;IACH,OAAO,CAAC,WAAW;CASpB"}
@@ -0,0 +1,50 @@
1
+ import { decodeNotificationRoutingMatrix, isNotificationRouted, } from '@cat-factory/contracts';
2
+ export class NotificationSettingsService {
3
+ deps;
4
+ constructor(deps) {
5
+ this.deps = deps;
6
+ }
7
+ /** A workspace's settings; the empty matrix (everything on its default) when unconfigured. */
8
+ async get(workspaceId) {
9
+ const record = await this.deps.notificationSettingsRepository.getByWorkspace(workspaceId);
10
+ if (!record)
11
+ return { matrix: {}, updatedAt: 0 };
12
+ return { matrix: this.parseMatrix(record.matrixJson), updatedAt: record.updatedAt };
13
+ }
14
+ /** Replace a workspace's routing overrides (a full replace, like the Slack routing write). */
15
+ async update(workspaceId, matrix) {
16
+ const updatedAt = this.deps.clock.now();
17
+ await this.deps.notificationSettingsRepository.upsert({
18
+ workspaceId,
19
+ matrixJson: JSON.stringify(matrix),
20
+ updatedAt,
21
+ });
22
+ return { matrix, updatedAt };
23
+ }
24
+ /**
25
+ * The routing decision, for one delivery. One point read per notification per routed
26
+ * channel: notifications are raised at human scale (a run parks, a gate gives up), so
27
+ * this is not on any hot path, and a cached copy would answer with a mute the operator
28
+ * had already lifted.
29
+ */
30
+ async isRouted(workspaceId, type, channel) {
31
+ const { matrix } = await this.get(workspaceId);
32
+ return isNotificationRouted(matrix, type, channel);
33
+ }
34
+ /**
35
+ * Decode a stored matrix. The cell-by-cell tolerance (a retired type costs its own override
36
+ * and nothing else) lives in `@cat-factory/contracts` beside the resolution it feeds, so the
37
+ * settings UI decoding the same row reaches the same answer.
38
+ */
39
+ parseMatrix(matrixJson) {
40
+ try {
41
+ return decodeNotificationRoutingMatrix(JSON.parse(matrixJson));
42
+ }
43
+ catch {
44
+ // A corrupt row is, for routing, the same state as an unconfigured one: every cell falls
45
+ // back to its shipped default. Throwing here would run on the delivery path.
46
+ return {};
47
+ }
48
+ }
49
+ }
50
+ //# sourceMappingURL=NotificationSettingsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationSettingsService.js","sourceRoot":"","sources":["../../../src/modules/notifications/NotificationSettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,GAErB,MAAM,wBAAwB,CAAA;AAwB/B,MAAM,OAAO,2BAA2B;IACT,IAAI;IAAjC,YAA6B,IAA6C;oBAA7C,IAAI;IAA4C,CAAC;IAE9E,8FAA8F;IAC9F,KAAK,CAAC,GAAG,CAAC,WAAmB;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QACzF,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;QAChD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;IACrF,CAAC;IAED,8FAA8F;IAC9F,KAAK,CAAC,MAAM,CACV,WAAmB,EACnB,MAAiC;QAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QACvC,MAAM,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;YACpD,WAAW;YACX,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAClC,SAAS;SACV,CAAC,CAAA;QACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CACZ,WAAmB,EACnB,IAAsB,EACtB,OAAoC;QAEpC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC9C,OAAO,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,UAAkB;QACpC,IAAI,CAAC;YACH,OAAO,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,yFAAyF;YACzF,6EAA6E;YAC7E,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/orchestration",
3
- "version": "0.240.0",
3
+ "version": "0.241.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.117.12",
29
- "@cat-factory/caching": "0.18.13",
30
- "@cat-factory/contracts": "0.274.0",
31
- "@cat-factory/integrations": "0.150.0",
32
- "@cat-factory/kernel": "0.272.0",
33
- "@cat-factory/prompt-fragments": "1.0.22",
34
- "@cat-factory/sandbox": "0.11.99",
35
- "@cat-factory/spend": "0.15.40",
36
- "@cat-factory/workspaces": "0.26.12"
28
+ "@cat-factory/agents": "0.118.0",
29
+ "@cat-factory/caching": "0.18.14",
30
+ "@cat-factory/contracts": "0.275.0",
31
+ "@cat-factory/integrations": "0.151.0",
32
+ "@cat-factory/kernel": "0.273.0",
33
+ "@cat-factory/prompt-fragments": "1.0.23",
34
+ "@cat-factory/sandbox": "0.11.100",
35
+ "@cat-factory/spend": "0.15.41",
36
+ "@cat-factory/workspaces": "0.26.13"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "7.0.2",
40
40
  "vitest": "^4.1.10",
41
- "@cat-factory/sandbox-fixtures": "0.7.309"
41
+ "@cat-factory/sandbox-fixtures": "0.7.310"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsc -b tsconfig.build.json",