@x12i/memorix-retrieval 1.4.0 → 1.5.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 (62) hide show
  1. package/catalox-seeds/inputs/list-descriptors/memorix-workspace-records-list.json +22 -0
  2. package/catalox-seeds/inputs/manifest.json +3 -1
  3. package/catalox-seeds/inputs/memorix-list-descriptors.catalog.json +22 -0
  4. package/catalox-seeds/inputs/memorix-list-descriptors.items.json +22 -0
  5. package/catalox-seeds/memorix-retrieval-descriptors.manifest.json +34 -0
  6. package/dist/client/types.d.ts +44 -0
  7. package/dist/client/types.d.ts.map +1 -1
  8. package/dist/descriptors/descriptor-types.d.ts +31 -10
  9. package/dist/descriptors/descriptor-types.d.ts.map +1 -1
  10. package/dist/descriptors/load-list-descriptor.d.ts +5 -1
  11. package/dist/descriptors/load-list-descriptor.d.ts.map +1 -1
  12. package/dist/descriptors/load-list-descriptor.js +23 -3
  13. package/dist/descriptors/load-list-descriptor.js.map +1 -1
  14. package/dist/descriptors/resolve-default-descriptors.d.ts +2 -2
  15. package/dist/descriptors/resolve-default-descriptors.d.ts.map +1 -1
  16. package/dist/descriptors/resolve-default-descriptors.js +2 -2
  17. package/dist/descriptors/resolve-default-descriptors.js.map +1 -1
  18. package/dist/descriptors/validate-descriptor.d.ts +6 -2
  19. package/dist/descriptors/validate-descriptor.d.ts.map +1 -1
  20. package/dist/descriptors/validate-descriptor.js +31 -5
  21. package/dist/descriptors/validate-descriptor.js.map +1 -1
  22. package/dist/index.d.ts +4 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/retrieval/compose-row.d.ts +2 -2
  27. package/dist/retrieval/compose-row.d.ts.map +1 -1
  28. package/dist/retrieval/compose-row.js.map +1 -1
  29. package/dist/retrieval/fetch-list.js +2 -2
  30. package/dist/retrieval/fetch-list.js.map +1 -1
  31. package/dist/retrieval/fetch-workspace-list.d.ts +4 -0
  32. package/dist/retrieval/fetch-workspace-list.d.ts.map +1 -0
  33. package/dist/retrieval/fetch-workspace-list.js +164 -0
  34. package/dist/retrieval/fetch-workspace-list.js.map +1 -0
  35. package/dist/retrieval/resolve-filters.d.ts +3 -3
  36. package/dist/retrieval/resolve-filters.d.ts.map +1 -1
  37. package/dist/retrieval/resolve-filters.js.map +1 -1
  38. package/dist/retrieval/resolve-list-search.d.ts +2 -2
  39. package/dist/retrieval/resolve-list-search.d.ts.map +1 -1
  40. package/dist/retrieval/resolve-list-search.js.map +1 -1
  41. package/dist/retrieval/resolve-pagination-driver.d.ts +2 -2
  42. package/dist/retrieval/resolve-pagination-driver.d.ts.map +1 -1
  43. package/dist/retrieval/resolve-pagination-driver.js.map +1 -1
  44. package/dist/retrieval/resolve-sort.d.ts +2 -2
  45. package/dist/retrieval/resolve-sort.d.ts.map +1 -1
  46. package/dist/retrieval/resolve-sort.js.map +1 -1
  47. package/dist/seeds/default-seed-spec.d.ts.map +1 -1
  48. package/dist/seeds/default-seed-spec.js +1 -0
  49. package/dist/seeds/default-seed-spec.js.map +1 -1
  50. package/dist/tests/fetch-workspace-list.test.d.ts +2 -0
  51. package/dist/tests/fetch-workspace-list.test.d.ts.map +1 -0
  52. package/dist/tests/fetch-workspace-list.test.js +187 -0
  53. package/dist/tests/fetch-workspace-list.test.js.map +1 -0
  54. package/dist/tests/fixtures.d.ts +5 -2
  55. package/dist/tests/fixtures.d.ts.map +1 -1
  56. package/dist/tests/fixtures.js +77 -0
  57. package/dist/tests/fixtures.js.map +1 -1
  58. package/dist/tests/seed-manifest.test.js +2 -2
  59. package/docs/DATA-TIER-CONTRACT.md +5 -2
  60. package/docs/EXPLORER-HOST-APIS.md +12 -2
  61. package/docs/MEMORIX-CATALOX-CONTRACTS.md +50 -3
  62. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/tests/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,YAAY,EAAE,uBAyF1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,qBAmB5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,qBA2B7B,CAAC"}
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/tests/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,YAAY,EAAE,uBAyF1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,2BAmB5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,qBA2B7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,uBA0DnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,2BASrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,8BAOlC,CAAC"}
@@ -136,4 +136,81 @@ export const assetDetailItem = {
136
136
  maxBytes: 5242880,
137
137
  },
138
138
  };
139
+ export const vulnerabilitiesEntity = {
140
+ id: "vulnerabilities",
141
+ entityName: "vulnerabilities",
142
+ defaultListDescriptorId: "vulnerabilities-main-list",
143
+ defaultItemDescriptorId: "vulnerability-detail-item",
144
+ target: "event",
145
+ collectionPrefix: "vulnerabilities",
146
+ identity: {
147
+ allowedIdFields: ["entityId", "eventId"],
148
+ requiredExactlyOne: true,
149
+ defaultIdField: "entityId",
150
+ },
151
+ defaults: {
152
+ canonicalContentType: "snapshots",
153
+ dataRoot: "data",
154
+ effectiveDatePath: "modifiedAt",
155
+ fallbackEffectiveDatePaths: ["capturedAt"],
156
+ },
157
+ contentTypes: {
158
+ snapshots: {
159
+ postfix: "snapshots",
160
+ collection: "vulnerabilities-snapshots",
161
+ dataRoot: "data",
162
+ isCanonical: true,
163
+ },
164
+ },
165
+ properties: {
166
+ vulnerabilityId: {
167
+ label: "Vulnerability ID",
168
+ source: { contentType: "snapshots", path: "data.vulnerabilityId" },
169
+ humanReadable: true,
170
+ sortable: true,
171
+ filterable: true,
172
+ list: true,
173
+ item: true,
174
+ valueType: "string",
175
+ },
176
+ pluginName: {
177
+ label: "Plugin Name",
178
+ source: { contentType: "snapshots", path: "data.pluginName" },
179
+ humanReadable: true,
180
+ sortable: true,
181
+ filterable: true,
182
+ list: true,
183
+ item: true,
184
+ valueType: "string",
185
+ },
186
+ priorityScore: {
187
+ label: "Priority Score",
188
+ source: { contentType: "snapshots", path: "data.priorityScore" },
189
+ humanReadable: true,
190
+ sortable: true,
191
+ filterable: true,
192
+ list: true,
193
+ item: true,
194
+ valueType: "number",
195
+ },
196
+ },
197
+ };
198
+ export const vulnerabilitiesMainList = {
199
+ id: "vulnerabilities-main-list",
200
+ entity: "vulnerabilities",
201
+ title: "Vulnerabilities",
202
+ leadingContentType: "snapshots",
203
+ pagination: { enabled: true, defaultLimit: 50, maxLimit: 200 },
204
+ fields: ["vulnerabilityId", "pluginName", "priorityScore"],
205
+ allowedSorts: ["vulnerabilityId", "pluginName", "priorityScore"],
206
+ defaultSort: { property: "priorityScore", direction: "desc" },
207
+ };
208
+ export const workspaceRecordsList = {
209
+ id: "memorix-workspace-records-list",
210
+ kind: "workspace",
211
+ title: "Workspace records",
212
+ fields: ["entityName", "recordTitle", "recordId", "source"],
213
+ pagination: { enabled: true, defaultLimit: 50, maxLimit: 200 },
214
+ defaultSort: { property: "priorityScore", direction: "desc" },
215
+ };
139
216
  //# sourceMappingURL=fixtures.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/tests/fixtures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/tests/fixtures.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ describe("buildMemorixRetrievalSeedManifest", () => {
33
33
  });
34
34
  it("builds full manifest from shipped catalox-seeds/inputs", async () => {
35
35
  const manifest = await buildMemorixRetrievalSeedManifestFromInputs();
36
- expect(manifest.items).toHaveLength(10);
36
+ expect(manifest.items).toHaveLength(11);
37
37
  expect(manifest.items.every((i) => i.scope.domains.length > 0)).toBe(true);
38
38
  });
39
39
  });
@@ -74,7 +74,7 @@ describe("listExpectedMemorixRetrievalSeedItemIds", () => {
74
74
  it("lists all shipped catalog item ids", () => {
75
75
  const expected = listExpectedMemorixRetrievalSeedItemIds();
76
76
  expect(expected.find((c) => c.catalogId.includes("entity"))?.itemIds).toContain("assets");
77
- expect(expected.flatMap((c) => c.itemIds)).toHaveLength(10);
77
+ expect(expected.flatMap((c) => c.itemIds)).toHaveLength(11);
78
78
  });
79
79
  });
80
80
  //# sourceMappingURL=seed-manifest.test.js.map
@@ -33,10 +33,13 @@ See also:
33
33
  | `fetchMemorixList(client, request)` | Paginated list by list descriptor id |
34
34
  | `fetchMemorixItem(client, request)` | Record detail by item descriptor id |
35
35
  | `fetchMemorixListForEntity(client, { entityName, ... })` | List using entity `defaultListDescriptorId` |
36
+ | `fetchMemorixWorkspaceList(client, request?)` | Cross-entity workspace list (descriptor-driven merge) |
36
37
  | `fetchMemorixItemForEntity(client, { entityName, entityId \| eventId, ... })` | Item using entity `defaultItemDescriptorId` |
37
38
 
38
39
  List requests support `filters`, `searchText`, `sort`, `page`, `includeExtensions`.
39
40
 
41
+ Workspace list requests support `workspaceListId` (default `memorix-workspace-records-list`), optional `entityName` slice, `searchText`, `sort`, `page`, `includeTotal`. Rows include `entityName` plus per-entity composed fields.
42
+
40
43
  List descriptor `filters` with `operator` + `value` are **always applied**; request filters merge on top (same property: request wins).
41
44
 
42
45
  ---
@@ -91,7 +94,7 @@ Build/apply logic for default descriptors lives in **`src/seeds/`** and is expor
91
94
  | `buildMemorixRetrievalSeedManifestFromInputs` | Build from `catalox-seeds/inputs/` on disk |
92
95
  | `checkMemorixRetrievalSeedNeeds` | Compare expected vs present catalog item ids |
93
96
  | `prepareMemorixRetrievalSeedManifestForCataloxApply` | Merge `scope` into item `data` for Catalox upsert |
94
- | `listExpectedMemorixRetrievalSeedItemIds` | Expected ids per catalog (10 items shipped) |
97
+ | `listExpectedMemorixRetrievalSeedItemIds` | Expected ids per catalog (11 items shipped) |
95
98
  | `MEMORIX_RETRIEVAL_SEED_CATALOGS` | Catalog spec (ids, input files, native fields) |
96
99
 
97
100
  Scripts (not imported by hosts at runtime):
@@ -135,4 +138,4 @@ Pass `xronox` to `createMemorixRetrieval` only when injecting a pre-configured X
135
138
  3. **Mongo targeting** — from entity descriptor `target` + content types; override via env only when documented as advanced.
136
139
  4. **No credentials in descriptors** — inject storage clients via `contentReaders`.
137
140
 
138
- Types: `MemorixEntityDescriptor`, `MemorixListDescriptor`, `MemorixItemDescriptor`, `MemorixRetrievalClient`, `FetchMemorixListRequest`, `FetchMemorixItemRequest`, `MemorixRetrievalIssue`.
141
+ Types: `MemorixEntityDescriptor`, `MemorixListDescriptor`, `MemorixEntityListDescriptor`, `MemorixWorkspaceListDescriptor`, `MemorixItemDescriptor`, `MemorixRetrievalClient`, `FetchMemorixListRequest`, `FetchMemorixWorkspaceListRequest`, `FetchMemorixItemRequest`, `MemorixRetrievalIssue`.
@@ -30,7 +30,18 @@ Descriptor-resolved reads by **entity name + content type** (not arbitrary colle
30
30
  - `listMemorixEntityContentTypeDocuments`
31
31
  - `getMemorixEntityContentTypeDocument`
32
32
 
33
- ## Scoped workspace
33
+ ## Descriptor-driven workspace list
34
+
35
+ Cross-entity **Records** workspace (no entity filter) uses descriptor composition, not raw Mongo fan-out:
36
+
37
+ - `fetchMemorixWorkspaceList(client, request?)` — merges per-entity list rows from Catalox-discovered entities.
38
+ - Default workspace list id: `memorix-workspace-records-list` (`kind: "workspace"` in `memorix-list-descriptors`).
39
+ - Optional `entityName` on the request delegates to `fetchMemorixListForEntity` (entity slice).
40
+ - Each row includes `entityName` plus fields composed from that entity's list descriptor.
41
+
42
+ Supports `page`, `includeTotal`, `searchText`, and global `sort` (v1: in-memory merge across entities).
43
+
44
+ ## Scoped workspace (namespace)
34
45
 
35
46
  - `listScopedWorkspaceEntityTypes` / `listScopedWorkspaceDocuments` / `countScopedWorkspaceDocuments`
36
47
  - Requires `TARGET_NAMESPACE` (or `MEMORIX_SCOPED_NAMESPACE` / `XMEMORY_NAMESPACE`).
@@ -46,5 +57,4 @@ Only three native catalogs. Relations belong on **entity descriptors** (`relatio
46
57
  Future additions (not required for Explorer v1):
47
58
 
48
59
  - `listMemorixListDescriptorIds` for UI list-picker
49
- - Descriptor-driven scoped lists replacing raw cross-entity pagination
50
60
  - Optional `memorix-entity-relations` catalog if you need edges that are not tied to a single source entity descriptor
@@ -205,6 +205,15 @@ Join paths are **Mongo document paths** on the respective content types, not Cat
205
205
 
206
206
  ### 3.2 List descriptor (`memorix-list-descriptors`)
207
207
 
208
+ List descriptors are a **discriminated union** by `kind`:
209
+
210
+ | Kind | When | Key fields |
211
+ |------|------|------------|
212
+ | *(omit or `"entity"`)* | Per-entity tabular list | `entity`, `leadingContentType`, `fields[]` |
213
+ | `"workspace"` | Cross-entity workspace merge | `fields[]` (column hints), optional `entities`, `listDescriptorByEntity` |
214
+
215
+ #### 3.2.1 Entity list (`kind` omitted or `"entity"`)
216
+
208
217
  **Required:**
209
218
 
210
219
  | Field | Rules |
@@ -236,6 +245,29 @@ Join paths are **Mongo document paths** on the respective content types, not Cat
236
245
 
237
246
  Each entity descriptor should define at least one list whose `id` equals `defaultListDescriptorId`. Additional lists (e.g. `critical-vulnerabilities-list`) are optional alternate views.
238
247
 
248
+ #### 3.2.2 Workspace list (`kind: "workspace"`)
249
+
250
+ Cross-entity workspace lists merge per-entity list composition — used by Explorer **Records** when no entity filter is selected.
251
+
252
+ **Required:**
253
+
254
+ | Field | Rules |
255
+ |-------|-------|
256
+ | `id` | Unique list id (shipped: `memorix-workspace-records-list`) |
257
+ | `kind` | `"workspace"` |
258
+ | `pagination` | Same shape as entity lists |
259
+ | `fields` | Non-empty column hints for hosts (may include synthetic ids like `recordTitle`; rows include per-entity composed fields) |
260
+
261
+ **Optional:**
262
+
263
+ | Field | Purpose |
264
+ |-------|---------|
265
+ | `title` | Human label |
266
+ | `entities` | Subset of discovered entity names; omit = all from `discoverMemorixEntities` |
267
+ | `listDescriptorByEntity` | Override list id per entity; omit = `defaultListDescriptorId` |
268
+ | `defaultSort` | Global sort after merge (`property`, `direction`) |
269
+ | `scopeFilter` | `"inherit-seed-scope"` — Catalox scope hint (not Mongo namespace) |
270
+
239
271
  ### 3.3 Item descriptor (`memorix-item-descriptors`)
240
272
 
241
273
  **Required:**
@@ -425,7 +457,22 @@ fetchMemorixItemForEntity(client, { entityName, entityId | eventId, ... })
425
457
  5. Optionally batch-fetch extensions and relations.
426
458
  6. Return rows as flat property maps + pagination + issues.
427
459
 
428
- ### 5.4 Item composition
460
+ ### 5.4 Workspace list composition
461
+
462
+ ```
463
+ fetchMemorixWorkspaceList(client, { workspaceListId?, entityName?, page?, searchText?, sort?, includeTotal? })
464
+ → load workspace list descriptor (default: memorix-workspace-records-list)
465
+ → if entityName: delegate to fetchMemorixListForEntity, stamp rows with entityName
466
+ → discoverMemorixEntities → filter by workspace.entities?
467
+ → for each entity: resolve list id → fetchMemorixList (same field composition as §5.3)
468
+ → stamp entityName (+ identity) on each row
469
+ → merge, global sort, paginate in memory (v1)
470
+ → emit issues[] for per-entity failures without failing the whole workspace
471
+ ```
472
+
473
+ When `discovery.source` is `"none"`, returns empty rows with a hint — no env entity fallback.
474
+
475
+ ### 5.5 Item composition
429
476
 
430
477
  1. Load item + entity descriptors.
431
478
  2. Fetch all documents per `contentTypes[]` matching identity.
@@ -434,7 +481,7 @@ fetchMemorixItemForEntity(client, { entityName, entityId | eventId, ... })
434
481
  5. Resolve `includeRelations` and optional full content fetches.
435
482
  6. Return `{ identity, sections, relations?, issues? }`.
436
483
 
437
- ### 5.5 Entity graph (Explorer)
484
+ ### 5.6 Entity graph (Explorer)
438
485
 
439
486
  `buildMemorixEntityGraph` uses discovery + entity descriptors only:
440
487
 
@@ -520,7 +567,7 @@ From `catalox-seeds/inputs/manifest.json`:
520
567
 
521
568
  **Entities:** `assets`, `vulnerabilities`, `variabilities-groups`
522
569
 
523
- **Lists:** `assets-main-list`, `vulnerabilities-main-list`, `critical-vulnerabilities-list`, `variabilities-groups-main-list`
570
+ **Lists:** `assets-main-list`, `vulnerabilities-main-list`, `critical-vulnerabilities-list`, `variabilities-groups-main-list`, `memorix-workspace-records-list` (workspace)
524
571
 
525
572
  **Items:** `asset-detail-item`, `vulnerability-detail-item`, `variabilities-group-detail-item`
526
573
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@x12i/memorix-retrieval",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Descriptor-driven Memorix retrieval layer for lists, items, and content objects",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -32,6 +32,7 @@
32
32
  "dependencies": {
33
33
  "@x12i/catalox": "^4.1.2",
34
34
  "@x12i/helpers": "^1.7.0",
35
+ "@x12i/memorix-retrieval": "^1.4.0",
35
36
  "mongodb": "^6.21.0"
36
37
  },
37
38
  "peerDependencies": {