@x12i/memorix-retrieval 1.22.0 → 1.23.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 (146) hide show
  1. package/README.md +31 -0
  2. package/catalox-seeds/inputs/entity-descriptors/assets.json +7 -7
  3. package/catalox-seeds/inputs/entity-descriptors/vulnerabilities.json +7 -7
  4. package/catalox-seeds/inputs/item-descriptors/asset-detail-item.json +2 -2
  5. package/catalox-seeds/inputs/item-descriptors/topology-subnet-detail-item.json +2 -2
  6. package/catalox-seeds/inputs/item-descriptors/vulnerability-detail-item.json +2 -2
  7. package/catalox-seeds/inputs/list-descriptors/critical-vulnerabilities-slice.json +1 -1
  8. package/catalox-seeds/inputs/manifest.json +1 -1
  9. package/catalox-seeds/inputs/memorix-catalog-ids.json +1 -1
  10. package/catalox-seeds/memorix-retrieval-descriptors.manifest.json +33 -33
  11. package/dist/client/catalox-mongo-bootstrap.d.ts +13 -0
  12. package/dist/client/catalox-mongo-bootstrap.d.ts.map +1 -0
  13. package/dist/client/catalox-mongo-bootstrap.js +22 -0
  14. package/dist/client/catalox-mongo-bootstrap.js.map +1 -0
  15. package/dist/client/create-stack-from-env.js +2 -2
  16. package/dist/client/create-stack-from-env.js.map +1 -1
  17. package/dist/client/types.d.ts +11 -8
  18. package/dist/client/types.d.ts.map +1 -1
  19. package/dist/data/record-display-name.d.ts.map +1 -1
  20. package/dist/data/record-display-name.js +4 -0
  21. package/dist/data/record-display-name.js.map +1 -1
  22. package/dist/data/record-display-name.test.js +23 -0
  23. package/dist/data/record-display-name.test.js.map +1 -1
  24. package/dist/data/record-identity.d.ts +2 -2
  25. package/dist/data/record-identity.d.ts.map +1 -1
  26. package/dist/data/record-identity.js +23 -20
  27. package/dist/data/record-identity.js.map +1 -1
  28. package/dist/data/record-info.d.ts +2 -0
  29. package/dist/data/record-info.d.ts.map +1 -1
  30. package/dist/data/record-info.js +10 -0
  31. package/dist/data/record-info.js.map +1 -1
  32. package/dist/data/record-info.test.js +1 -0
  33. package/dist/data/record-info.test.js.map +1 -1
  34. package/dist/descriptors/catalog-ids.d.ts +2 -1
  35. package/dist/descriptors/catalog-ids.d.ts.map +1 -1
  36. package/dist/descriptors/catalog-ids.js +2 -1
  37. package/dist/descriptors/catalog-ids.js.map +1 -1
  38. package/dist/descriptors/descriptor-types.d.ts +14 -2
  39. package/dist/descriptors/descriptor-types.d.ts.map +1 -1
  40. package/dist/descriptors/internal-object-types.d.ts +3 -0
  41. package/dist/descriptors/internal-object-types.d.ts.map +1 -0
  42. package/dist/descriptors/internal-object-types.js +7 -0
  43. package/dist/descriptors/internal-object-types.js.map +1 -0
  44. package/dist/descriptors/load-list-descriptor.d.ts.map +1 -1
  45. package/dist/descriptors/load-list-descriptor.js +2 -1
  46. package/dist/descriptors/load-list-descriptor.js.map +1 -1
  47. package/dist/descriptors/normalize-list-sort.d.ts +5 -0
  48. package/dist/descriptors/normalize-list-sort.d.ts.map +1 -0
  49. package/dist/descriptors/normalize-list-sort.js +20 -0
  50. package/dist/descriptors/normalize-list-sort.js.map +1 -0
  51. package/dist/descriptors/validate-descriptor.d.ts +1 -0
  52. package/dist/descriptors/validate-descriptor.d.ts.map +1 -1
  53. package/dist/descriptors/validate-descriptor.js +25 -1
  54. package/dist/descriptors/validate-descriptor.js.map +1 -1
  55. package/dist/explorer/collection-records.d.ts +3 -2
  56. package/dist/explorer/collection-records.d.ts.map +1 -1
  57. package/dist/explorer/collection-records.js +4 -3
  58. package/dist/explorer/collection-records.js.map +1 -1
  59. package/dist/explorer/entity-graph.d.ts +2 -0
  60. package/dist/explorer/entity-graph.d.ts.map +1 -1
  61. package/dist/explorer/entity-graph.js +7 -1
  62. package/dist/explorer/entity-graph.js.map +1 -1
  63. package/dist/explorer/health.d.ts.map +1 -1
  64. package/dist/explorer/health.js +65 -30
  65. package/dist/explorer/health.js.map +1 -1
  66. package/dist/explorer/slice-index.d.ts.map +1 -1
  67. package/dist/explorer/slice-index.js +19 -11
  68. package/dist/explorer/slice-index.js.map +1 -1
  69. package/dist/explorer/unified-inventory.d.ts +3 -1
  70. package/dist/explorer/unified-inventory.d.ts.map +1 -1
  71. package/dist/explorer/unified-inventory.js +9 -2
  72. package/dist/explorer/unified-inventory.js.map +1 -1
  73. package/dist/index.d.ts +2 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +2 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/mongo/env.d.ts +2 -0
  78. package/dist/mongo/env.d.ts.map +1 -1
  79. package/dist/mongo/env.js +4 -0
  80. package/dist/mongo/env.js.map +1 -1
  81. package/dist/retrieval/fetch-full-record.d.ts +22 -0
  82. package/dist/retrieval/fetch-full-record.d.ts.map +1 -0
  83. package/dist/retrieval/fetch-full-record.js +68 -0
  84. package/dist/retrieval/fetch-full-record.js.map +1 -0
  85. package/dist/retrieval/fetch-item.js +4 -0
  86. package/dist/retrieval/fetch-item.js.map +1 -1
  87. package/dist/retrieval/fetch-list.d.ts.map +1 -1
  88. package/dist/retrieval/fetch-list.js +16 -7
  89. package/dist/retrieval/fetch-list.js.map +1 -1
  90. package/dist/retrieval/fetch-workspace-list.d.ts.map +1 -1
  91. package/dist/retrieval/fetch-workspace-list.js +18 -7
  92. package/dist/retrieval/fetch-workspace-list.js.map +1 -1
  93. package/dist/retrieval/graph-run-buckets.js +1 -1
  94. package/dist/retrieval/graph-run-buckets.js.map +1 -1
  95. package/dist/retrieval/graph-run-buckets.test.js +1 -1
  96. package/dist/retrieval/graph-run-buckets.test.js.map +1 -1
  97. package/dist/retrieval/graph-run-filters.d.ts.map +1 -1
  98. package/dist/retrieval/graph-run-filters.js +1 -1
  99. package/dist/retrieval/graph-run-filters.js.map +1 -1
  100. package/dist/retrieval/graph-run-filters.test.js +11 -11
  101. package/dist/retrieval/graph-run-filters.test.js.map +1 -1
  102. package/dist/retrieval/processing-overview.test.js +2 -2
  103. package/dist/retrieval/processing-overview.test.js.map +1 -1
  104. package/dist/retrieval/resolve-filters.d.ts.map +1 -1
  105. package/dist/retrieval/resolve-filters.js +0 -4
  106. package/dist/retrieval/resolve-filters.js.map +1 -1
  107. package/dist/retrieval/resolve-list-analytics.d.ts +5 -0
  108. package/dist/retrieval/resolve-list-analytics.d.ts.map +1 -0
  109. package/dist/retrieval/resolve-list-analytics.js +63 -0
  110. package/dist/retrieval/resolve-list-analytics.js.map +1 -0
  111. package/dist/retrieval/resolve-pagination-driver.js +2 -2
  112. package/dist/retrieval/resolve-pagination-driver.js.map +1 -1
  113. package/dist/retrieval/resolve-sort.d.ts +8 -6
  114. package/dist/retrieval/resolve-sort.d.ts.map +1 -1
  115. package/dist/retrieval/resolve-sort.js +38 -15
  116. package/dist/retrieval/resolve-sort.js.map +1 -1
  117. package/dist/tests/collection-parser.test.js +14 -0
  118. package/dist/tests/collection-parser.test.js.map +1 -1
  119. package/dist/tests/create-stack-from-env.test.js +4 -3
  120. package/dist/tests/create-stack-from-env.test.js.map +1 -1
  121. package/dist/tests/entity-graph.test.js +45 -0
  122. package/dist/tests/entity-graph.test.js.map +1 -1
  123. package/dist/tests/env.test.js +9 -1
  124. package/dist/tests/env.test.js.map +1 -1
  125. package/dist/tests/fetch-item.test.js +32 -0
  126. package/dist/tests/fetch-item.test.js.map +1 -1
  127. package/dist/tests/fetch-list.test.js +3 -3
  128. package/dist/tests/fetch-list.test.js.map +1 -1
  129. package/dist/tests/fetch-record-info.test.js +1 -0
  130. package/dist/tests/fetch-record-info.test.js.map +1 -1
  131. package/dist/tests/fixtures.js +3 -3
  132. package/dist/tests/fixtures.js.map +1 -1
  133. package/dist/tests/internal-object-types.test.d.ts +2 -0
  134. package/dist/tests/internal-object-types.test.d.ts.map +1 -0
  135. package/dist/tests/internal-object-types.test.js +16 -0
  136. package/dist/tests/internal-object-types.test.js.map +1 -0
  137. package/dist/tests/raw-reads.test.d.ts +2 -0
  138. package/dist/tests/raw-reads.test.d.ts.map +1 -0
  139. package/dist/tests/raw-reads.test.js +122 -0
  140. package/dist/tests/raw-reads.test.js.map +1 -0
  141. package/dist/tests/unified-inventory.test.js +1 -1
  142. package/dist/tests/unified-inventory.test.js.map +1 -1
  143. package/docs/EXPLORER-HOST-APIS.md +1 -1
  144. package/docs/MEMORIX-CATALOX-CONTRACTS.md +1 -1
  145. package/docs/MEMORIX-DATABASE-CONVENTIONS.md +27 -39
  146. package/package.json +2 -2
@@ -209,57 +209,45 @@ All peers should implement the same precedence so local, CI, and production beha
209
209
 
210
210
  ## Document shape
211
211
 
212
- ### Memorix 2.0 record (entity / event / knowledge)
212
+ ### Clean Memorix record (entity / event / knowledge)
213
213
 
214
- All Memorix records use the grouped envelope introduced in Memorix 2.0. Version string: `memorix-record.2.0`.
214
+ All Memorix records use the **clean envelope** format. See [`docs/memorix-format.md`](../../docs/memorix-format.md) for the full specification.
215
+
216
+ The root holds only `_id`, `recordId`, `concept`, the five data buckets, and `_system`. There is no `identity` block, root `lifecycle`, `sourceFacts`, or `concept.name`.
215
217
 
216
218
  ```json
217
219
  {
218
220
  "_id": "<ObjectId>",
219
- "identity": {
220
- "recordId": "<stable logical id>",
221
- "target": "entity | event | knowledge",
222
- "targetId": "<target-specific id>",
223
- "objectType": "<object type>",
224
- "contentType": "<snapshots | core | scoped | inferences | ...>",
225
- "version": "memorix-record.2.0"
226
- },
227
- "lifecycle": {
228
- "createdAt": "<ISO-8601>",
229
- "modifiedAt": "<ISO-8601>",
230
- "capturedAt": "<ISO-8601 optional>",
231
- "status": "active"
232
- },
221
+ "recordId": "<stable logical id>",
233
222
  "concept": {
234
- "kind": "<readable kind>",
235
- "name": "<primary readable label>",
236
- "title": "<optional>"
223
+ "identifier": { "kind": "<idKind>", "<idKind>": "<value>" },
224
+ "title": "<human-readable display name>"
237
225
  },
238
226
  "data": { "... domain fields ..." },
239
- "associatedData": { "... snapshot-only related context ..." },
240
- "analytics": { "... snapshot-only numeric rollups ..." },
241
- "insights": { "... snapshot-only interpretations ..." },
242
- "sourceFacts": { "schemaVersion": "sourceFacts.v1", "values": {} },
227
+ "associatedData": { "... related entity references ..." },
228
+ "analytics": { "... rollups and counts ..." },
229
+ "enrichment": { "... external feed values ..." },
230
+ "insights": { "... AI-generated judgments ..." },
243
231
  "_system": {
244
- "memorix": {},
245
- "provenance": {},
246
- "processing": {},
247
- "narratives": {}
232
+ "provenance": { "... source lineage ..." },
233
+ "lifecycle": [{ "process": "enriched", "processedAt": "<ISO-8601>" }],
234
+ "_graphRuns": { "<graphId>": { "... graph-run stamp ..." } },
235
+ "_jobTypeRuns": { "<jobTypeId>": { "... job-type stamp ..." } }
248
236
  }
249
237
  }
250
238
  ```
251
239
 
252
- | Block | Required | Notes |
253
- |-------|----------|-------|
254
- | `identity` | Yes | Use `identity.recordId` and `identity.targetId` not root `entityId` / `eventId` / `recordId` |
255
- | `lifecycle` | Recommended | Timestamps and record status |
256
- | `concept` | Snapshots | Readable core label |
257
- | `data` | Yes | Domain payload; all content types |
258
- | `associatedData` / `analytics` / `insights` | Snapshots only | Full materialized view blocks |
259
- | `sourceFacts` | Optional | Raw/opaque source values |
260
- | `_system` | Recommended | Memorix-managed metadata, provenance, processing |
240
+ | Field / block | Required | Notes |
241
+ |---------------|----------|-------|
242
+ | `recordId` | Yes | Stable logical record id at root not nested under `identity` |
243
+ | `concept` | Yes | `identifier` (discriminated by `kind`) + `title`; no `concept.name` |
244
+ | `data` | Yes | Domain payload |
245
+ | `associatedData` / `analytics` / `enrichment` / `insights` | Optional | Each value lives in exactly one bucket (five-bucket rule) |
246
+ | `_system` | Recommended | Provenance, lifecycle events, `_graphRuns`, `_jobTypeRuns` |
247
+
248
+ `objectType` is implied by collection name. `target` (`entity` / `event` / `knowledge`) is implied by database name.
261
249
 
262
- Legacy root fields (`entityId`, `eventId`, `recordId`, `displayName`, `snapshotId`, `_memorix`, root `idField`, etc.) **must not** be written. Provenance belongs under `_system.provenance`.
250
+ **Legacy fields** (`identity`, root `lifecycle`, `sourceFacts`, `concept.name`, flat `entityId` / `eventId`, root `_graphRuns`, etc.) **must not be written**. Provenance belongs under `_system.provenance`.
263
251
 
264
252
  ### Provenance (under `_system.provenance`)
265
253
 
@@ -313,7 +301,7 @@ Tools that enrich Memorix from source data (e.g. `@x12i/memorix-completion`) use
313
301
  "collection": "vulnerabilities-information"
314
302
  },
315
303
  "match": {
316
- "targetPath": "entityId",
304
+ "targetPath": "recordId",
317
305
  "sourcePath": "vulnerabilityId"
318
306
  },
319
307
  "writeRoot": "data",
@@ -330,7 +318,7 @@ Tools that enrich Memorix from source data (e.g. `@x12i/memorix-completion`) use
330
318
  | `targetSelector.sourceCollection` | Must match record's source lineage |
331
319
  | `source.databaseName` | Source DB; use `{{ENV.*}}` for env-driven deploys |
332
320
  | `source.collection` | Source collection to read from |
333
- | `match.targetPath` | Path on Memorix record (usually `entityId` or `eventId`) |
321
+ | `match.targetPath` | Path on the Memorix record `recordId`, `concept.identifier.<kind>`, or legacy aliases `entityId` / `eventId` (resolved to `recordId`) |
334
322
  | `match.sourcePath` | Path on source document |
335
323
  | `writeRoot` | Always `"data"` — never overwrite envelope fields via completion |
336
324
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@x12i/memorix-retrieval",
3
- "version": "1.22.0",
3
+ "version": "1.23.0",
4
4
  "description": "Read-side runtime data tier for Memorix: inventory, lists, items, slices, graph, and health",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -38,7 +38,7 @@
38
38
  "@x12i/helpers": "^2.0.0",
39
39
  "@x12i/logxer": "^5.1.0",
40
40
  "@x12i/memorix-agents": "^1.2.1",
41
- "@x12i/memorix-descriptors": "^1.17.0",
41
+ "@x12i/memorix-descriptors": "^1.19.0",
42
42
  "@x12i/xronox": "^3.9.0"
43
43
  },
44
44
  "devDependencies": {