@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.
- package/catalox-seeds/inputs/list-descriptors/memorix-workspace-records-list.json +22 -0
- package/catalox-seeds/inputs/manifest.json +3 -1
- package/catalox-seeds/inputs/memorix-list-descriptors.catalog.json +22 -0
- package/catalox-seeds/inputs/memorix-list-descriptors.items.json +22 -0
- package/catalox-seeds/memorix-retrieval-descriptors.manifest.json +34 -0
- package/dist/client/types.d.ts +44 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/descriptors/descriptor-types.d.ts +31 -10
- package/dist/descriptors/descriptor-types.d.ts.map +1 -1
- package/dist/descriptors/load-list-descriptor.d.ts +5 -1
- package/dist/descriptors/load-list-descriptor.d.ts.map +1 -1
- package/dist/descriptors/load-list-descriptor.js +23 -3
- package/dist/descriptors/load-list-descriptor.js.map +1 -1
- package/dist/descriptors/resolve-default-descriptors.d.ts +2 -2
- package/dist/descriptors/resolve-default-descriptors.d.ts.map +1 -1
- package/dist/descriptors/resolve-default-descriptors.js +2 -2
- package/dist/descriptors/resolve-default-descriptors.js.map +1 -1
- package/dist/descriptors/validate-descriptor.d.ts +6 -2
- package/dist/descriptors/validate-descriptor.d.ts.map +1 -1
- package/dist/descriptors/validate-descriptor.js +31 -5
- package/dist/descriptors/validate-descriptor.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/retrieval/compose-row.d.ts +2 -2
- package/dist/retrieval/compose-row.d.ts.map +1 -1
- package/dist/retrieval/compose-row.js.map +1 -1
- package/dist/retrieval/fetch-list.js +2 -2
- package/dist/retrieval/fetch-list.js.map +1 -1
- package/dist/retrieval/fetch-workspace-list.d.ts +4 -0
- package/dist/retrieval/fetch-workspace-list.d.ts.map +1 -0
- package/dist/retrieval/fetch-workspace-list.js +164 -0
- package/dist/retrieval/fetch-workspace-list.js.map +1 -0
- package/dist/retrieval/resolve-filters.d.ts +3 -3
- package/dist/retrieval/resolve-filters.d.ts.map +1 -1
- package/dist/retrieval/resolve-filters.js.map +1 -1
- package/dist/retrieval/resolve-list-search.d.ts +2 -2
- package/dist/retrieval/resolve-list-search.d.ts.map +1 -1
- package/dist/retrieval/resolve-list-search.js.map +1 -1
- package/dist/retrieval/resolve-pagination-driver.d.ts +2 -2
- package/dist/retrieval/resolve-pagination-driver.d.ts.map +1 -1
- package/dist/retrieval/resolve-pagination-driver.js.map +1 -1
- package/dist/retrieval/resolve-sort.d.ts +2 -2
- package/dist/retrieval/resolve-sort.d.ts.map +1 -1
- package/dist/retrieval/resolve-sort.js.map +1 -1
- package/dist/seeds/default-seed-spec.d.ts.map +1 -1
- package/dist/seeds/default-seed-spec.js +1 -0
- package/dist/seeds/default-seed-spec.js.map +1 -1
- package/dist/tests/fetch-workspace-list.test.d.ts +2 -0
- package/dist/tests/fetch-workspace-list.test.d.ts.map +1 -0
- package/dist/tests/fetch-workspace-list.test.js +187 -0
- package/dist/tests/fetch-workspace-list.test.js.map +1 -0
- package/dist/tests/fixtures.d.ts +5 -2
- package/dist/tests/fixtures.d.ts.map +1 -1
- package/dist/tests/fixtures.js +77 -0
- package/dist/tests/fixtures.js.map +1 -1
- package/dist/tests/seed-manifest.test.js +2 -2
- package/docs/DATA-TIER-CONTRACT.md +5 -2
- package/docs/EXPLORER-HOST-APIS.md +12 -2
- package/docs/MEMORIX-CATALOX-CONTRACTS.md +50 -3
- 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,
|
|
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"}
|
package/dist/tests/fixtures.js
CHANGED
|
@@ -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":"
|
|
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(
|
|
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(
|
|
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 (
|
|
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
|
-
##
|
|
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
|
|
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.
|
|
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.
|
|
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": {
|