@x12i/memorix-metadata 3.2.0 → 3.2.1

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.
@@ -1119,10 +1119,108 @@
1119
1119
  "notes": "Worker fallback when AI_SKILLS_URL unset / compile cannot resolve skill origin. KNOWX_EXTRACT_WORKER_URL honored only when KNOWX_AI_SIM=1 (test-only)."
1120
1120
  }
1121
1121
  },
1122
+ {
1123
+ "id": "knowx-retrieval-index",
1124
+ "name": "Index / candidates (candidate-retrieval)",
1125
+ "description": "Companion step for @x12i/candidate-retrival-service (MEMORIX_RETRIEVAL_URL, default local :6560). (1) POST /v1/candidates for open knowx drafts so associate sees corpus-scale priors, (2) POST /v1/index/upsert for knowx drafts (knowx.knowledge) and Content snapshots (knowx.snapshot). Soft-skips when URL unset or companion down — associate then falls back to Explore.",
1126
+ "role": "agent",
1127
+ "capabilities": [
1128
+ "analyze"
1129
+ ],
1130
+ "memorixAccess": [],
1131
+ "inputs": [
1132
+ {
1133
+ "id": "knowxDrafts",
1134
+ "abstractType": "Content",
1135
+ "description": "Drafts from knowx-extract / write path (candidates + upsert)"
1136
+ },
1137
+ {
1138
+ "id": "contentDrafts",
1139
+ "abstractType": "Content",
1140
+ "description": "Optional Content snapshot drafts from knowx-promote-content (knowx.snapshot upsert)"
1141
+ },
1142
+ {
1143
+ "id": "fetchCandidates",
1144
+ "control": true,
1145
+ "description": "When false, index only (no /v1/candidates). Default true when knowxDrafts present."
1146
+ }
1147
+ ],
1148
+ "outputs": [
1149
+ {
1150
+ "id": "existingKnowx",
1151
+ "abstractType": "Content",
1152
+ "description": "Ranked prior knowx from /v1/candidates for associate (self-ids excluded)"
1153
+ },
1154
+ {
1155
+ "id": "retrieval",
1156
+ "control": true,
1157
+ "description": "enabled / upserted / warnings for ops"
1158
+ },
1159
+ {
1160
+ "id": "indexedRecordIds",
1161
+ "control": true,
1162
+ "description": "recordId / contentId list submitted for upsert"
1163
+ }
1164
+ ],
1165
+ "invocation": {
1166
+ "kind": "worker",
1167
+ "operation": "knowx-retrieval-index",
1168
+ "notes": "Requires MEMORIX_RETRIEVAL_URL (or CANDIDATE_RETRIEVAL_URL) pointing at the candidate-retrieval companion."
1169
+ }
1170
+ },
1171
+ {
1172
+ "id": "knowx-graphify",
1173
+ "name": "Knowledge graph analyze (graphifier)",
1174
+ "description": "Adapter for @x12i/memorix-graphifier (MEMORIX_GRAPHIFIER_URL, default local :7500). Maps KnowX pipeline bags (extract/promote/write) to graphifier items[], POSTs memorix-capability/1 analyze, returns graphDraft/patchPlan. Soft-skips when URL unset or companion down unless MEMORIX_GRAPHIFIER_REQUIRED=1. Persistence is platform write-record (create-or-update) after this step.",
1175
+ "role": "agent",
1176
+ "capabilities": [
1177
+ "analyze"
1178
+ ],
1179
+ "memorixAccess": [],
1180
+ "inputs": [
1181
+ {
1182
+ "id": "knowxDrafts",
1183
+ "abstractType": "Content",
1184
+ "description": "Drafts from knowx-extract / write path (structured items for graphifier)"
1185
+ },
1186
+ {
1187
+ "id": "contentDrafts",
1188
+ "abstractType": "Content",
1189
+ "description": "Optional Content snapshot drafts from knowx-promote-content"
1190
+ }
1191
+ ],
1192
+ "outputs": [
1193
+ {
1194
+ "id": "graphDraft",
1195
+ "control": true,
1196
+ "description": "Deterministic nodes/edges draft from memorix-graphifier"
1197
+ },
1198
+ {
1199
+ "id": "patchPlan",
1200
+ "control": true,
1201
+ "description": "Graph patch plan + sourceRefs (not applied by this step)"
1202
+ },
1203
+ {
1204
+ "id": "graphify",
1205
+ "control": true,
1206
+ "description": "enabled / itemCount / warnings for ops"
1207
+ },
1208
+ {
1209
+ "id": "diagnostics",
1210
+ "control": true,
1211
+ "description": "Remote worker diagnostics"
1212
+ }
1213
+ ],
1214
+ "invocation": {
1215
+ "kind": "worker",
1216
+ "operation": "knowx-graphify",
1217
+ "notes": "KnowX control-plane adapter; remote target is memorix-graphifier via MEMORIX_GRAPHIFIER_URL (alias GRAPHIFIER_URL)."
1218
+ }
1219
+ },
1122
1220
  {
1123
1221
  "id": "knowx-associate-knowledge",
1124
1222
  "name": "Associate knowledge",
1125
- "description": "Classify extracted drafts against existing Content scope: known, novel, contradicts. When aiService is bound, Memorix invokes Catalox skill knowx.associate-knowledge and pushes existingKnowx from Explore. Worker fallback fetches via memorix callback or accepts pushed existingKnowx. Returns classification buckets + candidate knowledge relationship plans. Does not persist.",
1223
+ "description": "Classify extracted drafts against existing Content scope: known, novel, contradicts. Prefer existingKnowx from knowx-retrieval-index (/v1/candidates). When aiService is bound, Memorix invokes Catalox skill knowx.associate-knowledge and may also push explore/catalog. Worker fallback uses pushed existingKnowx or Explore list. Returns classification buckets + candidate knowledge relationship plans. Does not persist.",
1126
1224
  "role": "agent",
1127
1225
  "capabilities": [
1128
1226
  "analyze"
@@ -1139,7 +1237,7 @@
1139
1237
  {
1140
1238
  "id": "existingKnowx",
1141
1239
  "abstractType": "Content",
1142
- "description": "Optional pushed existing Content for offline/fixture runs"
1240
+ "description": "Optional: pipeline output from knowx-retrieval-index, fixtures, or Explore push"
1143
1241
  }
1144
1242
  ],
1145
1243
  "outputs": [
@@ -1215,7 +1313,7 @@
1215
1313
  "id": "knowx-ingest-associate",
1216
1314
  "name": "Ingest then associate knowledge and entities",
1217
1315
  "trigger": "explicit",
1218
- "description": "extract → write knowx → associate-knowledge → relationship-write → associate-entities → relationship-write. Services do not persist; write-record and relationship-write do.",
1316
+ "description": "extract → write knowx → retrieval-index (candidate-retrieval upsert + candidates) → graphify (memorix-graphifier draft) → write-graph (persist) → write-graph-links + index-graph → associate-knowledge → relationship-write → associate-entities → relationship-write. Services do not persist; write-record and relationship-write do.",
1219
1317
  "steps": [
1220
1318
  {
1221
1319
  "id": "extract",
@@ -1236,17 +1334,111 @@
1236
1334
  }
1237
1335
  ]
1238
1336
  },
1337
+ {
1338
+ "id": "index-knowx",
1339
+ "kind": "analyze",
1340
+ "serviceId": "knowx-retrieval-index",
1341
+ "dependsOn": [
1342
+ "write-knowx"
1343
+ ],
1344
+ "inputs": [
1345
+ {
1346
+ "fromStep": "extract",
1347
+ "key": "extract"
1348
+ },
1349
+ {
1350
+ "fromStep": "write-knowx",
1351
+ "key": "write-knowx"
1352
+ }
1353
+ ],
1354
+ "notes": "POST /v1/candidates for associate + /v1/index/upsert (knowx.knowledge). Soft-skip when MEMORIX_RETRIEVAL_URL unset."
1355
+ },
1356
+ {
1357
+ "id": "graphify",
1358
+ "kind": "analyze",
1359
+ "serviceId": "knowx-graphify",
1360
+ "dependsOn": [
1361
+ "index-knowx"
1362
+ ],
1363
+ "inputs": [
1364
+ {
1365
+ "fromStep": "extract",
1366
+ "key": "extract"
1367
+ },
1368
+ {
1369
+ "fromStep": "write-knowx",
1370
+ "key": "write-knowx"
1371
+ }
1372
+ ],
1373
+ "notes": "Remote memorix-graphifier analyze (graphDraft/patchPlan). Soft-skip when MEMORIX_GRAPHIFIER_URL unset/down. Platform write-record applies the draft."
1374
+ },
1375
+ {
1376
+ "id": "write-graph",
1377
+ "kind": "write-record",
1378
+ "contentType": "snapshots",
1379
+ "portConfig": {
1380
+ "mode": "graphifier",
1381
+ "objectType": "content",
1382
+ "contentType": "snapshots",
1383
+ "edgeDefinitionId": "knowx-derived-from"
1384
+ },
1385
+ "dependsOn": [
1386
+ "graphify"
1387
+ ],
1388
+ "inputs": [
1389
+ {
1390
+ "fromStep": "graphify",
1391
+ "key": "graphify"
1392
+ }
1393
+ ],
1394
+ "notes": "Applies memorix-graphifier patchPlan/graphDraft (mode graphifier) → content/snapshots Knowledge graph artifact. Empty graph when companion soft-skips is a no-op success."
1395
+ },
1396
+ {
1397
+ "id": "write-graph-links",
1398
+ "kind": "relationship-write",
1399
+ "dependsOn": [
1400
+ "write-graph"
1401
+ ],
1402
+ "inputs": [
1403
+ {
1404
+ "fromStep": "write-graph",
1405
+ "key": "write-graph"
1406
+ }
1407
+ ],
1408
+ "notes": "Materializes graphDraft.edges as relationshipPlans when endpoints resolve to sourceRefs/recordIds (from write-graph)."
1409
+ },
1410
+ {
1411
+ "id": "index-graph",
1412
+ "kind": "analyze",
1413
+ "serviceId": "knowx-retrieval-index",
1414
+ "dependsOn": [
1415
+ "write-graph"
1416
+ ],
1417
+ "inputs": [
1418
+ {
1419
+ "fromStep": "write-graph",
1420
+ "key": "write-graph"
1421
+ }
1422
+ ],
1423
+ "notes": "CRS knowx.snapshot upsert for knowledge-graph contentDrafts from write-graph. Soft-skip when CRS unset/down."
1424
+ },
1239
1425
  {
1240
1426
  "id": "associate-knowledge",
1241
1427
  "kind": "analyze",
1242
1428
  "serviceId": "knowx-associate-knowledge",
1243
1429
  "dependsOn": [
1244
- "write-knowx"
1430
+ "index-knowx",
1431
+ "write-graph-links",
1432
+ "index-graph"
1245
1433
  ],
1246
1434
  "inputs": [
1247
1435
  {
1248
1436
  "fromStep": "extract",
1249
1437
  "key": "extract"
1438
+ },
1439
+ {
1440
+ "fromStep": "index-knowx",
1441
+ "key": "index-knowx"
1250
1442
  }
1251
1443
  ]
1252
1444
  },
@@ -1298,7 +1490,7 @@
1298
1490
  "id": "knowx-ingest-content-source",
1299
1491
  "name": "Folder connector ingest then derive knowledge",
1300
1492
  "trigger": "explicit",
1301
- "description": "knowx-folder-pull (exact raw via CF collectStream) → knowx-promote-content (format→Markdown snapshots) → knowx-extract → write knowx → associate-knowledge → relationship-write → associate-entities → relationship-write.",
1493
+ "description": "knowx-folder-pull → promote-content → index-snapshots (CRS knowx.snapshot) → extract → write knowx → index-knowx (CRS candidates + knowx.knowledge) → graphify (memorix-graphifier) → write-graph → write-graph-links + index-graph → associate-knowledge → relationship-write → associate-entities → relationship-write.",
1302
1494
  "steps": [
1303
1495
  {
1304
1496
  "id": "folder-pull",
@@ -1319,12 +1511,27 @@
1319
1511
  }
1320
1512
  ]
1321
1513
  },
1514
+ {
1515
+ "id": "index-snapshots",
1516
+ "kind": "analyze",
1517
+ "serviceId": "knowx-retrieval-index",
1518
+ "dependsOn": [
1519
+ "promote-content"
1520
+ ],
1521
+ "inputs": [
1522
+ {
1523
+ "fromStep": "promote-content",
1524
+ "key": "promote-content"
1525
+ }
1526
+ ],
1527
+ "notes": "Index Content snapshots only (knowx.snapshot; no knowxDrafts → no candidates). Soft-skip when CRS unset/down."
1528
+ },
1322
1529
  {
1323
1530
  "id": "extract",
1324
1531
  "kind": "analyze",
1325
1532
  "serviceId": "knowx-extract",
1326
1533
  "dependsOn": [
1327
- "promote-content"
1534
+ "index-snapshots"
1328
1535
  ],
1329
1536
  "inputs": [
1330
1537
  {
@@ -1347,12 +1554,110 @@
1347
1554
  }
1348
1555
  ]
1349
1556
  },
1557
+ {
1558
+ "id": "index-knowx",
1559
+ "kind": "analyze",
1560
+ "serviceId": "knowx-retrieval-index",
1561
+ "dependsOn": [
1562
+ "write-knowx"
1563
+ ],
1564
+ "inputs": [
1565
+ {
1566
+ "fromStep": "extract",
1567
+ "key": "extract"
1568
+ },
1569
+ {
1570
+ "fromStep": "write-knowx",
1571
+ "key": "write-knowx"
1572
+ },
1573
+ {
1574
+ "fromStep": "promote-content",
1575
+ "key": "promote-content"
1576
+ }
1577
+ ],
1578
+ "notes": "POST /v1/candidates for associate + upsert knowx + re-touch snapshots."
1579
+ },
1580
+ {
1581
+ "id": "graphify",
1582
+ "kind": "analyze",
1583
+ "serviceId": "knowx-graphify",
1584
+ "dependsOn": [
1585
+ "index-knowx"
1586
+ ],
1587
+ "inputs": [
1588
+ {
1589
+ "fromStep": "extract",
1590
+ "key": "extract"
1591
+ },
1592
+ {
1593
+ "fromStep": "write-knowx",
1594
+ "key": "write-knowx"
1595
+ },
1596
+ {
1597
+ "fromStep": "promote-content",
1598
+ "key": "promote-content"
1599
+ }
1600
+ ],
1601
+ "notes": "Remote memorix-graphifier analyze from promote + extract bags. Soft-skip when graphifier unset/down. write-graph applies draft."
1602
+ },
1603
+ {
1604
+ "id": "write-graph",
1605
+ "kind": "write-record",
1606
+ "contentType": "snapshots",
1607
+ "portConfig": {
1608
+ "mode": "graphifier",
1609
+ "objectType": "content",
1610
+ "contentType": "snapshots",
1611
+ "edgeDefinitionId": "knowx-derived-from"
1612
+ },
1613
+ "dependsOn": [
1614
+ "graphify"
1615
+ ],
1616
+ "inputs": [
1617
+ {
1618
+ "fromStep": "graphify",
1619
+ "key": "graphify"
1620
+ }
1621
+ ],
1622
+ "notes": "Applies memorix-graphifier patchPlan/graphDraft (mode graphifier) → content/snapshots graph artifact."
1623
+ },
1624
+ {
1625
+ "id": "write-graph-links",
1626
+ "kind": "relationship-write",
1627
+ "dependsOn": [
1628
+ "write-graph"
1629
+ ],
1630
+ "inputs": [
1631
+ {
1632
+ "fromStep": "write-graph",
1633
+ "key": "write-graph"
1634
+ }
1635
+ ],
1636
+ "notes": "Materializes graphDraft.edges as relationshipPlans when endpoints resolve to sourceRefs/recordIds (from write-graph)."
1637
+ },
1638
+ {
1639
+ "id": "index-graph",
1640
+ "kind": "analyze",
1641
+ "serviceId": "knowx-retrieval-index",
1642
+ "dependsOn": [
1643
+ "write-graph"
1644
+ ],
1645
+ "inputs": [
1646
+ {
1647
+ "fromStep": "write-graph",
1648
+ "key": "write-graph"
1649
+ }
1650
+ ],
1651
+ "notes": "CRS knowx.snapshot upsert for knowledge-graph contentDrafts from write-graph. Soft-skip when CRS unset/down."
1652
+ },
1350
1653
  {
1351
1654
  "id": "associate-knowledge",
1352
1655
  "kind": "analyze",
1353
1656
  "serviceId": "knowx-associate-knowledge",
1354
1657
  "dependsOn": [
1355
- "write-knowx"
1658
+ "index-knowx",
1659
+ "write-graph-links",
1660
+ "index-graph"
1356
1661
  ],
1357
1662
  "inputs": [
1358
1663
  {
@@ -1362,6 +1667,10 @@
1362
1667
  {
1363
1668
  "fromStep": "write-knowx",
1364
1669
  "key": "write-knowx"
1670
+ },
1671
+ {
1672
+ "fromStep": "index-knowx",
1673
+ "key": "index-knowx"
1365
1674
  }
1366
1675
  ]
1367
1676
  },
@@ -1417,7 +1726,7 @@
1417
1726
  "id": "knowx-ingest-managed-item",
1418
1727
  "name": "Managed Drive item ingest then derive knowledge",
1419
1728
  "trigger": "explicit",
1420
- "description": "knowx-managed-pull (exact raw via CF collectStream) → knowx-promote-content → knowx-extract → write knowx → associate-knowledge → relationship-write → associate-entities → relationship-write.",
1729
+ "description": "knowx-managed-pull → promote-content → index-snapshots (CRS) → extract → write knowx → index-knowx (CRS candidates + upsert) → graphify (memorix-graphifier) → write-graph → write-graph-links + index-graph → associate-knowledge → relationship-write → associate-entities → relationship-write.",
1421
1730
  "steps": [
1422
1731
  {
1423
1732
  "id": "managed-pull",
@@ -1438,12 +1747,27 @@
1438
1747
  }
1439
1748
  ]
1440
1749
  },
1750
+ {
1751
+ "id": "index-snapshots",
1752
+ "kind": "analyze",
1753
+ "serviceId": "knowx-retrieval-index",
1754
+ "dependsOn": [
1755
+ "promote-content"
1756
+ ],
1757
+ "inputs": [
1758
+ {
1759
+ "fromStep": "promote-content",
1760
+ "key": "promote-content"
1761
+ }
1762
+ ],
1763
+ "notes": "Index Content snapshots only (knowx.snapshot; no knowxDrafts → no candidates). Soft-skip when CRS unset/down."
1764
+ },
1441
1765
  {
1442
1766
  "id": "extract",
1443
1767
  "kind": "analyze",
1444
1768
  "serviceId": "knowx-extract",
1445
1769
  "dependsOn": [
1446
- "promote-content"
1770
+ "index-snapshots"
1447
1771
  ],
1448
1772
  "inputs": [
1449
1773
  {
@@ -1466,12 +1790,110 @@
1466
1790
  }
1467
1791
  ]
1468
1792
  },
1793
+ {
1794
+ "id": "index-knowx",
1795
+ "kind": "analyze",
1796
+ "serviceId": "knowx-retrieval-index",
1797
+ "dependsOn": [
1798
+ "write-knowx"
1799
+ ],
1800
+ "inputs": [
1801
+ {
1802
+ "fromStep": "extract",
1803
+ "key": "extract"
1804
+ },
1805
+ {
1806
+ "fromStep": "write-knowx",
1807
+ "key": "write-knowx"
1808
+ },
1809
+ {
1810
+ "fromStep": "promote-content",
1811
+ "key": "promote-content"
1812
+ }
1813
+ ],
1814
+ "notes": "POST /v1/candidates for associate + upsert knowx + re-touch snapshots."
1815
+ },
1816
+ {
1817
+ "id": "graphify",
1818
+ "kind": "analyze",
1819
+ "serviceId": "knowx-graphify",
1820
+ "dependsOn": [
1821
+ "index-knowx"
1822
+ ],
1823
+ "inputs": [
1824
+ {
1825
+ "fromStep": "extract",
1826
+ "key": "extract"
1827
+ },
1828
+ {
1829
+ "fromStep": "write-knowx",
1830
+ "key": "write-knowx"
1831
+ },
1832
+ {
1833
+ "fromStep": "promote-content",
1834
+ "key": "promote-content"
1835
+ }
1836
+ ],
1837
+ "notes": "Remote memorix-graphifier analyze from promote + extract bags. Soft-skip when graphifier unset/down. write-graph applies draft."
1838
+ },
1839
+ {
1840
+ "id": "write-graph",
1841
+ "kind": "write-record",
1842
+ "contentType": "snapshots",
1843
+ "portConfig": {
1844
+ "mode": "graphifier",
1845
+ "objectType": "content",
1846
+ "contentType": "snapshots",
1847
+ "edgeDefinitionId": "knowx-derived-from"
1848
+ },
1849
+ "dependsOn": [
1850
+ "graphify"
1851
+ ],
1852
+ "inputs": [
1853
+ {
1854
+ "fromStep": "graphify",
1855
+ "key": "graphify"
1856
+ }
1857
+ ],
1858
+ "notes": "Applies memorix-graphifier patchPlan/graphDraft (mode graphifier) → content/snapshots graph artifact."
1859
+ },
1860
+ {
1861
+ "id": "write-graph-links",
1862
+ "kind": "relationship-write",
1863
+ "dependsOn": [
1864
+ "write-graph"
1865
+ ],
1866
+ "inputs": [
1867
+ {
1868
+ "fromStep": "write-graph",
1869
+ "key": "write-graph"
1870
+ }
1871
+ ],
1872
+ "notes": "Materializes graphDraft.edges as relationshipPlans when endpoints resolve to sourceRefs/recordIds (from write-graph)."
1873
+ },
1874
+ {
1875
+ "id": "index-graph",
1876
+ "kind": "analyze",
1877
+ "serviceId": "knowx-retrieval-index",
1878
+ "dependsOn": [
1879
+ "write-graph"
1880
+ ],
1881
+ "inputs": [
1882
+ {
1883
+ "fromStep": "write-graph",
1884
+ "key": "write-graph"
1885
+ }
1886
+ ],
1887
+ "notes": "CRS knowx.snapshot upsert for knowledge-graph contentDrafts from write-graph. Soft-skip when CRS unset/down."
1888
+ },
1469
1889
  {
1470
1890
  "id": "associate-knowledge",
1471
1891
  "kind": "analyze",
1472
1892
  "serviceId": "knowx-associate-knowledge",
1473
1893
  "dependsOn": [
1474
- "write-knowx"
1894
+ "index-knowx",
1895
+ "write-graph-links",
1896
+ "index-graph"
1475
1897
  ],
1476
1898
  "inputs": [
1477
1899
  {
@@ -1481,6 +1903,10 @@
1481
1903
  {
1482
1904
  "fromStep": "write-knowx",
1483
1905
  "key": "write-knowx"
1906
+ },
1907
+ {
1908
+ "fromStep": "index-knowx",
1909
+ "key": "index-knowx"
1484
1910
  }
1485
1911
  ]
1486
1912
  },
@@ -28,7 +28,7 @@
28
28
  "abstractTypes": [
29
29
  "People"
30
30
  ],
31
- "notes": "Single people OT. Inside vs outside org is identity kind (concept.identifiers.primary.kind): employeeId | externalPersonId \u2014 not separate object types.",
31
+ "notes": "Single people OT. Inside vs outside org is identity kind (concept.identifiers.primary.kind): employeeId | externalPersonId — not separate object types.",
32
32
  "contentTypes": [
33
33
  {
34
34
  "id": "raw",
@@ -60,6 +60,36 @@
60
60
  "id": "relationships",
61
61
  "notes": "Candidate store shape until Gate G4"
62
62
  }
63
+ ],
64
+ "fields": [
65
+ {
66
+ "path": "data.displayName",
67
+ "valueType": "string",
68
+ "contentType": "snapshots"
69
+ },
70
+ {
71
+ "path": "data.role",
72
+ "valueType": "string",
73
+ "contentType": "snapshots"
74
+ },
75
+ {
76
+ "path": "data.email",
77
+ "valueType": "string",
78
+ "contentType": "snapshots"
79
+ },
80
+ {
81
+ "path": "data.organization",
82
+ "valueType": "string",
83
+ "contentType": "snapshots"
84
+ },
85
+ {
86
+ "path": "data.collaboratorIds",
87
+ "valueType": "array",
88
+ "contentType": "snapshots",
89
+ "refersTo": {
90
+ "objectType": "people"
91
+ }
92
+ }
63
93
  ]
64
94
  },
65
95
  {
@@ -114,7 +144,48 @@
114
144
  "analytics": "optional",
115
145
  "enrichment": "optional",
116
146
  "insights": "optional"
117
- }
147
+ },
148
+ "fields": [
149
+ {
150
+ "path": "data.title",
151
+ "valueType": "string",
152
+ "contentType": "snapshots"
153
+ },
154
+ {
155
+ "path": "data.status",
156
+ "valueType": "string",
157
+ "contentType": "snapshots"
158
+ },
159
+ {
160
+ "path": "data.priority",
161
+ "valueType": "string",
162
+ "contentType": "snapshots"
163
+ },
164
+ {
165
+ "path": "data.assigneeId",
166
+ "valueType": "recordId",
167
+ "contentType": "snapshots",
168
+ "refersTo": {
169
+ "objectType": "people"
170
+ }
171
+ },
172
+ {
173
+ "path": "data.playbookIds",
174
+ "valueType": "array",
175
+ "contentType": "snapshots",
176
+ "refersTo": {
177
+ "objectType": "playbooks"
178
+ }
179
+ },
180
+ {
181
+ "path": "data.dependsOnIds",
182
+ "valueType": "array",
183
+ "contentType": "snapshots",
184
+ "refersTo": {
185
+ "objectType": "work-items"
186
+ }
187
+ }
188
+ ]
118
189
  },
119
190
  {
120
191
  "id": "playbooks",
@@ -135,7 +206,24 @@
135
206
  "id": "relationships"
136
207
  }
137
208
  ],
138
- "retention": "persistent-knowledge"
209
+ "retention": "persistent-knowledge",
210
+ "fields": [
211
+ {
212
+ "path": "data.name",
213
+ "valueType": "string",
214
+ "contentType": "snapshots"
215
+ },
216
+ {
217
+ "path": "data.body",
218
+ "valueType": "string",
219
+ "contentType": "snapshots"
220
+ },
221
+ {
222
+ "path": "data.contentHash",
223
+ "valueType": "string",
224
+ "contentType": "snapshots"
225
+ }
226
+ ]
139
227
  },
140
228
  {
141
229
  "id": "activity-events",
@@ -155,6 +243,195 @@
155
243
  {
156
244
  "id": "relationships"
157
245
  }
246
+ ],
247
+ "fields": [
248
+ {
249
+ "path": "data.type",
250
+ "valueType": "string",
251
+ "contentType": "snapshots"
252
+ },
253
+ {
254
+ "path": "data.message",
255
+ "valueType": "string",
256
+ "contentType": "snapshots"
257
+ },
258
+ {
259
+ "path": "data.occurredAt",
260
+ "valueType": "datetime",
261
+ "contentType": "snapshots"
262
+ },
263
+ {
264
+ "path": "data.workItemId",
265
+ "valueType": "recordId",
266
+ "contentType": "snapshots",
267
+ "refersTo": {
268
+ "objectType": "work-items"
269
+ }
270
+ },
271
+ {
272
+ "path": "data.actorId",
273
+ "valueType": "recordId",
274
+ "contentType": "snapshots",
275
+ "refersTo": {
276
+ "objectType": "people"
277
+ }
278
+ }
279
+ ]
280
+ },
281
+ {
282
+ "id": "content",
283
+ "name": "Content",
284
+ "dataCategory": "knowledge",
285
+ "abstractTypes": [
286
+ "KnowledgeArtifacts"
287
+ ],
288
+ "notes": "Knowledge graph snapshots and Nexum apply-plan records (write-record mode nexum)",
289
+ "contentTypes": [
290
+ {
291
+ "id": "raw"
292
+ },
293
+ {
294
+ "id": "snapshots",
295
+ "required": false,
296
+ "notes": "Knowledge-graph and other snapshot artififacts (data.kind: knowledge-graph)"
297
+ },
298
+ {
299
+ "id": "nexum",
300
+ "required": false,
301
+ "notes": "Optional Nexum snapshot facet; durable apply-plan kinds use nexum-* object types"
302
+ },
303
+ {
304
+ "id": "relationships"
305
+ }
306
+ ],
307
+ "fields": [
308
+ {
309
+ "path": "concept.title",
310
+ "valueType": "string",
311
+ "contentType": "snapshots"
312
+ },
313
+ {
314
+ "path": "data.title",
315
+ "valueType": "string",
316
+ "contentType": "snapshots"
317
+ },
318
+ {
319
+ "path": "data.kind",
320
+ "valueType": "string",
321
+ "contentType": "snapshots"
322
+ },
323
+ {
324
+ "path": "data.graphDraft",
325
+ "valueType": "object",
326
+ "contentType": "snapshots"
327
+ },
328
+ {
329
+ "path": "data.patchPlan",
330
+ "valueType": "object",
331
+ "contentType": "snapshots"
332
+ }
333
+ ]
334
+ },
335
+ {
336
+ "id": "nexum-contribution",
337
+ "name": "Nexum contribution",
338
+ "dataCategory": "knowledge",
339
+ "notes": "Per-source contribution envelope (write-record mode nexum). Adapter kind nexum.contribution/v1.",
340
+ "contentTypes": [
341
+ {
342
+ "id": "nexum"
343
+ }
344
+ ],
345
+ "fields": [
346
+ {
347
+ "path": "data.op",
348
+ "valueType": "string",
349
+ "contentType": "nexum"
350
+ },
351
+ {
352
+ "path": "data.kind",
353
+ "valueType": "string",
354
+ "contentType": "nexum"
355
+ },
356
+ {
357
+ "path": "data.idempotencyKey",
358
+ "valueType": "string",
359
+ "contentType": "nexum"
360
+ }
361
+ ]
362
+ },
363
+ {
364
+ "id": "nexum-node",
365
+ "name": "Nexum node",
366
+ "dataCategory": "knowledge",
367
+ "notes": "Evidence-graph node (write-record mode nexum). Adapter kind nexum.node/v1.",
368
+ "contentTypes": [
369
+ {
370
+ "id": "nexum"
371
+ }
372
+ ],
373
+ "fields": [
374
+ {
375
+ "path": "data.nodeId",
376
+ "valueType": "string",
377
+ "contentType": "nexum"
378
+ },
379
+ {
380
+ "path": "data.kind",
381
+ "valueType": "string",
382
+ "contentType": "nexum"
383
+ }
384
+ ]
385
+ },
386
+ {
387
+ "id": "nexum-node-claim",
388
+ "name": "Nexum node claim",
389
+ "dataCategory": "knowledge",
390
+ "notes": "Property claim on a node (write-record mode nexum). Adapter kind nexum.node-claim/v1.",
391
+ "contentTypes": [
392
+ {
393
+ "id": "nexum"
394
+ }
395
+ ],
396
+ "fields": [
397
+ {
398
+ "path": "data.claimId",
399
+ "valueType": "string",
400
+ "contentType": "nexum"
401
+ },
402
+ {
403
+ "path": "data.kind",
404
+ "valueType": "string",
405
+ "contentType": "nexum"
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "id": "nexum-edge-claim",
411
+ "name": "Nexum edge claim",
412
+ "dataCategory": "knowledge",
413
+ "notes": "Edge claim (write-record mode nexum). Adapter kind nexum.edge-claim/v1.",
414
+ "contentTypes": [
415
+ {
416
+ "id": "nexum"
417
+ }
418
+ ],
419
+ "fields": [
420
+ {
421
+ "path": "data.claimId",
422
+ "valueType": "string",
423
+ "contentType": "nexum"
424
+ },
425
+ {
426
+ "path": "data.edgeId",
427
+ "valueType": "string",
428
+ "contentType": "nexum"
429
+ },
430
+ {
431
+ "path": "data.kind",
432
+ "valueType": "string",
433
+ "contentType": "nexum"
434
+ }
158
435
  ]
159
436
  }
160
437
  ],
@@ -162,7 +439,7 @@
162
439
  {
163
440
  "id": "People",
164
441
  "name": "People",
165
- "meaning": "People who perform operational work \u2014 inside the org (employeeId) or outside (externalPersonId), distinguished by identity kind",
442
+ "meaning": "People who perform operational work — inside the org (employeeId) or outside (externalPersonId), distinguished by identity kind",
166
443
  "category": "entity",
167
444
  "properties": [
168
445
  {
@@ -225,7 +502,7 @@
225
502
  }
226
503
  ],
227
504
  "union": false,
228
- "notes": "People abstract \u2194 people OT 1:1. Inside/outside org is concept.identifiers.primary.kind (employeeId | externalPersonId), not a second OT."
505
+ "notes": "People abstract ↔ people OT 1:1. Inside/outside org is concept.identifiers.primary.kind (employeeId | externalPersonId), not a second OT."
229
506
  },
230
507
  {
231
508
  "id": "WorkItems",
@@ -398,6 +675,35 @@
398
675
  }
399
676
  ],
400
677
  "union": false
678
+ },
679
+ {
680
+ "id": "KnowledgeArtifacts",
681
+ "name": "Knowledge Artifacts",
682
+ "meaning": "Structured knowledge graphs and snapshot bags produced by analyze workers (Nexum)",
683
+ "category": "knowledge",
684
+ "properties": [
685
+ {
686
+ "id": "title",
687
+ "valueType": "string",
688
+ "required": false
689
+ }
690
+ ],
691
+ "members": [
692
+ {
693
+ "objectType": "content",
694
+ "contentType": "snapshots",
695
+ "properties": [
696
+ {
697
+ "abstractProperty": "title",
698
+ "contentType": "snapshots",
699
+ "propertyPath": "concept.title",
700
+ "concreteValueType": "string"
701
+ }
702
+ ]
703
+ }
704
+ ],
705
+ "union": false,
706
+ "notes": "Used by nexum service ports; durable apply-plan kinds use nexum-* object types (content/snapshots remains the KnowledgeArtifacts member)"
401
707
  }
402
708
  ],
403
709
  "relationshipDefinitions": [
@@ -874,7 +1180,7 @@
874
1180
  {
875
1181
  "id": "opx-enrich-priority",
876
1182
  "name": "Enrich work-item priority",
877
- "description": "Deterministic priority score draft for WorkItems. Returns a patch plan \u2014 does not persist. Pipeline write-record applies the revision-safe mutation on the concrete member.",
1183
+ "description": "Deterministic priority score draft for WorkItems. Returns a patch plan — does not persist. Pipeline write-record applies the revision-safe mutation on the concrete member.",
878
1184
  "role": "agent",
879
1185
  "capabilities": [
880
1186
  "enrich"
@@ -899,6 +1205,39 @@
899
1205
  "kind": "worker",
900
1206
  "operation": "enrich-priority"
901
1207
  }
1208
+ },
1209
+ {
1210
+ "id": "nexum",
1211
+ "name": "Nexum analyze",
1212
+ "description": "Deterministic evidence-graph draft and per-item apply plan from @x12i/memorix-nexum-adapter (zone nexum · worker :7500 · MEMORIX_NEXUM_URL). Successor to Graphifier — Memorix does not support the Graphifier worker or write-record mode graphifier. Does not persist. Pipeline write-record mode nexum applies contributions.",
1213
+ "role": "agent",
1214
+ "capabilities": [
1215
+ "analyze"
1216
+ ],
1217
+ "memorixAccess": [
1218
+ "explore"
1219
+ ],
1220
+ "inputs": [
1221
+ {
1222
+ "id": "snapshot",
1223
+ "abstractType": "KnowledgeArtifacts",
1224
+ "path": "snapshots",
1225
+ "description": "KnowledgeArtifacts projection or NexumAnalyzeRequest items"
1226
+ }
1227
+ ],
1228
+ "outputs": [
1229
+ {
1230
+ "id": "apply-plan",
1231
+ "abstractType": "KnowledgeArtifacts",
1232
+ "path": "snapshots",
1233
+ "description": "x12i-nexum/1 graph draft and replace-contribution apply plan"
1234
+ }
1235
+ ],
1236
+ "invocation": {
1237
+ "kind": "worker",
1238
+ "operation": "analyze",
1239
+ "endpointEnv": "MEMORIX_NEXUM_URL"
1240
+ }
902
1241
  }
903
1242
  ],
904
1243
  "pipelines": [
@@ -1007,7 +1346,7 @@
1007
1346
  "id": "opx-enrich-priority",
1008
1347
  "name": "Enrich WI priority (draft then write)",
1009
1348
  "trigger": "explicit",
1010
- "description": "Capture snapshot \u2192 enrich service (opx-enrich-priority) \u2192 write-record. Runtime v2 uses stepKind enrich + serviceId.",
1349
+ "description": "Capture snapshot → enrich service (opx-enrich-priority) → write-record. Runtime v2 uses stepKind enrich + serviceId.",
1011
1350
  "steps": [
1012
1351
  {
1013
1352
  "id": "enrich",
@@ -1020,6 +1359,37 @@
1020
1359
  "contentType": "snapshots"
1021
1360
  }
1022
1361
  ]
1362
+ },
1363
+ {
1364
+ "id": "opx-nexum-analyze",
1365
+ "name": "Nexum analyze + write-record",
1366
+ "trigger": "explicit",
1367
+ "description": "Invoke @x12i/memorix-nexum-adapter analyze (MEMORIX_NEXUM_URL · default :7500), then platform write-record applies applyPlan (mode nexum). Worker drafts; Memorix persists. Nexum is the knowledge-graph analyze path (Graphifier is not supported).",
1368
+ "steps": [
1369
+ {
1370
+ "id": "analyze",
1371
+ "kind": "analyze",
1372
+ "serviceId": "nexum"
1373
+ },
1374
+ {
1375
+ "id": "write-graph",
1376
+ "kind": "write-record",
1377
+ "contentType": "nexum",
1378
+ "portConfig": {
1379
+ "mode": "nexum"
1380
+ },
1381
+ "dependsOn": [
1382
+ "analyze"
1383
+ ],
1384
+ "inputs": [
1385
+ {
1386
+ "fromStep": "analyze",
1387
+ "key": "analyze"
1388
+ }
1389
+ ],
1390
+ "notes": "mode nexum — create-or-update contribution/node/claim records from applyPlan"
1391
+ }
1392
+ ]
1023
1393
  }
1024
1394
  ],
1025
1395
  "schedules": [],
@@ -118,6 +118,37 @@
118
118
  "contentType": "snapshots"
119
119
  }
120
120
  ]
121
+ },
122
+ {
123
+ "id": "opx-nexum-analyze",
124
+ "name": "Nexum analyze + write-record",
125
+ "trigger": "explicit",
126
+ "description": "Invoke @x12i/memorix-nexum-adapter analyze (MEMORIX_NEXUM_URL · default :7500), then platform write-record applies applyPlan (mode nexum). Worker drafts; Memorix persists. Nexum is the knowledge-graph analyze path (Graphifier is not supported).",
127
+ "steps": [
128
+ {
129
+ "id": "analyze",
130
+ "kind": "analyze",
131
+ "serviceId": "nexum"
132
+ },
133
+ {
134
+ "id": "write-graph",
135
+ "kind": "write-record",
136
+ "contentType": "nexum",
137
+ "portConfig": {
138
+ "mode": "nexum"
139
+ },
140
+ "dependsOn": [
141
+ "analyze"
142
+ ],
143
+ "inputs": [
144
+ {
145
+ "fromStep": "analyze",
146
+ "key": "analyze"
147
+ }
148
+ ],
149
+ "notes": "mode nexum — create-or-update contribution/node/claim records from applyPlan"
150
+ }
151
+ ]
121
152
  }
122
153
  ],
123
154
  "sources": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@x12i/memorix-metadata",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "description": "Canonical Memorix metadata contracts, effective multi-agent resolution, and metadata-only abstract unions (Phase 3).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",