@x12i/memorix-descriptors 1.4.2 → 1.4.5
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/README.md +17 -10
- package/dist/admin/create-admin.d.ts +15 -0
- package/dist/admin/create-admin.d.ts.map +1 -1
- package/dist/admin/create-admin.js +27 -0
- package/dist/admin/create-admin.js.map +1 -1
- package/dist/cli/index.js +139 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mutations/common.d.ts +7 -4
- package/dist/mutations/common.d.ts.map +1 -1
- package/dist/mutations/common.js +54 -3
- package/dist/mutations/common.js.map +1 -1
- package/dist/mutations/entity.d.ts.map +1 -1
- package/dist/mutations/entity.js +5 -1
- package/dist/mutations/entity.js.map +1 -1
- package/dist/mutations/execute.d.ts.map +1 -1
- package/dist/mutations/execute.js +9 -1
- package/dist/mutations/execute.js.map +1 -1
- package/dist/mutations/item.d.ts.map +1 -1
- package/dist/mutations/item.js +5 -1
- package/dist/mutations/item.js.map +1 -1
- package/dist/mutations/list.js +8 -1
- package/dist/mutations/list.js.map +1 -1
- package/dist/source/action-drafts.d.ts +17 -0
- package/dist/source/action-drafts.d.ts.map +1 -0
- package/dist/source/action-drafts.js +191 -0
- package/dist/source/action-drafts.js.map +1 -0
- package/dist/source/aliases.d.ts +23 -0
- package/dist/source/aliases.d.ts.map +1 -0
- package/dist/source/aliases.js +60 -0
- package/dist/source/aliases.js.map +1 -0
- package/dist/source/catalog-health.d.ts +17 -0
- package/dist/source/catalog-health.d.ts.map +1 -0
- package/dist/source/catalog-health.js +87 -0
- package/dist/source/catalog-health.js.map +1 -0
- package/dist/source/envelope.d.ts +29 -0
- package/dist/source/envelope.d.ts.map +1 -0
- package/dist/source/envelope.js +125 -0
- package/dist/source/envelope.js.map +1 -0
- package/dist/source/graph.d.ts +12 -0
- package/dist/source/graph.d.ts.map +1 -0
- package/dist/source/graph.js +148 -0
- package/dist/source/graph.js.map +1 -0
- package/dist/source/guards.d.ts +7 -0
- package/dist/source/guards.d.ts.map +1 -0
- package/dist/source/guards.js +74 -0
- package/dist/source/guards.js.map +1 -0
- package/dist/source/index.d.ts +14 -0
- package/dist/source/index.d.ts.map +1 -0
- package/dist/source/index.js +14 -0
- package/dist/source/index.js.map +1 -0
- package/dist/source/inspectable.d.ts +11 -0
- package/dist/source/inspectable.d.ts.map +1 -0
- package/dist/source/inspectable.js +167 -0
- package/dist/source/inspectable.js.map +1 -0
- package/dist/source/reconcile-source.d.ts +10 -0
- package/dist/source/reconcile-source.d.ts.map +1 -0
- package/dist/source/reconcile-source.js +40 -0
- package/dist/source/reconcile-source.js.map +1 -0
- package/dist/source/registry.d.ts +11 -0
- package/dist/source/registry.d.ts.map +1 -0
- package/dist/source/registry.js +114 -0
- package/dist/source/registry.js.map +1 -0
- package/dist/source/snapshot.d.ts +15 -0
- package/dist/source/snapshot.d.ts.map +1 -0
- package/dist/source/snapshot.js +160 -0
- package/dist/source/snapshot.js.map +1 -0
- package/dist/source/types.d.ts +222 -0
- package/dist/source/types.d.ts.map +1 -0
- package/dist/source/types.js +2 -0
- package/dist/source/types.js.map +1 -0
- package/dist/source/validation.d.ts +12 -0
- package/dist/source/validation.d.ts.map +1 -0
- package/dist/source/validation.js +229 -0
- package/dist/source/validation.js.map +1 -0
- package/dist/tests/source-aware.test.d.ts +2 -0
- package/dist/tests/source-aware.test.d.ts.map +1 -0
- package/dist/tests/source-aware.test.js +222 -0
- package/dist/tests/source-aware.test.js.map +1 -0
- package/dist/types/index.d.ts +25 -2
- package/dist/types/index.d.ts.map +1 -1
- package/docs/MEMORIX-CATALOX-CATALOG-MAP.md +589 -0
- package/docs/MEMORIX-CATALOX-CONTRACTS.md +17 -10
- package/docs/MEMORIX-DATABASE-CONVENTIONS.md +10 -7
- package/docs/MEMORIX-OBJECT-TYPES-AND-TARGETS.md +207 -0
- package/package.json +1 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export function withObjectTypeAliases(descriptor) {
|
|
2
|
+
const entityName = typeof descriptor.entityName === "string"
|
|
3
|
+
? descriptor.entityName
|
|
4
|
+
: typeof descriptor.entity === "string"
|
|
5
|
+
? descriptor.entity
|
|
6
|
+
: typeof descriptor.entityType === "string"
|
|
7
|
+
? descriptor.entityType
|
|
8
|
+
: undefined;
|
|
9
|
+
if (!entityName) {
|
|
10
|
+
return descriptor;
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
...descriptor,
|
|
14
|
+
objectType: entityName,
|
|
15
|
+
...(typeof descriptor.entityName === "string"
|
|
16
|
+
? { objectName: descriptor.entityName }
|
|
17
|
+
: {}),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function withEntityDescriptorAliases(descriptor) {
|
|
21
|
+
return {
|
|
22
|
+
...descriptor,
|
|
23
|
+
objectType: descriptor.entityName,
|
|
24
|
+
objectName: descriptor.entityName,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function withListDescriptorAliases(descriptor) {
|
|
28
|
+
const entityRef = "entity" in descriptor && typeof descriptor.entity === "string"
|
|
29
|
+
? descriptor.entity
|
|
30
|
+
: "entityName" in descriptor && typeof descriptor.entityName === "string"
|
|
31
|
+
? descriptor.entityName
|
|
32
|
+
: undefined;
|
|
33
|
+
if (!entityRef) {
|
|
34
|
+
return descriptor;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
...descriptor,
|
|
38
|
+
objectType: entityRef,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function withItemDescriptorAliases(descriptor) {
|
|
42
|
+
return {
|
|
43
|
+
...descriptor,
|
|
44
|
+
objectType: descriptor.entity,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function withSliceDescriptorAliases(descriptor) {
|
|
48
|
+
return {
|
|
49
|
+
...descriptor,
|
|
50
|
+
entity: descriptor.entityName,
|
|
51
|
+
objectType: descriptor.entityName,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function withCompletionMappingAliases(mapping) {
|
|
55
|
+
return {
|
|
56
|
+
...mapping,
|
|
57
|
+
objectType: mapping.entityType,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=aliases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aliases.js","sourceRoot":"","sources":["../../src/source/aliases.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,qBAAqB,CACnC,UAAa;IAEb,MAAM,UAAU,GACd,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ;QACvC,CAAC,CAAC,UAAU,CAAC,UAAU;QACvB,CAAC,CAAC,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ;YACrC,CAAC,CAAC,UAAU,CAAC,MAAM;YACnB,CAAC,CAAC,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ;gBACzC,CAAC,CAAC,UAAU,CAAC,UAAU;gBACvB,CAAC,CAAC,SAAS,CAAC;IAEpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,UAA8D,CAAC;IACxE,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE,UAAU;QACtB,GAAG,CAAC,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ;YAC3C,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE;YACvC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAAmC;IAEnC,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,UAAU,EAAE,UAAU,CAAC,UAAU;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAiC;IAEjC,MAAM,SAAS,GACb,QAAQ,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ;QAC7D,CAAC,CAAC,UAAU,CAAC,MAAM;QACnB,CAAC,CAAC,YAAY,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ;YACvE,CAAC,CAAC,UAAU,CAAC,UAAU;YACvB,CAAC,CAAC,SAAS,CAAC;IAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE,SAAS;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAiC;IAEjC,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE,UAAU,CAAC,MAAM;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,UAAkC;IAElC,OAAO;QACL,GAAG,UAAU;QACb,MAAM,EAAE,UAAU,CAAC,UAAU;QAC7B,UAAU,EAAE,UAAU,CAAC,UAAU;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAiC;IAEjC,OAAO;QACL,GAAG,OAAO;QACV,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CataloxBoundClient } from "../catalox/client.js";
|
|
2
|
+
import type { SourceAwareCatalogHealth } from "./types.js";
|
|
3
|
+
export type CatalogProbeResult = {
|
|
4
|
+
exists: boolean;
|
|
5
|
+
readable: boolean;
|
|
6
|
+
items: Array<{
|
|
7
|
+
id: string;
|
|
8
|
+
data: Record<string, unknown>;
|
|
9
|
+
}>;
|
|
10
|
+
error?: {
|
|
11
|
+
code: string;
|
|
12
|
+
message: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export declare function probeCatalogItems(catalox: CataloxBoundClient, catalogId: string): Promise<CatalogProbeResult>;
|
|
16
|
+
export declare function buildCatalogHealth(catalogId: string, probe: CatalogProbeResult): SourceAwareCatalogHealth;
|
|
17
|
+
//# sourceMappingURL=catalog-health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-health.d.ts","sourceRoot":"","sources":["../../src/source/catalog-health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAY3D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAmE7B;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,GACxB,wBAAwB,CAa1B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { MEMORIX_COMPLETION_MAPPINGS_CATALOG } from "../catalog/ids.js";
|
|
2
|
+
import { resolveCatalogRegistryEntry } from "./registry.js";
|
|
3
|
+
function isCatalogNotFoundError(err) {
|
|
4
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
5
|
+
return message.includes("Catalog not found");
|
|
6
|
+
}
|
|
7
|
+
function isCatalogAdapterError(err) {
|
|
8
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
9
|
+
return message.includes("Catalog adapter error");
|
|
10
|
+
}
|
|
11
|
+
export async function probeCatalogItems(catalox, catalogId) {
|
|
12
|
+
const items = [];
|
|
13
|
+
let offset = 0;
|
|
14
|
+
const limit = 200;
|
|
15
|
+
for (;;) {
|
|
16
|
+
let page;
|
|
17
|
+
try {
|
|
18
|
+
page = await catalox.listCatalogItems(catalogId, { limit, offset });
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
if (isCatalogNotFoundError(err)) {
|
|
22
|
+
return { exists: false, readable: false, items: [] };
|
|
23
|
+
}
|
|
24
|
+
if (catalogId === MEMORIX_COMPLETION_MAPPINGS_CATALOG &&
|
|
25
|
+
isCatalogAdapterError(err)) {
|
|
26
|
+
return {
|
|
27
|
+
exists: true,
|
|
28
|
+
readable: false,
|
|
29
|
+
items: [],
|
|
30
|
+
error: {
|
|
31
|
+
code: "CATALOG_LIST_FAILED",
|
|
32
|
+
message: "Catalog exists but items could not be listed.",
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
exists: true,
|
|
38
|
+
readable: false,
|
|
39
|
+
items: [],
|
|
40
|
+
error: {
|
|
41
|
+
code: "CATALOG_LIST_FAILED",
|
|
42
|
+
message: err instanceof Error ? err.message : String(err),
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (page.listOutcome === "mapping_blocked") {
|
|
47
|
+
return {
|
|
48
|
+
exists: true,
|
|
49
|
+
readable: false,
|
|
50
|
+
items: [],
|
|
51
|
+
error: {
|
|
52
|
+
code: "CATALOG_LIST_BLOCKED",
|
|
53
|
+
message: "Catalog listing blocked by mapping configuration.",
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
for (const item of page.items) {
|
|
58
|
+
items.push({
|
|
59
|
+
id: String(item.itemId),
|
|
60
|
+
data: (item.data ?? {}),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (!page.nextCursor && page.items.length < limit) {
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
offset += page.items.length;
|
|
67
|
+
if (page.items.length === 0) {
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return { exists: true, readable: true, items };
|
|
72
|
+
}
|
|
73
|
+
export function buildCatalogHealth(catalogId, probe) {
|
|
74
|
+
const entry = resolveCatalogRegistryEntry(catalogId);
|
|
75
|
+
return {
|
|
76
|
+
catalogId,
|
|
77
|
+
sourceClass: entry.sourceClass,
|
|
78
|
+
canonicalStatus: entry.canonicalStatus,
|
|
79
|
+
descriptorKind: entry.descriptorKind,
|
|
80
|
+
exists: probe.exists,
|
|
81
|
+
readable: probe.readable,
|
|
82
|
+
itemCount: probe.readable ? probe.items.length : undefined,
|
|
83
|
+
error: probe.error,
|
|
84
|
+
editable: entry.editable,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=catalog-health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-health.js","sourceRoot":"","sources":["../../src/source/catalog-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { MemorixTarget } from "../types/index.js";
|
|
2
|
+
import type { MemorixDescriptorKind, MemorixSourceRef, SourceAware } from "./types.js";
|
|
3
|
+
export declare function nowIso(): string;
|
|
4
|
+
export declare function buildCatalogItemSourceRef(options: {
|
|
5
|
+
catalogId: string;
|
|
6
|
+
itemId: string;
|
|
7
|
+
appId?: string;
|
|
8
|
+
loadedAt?: string;
|
|
9
|
+
objectType?: string;
|
|
10
|
+
entityName?: string;
|
|
11
|
+
target?: MemorixTarget;
|
|
12
|
+
contentType?: string;
|
|
13
|
+
descriptorKind?: MemorixDescriptorKind;
|
|
14
|
+
}): MemorixSourceRef;
|
|
15
|
+
export declare function buildObjectTypeSourceRef(itemId: string, appId?: string, loadedAt?: string, objectType?: string, target?: MemorixTarget): MemorixSourceRef;
|
|
16
|
+
export declare function buildListSourceRef(itemId: string, appId?: string, loadedAt?: string, objectType?: string, kind?: "list" | "slice"): MemorixSourceRef;
|
|
17
|
+
export declare function buildItemSourceRef(itemId: string, appId?: string, loadedAt?: string, objectType?: string): MemorixSourceRef;
|
|
18
|
+
export declare function buildMappingSourceRef(itemId: string, appId?: string, loadedAt?: string, objectType?: string, target?: MemorixTarget): MemorixSourceRef;
|
|
19
|
+
export declare function buildInventoryPolicySourceRef(appId?: string, loadedAt?: string): MemorixSourceRef;
|
|
20
|
+
export declare function buildDerivedGraphSourceRef(generatedBy?: string, loadedAt?: string): MemorixSourceRef;
|
|
21
|
+
export declare function buildLocalUiStateSourceRef(loadedAt?: string, trustWarning?: string): MemorixSourceRef;
|
|
22
|
+
export declare function buildUnknownSourceRef(loadedAt?: string, trustWarning?: string): MemorixSourceRef;
|
|
23
|
+
export declare function wrapSourceAware<T>(data: T, source: MemorixSourceRef): SourceAware<T>;
|
|
24
|
+
export declare function sourceRefForCataloxWrite(write: {
|
|
25
|
+
catalogId: string;
|
|
26
|
+
itemId: string;
|
|
27
|
+
action: string;
|
|
28
|
+
}, appId?: string, loadedAt?: string): MemorixSourceRef;
|
|
29
|
+
//# sourceMappingURL=envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/source/envelope.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC,GAAG,gBAAgB,CAmBnB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,aAAa,GACrB,gBAAgB,CAYlB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GACtB,gBAAgB,CAUlB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,gBAAgB,CAUlB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,aAAa,GACrB,gBAAgB,CAWlB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,gBAAgB,CAQlB;AAED,wBAAgB,0BAA0B,CACxC,WAAW,SAAwB,EACnC,QAAQ,CAAC,EAAE,MAAM,GAChB,gBAAgB,CAYlB;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,CAUlB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,CAUlB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,gBAAgB,GACvB,WAAW,CAAC,CAAC,CAAC,CAEhB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC5D,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,gBAAgB,CAOlB"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { MEMORIX_COMPLETION_MAPPINGS_CATALOG, MEMORIX_ENTITY_DESCRIPTORS_CATALOG, MEMORIX_INVENTORY_POLICIES_CATALOG, MEMORIX_INVENTORY_POLICY_ITEM_ID, MEMORIX_ITEM_DESCRIPTORS_CATALOG, MEMORIX_LIST_DESCRIPTORS_CATALOG, } from "../catalog/ids.js";
|
|
2
|
+
import { resolveCatalogRegistryEntry, } from "./registry.js";
|
|
3
|
+
export function nowIso() {
|
|
4
|
+
return new Date().toISOString();
|
|
5
|
+
}
|
|
6
|
+
export function buildCatalogItemSourceRef(options) {
|
|
7
|
+
const loadedAt = options.loadedAt ?? nowIso();
|
|
8
|
+
const entry = resolveCatalogRegistryEntry(options.catalogId);
|
|
9
|
+
return {
|
|
10
|
+
sourceClass: entry.sourceClass,
|
|
11
|
+
canonicalStatus: entry.canonicalStatus,
|
|
12
|
+
appId: options.appId,
|
|
13
|
+
catalogId: options.catalogId,
|
|
14
|
+
itemId: options.itemId,
|
|
15
|
+
firestoreCollection: options.catalogId,
|
|
16
|
+
descriptorKind: options.descriptorKind ?? entry.descriptorKind,
|
|
17
|
+
objectType: options.objectType,
|
|
18
|
+
entityName: options.entityName ?? options.objectType,
|
|
19
|
+
target: options.target,
|
|
20
|
+
contentType: options.contentType,
|
|
21
|
+
loadedAt,
|
|
22
|
+
editable: entry.editable,
|
|
23
|
+
trustWarning: entry.trustWarning,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function buildObjectTypeSourceRef(itemId, appId, loadedAt, objectType, target) {
|
|
27
|
+
const ot = objectType ?? itemId;
|
|
28
|
+
return buildCatalogItemSourceRef({
|
|
29
|
+
catalogId: MEMORIX_ENTITY_DESCRIPTORS_CATALOG,
|
|
30
|
+
itemId,
|
|
31
|
+
appId,
|
|
32
|
+
loadedAt,
|
|
33
|
+
objectType: ot,
|
|
34
|
+
entityName: ot,
|
|
35
|
+
target,
|
|
36
|
+
descriptorKind: "object-type",
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function buildListSourceRef(itemId, appId, loadedAt, objectType, kind) {
|
|
40
|
+
return buildCatalogItemSourceRef({
|
|
41
|
+
catalogId: MEMORIX_LIST_DESCRIPTORS_CATALOG,
|
|
42
|
+
itemId,
|
|
43
|
+
appId,
|
|
44
|
+
loadedAt,
|
|
45
|
+
objectType,
|
|
46
|
+
entityName: objectType,
|
|
47
|
+
descriptorKind: kind === "slice" ? "slice" : "list",
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export function buildItemSourceRef(itemId, appId, loadedAt, objectType) {
|
|
51
|
+
return buildCatalogItemSourceRef({
|
|
52
|
+
catalogId: MEMORIX_ITEM_DESCRIPTORS_CATALOG,
|
|
53
|
+
itemId,
|
|
54
|
+
appId,
|
|
55
|
+
loadedAt,
|
|
56
|
+
objectType,
|
|
57
|
+
entityName: objectType,
|
|
58
|
+
descriptorKind: "item",
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
export function buildMappingSourceRef(itemId, appId, loadedAt, objectType, target) {
|
|
62
|
+
return buildCatalogItemSourceRef({
|
|
63
|
+
catalogId: MEMORIX_COMPLETION_MAPPINGS_CATALOG,
|
|
64
|
+
itemId,
|
|
65
|
+
appId,
|
|
66
|
+
loadedAt,
|
|
67
|
+
objectType,
|
|
68
|
+
entityName: objectType,
|
|
69
|
+
target,
|
|
70
|
+
descriptorKind: "completion-mapping",
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
export function buildInventoryPolicySourceRef(appId, loadedAt) {
|
|
74
|
+
return buildCatalogItemSourceRef({
|
|
75
|
+
catalogId: MEMORIX_INVENTORY_POLICIES_CATALOG,
|
|
76
|
+
itemId: MEMORIX_INVENTORY_POLICY_ITEM_ID,
|
|
77
|
+
appId,
|
|
78
|
+
loadedAt,
|
|
79
|
+
descriptorKind: "inventory-policy",
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
export function buildDerivedGraphSourceRef(generatedBy = "memorix-descriptors", loadedAt) {
|
|
83
|
+
const at = loadedAt ?? nowIso();
|
|
84
|
+
return {
|
|
85
|
+
sourceClass: "runtime-projection",
|
|
86
|
+
canonicalStatus: "derived",
|
|
87
|
+
loadedAt: at,
|
|
88
|
+
generatedAt: at,
|
|
89
|
+
generatedBy,
|
|
90
|
+
editable: "not-editable",
|
|
91
|
+
trustWarning: "Derived descriptor graph projection. Not canonical Catalox metadata.",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export function buildLocalUiStateSourceRef(loadedAt, trustWarning) {
|
|
95
|
+
return {
|
|
96
|
+
sourceClass: "local-ui-state",
|
|
97
|
+
canonicalStatus: "local",
|
|
98
|
+
loadedAt: loadedAt ?? nowIso(),
|
|
99
|
+
editable: "not-editable",
|
|
100
|
+
trustWarning: trustWarning ??
|
|
101
|
+
"Local Explorer UI state. Not canonical descriptor metadata.",
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export function buildUnknownSourceRef(loadedAt, trustWarning) {
|
|
105
|
+
return {
|
|
106
|
+
sourceClass: "unknown-source",
|
|
107
|
+
canonicalStatus: "unknown",
|
|
108
|
+
loadedAt: loadedAt ?? nowIso(),
|
|
109
|
+
editable: "not-editable",
|
|
110
|
+
trustWarning: trustWarning ??
|
|
111
|
+
"Source cannot be proven as descriptor catalog metadata.",
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export function wrapSourceAware(data, source) {
|
|
115
|
+
return { data, source };
|
|
116
|
+
}
|
|
117
|
+
export function sourceRefForCataloxWrite(write, appId, loadedAt) {
|
|
118
|
+
return buildCatalogItemSourceRef({
|
|
119
|
+
catalogId: write.catalogId,
|
|
120
|
+
itemId: write.itemId,
|
|
121
|
+
appId,
|
|
122
|
+
loadedAt,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/source/envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CataloxBoundClient } from "../catalox/client.js";
|
|
2
|
+
import type { SourceAwareDescriptorGraph } from "./types.js";
|
|
3
|
+
import { type ValidateSourceAwareMemorixDescriptorsOptions } from "./validation.js";
|
|
4
|
+
export type GetSourceAwareDescriptorGraphOptions = {
|
|
5
|
+
appId?: string;
|
|
6
|
+
includeSourceRefs?: boolean;
|
|
7
|
+
includeValidation?: boolean;
|
|
8
|
+
includeReferences?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function getSourceAwareDescriptorGraph(catalox: CataloxBoundClient, options?: GetSourceAwareDescriptorGraphOptions): Promise<SourceAwareDescriptorGraph>;
|
|
11
|
+
export type { ValidateSourceAwareMemorixDescriptorsOptions };
|
|
12
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/source/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAY/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAEL,KAAK,4CAA4C,EAClD,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,oCAAoC,GAAG;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAgDF,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,oCAAyC,GACjD,OAAO,CAAC,0BAA0B,CAAC,CAqHrC;AAED,YAAY,EAAE,4CAA4C,EAAE,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { MEMORIX_COMPLETION_MAPPINGS_CATALOG, MEMORIX_ENTITY_DESCRIPTORS_CATALOG, MEMORIX_INVENTORY_POLICIES_CATALOG, MEMORIX_ITEM_DESCRIPTORS_CATALOG, MEMORIX_LIST_DESCRIPTORS_CATALOG, } from "../catalog/ids.js";
|
|
2
|
+
import { buildDescriptorGraph } from "../integrity/graph.js";
|
|
3
|
+
import { buildDerivedGraphSourceRef, nowIso } from "./envelope.js";
|
|
4
|
+
import { loadSourceAwareDescriptorSnapshot } from "./snapshot.js";
|
|
5
|
+
import { validateSourceAwareMemorixDescriptors, } from "./validation.js";
|
|
6
|
+
function nodeKindFromGraphKind(kind, edgeKind) {
|
|
7
|
+
if (edgeKind?.startsWith("relation:"))
|
|
8
|
+
return "relation";
|
|
9
|
+
if (kind === "entity")
|
|
10
|
+
return "object-type-descriptor";
|
|
11
|
+
if (kind === "list") {
|
|
12
|
+
if (edgeKind === "slice")
|
|
13
|
+
return "slice-descriptor";
|
|
14
|
+
return "list-descriptor";
|
|
15
|
+
}
|
|
16
|
+
if (kind === "item")
|
|
17
|
+
return "item-descriptor";
|
|
18
|
+
if (kind === "mapping")
|
|
19
|
+
return "completion-mapping";
|
|
20
|
+
return "list-descriptor";
|
|
21
|
+
}
|
|
22
|
+
function catalogForNodeKind(kind) {
|
|
23
|
+
switch (kind) {
|
|
24
|
+
case "object-type-descriptor":
|
|
25
|
+
return MEMORIX_ENTITY_DESCRIPTORS_CATALOG;
|
|
26
|
+
case "list-descriptor":
|
|
27
|
+
case "slice-descriptor":
|
|
28
|
+
return MEMORIX_LIST_DESCRIPTORS_CATALOG;
|
|
29
|
+
case "item-descriptor":
|
|
30
|
+
return MEMORIX_ITEM_DESCRIPTORS_CATALOG;
|
|
31
|
+
case "completion-mapping":
|
|
32
|
+
return MEMORIX_COMPLETION_MAPPINGS_CATALOG;
|
|
33
|
+
case "inventory-policy":
|
|
34
|
+
return MEMORIX_INVENTORY_POLICIES_CATALOG;
|
|
35
|
+
default:
|
|
36
|
+
return MEMORIX_ENTITY_DESCRIPTORS_CATALOG;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function mapEdgeKind(kind) {
|
|
40
|
+
if (kind === "default-list")
|
|
41
|
+
return "default-list";
|
|
42
|
+
if (kind === "default-item")
|
|
43
|
+
return "default-item";
|
|
44
|
+
if (kind === "entity-list")
|
|
45
|
+
return "list-of-object-type";
|
|
46
|
+
if (kind === "slice")
|
|
47
|
+
return "slice-of-object-type";
|
|
48
|
+
if (kind === "entity-item")
|
|
49
|
+
return "item-of-object-type";
|
|
50
|
+
if (kind === "mapping-entity")
|
|
51
|
+
return "mapping-target";
|
|
52
|
+
if (kind.startsWith("relation:"))
|
|
53
|
+
return "relation-target";
|
|
54
|
+
return "list-of-object-type";
|
|
55
|
+
}
|
|
56
|
+
export async function getSourceAwareDescriptorGraph(catalox, options = {}) {
|
|
57
|
+
const loadedAt = nowIso();
|
|
58
|
+
const appId = options.appId ?? "memorix";
|
|
59
|
+
const includeValidation = options.includeValidation ?? true;
|
|
60
|
+
const sourceSnapshot = await loadSourceAwareDescriptorSnapshot(catalox, { appId });
|
|
61
|
+
const snapshot = {
|
|
62
|
+
entityDescriptors: Object.fromEntries(sourceSnapshot.canonical.objectTypes.map((e) => [e.source.itemId, e.data])),
|
|
63
|
+
listDescriptors: Object.fromEntries([
|
|
64
|
+
...sourceSnapshot.canonical.lists.map((l) => [l.source.itemId, l.data]),
|
|
65
|
+
...sourceSnapshot.canonical.slices.map((s) => [s.source.itemId, s.data]),
|
|
66
|
+
]),
|
|
67
|
+
itemDescriptors: Object.fromEntries(sourceSnapshot.canonical.items.map((i) => [i.source.itemId, i.data])),
|
|
68
|
+
completionMappings: Object.fromEntries(sourceSnapshot.controlPlane.completionMappings.map((m) => [m.source.itemId, m.data])),
|
|
69
|
+
inventoryPolicy: sourceSnapshot.controlPlane.inventoryPolicies[0]?.data ?? null,
|
|
70
|
+
};
|
|
71
|
+
const graph = buildDescriptorGraph(snapshot);
|
|
72
|
+
const graphSource = buildDerivedGraphSourceRef("memorix-descriptors", loadedAt);
|
|
73
|
+
const issueCodesByNode = new Map();
|
|
74
|
+
let validationIssues = [];
|
|
75
|
+
if (includeValidation) {
|
|
76
|
+
const validation = await validateSourceAwareMemorixDescriptors(catalox, {
|
|
77
|
+
appId,
|
|
78
|
+
includeCatalogHealth: false,
|
|
79
|
+
includeLegacyWarnings: false,
|
|
80
|
+
});
|
|
81
|
+
validationIssues = validation.issues;
|
|
82
|
+
for (const issue of validation.issues) {
|
|
83
|
+
const nodeId = issue.path?.split("/")[0] ?? issue.source.itemId;
|
|
84
|
+
if (!nodeId)
|
|
85
|
+
continue;
|
|
86
|
+
const current = issueCodesByNode.get(nodeId) ?? "valid";
|
|
87
|
+
if (issue.severity === "error") {
|
|
88
|
+
issueCodesByNode.set(nodeId, "error");
|
|
89
|
+
}
|
|
90
|
+
else if (issue.severity === "warning" && current !== "error") {
|
|
91
|
+
issueCodesByNode.set(nodeId, "warning");
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const sliceIds = new Set(sourceSnapshot.canonical.slices.map((s) => s.source.itemId));
|
|
96
|
+
const nodes = graph.nodes.map((node) => {
|
|
97
|
+
const isSlice = sliceIds.has(node.id);
|
|
98
|
+
const nodeKind = nodeKindFromGraphKind(node.kind, isSlice ? "slice" : undefined);
|
|
99
|
+
const catalogId = catalogForNodeKind(nodeKind);
|
|
100
|
+
const entityEntry = sourceSnapshot.canonical.objectTypes.find((e) => e.source.itemId === node.id);
|
|
101
|
+
return {
|
|
102
|
+
id: node.id,
|
|
103
|
+
label: node.label,
|
|
104
|
+
kind: nodeKind,
|
|
105
|
+
source: {
|
|
106
|
+
...graphSource,
|
|
107
|
+
catalogId,
|
|
108
|
+
itemId: node.id,
|
|
109
|
+
descriptorKind: nodeKind === "object-type-descriptor"
|
|
110
|
+
? "object-type"
|
|
111
|
+
: nodeKind === "slice-descriptor"
|
|
112
|
+
? "slice"
|
|
113
|
+
: nodeKind === "list-descriptor"
|
|
114
|
+
? "list"
|
|
115
|
+
: nodeKind === "item-descriptor"
|
|
116
|
+
? "item"
|
|
117
|
+
: nodeKind === "completion-mapping"
|
|
118
|
+
? "completion-mapping"
|
|
119
|
+
: undefined,
|
|
120
|
+
objectType: entityEntry?.data.entityName ?? (node.kind === "entity" ? node.label : undefined),
|
|
121
|
+
target: (entityEntry?.data.target ?? node.target),
|
|
122
|
+
},
|
|
123
|
+
objectType: entityEntry?.data.entityName,
|
|
124
|
+
target: (entityEntry?.data.target ?? node.target),
|
|
125
|
+
catalogId,
|
|
126
|
+
itemId: node.id,
|
|
127
|
+
validationStatus: issueCodesByNode.get(node.id) ?? "valid",
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
const edges = graph.edges.map((edge, index) => ({
|
|
131
|
+
id: `edge-${index}`,
|
|
132
|
+
kind: mapEdgeKind(edge.kind),
|
|
133
|
+
from: edge.from,
|
|
134
|
+
to: edge.to,
|
|
135
|
+
source: graphSource,
|
|
136
|
+
path: edge.kind,
|
|
137
|
+
}));
|
|
138
|
+
return {
|
|
139
|
+
generatedAt: loadedAt,
|
|
140
|
+
graphKind: "descriptor-graph",
|
|
141
|
+
sourceClass: "runtime-projection",
|
|
142
|
+
canonicalStatus: "derived",
|
|
143
|
+
nodes,
|
|
144
|
+
edges,
|
|
145
|
+
issues: validationIssues,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/source/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MemorixSourceRef, SourceNotEditableError } from "./types.js";
|
|
2
|
+
export declare function assertSourceEditable(source: MemorixSourceRef): void;
|
|
3
|
+
export declare function createSourceNotEditableError(source: MemorixSourceRef): SourceNotEditableError & Error;
|
|
4
|
+
export declare function isSourceEditable(source: MemorixSourceRef): boolean;
|
|
5
|
+
export declare function classifyUnprovenJson(value: unknown, loadedAt?: string): MemorixSourceRef;
|
|
6
|
+
export declare function rejectMutationForUnprovenSource(value: unknown, loadedAt?: string): SourceNotEditableError | null;
|
|
7
|
+
//# sourceMappingURL=guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/source/guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAG3E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAQnE;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,gBAAgB,GACvB,sBAAsB,GAAG,KAAK,CAQhC;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAOlE;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,gBAAgB,CA+ClB;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,sBAAsB,GAAG,IAAI,CAM/B"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { isEditableSourceClass } from "./registry.js";
|
|
2
|
+
export function assertSourceEditable(source) {
|
|
3
|
+
if (source.editable === "editable") {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
if (isEditableSourceClass(source.sourceClass) && source.editable !== "not-editable") {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
throw createSourceNotEditableError(source);
|
|
10
|
+
}
|
|
11
|
+
export function createSourceNotEditableError(source) {
|
|
12
|
+
const error = new Error("This source is not editable by memorix-descriptors.");
|
|
13
|
+
error.code = "SOURCE_NOT_EDITABLE";
|
|
14
|
+
error.message = "This source is not editable by memorix-descriptors.";
|
|
15
|
+
error.source = source;
|
|
16
|
+
return error;
|
|
17
|
+
}
|
|
18
|
+
export function isSourceEditable(source) {
|
|
19
|
+
try {
|
|
20
|
+
assertSourceEditable(source);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function classifyUnprovenJson(value, loadedAt) {
|
|
28
|
+
const at = loadedAt ?? new Date().toISOString();
|
|
29
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
30
|
+
return {
|
|
31
|
+
sourceClass: "unknown-source",
|
|
32
|
+
canonicalStatus: "unknown",
|
|
33
|
+
loadedAt: at,
|
|
34
|
+
editable: "not-editable",
|
|
35
|
+
trustWarning: "Value is not a descriptor catalog item object.",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const record = value;
|
|
39
|
+
if (record.framework === "narratives-ui-framework") {
|
|
40
|
+
return {
|
|
41
|
+
sourceClass: "local-ui-state",
|
|
42
|
+
canonicalStatus: "local",
|
|
43
|
+
loadedAt: at,
|
|
44
|
+
editable: "not-editable",
|
|
45
|
+
trustWarning: "Explorer canvas / narratives-ui-framework document. Not canonical descriptor metadata.",
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (record.graphType !== undefined &&
|
|
49
|
+
record.nodes !== undefined &&
|
|
50
|
+
record.mode !== undefined) {
|
|
51
|
+
return {
|
|
52
|
+
sourceClass: "runtime-projection",
|
|
53
|
+
canonicalStatus: "derived",
|
|
54
|
+
loadedAt: at,
|
|
55
|
+
editable: "not-editable",
|
|
56
|
+
trustWarning: "Runtime graph projection JSON. Not canonical Catalox descriptor metadata.",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
sourceClass: "unknown-source",
|
|
61
|
+
canonicalStatus: "unknown",
|
|
62
|
+
loadedAt: at,
|
|
63
|
+
editable: "not-editable",
|
|
64
|
+
trustWarning: "Source cannot be proven as a descriptor catalog item.",
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function rejectMutationForUnprovenSource(value, loadedAt) {
|
|
68
|
+
const source = classifyUnprovenJson(value, loadedAt);
|
|
69
|
+
if (isSourceEditable(source)) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return createSourceNotEditableError(source);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/source/guards.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,UAAU,oBAAoB,CAAC,MAAwB;IAC3D,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IACD,IAAI,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QACpF,OAAO;IACT,CAAC;IACD,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAwB;IAExB,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,qDAAqD,CACpB,CAAC;IACpC,KAAK,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACnC,KAAK,CAAC,OAAO,GAAG,qDAAqD,CAAC;IACtE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,IAAI,CAAC;QACH,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAc,EACd,QAAiB;IAEjB,MAAM,EAAE,GAAG,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO;YACL,WAAW,EAAE,gBAAgB;YAC7B,eAAe,EAAE,SAAS;YAC1B,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,cAAc;YACxB,YAAY,EAAE,gDAAgD;SAC/D,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,KAAgC,CAAC;IAEhD,IAAI,MAAM,CAAC,SAAS,KAAK,yBAAyB,EAAE,CAAC;QACnD,OAAO;YACL,WAAW,EAAE,gBAAgB;YAC7B,eAAe,EAAE,OAAO;YACxB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,cAAc;YACxB,YAAY,EACV,wFAAwF;SAC3F,CAAC;IACJ,CAAC;IAED,IACE,MAAM,CAAC,SAAS,KAAK,SAAS;QAC9B,MAAM,CAAC,KAAK,KAAK,SAAS;QAC1B,MAAM,CAAC,IAAI,KAAK,SAAS,EACzB,CAAC;QACD,OAAO;YACL,WAAW,EAAE,oBAAoB;YACjC,eAAe,EAAE,SAAS;YAC1B,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,cAAc;YACxB,YAAY,EACV,2EAA2E;SAC9E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW,EAAE,gBAAgB;QAC7B,eAAe,EAAE,SAAS;QAC1B,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,cAAc;QACxB,YAAY,EAAE,uDAAuD;KACtE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAc,EACd,QAAiB;IAEjB,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./registry.js";
|
|
3
|
+
export * from "./envelope.js";
|
|
4
|
+
export * from "./aliases.js";
|
|
5
|
+
export * from "./guards.js";
|
|
6
|
+
export * from "./catalog-health.js";
|
|
7
|
+
export * from "./snapshot.js";
|
|
8
|
+
export * from "./validation.js";
|
|
9
|
+
export * from "./graph.js";
|
|
10
|
+
export * from "./inspectable.js";
|
|
11
|
+
export * from "./action-drafts.js";
|
|
12
|
+
export * from "./reconcile-source.js";
|
|
13
|
+
export { listSliceDescriptorsFromSnapshot as listSliceDescriptors, } from "./snapshot.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/source/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,gCAAgC,IAAI,oBAAoB,GACzD,MAAM,eAAe,CAAC"}
|