@cat-factory/server 0.194.0 → 0.195.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 (46) hide show
  1. package/dist/agents/ContainerAgentExecutor.d.ts +29 -5
  2. package/dist/agents/ContainerAgentExecutor.d.ts.map +1 -1
  3. package/dist/agents/ContainerAgentExecutor.js +44 -21
  4. package/dist/agents/ContainerAgentExecutor.js.map +1 -1
  5. package/dist/agents/agentContextRecord.d.ts.map +1 -1
  6. package/dist/agents/agentContextRecord.js +14 -0
  7. package/dist/agents/agentContextRecord.js.map +1 -1
  8. package/dist/agents/binaryGenerators.d.ts +34 -0
  9. package/dist/agents/binaryGenerators.d.ts.map +1 -0
  10. package/dist/agents/binaryGenerators.js +66 -0
  11. package/dist/agents/binaryGenerators.js.map +1 -0
  12. package/dist/agents/containerAgentBody.d.ts +2 -0
  13. package/dist/agents/containerAgentBody.d.ts.map +1 -1
  14. package/dist/agents/containerAgentBody.js +8 -1
  15. package/dist/agents/containerAgentBody.js.map +1 -1
  16. package/dist/agents/containerAgentLogging.d.ts +4 -3
  17. package/dist/agents/containerAgentLogging.d.ts.map +1 -1
  18. package/dist/agents/containerAgentLogging.js +33 -7
  19. package/dist/agents/containerAgentLogging.js.map +1 -1
  20. package/dist/agents/toolServers.d.ts +9 -2
  21. package/dist/agents/toolServers.d.ts.map +1 -1
  22. package/dist/agents/toolServers.js +1 -1
  23. package/dist/agents/toolServers.js.map +1 -1
  24. package/dist/config/platformAlerts.d.ts +4 -0
  25. package/dist/config/platformAlerts.d.ts.map +1 -1
  26. package/dist/config/platformAlerts.js +12 -0
  27. package/dist/config/platformAlerts.js.map +1 -1
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/modules/workspaces/WorkspaceController.d.ts.map +1 -1
  33. package/dist/modules/workspaces/WorkspaceController.js +51 -14
  34. package/dist/modules/workspaces/WorkspaceController.js.map +1 -1
  35. package/dist/observability/operationalMetrics.d.ts +9 -0
  36. package/dist/observability/operationalMetrics.d.ts.map +1 -0
  37. package/dist/observability/operationalMetrics.js +31 -0
  38. package/dist/observability/operationalMetrics.js.map +1 -0
  39. package/dist/observability/sweepHealth.d.ts +44 -0
  40. package/dist/observability/sweepHealth.d.ts.map +1 -0
  41. package/dist/observability/sweepHealth.js +36 -0
  42. package/dist/observability/sweepHealth.js.map +1 -0
  43. package/dist/runtime/platformHealth.d.ts.map +1 -1
  44. package/dist/runtime/platformHealth.js +6 -1
  45. package/dist/runtime/platformHealth.js.map +1 -1
  46. package/package.json +8 -8
@@ -0,0 +1,36 @@
1
+ import { noopOperationalMetrics } from '@cat-factory/kernel';
2
+ import { operationalMetrics } from './operationalMetrics.js';
3
+ /**
4
+ * Build a tracker that reports every failed pass to `metrics` as well as accumulating its
5
+ * streak. A unit test with nothing to export passes `noopOperationalMetrics`.
6
+ */
7
+ export function createSweepHealthTracker(metrics = noopOperationalMetrics) {
8
+ const streaks = new Map();
9
+ return {
10
+ recordFailure(sweep) {
11
+ streaks.set(sweep, (streaks.get(sweep) ?? 0) + 1);
12
+ // Dimensioned by sweep name — a bounded set fixed at boot — so one sick sweeper is
13
+ // identifiable among the fourteen rather than lost in a deployment-wide total.
14
+ metrics.increment('sweep.failed', { sweep });
15
+ },
16
+ recordSuccess(sweep) {
17
+ streaks.delete(sweep);
18
+ },
19
+ worst() {
20
+ let worst;
21
+ for (const [sweep, consecutive] of streaks) {
22
+ if (!worst || consecutive > worst.consecutive)
23
+ worst = { sweep, consecutive };
24
+ }
25
+ return worst;
26
+ },
27
+ };
28
+ }
29
+ /**
30
+ * The process-wide (Node) / per-isolate (Worker) tracker, exported like `logger` and
31
+ * `operationalMetrics` for the same reason: every sweeper must record into the ONE instance
32
+ * the health sweep reads. Bound to the sibling `operationalMetrics` collector here, so the
33
+ * counter and the streak can never be wired to different places.
34
+ */
35
+ export const sweepHealth = createSweepHealthTracker(operationalMetrics);
36
+ //# sourceMappingURL=sweepHealth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sweepHealth.js","sourceRoot":"","sources":["../../src/observability/sweepHealth.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAsD5D;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAO,GAAuB,sBAAsB;IAEpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,OAAO;QACL,aAAa,CAAC,KAAK;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACjD,mFAAmF;YACnF,+EAA+E;YAC/E,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9C,CAAC;QACD,aAAa,CAAC,KAAK;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,KAAK;YACH,IAAI,KAAqC,CAAA;YACzC,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW;oBAAE,KAAK,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;YAC/E,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAuB,wBAAwB,CAAC,kBAAkB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"platformHealth.d.ts","sourceRoot":"","sources":["../../src/runtime/platformHealth.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAkBjD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,eAAe,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAmE9C"}
1
+ {"version":3,"file":"platformHealth.d.ts","sourceRoot":"","sources":["../../src/runtime/platformHealth.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAmBjD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,eAAe,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAyE9C"}
@@ -1,4 +1,5 @@
1
1
  import { distinctAccountIds, evaluatePlatformHealth, platformAlertReasons, platformHealthCardContent, } from '@cat-factory/orchestration';
2
+ import { sweepHealth } from '../observability/sweepHealth.js';
2
3
  // Runtime-neutral platform-health ALERT sweep — the push counterpart to the operator dashboard
3
4
  // read, shared by both facades' periodic sweeps (the Worker's cron `scheduled` handler and the
4
5
  // Node `setInterval` sweeper), exactly like `escalateStaleNotifications`. It evaluates each
@@ -50,13 +51,17 @@ export async function sweepPlatformHealth(container, logger) {
50
51
  // workspace with no card is the steady-state common case, and it is now skipped entirely: we
51
52
  // only touch `clearByType` for a workspace that actually has a card to clear.
52
53
  const withOpenCard = new Set((await notifications.service.listOpenByType(workspaces.map((ws) => ws.id), 'platform_health')).keys());
54
+ const worstSweep = sweepHealth.worst();
53
55
  let raised = 0;
54
56
  let cleared = 0;
55
57
  for (const accountId of distinctAccountIds(workspaces)) {
56
58
  const workspaceIds = byAccount.get(accountId) ?? [];
57
59
  try {
58
60
  const snapshot = await observability.summarize(accountId, cfg.window);
59
- const reasons = platformAlertReasons(evaluatePlatformHealth(snapshot, cfg.thresholds));
61
+ // The sweeper streak is deployment-wide, not per account, so it is read once outside
62
+ // the per-account loop and applies to every account's card: a wedged retention sweep is
63
+ // everyone's problem, not the tenant's whose turn it happened to be.
64
+ const reasons = platformAlertReasons(evaluatePlatformHealth(snapshot, cfg.thresholds, worstSweep));
60
65
  for (const workspaceId of workspaceIds) {
61
66
  if (reasons.length > 0) {
62
67
  const { title, body } = platformHealthCardContent(reasons, cfg.window);
@@ -1 +1 @@
1
- {"version":3,"file":"platformHealth.js","sourceRoot":"","sources":["../../src/runtime/platformHealth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAA;AAInC,+FAA+F;AAC/F,+FAA+F;AAC/F,4FAA4F;AAC5F,+FAA+F;AAC/F,wFAAwF;AACxF,4FAA4F;AAC5F,2DAA2D;AAC3D,0FAA0F;AAC1F,2FAA2F;AAC3F,8EAA8E;AAC9E,EAAE;AACF,0FAA0F;AAC1F,+FAA+F;AAC/F,8FAA8F;AAC9F,4FAA4F;AAE5F;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAA0B,EAC1B,MAAe;IAEf,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,cAAc,CAAA;IAC3C,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAA;IAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,CAAA;IACrD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IAEtF,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9D,0FAA0F;IAC1F,2FAA2F;IAC3F,2FAA2F;IAC3F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC7C,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,SAAS;YAAE,SAAQ;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;QACxC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;;YACrB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,4FAA4F;IAC5F,6FAA6F;IAC7F,0FAA0F;IAC1F,6FAA6F;IAC7F,8EAA8E;IAC9E,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,CACE,MAAM,aAAa,CAAC,OAAO,CAAC,cAAc,CACxC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7B,iBAAiB,CAClB,CACF,CAAC,IAAI,EAAE,CACT,CAAA;IAED,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,KAAK,MAAM,SAAS,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;QACnD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YACrE,MAAM,OAAO,GAAG,oBAAoB,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;YACtF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;oBACtE,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;wBAC7C,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,IAAI;wBACjB,KAAK;wBACL,IAAI;wBACJ,OAAO,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;qBACjE,CAAC,CAAA;oBACF,MAAM,IAAI,CAAC,CAAA;gBACb,CAAC;qBAAM,IACL,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;oBAC7B,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,EACzE,CAAC;oBACD,OAAO,IAAI,CAAC,CAAA;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,6CAA6C,EAAE;gBAC1D,KAAK,EAAE,iBAAiB;gBACxB,SAAS;gBACT,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"platformHealth.js","sourceRoot":"","sources":["../../src/runtime/platformHealth.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/server",
3
- "version": "0.194.0",
3
+ "version": "0.195.0",
4
4
  "description": "Runtime-neutral HTTP layer for the Agent Architecture Board: the Hono controllers, middleware (auth/authz/CORS/error), request helpers and the gateway seams shared by every deployment facade (Cloudflare Worker, Node service).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,13 +30,13 @@
30
30
  "hono": "^4.12.33",
31
31
  "pino": "^10.3.1",
32
32
  "valibot": "^1.4.2",
33
- "@cat-factory/agents": "0.104.3",
34
- "@cat-factory/contracts": "0.211.0",
35
- "@cat-factory/integrations": "0.116.4",
36
- "@cat-factory/kernel": "0.214.1",
37
- "@cat-factory/orchestration": "0.185.2",
38
- "@cat-factory/prompt-fragments": "0.15.36",
39
- "@cat-factory/spend": "0.13.1"
33
+ "@cat-factory/contracts": "0.212.0",
34
+ "@cat-factory/agents": "0.105.0",
35
+ "@cat-factory/integrations": "0.117.0",
36
+ "@cat-factory/orchestration": "0.186.0",
37
+ "@cat-factory/kernel": "0.215.0",
38
+ "@cat-factory/prompt-fragments": "0.15.37",
39
+ "@cat-factory/spend": "0.13.2"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/node": "^26.1.2",