@x12i/memorix-service 3.12.0 → 3.12.3

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 (80) hide show
  1. package/dist/activity-ring.d.ts +22 -1
  2. package/dist/activity-ring.d.ts.map +1 -1
  3. package/dist/activity-ring.js +44 -0
  4. package/dist/activity-ring.js.map +1 -1
  5. package/dist/activity-routes.d.ts.map +1 -1
  6. package/dist/activity-routes.js +3 -2
  7. package/dist/activity-routes.js.map +1 -1
  8. package/dist/activity-ui.d.ts.map +1 -1
  9. package/dist/activity-ui.js +200 -11
  10. package/dist/activity-ui.js.map +1 -1
  11. package/dist/app.d.ts.map +1 -1
  12. package/dist/app.js +5 -1
  13. package/dist/app.js.map +1 -1
  14. package/dist/catalog-live-routes.d.ts +4 -0
  15. package/dist/catalog-live-routes.d.ts.map +1 -0
  16. package/dist/catalog-live-routes.js +12 -0
  17. package/dist/catalog-live-routes.js.map +1 -0
  18. package/dist/catalog-live-ui.d.ts +3 -0
  19. package/dist/catalog-live-ui.d.ts.map +1 -0
  20. package/dist/catalog-live-ui.js +230 -0
  21. package/dist/catalog-live-ui.js.map +1 -0
  22. package/dist/catalog-live.d.ts +31 -0
  23. package/dist/catalog-live.d.ts.map +1 -0
  24. package/dist/catalog-live.js +67 -0
  25. package/dist/catalog-live.js.map +1 -0
  26. package/dist/data-changes-routes.js +1 -1
  27. package/dist/data-changes-routes.js.map +1 -1
  28. package/dist/data-changes-ui.js +1 -1
  29. package/dist/hooks/backfill.d.ts +31 -0
  30. package/dist/hooks/backfill.d.ts.map +1 -0
  31. package/dist/hooks/backfill.js +78 -0
  32. package/dist/hooks/backfill.js.map +1 -0
  33. package/dist/hooks/enqueue.d.ts +6 -1
  34. package/dist/hooks/enqueue.d.ts.map +1 -1
  35. package/dist/hooks/enqueue.js +15 -1
  36. package/dist/hooks/enqueue.js.map +1 -1
  37. package/dist/hooks/request-trigger.d.ts +16 -0
  38. package/dist/hooks/request-trigger.d.ts.map +1 -0
  39. package/dist/hooks/request-trigger.js +31 -0
  40. package/dist/hooks/request-trigger.js.map +1 -0
  41. package/dist/hooks/store.d.ts +1 -0
  42. package/dist/hooks/store.d.ts.map +1 -1
  43. package/dist/hooks/store.js +105 -0
  44. package/dist/hooks/store.js.map +1 -1
  45. package/dist/hooks/types.d.ts +33 -0
  46. package/dist/hooks/types.d.ts.map +1 -1
  47. package/dist/hooks/types.js +12 -0
  48. package/dist/hooks/types.js.map +1 -1
  49. package/dist/hooks/worker.d.ts +0 -1
  50. package/dist/hooks/worker.d.ts.map +1 -1
  51. package/dist/hooks/worker.js +1 -8
  52. package/dist/hooks/worker.js.map +1 -1
  53. package/dist/hooks-live-routes.d.ts +4 -0
  54. package/dist/hooks-live-routes.d.ts.map +1 -0
  55. package/dist/hooks-live-routes.js +13 -0
  56. package/dist/hooks-live-routes.js.map +1 -0
  57. package/dist/hooks-live-ui.d.ts +3 -0
  58. package/dist/hooks-live-ui.d.ts.map +1 -0
  59. package/dist/hooks-live-ui.js +228 -0
  60. package/dist/hooks-live-ui.js.map +1 -0
  61. package/dist/hooks-live.d.ts +38 -0
  62. package/dist/hooks-live.d.ts.map +1 -0
  63. package/dist/hooks-live.js +51 -0
  64. package/dist/hooks-live.js.map +1 -0
  65. package/dist/live-ops-nav.d.ts.map +1 -1
  66. package/dist/live-ops-nav.js +8 -0
  67. package/dist/live-ops-nav.js.map +1 -1
  68. package/dist/openapi/openapi.json +57 -1
  69. package/dist/platform.d.ts +2 -0
  70. package/dist/platform.d.ts.map +1 -1
  71. package/dist/platform.js +9 -1
  72. package/dist/platform.js.map +1 -1
  73. package/dist/routes/data.d.ts.map +1 -1
  74. package/dist/routes/data.js +43 -15
  75. package/dist/routes/data.js.map +1 -1
  76. package/dist/routes/hooks.d.ts.map +1 -1
  77. package/dist/routes/hooks.js +55 -1
  78. package/dist/routes/hooks.js.map +1 -1
  79. package/openapi/openapi.json +57 -1
  80. package/package.json +1 -1
@@ -38,8 +38,27 @@ export type LandActivityEvent = {
38
38
  contentType: string;
39
39
  recordId: string;
40
40
  revision: number;
41
- outcome: "created" | "updated" | string;
41
+ outcome: "created" | "updated" | "removed" | string;
42
42
  indexing?: IndexingSummary;
43
+ /** Set when this write ran the hook check. Absent on older events. */
44
+ hooks?: {
45
+ queued: number;
46
+ subscriptionIds: string[];
47
+ failed?: boolean;
48
+ };
49
+ };
50
+ export type PushSummaryRow = {
51
+ orgId: string;
52
+ caller: string;
53
+ objectType: string;
54
+ contentType: string;
55
+ created: number;
56
+ updated: number;
57
+ removed: number;
58
+ lastAt: string;
59
+ nexumQueued: number;
60
+ nexumSkipped: number;
61
+ hooksQueued: number;
43
62
  };
44
63
  export type IndexActivityEvent = {
45
64
  lane: "index";
@@ -114,6 +133,7 @@ export declare function createActivityRing(opts?: {
114
133
  ts?: string;
115
134
  }) => FetchActivityEvent;
116
135
  list: (lane: ActivityLane, limit?: number) => ActivityEvent[];
136
+ summarizePushes: () => PushSummaryRow[];
117
137
  sizes: () => {
118
138
  land: number;
119
139
  index: number;
@@ -155,6 +175,7 @@ export declare const memorixActivityRing: {
155
175
  ts?: string;
156
176
  }) => FetchActivityEvent;
157
177
  list: (lane: ActivityLane, limit?: number) => ActivityEvent[];
178
+ summarizePushes: () => PushSummaryRow[];
158
179
  sizes: () => {
159
180
  land: number;
160
181
  index: number;
@@ -1 +1 @@
1
- {"version":3,"file":"activity-ring.d.ts","sourceRoot":"","sources":["../src/activity-ring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-ring.d.ts","sourceRoot":"","sources":["../src/activity-ring.ts"],"names":[],"mappings":"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"}
@@ -227,6 +227,49 @@ export function createActivityRing(opts) {
227
227
  }
228
228
  return { bucketMinutes: n, buckets };
229
229
  }
230
+ function summarizePushes() {
231
+ const grouped = new Map();
232
+ for (const event of land) {
233
+ const key = [event.orgId, event.caller ?? "", event.objectType, event.contentType].join("\0");
234
+ let row = grouped.get(key);
235
+ if (!row) {
236
+ row = {
237
+ orgId: event.orgId,
238
+ caller: event.caller ?? "",
239
+ objectType: event.objectType,
240
+ contentType: event.contentType,
241
+ created: 0,
242
+ updated: 0,
243
+ removed: 0,
244
+ lastAt: event.ts,
245
+ nexumQueued: 0,
246
+ nexumSkipped: 0,
247
+ hooksQueued: 0,
248
+ };
249
+ grouped.set(key, row);
250
+ }
251
+ if (event.outcome === "updated")
252
+ row.updated += 1;
253
+ else if (event.outcome === "removed")
254
+ row.removed += 1;
255
+ else
256
+ row.created += 1;
257
+ if (event.ts > row.lastAt)
258
+ row.lastAt = event.ts;
259
+ if (event.indexing?.status === "queued")
260
+ row.nexumQueued += 1;
261
+ else if (event.indexing?.status === "skipped")
262
+ row.nexumSkipped += 1;
263
+ if (event.hooks && event.hooks.queued > 0)
264
+ row.hooksQueued += event.hooks.queued;
265
+ }
266
+ return [...grouped.values()].sort((a, b) => {
267
+ const volume = b.created + b.updated + b.removed - (a.created + a.updated + a.removed);
268
+ if (volume !== 0)
269
+ return volume;
270
+ return a.lastAt < b.lastAt ? 1 : a.lastAt > b.lastAt ? -1 : 0;
271
+ });
272
+ }
230
273
  function clear() {
231
274
  land.length = 0;
232
275
  index.length = 0;
@@ -238,6 +281,7 @@ export function createActivityRing(opts) {
238
281
  recordIndex,
239
282
  recordFetch,
240
283
  list,
284
+ summarizePushes,
241
285
  sizes,
242
286
  series,
243
287
  freshness,
@@ -1 +1 @@
1
- {"version":3,"file":"activity-ring.js","sourceRoot":"","sources":["../src/activity-ring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-ring.js","sourceRoot":"","sources":["../src/activity-ring.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"activity-routes.d.ts","sourceRoot":"","sources":["../src/activity-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkB/C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAmCjE"}
1
+ {"version":3,"file":"activity-routes.d.ts","sourceRoot":"","sources":["../src/activity-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkB/C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAoCjE"}
@@ -13,10 +13,10 @@ function parseLane(raw) {
13
13
  }
14
14
  export function registerActivityRoutes(app) {
15
15
  app.get("/_live/activity", async (_req, reply) => {
16
- return reply.type("text/html; charset=utf-8").send(activityHtml());
16
+ return reply.header("cache-control", "no-store").type("text/html; charset=utf-8").send(activityHtml());
17
17
  });
18
18
  app.get("/_live/graph", async (_req, reply) => {
19
- return reply.type("text/html; charset=utf-8").send(graphHtml());
19
+ return reply.header("cache-control", "no-store").type("text/html; charset=utf-8").send(graphHtml());
20
20
  });
21
21
  app.get("/_live/api/activity", async (req) => {
22
22
  const q = req.query;
@@ -29,6 +29,7 @@ export function registerActivityRoutes(app) {
29
29
  capacity: memorixActivityRing.capacity,
30
30
  ...memorixActivityRing.freshness(),
31
31
  entries: memorixActivityRing.list(lane, limit),
32
+ pushSummary: lane === "land" ? memorixActivityRing.summarizePushes() : undefined,
32
33
  };
33
34
  });
34
35
  app.get("/_live/api/activity-series", async (req) => {
@@ -1 +1 @@
1
- {"version":3,"file":"activity-routes.js","sourceRoot":"","sources":["../src/activity-routes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,KAAK,GAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEzD,SAAS,SAAS,CAAC,GAAY;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,mCAAmC;IACnC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAiB,CAAC;QAAE,OAAO,CAAiB,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAoB;IACzD,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,KAA0C,CAAC;QACzD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,MAAM,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI;YACJ,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE;YAClC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;YACtC,GAAG,mBAAmB,CAAC,SAAS,EAAE;YAClC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;SAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAClD,MAAM,CAAC,GAAG,GAAG,CAAC,KAA6B,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;YACtC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE;YAClC,GAAG,mBAAmB,CAAC,SAAS,EAAE;YAClC,GAAG,MAAM;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"activity-routes.js","sourceRoot":"","sources":["../src/activity-routes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,KAAK,GAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEzD,SAAS,SAAS,CAAC,GAAY;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,mCAAmC;IACnC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAiB,CAAC;QAAE,OAAO,CAAiB,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAoB;IACzD,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/C,OAAO,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,KAA0C,CAAC;QACzD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,MAAM,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI;YACJ,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE;YAClC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;YACtC,GAAG,mBAAmB,CAAC,SAAS,EAAE;YAClC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAC9C,WAAW,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS;SACjF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAClD,MAAM,CAAC,GAAG,GAAG,CAAC,KAA6B,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;YACtC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE;YAClC,GAAG,mBAAmB,CAAC,SAAS,EAAE;YAClC,GAAG,MAAM;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"activity-ui.d.ts","sourceRoot":"","sources":["../src/activity-ui.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,wBAAgB,YAAY,IAAI,MAAM,CA8kCrC"}
1
+ {"version":3,"file":"activity-ui.d.ts","sourceRoot":"","sources":["../src/activity-ui.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,wBAAgB,YAAY,IAAI,MAAM,CA2wCrC"}
@@ -115,6 +115,19 @@ export function activityHtml() {
115
115
  .status-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
116
116
  .summary { display: flex; gap: 14px; flex-wrap: wrap; font-family: var(--mono); font-size: 12px; color: var(--muted); }
117
117
  .summary strong { color: var(--text); font-weight: 500; }
118
+ .push-summary { margin: 0 0 18px; }
119
+ .push-summary[hidden] { display: none; }
120
+ .push-summary h2 {
121
+ margin: 0 0 8px; font-size: 12px; font-family: var(--mono);
122
+ letter-spacing: 0.08em; text-transform: uppercase; color: var(--dim); font-weight: 500;
123
+ }
124
+ .push-summary .matrix-note { margin: 0 0 10px; color: var(--muted); font-size: 12px; max-width: 78ch; }
125
+ .push-summary .matrix-tabs { display: flex; gap: 6px; margin: 0 0 10px; }
126
+ .group-head td {
127
+ background: #0d1016; font-family: var(--mono); font-size: 12px;
128
+ color: var(--text); letter-spacing: 0.02em;
129
+ }
130
+ td.trigger-cell { white-space: normal; overflow: visible; text-overflow: clip; }
118
131
  .pause-bar {
119
132
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
120
133
  margin-bottom: 10px; padding: 8px 12px;
@@ -232,7 +245,7 @@ export function activityHtml() {
232
245
  <div class="meta">
233
246
  <div><strong>UI</strong> /_live/activity</div>
234
247
  <div><strong>API</strong> /_live/api/activity</div>
235
- <div><a href="/_live">← live view</a> · <a href="/_live/graph">stored graph</a> · <a href="/_live/changes">data changes</a></div>
248
+ <div><a href="/_live">← live view</a> · <a href="/_live/catalog">catalog</a> · <a href="/_live/graph">stored graph</a> · <a href="/_live/changes">data changes</a></div>
236
249
  </div>
237
250
  </header>
238
251
 
@@ -256,6 +269,7 @@ export function activityHtml() {
256
269
  </button>
257
270
  </nav>
258
271
  <p class="lane-hint" id="lane-hint"></p>
272
+ <div class="push-summary" id="push-summary" hidden></div>
259
273
 
260
274
  <div class="filters" id="filters">
261
275
  <label>Search
@@ -273,6 +287,14 @@ export function activityHtml() {
273
287
  <label>Content type
274
288
  <select id="f-ct"><option value="">All</option></select>
275
289
  </label>
290
+ <label id="f-outcome-wrap">Kind
291
+ <select id="f-outcome">
292
+ <option value="">All</option>
293
+ <option value="created">new</option>
294
+ <option value="updated">update</option>
295
+ <option value="removed">removed</option>
296
+ </select>
297
+ </label>
276
298
  <label id="f-nexum-wrap">Nexum
277
299
  <select id="f-nexum">
278
300
  <option value="">All</option>
@@ -306,6 +328,7 @@ export function activityHtml() {
306
328
  <span id="pause-msg">List held</span>
307
329
  <button class="btn" id="resume" type="button">Show new</button>
308
330
  </div>
331
+ <h2 class="section-label" id="by-time-label">By time</h2>
309
332
  <div class="table-wrap" id="table-wrap"></div>
310
333
  <footer>
311
334
  <a href="/_live">/_live</a>
@@ -349,7 +372,11 @@ export function activityHtml() {
349
372
  let seriesBuckets = [];
350
373
  let startedAt = "";
351
374
  let latest = { land: null, index: null, fetch: null };
352
- let filterState = { q: "", org: "", caller: "", ot: "", ct: "", nexum: "", how: "", hit: "" };
375
+ let filterState = { q: "", org: "", caller: "", ot: "", ct: "", outcome: "", nexum: "", how: "", hit: "" };
376
+ let pushSummary = [];
377
+ let storedReport = null;
378
+ let matrixWindow = "1h";
379
+ let matrixError = "";
353
380
 
354
381
  function listHeld() {
355
382
  return !followLive;
@@ -423,6 +450,7 @@ export function activityHtml() {
423
450
  $("refresh").onclick = () => {
424
451
  followLive = true;
425
452
  load(true);
453
+ loadMatrix();
426
454
  };
427
455
  $("resume").onclick = () => {
428
456
  $("dialog-back").hidden = true;
@@ -451,18 +479,19 @@ export function activityHtml() {
451
479
  }
452
480
  }, { passive: true });
453
481
  $("f-clear").onclick = () => {
454
- filterState = { q: "", org: "", caller: "", ot: "", ct: "", nexum: "", how: "", hit: "" };
482
+ filterState = { q: "", org: "", caller: "", ot: "", ct: "", outcome: "", nexum: "", how: "", hit: "" };
455
483
  $("f-q").value = "";
456
484
  $("f-org").value = "";
457
485
  $("f-caller").value = "";
458
486
  $("f-ot").value = "";
459
487
  $("f-ct").value = "";
488
+ $("f-outcome").value = "";
460
489
  $("f-nexum").value = "";
461
490
  $("f-how").value = "";
462
491
  $("f-hit").value = "";
463
492
  render();
464
493
  };
465
- ["f-q", "f-org", "f-caller", "f-ot", "f-ct", "f-nexum", "f-how", "f-hit"].forEach((id) => {
494
+ ["f-q", "f-org", "f-caller", "f-ot", "f-ct", "f-outcome", "f-nexum", "f-how", "f-hit"].forEach((id) => {
466
495
  $(id).addEventListener("input", () => {
467
496
  filterState = {
468
497
  q: $("f-q").value.trim().toLowerCase(),
@@ -470,6 +499,7 @@ export function activityHtml() {
470
499
  caller: $("f-caller").value,
471
500
  ot: $("f-ot").value,
472
501
  ct: $("f-ct").value,
502
+ outcome: $("f-outcome").value,
473
503
  nexum: $("f-nexum").value,
474
504
  how: $("f-how").value,
475
505
  hit: $("f-hit").value,
@@ -482,6 +512,8 @@ export function activityHtml() {
482
512
 
483
513
  function syncFilterVisibility() {
484
514
  $("f-nexum-wrap").hidden = lane !== "land";
515
+ $("f-outcome-wrap").hidden = lane !== "land";
516
+ $("by-time-label").hidden = lane !== "land";
485
517
  $("f-how-wrap").hidden = lane !== "index";
486
518
  $("f-hit-wrap").hidden = lane !== "fetch";
487
519
  }
@@ -554,6 +586,157 @@ export function activityHtml() {
554
586
  return statusBadge(indexing.status);
555
587
  }
556
588
 
589
+ function outcomeLabel(outcome) {
590
+ if (outcome === "created") return "new";
591
+ if (outcome === "updated") return "update";
592
+ if (outcome === "removed") return "removed";
593
+ return outcome || "—";
594
+ }
595
+
596
+ function outcomeBadge(outcome) {
597
+ const label = outcomeLabel(outcome);
598
+ const cls = outcome === "created" ? "ok" : outcome === "removed" ? "bad" : outcome === "updated" ? "queued" : "";
599
+ return '<span class="badge ' + cls + '">' + escapeHtml(label) + "</span>";
600
+ }
601
+
602
+ function hookCell(hooks) {
603
+ if (!hooks) return "";
604
+ if (hooks.failed) return '<span class="badge bad" title="hook enqueue failed">hook failed</span>';
605
+ if (hooks.queued > 0) {
606
+ const ids = (hooks.subscriptionIds || []).join(", ");
607
+ return '<a class="badge queued" href="/_live/hooks" title="' + escapeHtml(ids || "queued") + '">hook ' + hooks.queued + "</a>";
608
+ }
609
+ return '<span class="badge skip" title="no subscription matched">no hook</span>';
610
+ }
611
+
612
+ function triggeredCell(e) {
613
+ const nexum = nexumLandCell(e.indexing);
614
+ const hook = hookCell(e.hooks);
615
+ if ((!e.indexing && !e.hooks) || (nexum === "—" && !hook)) return "—";
616
+ return [nexum === "—" ? "" : nexum, hook].filter(Boolean).join(" ");
617
+ }
618
+
619
+ function fmtNum(n) {
620
+ return new Intl.NumberFormat().format(n ?? 0);
621
+ }
622
+
623
+ function triggerFor(orgId, objectType, contentType) {
624
+ const matches = (pushSummary || []).filter((row) =>
625
+ row.orgId === orgId && row.objectType === objectType && row.contentType === contentType &&
626
+ (!filterState.caller || row.caller === filterState.caller)
627
+ );
628
+ let nexumQueued = 0;
629
+ let nexumSkipped = 0;
630
+ let hooksQueued = 0;
631
+ let seen = 0;
632
+ for (const row of matches) {
633
+ nexumQueued += row.nexumQueued || 0;
634
+ nexumSkipped += row.nexumSkipped || 0;
635
+ hooksQueued += row.hooksQueued || 0;
636
+ seen += (row.created || 0) + (row.updated || 0) + (row.removed || 0);
637
+ }
638
+ const parts = [];
639
+ if (nexumQueued) parts.push("nexum queued " + fmtNum(nexumQueued));
640
+ else if (nexumSkipped) parts.push("nexum skipped " + fmtNum(nexumSkipped));
641
+ if (hooksQueued) parts.push("hook " + fmtNum(hooksQueued));
642
+ else if (seen) parts.push("no hook");
643
+ return parts.length ? parts.join(" · ") : "—";
644
+ }
645
+
646
+ function renderPushSummary() {
647
+ const box = $("push-summary");
648
+ if (lane !== "land") {
649
+ box.hidden = true;
650
+ return;
651
+ }
652
+ box.hidden = false;
653
+ if (matrixError) {
654
+ box.innerHTML = '<h2>Object × content type</h2><p class="matrix-note">' + escapeHtml(matrixError) + "</p>";
655
+ return;
656
+ }
657
+ if (!storedReport) {
658
+ box.innerHTML = '<h2>Object × content type</h2><p class="matrix-note">Loading stored counts…</p>';
659
+ return;
660
+ }
661
+ const win = storedReport.windows && storedReport.windows[matrixWindow];
662
+ const source = (win && win.rows) || [];
663
+ const rows = source.filter((row) => {
664
+ if (!row.contentType) return false;
665
+ if (filterState.org && row.orgId !== filterState.org) return false;
666
+ if (filterState.ot && row.objectType !== filterState.ot) return false;
667
+ if (filterState.ct && row.contentType !== filterState.ct) return false;
668
+ return (row.total || 0) > 0 || (row.changed || 0) > 0 || (row.created || 0) > 0;
669
+ });
670
+ const groups = new Map();
671
+ for (const row of rows) {
672
+ const key = row.orgId + "\0" + row.objectType;
673
+ let group = groups.get(key);
674
+ if (!group) {
675
+ group = { orgId: row.orgId, objectType: row.objectType, rows: [], total: 0, created: 0, changed: 0 };
676
+ groups.set(key, group);
677
+ }
678
+ group.rows.push(row);
679
+ group.total += row.total || 0;
680
+ group.created += row.created || 0;
681
+ group.changed += row.changed || 0;
682
+ }
683
+ const ordered = [...groups.values()].sort((a, b) => b.total - a.total || a.objectType.localeCompare(b.objectType));
684
+ let body = "";
685
+ if (!ordered.length) {
686
+ body = "<p class='matrix-note'>No stored records in this window for the current filters.</p>";
687
+ } else {
688
+ body = '<table class="list"><thead><tr>' +
689
+ "<th>orgId</th><th>Object type</th><th>Content type</th><th>Stored</th><th>New</th><th>Update</th><th>Triggered</th>" +
690
+ "</tr></thead><tbody>";
691
+ for (const group of ordered) {
692
+ body += '<tr class="group-head"><td colspan="7">' + escapeHtml(group.objectType) +
693
+ " · " + group.rows.length + " content types · stored " + fmtNum(group.total) +
694
+ "</td></tr>";
695
+ group.rows.sort((a, b) => (b.total || 0) - (a.total || 0) || String(a.contentType).localeCompare(String(b.contentType)));
696
+ for (const row of group.rows) {
697
+ const rowUpdated = Math.max(0, (row.changed || 0) - (row.created || 0));
698
+ body += "<tr><td class='mono'>" + escapeHtml(row.orgId) +
699
+ "</td><td class='mono'>" + escapeHtml(row.objectType) +
700
+ "</td><td class='mono'>" + escapeHtml(row.contentType) +
701
+ "</td><td class='mono'>" + fmtNum(row.total) +
702
+ "</td><td class='mono'>" + fmtNum(row.created) +
703
+ "</td><td class='mono'>" + fmtNum(rowUpdated) +
704
+ "</td><td class='mono trigger-cell'>" + escapeHtml(triggerFor(row.orgId, row.objectType, row.contentType)) +
705
+ "</td></tr>";
706
+ }
707
+ }
708
+ body += "</tbody></table>";
709
+ }
710
+ box.innerHTML = '<h2>Object × content type</h2>' +
711
+ '<div class="matrix-tabs">' +
712
+ '<button type="button" class="tab" data-matrix-window="1h" aria-selected="' + (matrixWindow === "1h") + '">Last hour</button>' +
713
+ '<button type="button" class="tab" data-matrix-window="24h" aria-selected="' + (matrixWindow === "24h") + '">Last 24 hours</button>' +
714
+ "</div>" +
715
+ '<p class="matrix-note">Each row is one object type and one content type. orgId is its own column. New and update count writes' +
716
+ (win && win.since ? " since " + escapeHtml(fmtWhen(win.since)) : "") +
717
+ ". Stored is the records on hand. Triggered counts only the writes this process has seen since it started.</p>" +
718
+ body;
719
+ box.querySelectorAll("[data-matrix-window]").forEach((btn) => {
720
+ btn.addEventListener("click", () => {
721
+ matrixWindow = btn.getAttribute("data-matrix-window") || "1h";
722
+ renderPushSummary();
723
+ });
724
+ });
725
+ }
726
+
727
+ async function loadMatrix() {
728
+ try {
729
+ const res = await fetch("/_live/api/data-changes?includeZeros=1");
730
+ const body = await res.json();
731
+ if (!res.ok || body.ok === false) throw new Error((body.error && body.error.message) || ("HTTP " + res.status));
732
+ storedReport = body;
733
+ matrixError = "";
734
+ } catch (err) {
735
+ matrixError = err instanceof Error ? err.message : String(err);
736
+ }
737
+ if (lane === "land") renderPushSummary();
738
+ }
739
+
557
740
  function modeBadge(mode, compact) {
558
741
  if (mode === "rules") {
559
742
  return compact
@@ -733,7 +916,8 @@ export function activityHtml() {
733
916
  fact("Content type", '<span class="mono">' + escapeHtml(t.ct || "—") + "</span>") +
734
917
  fact("Record", '<span class="mono">' + escapeHtml(e.recordId || "—") + "</span>") +
735
918
  fact("Revision", escapeHtml(e.revision)) +
736
- fact("Outcome", escapeHtml(e.outcome || "—")) +
919
+ fact("Kind", outcomeBadge(e.outcome)) +
920
+ fact("Triggered", triggeredCell(e)) +
737
921
  (e.indexing ? fact("Nexum", nexumLandFull(e.indexing)) : "") +
738
922
  "</dl>";
739
923
  }
@@ -825,8 +1009,8 @@ export function activityHtml() {
825
1009
  escapeHtml(e.caller || "—"),
826
1010
  ...typeCells(e),
827
1011
  '<span class="mono">' + escapeHtml(e.recordId) + "</span>",
828
- escapeHtml(e.outcome),
829
- nexumLandCell(e.indexing),
1012
+ outcomeBadge(e.outcome),
1013
+ triggeredCell(e),
830
1014
  ];
831
1015
  }
832
1016
  if (e.lane === "fetch") {
@@ -857,13 +1041,13 @@ export function activityHtml() {
857
1041
  }
858
1042
 
859
1043
  function headersForLane() {
860
- if (lane === "land") return ["Time", "Org", "Caller", "Object type", "Content type", "Record", "Outcome", "Nexum"];
861
- if (lane === "fetch") return ["Time", "Org", "Caller", "Object type", "Content type", "Mode", "Record", "Hit"];
862
- return ["Time", "Org", "Status", "How", "Object type", "Content type", "Snapshot", "Rel/Edges"];
1044
+ if (lane === "land") return ["Time", "orgId", "Caller", "Object type", "Content type", "Record", "Kind", "Triggered"];
1045
+ if (lane === "fetch") return ["Time", "orgId", "Caller", "Object type", "Content type", "Mode", "Record", "Hit"];
1046
+ return ["Time", "orgId", "Status", "How", "Object type", "Content type", "Snapshot", "Rel/Edges"];
863
1047
  }
864
1048
 
865
1049
  const LANE_HINT = {
866
- land: "<strong>Pushed</strong> — data written into Memorix. The <em>Nexum</em> column is short (<em>no-pol</em>, <em>queued</em>, …): whether this write was sent on to processing. Open a row for the full reason. Rules vs AI show on Processed after Nexum finishes.",
1050
+ land: "<strong>Pushed</strong> — newest first. <em>Kind</em> is new, update, or removed. <em>Triggered</em> is what this write started: Nexum (<em>no-pol</em>, <em>queued</em>, …) and a hook inbox notice. Open a row for the full reason. Rules vs AI show on Processed after Nexum finishes.",
867
1051
  index: "<strong>Processed</strong> — Nexum working on pushed data. How = <em>rules</em> (no AI) or <em>AI</em>. Rel/Edges = relationship plans / graph edges (full counts in the dialog).",
868
1052
  fetch: "<strong>Fetched</strong> — data read out of Memorix (up to " + capacity + ").",
869
1053
  };
@@ -975,6 +1159,7 @@ export function activityHtml() {
975
1159
  ].filter(Boolean).join(" ").toLowerCase();
976
1160
  if (!hay.includes(filterState.q)) return false;
977
1161
  }
1162
+ if (lane === "land" && filterState.outcome && e.outcome !== filterState.outcome) return false;
978
1163
  if (lane === "land" && filterState.nexum) {
979
1164
  const st = (e.indexing && e.indexing.status) || "";
980
1165
  if (st !== filterState.nexum) return false;
@@ -1012,6 +1197,7 @@ export function activityHtml() {
1012
1197
  const shown = filteredEntries();
1013
1198
  updateSummary(shown.length, laneSize());
1014
1199
  renderCharts();
1200
+ renderPushSummary();
1015
1201
  updatePauseBar();
1016
1202
 
1017
1203
  const wrap = $("table-wrap");
@@ -1068,6 +1254,7 @@ export function activityHtml() {
1068
1254
  if (seq !== loadSeq || requested !== lane) return;
1069
1255
  if (!actRes.ok || body.ok === false) throw new Error(body?.error?.message || ("HTTP " + actRes.status));
1070
1256
  liveEntries = body.entries || [];
1257
+ pushSummary = body.pushSummary || [];
1071
1258
  sizes = body.sizes || sizes;
1072
1259
  capacity = body.capacity || 10000;
1073
1260
  applyFreshness(body);
@@ -1097,7 +1284,9 @@ export function activityHtml() {
1097
1284
  }
1098
1285
 
1099
1286
  load();
1287
+ loadMatrix();
1100
1288
  setInterval(load, 1500);
1289
+ setInterval(loadMatrix, 20000);
1101
1290
  </script>
1102
1291
  </body>
1103
1292
  </html>`;
@@ -1 +1 @@
1
- {"version":3,"file":"activity-ui.js","sourceRoot":"","sources":["../src/activity-ui.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,UAAU,YAAY;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4kCD,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"activity-ui.js","sourceRoot":"","sources":["../src/activity-ui.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,UAAU,YAAY;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAywCD,CAAC;AACT,CAAC"}
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,EAAE,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAQxD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAgDvB,MAAM,MAAM,8BAA8B,GAAG,YAAY,GAAG;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAsK5E;AAED,MAAM,MAAM,0BAA0B,GAAG,8BAA8B,GAAG;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,0BAA0B;;;;;GAQ7E"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,EAAE,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAQxD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAkDvB,MAAM,MAAM,8BAA8B,GAAG,YAAY,GAAG;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAwK5E;AAED,MAAM,MAAM,0BAA0B,GAAG,8BAA8B,GAAG;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,0BAA0B;;;;;GAQ7E"}
package/dist/app.js CHANGED
@@ -44,6 +44,8 @@ import { registerAnalyticsCounterRoutes } from "./routes/analytics-counters.js";
44
44
  import { registerAnalyticsIndexRoutes } from "./routes/analytics-indexes.js";
45
45
  import { registerHookRoutes } from "./routes/hooks.js";
46
46
  import { registerDataChangesRoutes } from "./data-changes-routes.js";
47
+ import { registerHooksLiveRoutes } from "./hooks-live-routes.js";
48
+ import { registerCatalogLiveRoutes } from "./catalog-live-routes.js";
47
49
  import { registerActivityRoutes } from "./activity-routes.js";
48
50
  import { registerKnowledgeRoutes } from "./routes/knowledge.js";
49
51
  import { registerNexumMcpRoutes } from "./routes/nexum-mcp.js";
@@ -98,7 +100,7 @@ export async function createMemorixServiceApp(opts) {
98
100
  portKey: "service",
99
101
  portEnv: "MEMORIX_SERVICE_PORT",
100
102
  docsPath: "/api/openapi.json",
101
- description: "Sole HTTP composition root · /_live/activity · /_live/graph · /_live/changes",
103
+ description: "Sole HTTP composition root · /_live/catalog · /_live/activity · /_live/graph · /_live/changes · /_live/hooks",
102
104
  },
103
105
  getHealth: healthPayload,
104
106
  });
@@ -112,6 +114,8 @@ export async function createMemorixServiceApp(opts) {
112
114
  getMongoClient: () => platform.getMongoClient(),
113
115
  });
114
116
  registerActivityRoutes(app);
117
+ registerHooksLiveRoutes(app, platform);
118
+ registerCatalogLiveRoutes(app, platform.metadata);
115
119
  app.setErrorHandler((err, req, reply) => {
116
120
  const correlationId = req.correlationId ?? randomUUID();
117
121
  const errCode = err && typeof err === "object" && "code" in err