@x12i/memorix-service 3.12.4 → 3.13.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 (151) hide show
  1. package/README.md +1 -1
  2. package/dist/anomaly/catalog.d.ts +4 -0
  3. package/dist/anomaly/catalog.d.ts.map +1 -0
  4. package/dist/anomaly/catalog.js +315 -0
  5. package/dist/anomaly/catalog.js.map +1 -0
  6. package/dist/anomaly/descriptors.d.ts +11 -0
  7. package/dist/anomaly/descriptors.d.ts.map +1 -0
  8. package/dist/anomaly/descriptors.js +113 -0
  9. package/dist/anomaly/descriptors.js.map +1 -0
  10. package/dist/anomaly/index.d.ts +6 -0
  11. package/dist/anomaly/index.d.ts.map +1 -0
  12. package/dist/anomaly/index.js +5 -0
  13. package/dist/anomaly/index.js.map +1 -0
  14. package/dist/anomaly/records.d.ts +28 -0
  15. package/dist/anomaly/records.d.ts.map +1 -0
  16. package/dist/anomaly/records.js +384 -0
  17. package/dist/anomaly/records.js.map +1 -0
  18. package/dist/anomaly/types.d.ts +116 -0
  19. package/dist/anomaly/types.d.ts.map +1 -0
  20. package/dist/anomaly/types.js +24 -0
  21. package/dist/anomaly/types.js.map +1 -0
  22. package/dist/anomaly/values.d.ts +31 -0
  23. package/dist/anomaly/values.d.ts.map +1 -0
  24. package/dist/anomaly/values.js +171 -0
  25. package/dist/anomaly/values.js.map +1 -0
  26. package/dist/app.d.ts.map +1 -1
  27. package/dist/app.js +12 -0
  28. package/dist/app.js.map +1 -1
  29. package/dist/catalog-bridge.d.ts +18 -0
  30. package/dist/catalog-bridge.d.ts.map +1 -1
  31. package/dist/catalog-bridge.js +85 -0
  32. package/dist/catalog-bridge.js.map +1 -1
  33. package/dist/errors.d.ts +5 -0
  34. package/dist/errors.d.ts.map +1 -1
  35. package/dist/errors.js +18 -0
  36. package/dist/errors.js.map +1 -1
  37. package/dist/knowledge-upstream.d.ts +32 -0
  38. package/dist/knowledge-upstream.d.ts.map +1 -1
  39. package/dist/knowledge-upstream.js +86 -2
  40. package/dist/knowledge-upstream.js.map +1 -1
  41. package/dist/mcp/nexum-tools.d.ts +1 -1
  42. package/dist/mcp/nexum-tools.d.ts.map +1 -1
  43. package/dist/mcp/nexum-tools.js +39 -22
  44. package/dist/mcp/nexum-tools.js.map +1 -1
  45. package/dist/nexum-analysis/enqueue.d.ts.map +1 -1
  46. package/dist/nexum-analysis/enqueue.js +2 -1
  47. package/dist/nexum-analysis/enqueue.js.map +1 -1
  48. package/dist/nexum-analysis/knowledge-read.d.ts +45 -0
  49. package/dist/nexum-analysis/knowledge-read.d.ts.map +1 -0
  50. package/dist/nexum-analysis/knowledge-read.js +26 -0
  51. package/dist/nexum-analysis/knowledge-read.js.map +1 -0
  52. package/dist/openapi/openapi.json +18354 -17718
  53. package/dist/patches/access.d.ts +15 -0
  54. package/dist/patches/access.d.ts.map +1 -0
  55. package/dist/patches/access.js +27 -0
  56. package/dist/patches/access.js.map +1 -0
  57. package/dist/patches/engine.d.ts +67 -0
  58. package/dist/patches/engine.d.ts.map +1 -0
  59. package/dist/patches/engine.js +966 -0
  60. package/dist/patches/engine.js.map +1 -0
  61. package/dist/patches/guards.d.ts +23 -0
  62. package/dist/patches/guards.d.ts.map +1 -0
  63. package/dist/patches/guards.js +77 -0
  64. package/dist/patches/guards.js.map +1 -0
  65. package/dist/patches/legacy-rows.d.ts +56 -0
  66. package/dist/patches/legacy-rows.d.ts.map +1 -0
  67. package/dist/patches/legacy-rows.js +162 -0
  68. package/dist/patches/legacy-rows.js.map +1 -0
  69. package/dist/patches/ops.d.ts +24 -0
  70. package/dist/patches/ops.d.ts.map +1 -0
  71. package/dist/patches/ops.js +204 -0
  72. package/dist/patches/ops.js.map +1 -0
  73. package/dist/patches/parse.d.ts +5 -0
  74. package/dist/patches/parse.d.ts.map +1 -0
  75. package/dist/patches/parse.js +323 -0
  76. package/dist/patches/parse.js.map +1 -0
  77. package/dist/patches/paths.d.ts +38 -0
  78. package/dist/patches/paths.d.ts.map +1 -0
  79. package/dist/patches/paths.js +204 -0
  80. package/dist/patches/paths.js.map +1 -0
  81. package/dist/patches/service.d.ts +16 -0
  82. package/dist/patches/service.d.ts.map +1 -0
  83. package/dist/patches/service.js +128 -0
  84. package/dist/patches/service.js.map +1 -0
  85. package/dist/patches/store.d.ts +87 -0
  86. package/dist/patches/store.d.ts.map +1 -0
  87. package/dist/patches/store.js +27 -0
  88. package/dist/patches/store.js.map +1 -0
  89. package/dist/patches/types.d.ts +112 -0
  90. package/dist/patches/types.d.ts.map +1 -0
  91. package/dist/patches/types.js +5 -0
  92. package/dist/patches/types.js.map +1 -0
  93. package/dist/platform.d.ts +8 -0
  94. package/dist/platform.d.ts.map +1 -1
  95. package/dist/platform.js +98 -4
  96. package/dist/platform.js.map +1 -1
  97. package/dist/routes/anomaly.d.ts +5 -0
  98. package/dist/routes/anomaly.d.ts.map +1 -0
  99. package/dist/routes/anomaly.js +308 -0
  100. package/dist/routes/anomaly.js.map +1 -0
  101. package/dist/routes/data.d.ts.map +1 -1
  102. package/dist/routes/data.js +190 -202
  103. package/dist/routes/data.js.map +1 -1
  104. package/dist/routes/knowledge.d.ts.map +1 -1
  105. package/dist/routes/knowledge.js +6 -22
  106. package/dist/routes/knowledge.js.map +1 -1
  107. package/dist/routes/metadata.d.ts.map +1 -1
  108. package/dist/routes/metadata.js +28 -1
  109. package/dist/routes/metadata.js.map +1 -1
  110. package/dist/routes/patches.d.ts +7 -0
  111. package/dist/routes/patches.d.ts.map +1 -0
  112. package/dist/routes/patches.js +111 -0
  113. package/dist/routes/patches.js.map +1 -0
  114. package/dist/routes/subject-roots-backfill.d.ts +4 -0
  115. package/dist/routes/subject-roots-backfill.d.ts.map +1 -0
  116. package/dist/routes/subject-roots-backfill.js +15 -0
  117. package/dist/routes/subject-roots-backfill.js.map +1 -0
  118. package/dist/single-read-discriminator.d.ts +17 -0
  119. package/dist/single-read-discriminator.d.ts.map +1 -0
  120. package/dist/single-read-discriminator.js +67 -0
  121. package/dist/single-read-discriminator.js.map +1 -0
  122. package/dist/subject-roots-backfill.d.ts +24 -0
  123. package/dist/subject-roots-backfill.d.ts.map +1 -0
  124. package/dist/subject-roots-backfill.js +133 -0
  125. package/dist/subject-roots-backfill.js.map +1 -0
  126. package/dist/write-precondition.d.ts +5 -1
  127. package/dist/write-precondition.d.ts.map +1 -1
  128. package/dist/write-precondition.js +11 -3
  129. package/dist/write-precondition.js.map +1 -1
  130. package/dist/writes/content-write.d.ts +170 -0
  131. package/dist/writes/content-write.d.ts.map +1 -0
  132. package/dist/writes/content-write.js +569 -0
  133. package/dist/writes/content-write.js.map +1 -0
  134. package/dist/writes/effects.d.ts +13 -0
  135. package/dist/writes/effects.d.ts.map +1 -0
  136. package/dist/writes/effects.js +28 -0
  137. package/dist/writes/effects.js.map +1 -0
  138. package/dist/writes/error-shape.d.ts +11 -0
  139. package/dist/writes/error-shape.d.ts.map +1 -0
  140. package/dist/writes/error-shape.js +100 -0
  141. package/dist/writes/error-shape.js.map +1 -0
  142. package/dist/writes/receipt-store.d.ts +81 -0
  143. package/dist/writes/receipt-store.d.ts.map +1 -0
  144. package/dist/writes/receipt-store.js +171 -0
  145. package/dist/writes/receipt-store.js.map +1 -0
  146. package/dist/writes/worker.d.ts +9 -0
  147. package/dist/writes/worker.d.ts.map +1 -0
  148. package/dist/writes/worker.js +20 -0
  149. package/dist/writes/worker.js.map +1 -0
  150. package/openapi/openapi.json +18354 -17718
  151. package/package.json +4 -4
@@ -0,0 +1,308 @@
1
+ import { resolveScope } from "../request-scope.js";
2
+ import { ServiceError } from "../errors.js";
3
+ import { ANOMALY_TOOLS, detectContentTypeAnomalies, detectObjectTypeAnomalies, detectRecordAnomalies, objectTypesFromEffective, } from "../anomaly/index.js";
4
+ const CATEGORIES = new Set(["entity", "event", "knowledge"]);
5
+ function readInt(value, name, fallback, min, max) {
6
+ if (value === undefined)
7
+ return fallback;
8
+ if (typeof value !== "number" || !Number.isInteger(value)) {
9
+ throw new ServiceError("VALIDATION", `${name} must be an integer`, 400);
10
+ }
11
+ if (value < min || value > max) {
12
+ throw new ServiceError("VALIDATION", `${name} must be between ${min} and ${max}`, 400);
13
+ }
14
+ return value;
15
+ }
16
+ function readSupport(value) {
17
+ if (value === undefined)
18
+ return undefined;
19
+ if (typeof value !== "number" || value < 0.5 || value > 0.95) {
20
+ throw new ServiceError("VALIDATION", "presenceSupport must be a number from 0.5 to 0.95", 400);
21
+ }
22
+ return value;
23
+ }
24
+ function readChecks(value) {
25
+ if (value === undefined)
26
+ return ["descriptor", "peer"];
27
+ if (!Array.isArray(value) || value.length === 0) {
28
+ throw new ServiceError("VALIDATION", "checks must list descriptor, peer, or both", 400);
29
+ }
30
+ const out = [];
31
+ for (const item of value) {
32
+ if (item !== "descriptor" && item !== "peer") {
33
+ throw new ServiceError("VALIDATION", "checks may contain only descriptor and peer", 400);
34
+ }
35
+ if (!out.includes(item))
36
+ out.push(item);
37
+ }
38
+ return out;
39
+ }
40
+ function readId(value, name) {
41
+ if (value === undefined)
42
+ return undefined;
43
+ if (typeof value !== "string" || !value.trim()) {
44
+ throw new ServiceError("VALIDATION", `${name} must be a non-empty string`, 400);
45
+ }
46
+ return value.trim();
47
+ }
48
+ function readRecords(value) {
49
+ if (value === undefined)
50
+ return undefined;
51
+ if (!Array.isArray(value)) {
52
+ throw new ServiceError("VALIDATION", "records must be an array", 400);
53
+ }
54
+ return value.map((item, index) => {
55
+ if (!item || typeof item !== "object" || Array.isArray(item)) {
56
+ throw new ServiceError("VALIDATION", `records[${index}] must be an object`, 400);
57
+ }
58
+ const body = item;
59
+ const objectType = readId(body.objectType, `records[${index}].objectType`);
60
+ const contentType = readId(body.contentType, `records[${index}].contentType`);
61
+ if (!objectType || !contentType) {
62
+ throw new ServiceError("VALIDATION", `records[${index}] needs objectType and contentType`, 400);
63
+ }
64
+ const recordId = body.recordId === undefined ? undefined : readId(body.recordId, `records[${index}].recordId`);
65
+ return {
66
+ ...(recordId ? { recordId } : {}),
67
+ objectType,
68
+ contentType,
69
+ ...(body.data !== undefined ? { data: body.data } : {}),
70
+ ...(body.analytics !== undefined ? { analytics: body.analytics } : {}),
71
+ ...(body.enrichment !== undefined ? { enrichment: body.enrichment } : {}),
72
+ ...(body.insights !== undefined ? { insights: body.insights } : {}),
73
+ };
74
+ });
75
+ }
76
+ function loadObjectTypes(platform, agentIds) {
77
+ const effective = platform.metadata.resolveEffective(agentIds);
78
+ return objectTypesFromEffective(effective.effective ?? []);
79
+ }
80
+ function selectPairs(descriptors, objectType, contentType) {
81
+ const unique = new Map();
82
+ for (const descriptor of descriptors) {
83
+ if (!unique.has(descriptor.id))
84
+ unique.set(descriptor.id, descriptor);
85
+ }
86
+ let list = [...unique.values()];
87
+ if (objectType) {
88
+ list = list.filter((item) => item.id === objectType);
89
+ if (list.length === 0) {
90
+ throw new ServiceError("VALIDATION", `Unknown object type "${objectType}"`, 400);
91
+ }
92
+ }
93
+ if (contentType) {
94
+ const hosts = list.filter((item) => item.contentTypes.some((ct) => ct.id === contentType));
95
+ if (hosts.length === 0) {
96
+ throw new ServiceError("VALIDATION", objectType
97
+ ? `Content type "${contentType}" is not declared on "${objectType}"`
98
+ : `Content type "${contentType}" is not declared on these object types`, 400);
99
+ }
100
+ return hosts;
101
+ }
102
+ return list;
103
+ }
104
+ function filterRecords(records, objectType, contentType) {
105
+ return records.filter((record) => {
106
+ if (objectType && record.objectType !== objectType)
107
+ return false;
108
+ if (contentType && record.contentType !== contentType)
109
+ return false;
110
+ return true;
111
+ });
112
+ }
113
+ function toAnomalyRecord(record) {
114
+ return {
115
+ recordId: record.recordId,
116
+ objectType: record.objectType,
117
+ contentType: record.contentType,
118
+ data: record.data,
119
+ ...(record.analytics ? { analytics: record.analytics } : {}),
120
+ ...(record.enrichment ? { enrichment: record.enrichment } : {}),
121
+ ...(record.insights ? { insights: record.insights } : {}),
122
+ };
123
+ }
124
+ async function scanStored(platform, scope, descriptors, maxRecords) {
125
+ if (!platform.client) {
126
+ throw new ServiceError("CANONICAL_PORT_MISSING", "Scanning stored records requires Mongo. Pass records[] to check a batch without a database.", 503);
127
+ }
128
+ const reader = platform.portsFor(scope).reader;
129
+ const pairs = [];
130
+ for (const objectType of descriptors) {
131
+ if (!CATEGORIES.has(objectType.dataCategory))
132
+ continue;
133
+ for (const contentType of objectType.contentTypes) {
134
+ pairs.push({
135
+ objectType: objectType.id,
136
+ contentType: contentType.id,
137
+ dataCategory: objectType.dataCategory,
138
+ });
139
+ }
140
+ }
141
+ pairs.sort((a, b) => a.objectType.localeCompare(b.objectType) || a.contentType.localeCompare(b.contentType));
142
+ const records = [];
143
+ let truncated = false;
144
+ let complete = true;
145
+ for (const pair of pairs) {
146
+ if (records.length >= maxRecords) {
147
+ truncated = true;
148
+ complete = false;
149
+ break;
150
+ }
151
+ let cursor;
152
+ for (;;) {
153
+ const page = await reader.listContent(scope, {
154
+ objectType: pair.objectType,
155
+ contentType: pair.contentType,
156
+ dataCategory: pair.dataCategory,
157
+ limit: Math.min(200, maxRecords - records.length),
158
+ cursor,
159
+ });
160
+ for (const item of page.items)
161
+ records.push(toAnomalyRecord(item));
162
+ if (!page.nextCursor || records.length >= maxRecords) {
163
+ if (page.nextCursor) {
164
+ truncated = true;
165
+ complete = false;
166
+ }
167
+ break;
168
+ }
169
+ cursor = page.nextCursor;
170
+ }
171
+ }
172
+ return { records, truncated, complete };
173
+ }
174
+ function optionsFrom(body, scanned, inline) {
175
+ const presenceSupport = readSupport(body.presenceSupport);
176
+ const checkRequired = body.checkRequiredContentTypes === undefined
177
+ ? Boolean(scanned?.complete)
178
+ : body.checkRequiredContentTypes === true;
179
+ if (body.checkRequiredContentTypes !== undefined &&
180
+ typeof body.checkRequiredContentTypes !== "boolean") {
181
+ throw new ServiceError("VALIDATION", "checkRequiredContentTypes must be a boolean", 400);
182
+ }
183
+ return {
184
+ checks: readChecks(body.checks),
185
+ limit: readInt(body.limit, "limit", 100, 1, 500),
186
+ minCohort: readInt(body.minCohort, "minCohort", 4, 2, 100),
187
+ ...(presenceSupport !== undefined ? { presenceSupport } : {}),
188
+ checkRequiredContentTypes: inline ? checkRequired : Boolean(scanned?.complete && checkRequired),
189
+ truncated: Boolean(scanned?.truncated),
190
+ };
191
+ }
192
+ /** Anomaly tools. Read-only: descriptors vs records, and peers among records, content types, and object types. */
193
+ export async function registerAnomalyRoutes(app, platform) {
194
+ app.get("/api/intelligence/anomalies/tools", async (req) => {
195
+ const scope = resolveScope(req);
196
+ return { scope, autoInstall: false, tools: ANOMALY_TOOLS };
197
+ });
198
+ app.post("/api/intelligence/anomalies/records", async (req) => {
199
+ const scope = resolveScope(req);
200
+ const body = (req.body ?? {});
201
+ const loaded = await loadBatch(platform, scope, body, "records");
202
+ const report = detectRecordAnomalies(loaded.catalog, loaded.records ?? [], loaded.options);
203
+ return {
204
+ scope,
205
+ autoInstall: false,
206
+ tool: "records",
207
+ checks: loaded.options.checks ?? ["descriptor", "peer"],
208
+ source: loaded.source,
209
+ ...report,
210
+ };
211
+ });
212
+ app.post("/api/intelligence/anomalies/object-types", async (req) => {
213
+ const scope = resolveScope(req);
214
+ const body = (req.body ?? {});
215
+ const loaded = await loadBatch(platform, scope, body, "catalog");
216
+ const limit = loaded.options.limit ?? 100;
217
+ const report = detectObjectTypeAnomalies(loaded.catalog, loaded.records, { ...loaded.options, limit: 500 });
218
+ const matched = report.items.filter((item) => loaded.hosts.has(item.objectType));
219
+ report.limited = matched.length > limit;
220
+ report.anomalous = matched.length;
221
+ report.items = matched.slice(0, limit);
222
+ return {
223
+ scope,
224
+ autoInstall: false,
225
+ tool: "object-types",
226
+ checks: loaded.options.checks ?? ["descriptor", "peer"],
227
+ source: loaded.source,
228
+ ...report,
229
+ };
230
+ });
231
+ app.post("/api/intelligence/anomalies/content-types", async (req) => {
232
+ const scope = resolveScope(req);
233
+ const body = (req.body ?? {});
234
+ const loaded = await loadBatch(platform, scope, body, "catalog");
235
+ const limit = loaded.options.limit ?? 100;
236
+ const report = detectContentTypeAnomalies(loaded.catalog, loaded.records, { ...loaded.options, limit: 500 });
237
+ const allowed = loaded.contentType
238
+ ? new Set([loaded.contentType])
239
+ : new Set([...loaded.hosts].flatMap((id) => loaded.catalog.find((ot) => ot.id === id)?.contentTypes.map((ct) => ct.id) ?? []));
240
+ const matched = report.items.filter((item) => allowed.has(item.contentType));
241
+ report.limited = matched.length > limit;
242
+ report.anomalous = matched.length;
243
+ report.items = matched.slice(0, limit);
244
+ return {
245
+ scope,
246
+ autoInstall: false,
247
+ tool: "content-types",
248
+ checks: loaded.options.checks ?? ["descriptor", "peer"],
249
+ source: loaded.source,
250
+ ...report,
251
+ };
252
+ });
253
+ }
254
+ async function loadBatch(platform, scope, body, mode) {
255
+ const objectType = readId(body.objectType, "objectType");
256
+ const contentType = readId(body.contentType, "contentType");
257
+ const posted = readRecords(body.records);
258
+ const catalog = loadObjectTypes(platform, scope.agentIds);
259
+ const selected = selectPairs(catalog, objectType, contentType);
260
+ const hosts = new Set(selected.map((item) => item.id));
261
+ if (posted) {
262
+ const maxRecords = readInt(body.maxRecords, "maxRecords", Math.min(Math.max(posted.length, 1), 1000), 1, 1000);
263
+ const filtered = filterRecords(posted, objectType, contentType);
264
+ const truncated = filtered.length > maxRecords;
265
+ const records = truncated ? filtered.slice(0, maxRecords) : filtered;
266
+ return {
267
+ catalog,
268
+ hosts,
269
+ ...(contentType ? { contentType } : {}),
270
+ records,
271
+ options: optionsFrom(body, { truncated, complete: !truncated && body.checkRequiredContentTypes === true }, true),
272
+ source: "records",
273
+ };
274
+ }
275
+ const scan = readScan(body.scan);
276
+ if (mode === "records" && scan === false) {
277
+ throw new ServiceError("VALIDATION", "records[] is required when scan is false", 400);
278
+ }
279
+ if (mode === "catalog" && scan !== true && (scan === false || !platform.client)) {
280
+ return {
281
+ catalog,
282
+ hosts,
283
+ ...(contentType ? { contentType } : {}),
284
+ records: null,
285
+ options: optionsFrom(body, null, false),
286
+ source: "descriptors",
287
+ };
288
+ }
289
+ const maxRecords = readInt(body.maxRecords, "maxRecords", 200, 1, 1000);
290
+ const scanned = await scanStored(platform, scope, selected, maxRecords);
291
+ return {
292
+ catalog,
293
+ hosts,
294
+ ...(contentType ? { contentType } : {}),
295
+ records: scanned.records,
296
+ options: optionsFrom(body, scanned, false),
297
+ source: "store",
298
+ };
299
+ }
300
+ function readScan(value) {
301
+ if (value === undefined)
302
+ return undefined;
303
+ if (typeof value !== "boolean") {
304
+ throw new ServiceError("VALIDATION", "scan must be a boolean", 400);
305
+ }
306
+ return value;
307
+ }
308
+ //# sourceMappingURL=anomaly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly.js","sourceRoot":"","sources":["../../src/routes/anomaly.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA+FtD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAg5Bf"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAmKtD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAs1Bf"}