@ai-matrx/associations 0.13.135 → 0.13.137

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/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog — @ai-matrx/associations
2
2
 
3
+ ## Unreleased
4
+
5
+ **Resource groups are a dot and a name.** `AssociationCardGrid` no longer renders the one-line group descriptions ("Incoming sources of truth (Knowledge In).", "Filed under"'s line). Everything else of the restored tiles look stays. Arman 2026-09-30: descriptions are banned on in-app pages (`common-docs/policies/interface-text-is-layout.md`). `CONTENT_ROLES[].tagline` stays in the data for now. No consumer action required.
6
+
7
+ ## 0.13.137
8
+
9
+ **A scope can be part of a scope.** Regenerated pairs from `platform.association_types`:
10
+ `scope>scope` (role `part_of` — a class's units, lessons and sections; Data Doctrine R7, the tree
11
+ that replaces `context.scopes.parent_scope_id`) and its record-store twin `scope>record`.
12
+ `isRegisteredPair("scope", "scope")` is now true. No consumer action required.
13
+
14
+ ## 0.13.136
15
+
16
+ **A retired entity token never crashes the host.** `getEntityInfo(token)` for a token the live
17
+ vocabulary no longer carries now returns a stand-in labelled `<token> (retired)` and reports
18
+ `retired_entity_token` through the errorSink once per token, instead of throwing
19
+ `Cannot read properties of undefined (reading 'titleColumn')`. 0.13.135's regenerated vocabulary
20
+ dropped `dataset`, `structured_list`, `udt_dataset_*` and `udt_structured_list_items` (deactivated
21
+ in `platform.entity_types` by the custom-data cutover) — its changelog line "no source changes"
22
+ was wrong — and a module-scope `getEntityInfo("structured_list")` in the frontend then crashed
23
+ every route of the dev app (found by real test PB-05, 2026-10-02 19:46Z).
24
+
25
+ **Consumer action:** search your code for the retired tokens above and move each reference to
26
+ the live token; each one now lands in your error sink as `retired_entity_token` until you do.
27
+
3
28
  ## 0.13.135
4
29
 
5
30
  Automatic changed-only republish (docs/metadata drift since the last tag — see
@@ -776,7 +776,7 @@ var ENTITY_TYPE_METADATA = {
776
776
  "platform_share_link": { token: "platform_share_link", schema: "platform", table: "share_links", label: "Share link", baseTier: 1, isComponent: false, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
777
777
  "platform_strict_class_probe": { token: "platform_strict_class_probe", schema: "platform", table: "strict_class_probe", label: "Strict class probe", baseTier: 1, isComponent: false, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
778
778
  "podcast_race": { token: "podcast_race", schema: "podcast", table: "pc_race", label: "Podcast Race Episode", baseTier: 1, isComponent: false, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
779
- "processed_document": { token: "processed_document", schema: "docproc", table: "processed_documents", label: "Processed document", baseTier: 1, isComponent: false, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: true, titleColumn: "name", contentRole: "source", referenceCategory: null },
779
+ "processed_document": { token: "processed_document", schema: "docproc", table: "processed_documents", label: "Source", baseTier: 1, isComponent: false, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: true, titleColumn: "name", contentRole: "source", referenceCategory: null },
780
780
  "processed_document_page": { token: "processed_document_page", schema: "docproc", table: "processed_document_pages", label: "Processed document page", baseTier: 1, isComponent: true, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
781
781
  "product_capture_file": { token: "product_capture_file", schema: "workbench", table: "product_capture_file", label: "Product Capture File", baseTier: 1, isComponent: true, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
782
782
  "product_capture_item": { token: "product_capture_item", schema: "workbench", table: "product_capture_item", label: "Product Capture Item", baseTier: 1, isComponent: false, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
@@ -1076,7 +1076,7 @@ var ENTITY_TYPE_METADATA = {
1076
1076
  "web_location_listing": { token: "web_location_listing", schema: "web", table: "location_listing", label: "Location Listing", baseTier: 1, isComponent: true, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
1077
1077
  "web_news_item": { token: "web_news_item", schema: "web", table: "news_item", label: "News Item", baseTier: 1, isComponent: false, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
1078
1078
  "web_offering_template": { token: "web_offering_template", schema: "web", table: "offering_template", label: "Offering Template", baseTier: 1, isComponent: false, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
1079
- "web_page": { token: "web_page", schema: "web", table: "page", label: "Canonical Page", baseTier: 1, isComponent: true, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: "url", contentRole: "source", referenceCategory: null },
1079
+ "web_page": { token: "web_page", schema: "web", table: "page", label: "Site page", baseTier: 1, isComponent: true, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: "url", contentRole: "source", referenceCategory: null },
1080
1080
  "web_page_content": { token: "web_page_content", schema: "web", table: "page_content", label: "Page Draft Content", baseTier: 1, isComponent: true, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
1081
1081
  "web_page_evidence": { token: "web_page_evidence", schema: "web", table: "page_evidence", label: "Web Page Evidence", baseTier: 1, isComponent: true, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
1082
1082
  "web_page_sitemap": { token: "web_page_sitemap", schema: "web", table: "page_sitemap", label: "Page Sitemap Membership", baseTier: 1, isComponent: true, isModule: false, isListed: false, scopeable: true, category: null, referencePickable: false, titleColumn: null, contentRole: null, referenceCategory: null },
@@ -2403,8 +2403,35 @@ function createEntityRegistry(errorSink, initialOverlay) {
2403
2403
  const overlayByToken = {
2404
2404
  ...initialOverlay ?? {}
2405
2405
  };
2406
+ const retiredReported = /* @__PURE__ */ new Set();
2407
+ function retiredTokenMeta(token) {
2408
+ if (!retiredReported.has(token)) {
2409
+ retiredReported.add(token);
2410
+ errorSink({
2411
+ code: "retired_entity_token",
2412
+ message: `[entityRegistry] "${token}" is not in the live entity vocabulary (retired or renamed in platform.entity_types). The host still references it; rename the reference to the live token, or drop it. Serving a stand-in so the page can render.`,
2413
+ context: { token }
2414
+ });
2415
+ }
2416
+ return {
2417
+ token,
2418
+ schema: "",
2419
+ table: "",
2420
+ label: `${token} (retired)`,
2421
+ baseTier: 1,
2422
+ isComponent: false,
2423
+ isModule: false,
2424
+ isListed: false,
2425
+ scopeable: false,
2426
+ category: null,
2427
+ referencePickable: false,
2428
+ titleColumn: null,
2429
+ contentRole: null,
2430
+ referenceCategory: null
2431
+ };
2432
+ }
2406
2433
  function getEntityInfo(token) {
2407
- const meta = ENTITY_TYPE_METADATA[token];
2434
+ const meta = ENTITY_TYPE_METADATA[token] ?? retiredTokenMeta(token);
2408
2435
  const overlay = overlayByToken[token];
2409
2436
  const labelPlural = overlay?.labelPlural ?? `${meta.label}s`;
2410
2437
  const titleColumn = meta.titleColumn;