@x12i/memorix-retrieval 1.35.0 → 1.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/catalox-seeds/inputs/entity-descriptors/assets.json +138 -0
  2. package/catalox-seeds/inputs/entity-descriptors/subnets.json +16 -1
  3. package/catalox-seeds/inputs/entity-descriptors/topology-zones.json +9 -1
  4. package/catalox-seeds/inputs/entity-descriptors/vulnerabilities-groups.json +10 -2
  5. package/catalox-seeds/inputs/entity-descriptors/vulnerabilities.json +57 -5
  6. package/catalox-seeds/inputs/graph-descriptors/asset-topology-vulnerabilities-graph.json +75 -0
  7. package/catalox-seeds/inputs/list-descriptors/assets-exploitability-decisions-list.json +4 -0
  8. package/catalox-seeds/inputs/list-descriptors/assets-potential-impact-decisions-list.json +16 -8
  9. package/catalox-seeds/inputs/manifest.json +4 -0
  10. package/catalox-seeds/inputs/memorix-catalog-ids.json +2 -1
  11. package/catalox-seeds/memorix-retrieval-descriptors.manifest.json +715 -15
  12. package/dist/data/identity.d.ts +19 -1
  13. package/dist/data/identity.d.ts.map +1 -1
  14. package/dist/data/identity.js +41 -25
  15. package/dist/data/identity.js.map +1 -1
  16. package/dist/data/record-info.d.ts +1 -1
  17. package/dist/data/record-info.d.ts.map +1 -1
  18. package/dist/descriptors/catalog-ids.d.ts +1 -0
  19. package/dist/descriptors/catalog-ids.d.ts.map +1 -1
  20. package/dist/descriptors/catalog-ids.js +1 -0
  21. package/dist/descriptors/catalog-ids.js.map +1 -1
  22. package/dist/descriptors/descriptor-types.d.ts +3 -1
  23. package/dist/descriptors/descriptor-types.d.ts.map +1 -1
  24. package/dist/errors/issues.d.ts +2 -0
  25. package/dist/errors/issues.d.ts.map +1 -1
  26. package/dist/errors/issues.js.map +1 -1
  27. package/dist/graphs/build-graph-directory.d.ts +28 -0
  28. package/dist/graphs/build-graph-directory.d.ts.map +1 -0
  29. package/dist/graphs/build-graph-directory.js +253 -0
  30. package/dist/graphs/build-graph-directory.js.map +1 -0
  31. package/dist/graphs/build-graph-document.d.ts +13 -0
  32. package/dist/graphs/build-graph-document.d.ts.map +1 -0
  33. package/dist/graphs/build-graph-document.js +480 -0
  34. package/dist/graphs/build-graph-document.js.map +1 -0
  35. package/dist/graphs/fallback-graph-capabilities.d.ts +11 -0
  36. package/dist/graphs/fallback-graph-capabilities.d.ts.map +1 -0
  37. package/dist/graphs/fallback-graph-capabilities.js +243 -0
  38. package/dist/graphs/fallback-graph-capabilities.js.map +1 -0
  39. package/dist/graphs/index.d.ts +8 -0
  40. package/dist/graphs/index.d.ts.map +1 -0
  41. package/dist/graphs/index.js +7 -0
  42. package/dist/graphs/index.js.map +1 -0
  43. package/dist/graphs/infer-graph-descriptor.d.ts +17 -0
  44. package/dist/graphs/infer-graph-descriptor.d.ts.map +1 -0
  45. package/dist/graphs/infer-graph-descriptor.js +234 -0
  46. package/dist/graphs/infer-graph-descriptor.js.map +1 -0
  47. package/dist/graphs/load-graph-descriptor.d.ts +22 -0
  48. package/dist/graphs/load-graph-descriptor.d.ts.map +1 -0
  49. package/dist/graphs/load-graph-descriptor.js +97 -0
  50. package/dist/graphs/load-graph-descriptor.js.map +1 -0
  51. package/dist/graphs/record-access.d.ts +18 -0
  52. package/dist/graphs/record-access.d.ts.map +1 -0
  53. package/dist/graphs/record-access.js +142 -0
  54. package/dist/graphs/record-access.js.map +1 -0
  55. package/dist/graphs/types.d.ts +70 -0
  56. package/dist/graphs/types.d.ts.map +1 -0
  57. package/dist/graphs/types.js +17 -0
  58. package/dist/graphs/types.js.map +1 -0
  59. package/dist/index.d.ts +1 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/retrieval/fetch-list.d.ts.map +1 -1
  64. package/dist/retrieval/fetch-list.js +3 -1
  65. package/dist/retrieval/fetch-list.js.map +1 -1
  66. package/dist/retrieval/resolve-fields.d.ts.map +1 -1
  67. package/dist/retrieval/resolve-fields.js +7 -1
  68. package/dist/retrieval/resolve-fields.js.map +1 -1
  69. package/dist/retrieval/resolve-list-analytics.d.ts +2 -2
  70. package/dist/retrieval/resolve-list-analytics.d.ts.map +1 -1
  71. package/dist/retrieval/resolve-list-analytics.js.map +1 -1
  72. package/dist/retrieval/resolve-property-source.d.ts.map +1 -1
  73. package/dist/retrieval/resolve-property-source.js +10 -3
  74. package/dist/retrieval/resolve-property-source.js.map +1 -1
  75. package/dist/seeds/default-seed-spec.d.ts.map +1 -1
  76. package/dist/seeds/default-seed-spec.js +22 -1
  77. package/dist/seeds/default-seed-spec.js.map +1 -1
  78. package/dist/tests/fetch-list.test.js +28 -0
  79. package/dist/tests/fetch-list.test.js.map +1 -1
  80. package/dist/tests/graphs.test.d.ts +2 -0
  81. package/dist/tests/graphs.test.d.ts.map +1 -0
  82. package/dist/tests/graphs.test.js +202 -0
  83. package/dist/tests/graphs.test.js.map +1 -0
  84. package/dist/tests/identity.test.js +13 -1
  85. package/dist/tests/identity.test.js.map +1 -1
  86. package/dist/tests/infer-graph.test.d.ts +2 -0
  87. package/dist/tests/infer-graph.test.d.ts.map +1 -0
  88. package/dist/tests/infer-graph.test.js +19 -0
  89. package/dist/tests/infer-graph.test.js.map +1 -0
  90. package/package.json +10 -1
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Bundled entity graph capabilities when Catalox entity descriptors
3
+ * have not been re-seeded with a `graph` block yet.
4
+ */
5
+ export const FALLBACK_ENTITY_GRAPH = {
6
+ assets: {
7
+ node: {
8
+ kind: "ipAddress",
9
+ directoryFields: ["ipAddress", "hostType", "zones"],
10
+ contentLenses: ["snapshot", "analysis", "decisions"],
11
+ ui: { icon: "server" },
12
+ },
13
+ edgeTemplates: [
14
+ {
15
+ id: "asset-topology-associated",
16
+ source: { kind: "associatedArray", key: "associatedTopology" },
17
+ edges: [
18
+ {
19
+ type: "containedIn",
20
+ from: { source: "concept" },
21
+ to: { source: "itemField", field: "cidr", kind: "cidr" },
22
+ toObjectType: "subnets",
23
+ toKind: "cidr",
24
+ when: { itemFieldExists: "cidr" },
25
+ },
26
+ {
27
+ type: "inZone",
28
+ from: { source: "itemField", field: "cidr", kind: "cidr" },
29
+ to: { source: "itemField", field: "zone", kind: "zoneName" },
30
+ toObjectType: "topology-zones",
31
+ toKind: "zoneName",
32
+ when: { itemFieldExists: "zone" },
33
+ },
34
+ {
35
+ type: "reachableFrom",
36
+ from: {
37
+ source: "itemArrayField",
38
+ field: "reachableFromZones",
39
+ kind: "zoneName",
40
+ },
41
+ to: { source: "itemField", field: "zone", kind: "zoneName" },
42
+ toObjectType: "topology-zones",
43
+ toKind: "zoneName",
44
+ when: { itemFieldExists: "zone" },
45
+ },
46
+ {
47
+ type: "pathBridge",
48
+ from: { source: "literal", kind: "zoneName", value: "OUTSIDE" },
49
+ to: { source: "itemField", field: "zone", kind: "zoneName" },
50
+ toObjectType: "topology-zones",
51
+ toKind: "zoneName",
52
+ synthesizePath: { titleTemplate: "{from} → {to}" },
53
+ when: {
54
+ itemFieldExists: "zone",
55
+ itemArrayIncludes: { field: "reachableFromZones", value: "OUTSIDE" },
56
+ },
57
+ },
58
+ ],
59
+ },
60
+ {
61
+ id: "asset-vulnerabilities-by-ip",
62
+ source: {
63
+ kind: "queryByField",
64
+ objectType: "vulnerabilities",
65
+ sourcePath: "data.assetIp",
66
+ targetPath: "data.assetIp",
67
+ limit: 50,
68
+ },
69
+ edges: [
70
+ {
71
+ type: "affectsAsset",
72
+ from: { source: "relatedConcept" },
73
+ to: { source: "concept" },
74
+ toObjectType: "vulnerabilities",
75
+ toKind: "hostVulnerability",
76
+ neighbor: "from",
77
+ },
78
+ ],
79
+ },
80
+ ],
81
+ },
82
+ vulnerabilities: {
83
+ node: {
84
+ kind: "hostVulnerability",
85
+ directoryFields: ["assetIp", "severity", "vulnerabilityName"],
86
+ contentLenses: ["snapshot", "discovery", "analysis", "decisions"],
87
+ ui: { icon: "alert-triangle" },
88
+ },
89
+ edgeTemplates: [
90
+ {
91
+ id: "vuln-in-group",
92
+ source: {
93
+ kind: "queryByField",
94
+ objectType: "vulnerabilities-groups",
95
+ sourcePath: "data.vulnerabilityName",
96
+ targetPath: "data.name",
97
+ limit: 5,
98
+ },
99
+ edges: [
100
+ {
101
+ type: "inGroup",
102
+ from: { source: "concept" },
103
+ to: { source: "relatedConcept" },
104
+ toObjectType: "vulnerabilities-groups",
105
+ toKind: "pluginId",
106
+ neighbor: "to",
107
+ },
108
+ ],
109
+ },
110
+ {
111
+ id: "vuln-group-by-plugin",
112
+ source: {
113
+ kind: "queryByField",
114
+ objectType: "vulnerabilities-groups",
115
+ sourcePath: "data.pluginId",
116
+ targetPath: "data.pluginId",
117
+ limit: 5,
118
+ },
119
+ edges: [
120
+ {
121
+ type: "inGroup",
122
+ from: { source: "concept" },
123
+ to: { source: "relatedConcept" },
124
+ toObjectType: "vulnerabilities-groups",
125
+ toKind: "pluginId",
126
+ neighbor: "to",
127
+ },
128
+ ],
129
+ },
130
+ ],
131
+ },
132
+ subnets: {
133
+ node: {
134
+ kind: "cidr",
135
+ directoryFields: ["cidr", "zone"],
136
+ contentLenses: ["snapshot", "analysis"],
137
+ ui: { icon: "network" },
138
+ },
139
+ },
140
+ "topology-zones": {
141
+ node: {
142
+ kind: "zoneName",
143
+ directoryFields: ["name"],
144
+ contentLenses: ["snapshot", "analysis"],
145
+ ui: { icon: "shield" },
146
+ },
147
+ },
148
+ "vulnerabilities-groups": {
149
+ node: {
150
+ kind: "pluginId",
151
+ directoryFields: ["name", "severity", "pluginId", "cveId"],
152
+ contentLenses: ["snapshot", "analysis"],
153
+ ui: { icon: "bug" },
154
+ },
155
+ },
156
+ };
157
+ export const DEFAULT_ASSET_TOPOLOGY_VULNERABILITIES_GRAPH = {
158
+ id: "asset-topology-vulnerabilities-graph",
159
+ title: "Asset topology & vulnerabilities",
160
+ focusObjectType: "assets",
161
+ maxDepth: 2,
162
+ includeEdgeTemplates: [
163
+ "asset-topology-associated",
164
+ "asset-vulnerabilities-by-ip",
165
+ "vuln-in-group",
166
+ "vuln-group-by-plugin",
167
+ ],
168
+ tiers: [
169
+ {
170
+ id: "topology",
171
+ label: "Topology",
172
+ objectTypes: ["assets", "subnets", "topology-zones"],
173
+ },
174
+ {
175
+ id: "vulnerabilities",
176
+ label: "Vulnerabilities",
177
+ objectTypes: ["vulnerabilities", "vulnerabilities-groups"],
178
+ },
179
+ ],
180
+ nodes: [
181
+ { objectType: "assets", tier: "topology" },
182
+ { objectType: "subnets", tier: "topology" },
183
+ { objectType: "topology-zones", tier: "topology" },
184
+ { objectType: "vulnerabilities-groups", tier: "vulnerabilities" },
185
+ { objectType: "vulnerabilities", tier: "vulnerabilities" },
186
+ ],
187
+ directory: {
188
+ defaultObjectTypes: [
189
+ "assets",
190
+ "subnets",
191
+ "topology-zones",
192
+ "vulnerabilities",
193
+ "vulnerabilities-groups",
194
+ ],
195
+ searchFields: ["title", "identifierKey"],
196
+ narrativeFiltersByObjectType: {
197
+ assets: [
198
+ { key: "has-vulnerabilities", label: "Has vulnerabilities" },
199
+ { key: "has-no-vulnerabilities", label: "No vulnerabilities" },
200
+ { key: "is-triaged", label: "Is triaged" },
201
+ { key: "has-lateral-movement-risk", label: "Lateral movement risk" },
202
+ { key: "has-critical-predicted-impact", label: "Critical predicted impact" },
203
+ { key: "has-high-or-critical-exploitability", label: "High or critical exploitability" },
204
+ ],
205
+ vulnerabilities: [
206
+ { key: "has-critical-severity", label: "Critical severity" },
207
+ { key: "has-high-severity", label: "High severity" },
208
+ { key: "has-medium-severity", label: "Medium severity" },
209
+ { key: "has-breach-vector", label: "Breach vector" },
210
+ ],
211
+ "vulnerabilities-groups": [
212
+ { key: "has-critical-severity", label: "Critical severity" },
213
+ { key: "has-high-severity", label: "High severity" },
214
+ { key: "has-medium-severity", label: "Medium severity" },
215
+ { key: "has-low-severity", label: "Low severity" },
216
+ ],
217
+ subnets: [
218
+ { key: "has-assets", label: "Has assets" },
219
+ { key: "has-possible-paths", label: "Has possible paths" },
220
+ ],
221
+ "topology-zones": [{ key: "has-analysis", label: "Has analysis" }],
222
+ },
223
+ },
224
+ ui: { icon: "network", group: "network", order: 10 },
225
+ };
226
+ export function resolveEntityGraphCapability(objectType, fromEntity, inferred) {
227
+ const g = fromEntity?.graph;
228
+ if (g?.node?.kind) {
229
+ if (g.edgeTemplates?.length)
230
+ return g;
231
+ if (inferred?.edgeTemplates?.length) {
232
+ return {
233
+ ...g,
234
+ edgeTemplates: inferred.edgeTemplates,
235
+ };
236
+ }
237
+ return g;
238
+ }
239
+ if (inferred?.node?.kind)
240
+ return inferred;
241
+ return FALLBACK_ENTITY_GRAPH[objectType] ?? null;
242
+ }
243
+ //# sourceMappingURL=fallback-graph-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback-graph-capabilities.js","sourceRoot":"","sources":["../../src/graphs/fallback-graph-capabilities.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAiD;IACjF,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,IAAI,EAAE,WAAW;YACjB,eAAe,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC;YACnD,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC;YACpD,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACvB;QACD,aAAa,EAAE;YACb;gBACE,EAAE,EAAE,2BAA2B;gBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,oBAAoB,EAAE;gBAC9D,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;wBAC3B,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;wBACxD,YAAY,EAAE,SAAS;wBACvB,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;qBAClC;oBACD;wBACE,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC1D,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;wBAC5D,YAAY,EAAE,gBAAgB;wBAC9B,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;qBAClC;oBACD;wBACE,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE;4BACJ,MAAM,EAAE,gBAAgB;4BACxB,KAAK,EAAE,oBAAoB;4BAC3B,IAAI,EAAE,UAAU;yBACjB;wBACD,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;wBAC5D,YAAY,EAAE,gBAAgB;wBAC9B,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;qBAClC;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;wBAC/D,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;wBAC5D,YAAY,EAAE,gBAAgB;wBAC9B,MAAM,EAAE,UAAU;wBAClB,cAAc,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE;wBAClD,IAAI,EAAE;4BACJ,eAAe,EAAE,MAAM;4BACvB,iBAAiB,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE;yBACrE;qBACF;iBACF;aACF;YACD;gBACE,EAAE,EAAE,6BAA6B;gBACjC,MAAM,EAAE;oBACN,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE,iBAAiB;oBAC7B,UAAU,EAAE,cAAc;oBAC1B,UAAU,EAAE,cAAc;oBAC1B,KAAK,EAAE,EAAE;iBACV;gBACD,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;wBAClC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;wBACzB,YAAY,EAAE,iBAAiB;wBAC/B,MAAM,EAAE,mBAAmB;wBAC3B,QAAQ,EAAE,MAAM;qBACjB;iBACF;aACF;SACF;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE;YACJ,IAAI,EAAE,mBAAmB;YACzB,eAAe,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC;YAC7D,aAAa,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC;YACjE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;SAC/B;QACD,aAAa,EAAE;YACb;gBACE,EAAE,EAAE,eAAe;gBACnB,MAAM,EAAE;oBACN,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE,wBAAwB;oBACpC,UAAU,EAAE,wBAAwB;oBACpC,UAAU,EAAE,WAAW;oBACvB,KAAK,EAAE,CAAC;iBACT;gBACD,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;wBAC3B,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;wBAChC,YAAY,EAAE,wBAAwB;wBACtC,MAAM,EAAE,UAAU;wBAClB,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF;YACD;gBACE,EAAE,EAAE,sBAAsB;gBAC1B,MAAM,EAAE;oBACN,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE,wBAAwB;oBACpC,UAAU,EAAE,eAAe;oBAC3B,UAAU,EAAE,eAAe;oBAC3B,KAAK,EAAE,CAAC;iBACT;gBACD,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;wBAC3B,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;wBAChC,YAAY,EAAE,wBAAwB;wBACtC,MAAM,EAAE,UAAU;wBAClB,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF;SACF;KACF;IACD,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;YACjC,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;YACvC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SACxB;KACF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE;YACJ,IAAI,EAAE,UAAU;YAChB,eAAe,EAAE,CAAC,MAAM,CAAC;YACzB,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;YACvC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACvB;KACF;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE;YACJ,IAAI,EAAE,UAAU;YAChB,eAAe,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC;YAC1D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;YACvC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACpB;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,4CAA4C,GAA2B;IAClF,EAAE,EAAE,sCAAsC;IAC1C,KAAK,EAAE,kCAAkC;IACzC,eAAe,EAAE,QAAQ;IACzB,QAAQ,EAAE,CAAC;IACX,oBAAoB,EAAE;QACpB,2BAA2B;QAC3B,6BAA6B;QAC7B,eAAe;QACf,sBAAsB;KACvB;IACD,KAAK,EAAE;QACL;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC;SACrD;QACD;YACE,EAAE,EAAE,iBAAiB;YACrB,KAAK,EAAE,iBAAiB;YACxB,WAAW,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SAC3D;KACF;IACD,KAAK,EAAE;QACL,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;QAC1C,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE;QAC3C,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE;QAClD,EAAE,UAAU,EAAE,wBAAwB,EAAE,IAAI,EAAE,iBAAiB,EAAE;QACjE,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE;KAC3D;IACD,SAAS,EAAE;QACT,kBAAkB,EAAE;YAClB,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,iBAAiB;YACjB,wBAAwB;SACzB;QACD,YAAY,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;QACxC,4BAA4B,EAAE;YAC5B,MAAM,EAAE;gBACN,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,EAAE;gBAC5D,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,oBAAoB,EAAE;gBAC9D,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC1C,EAAE,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,uBAAuB,EAAE;gBACpE,EAAE,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,2BAA2B,EAAE;gBAC5E,EAAE,GAAG,EAAE,qCAAqC,EAAE,KAAK,EAAE,iCAAiC,EAAE;aACzF;YACD,eAAe,EAAE;gBACf,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBAC5D,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE;gBACpD,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBACxD,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE;aACrD;YACD,wBAAwB,EAAE;gBACxB,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBAC5D,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE;gBACpD,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBACxD,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE;aACnD;YACD,OAAO,EAAE;gBACP,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC1C,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;aAC3D;YACD,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;SACnE;KACF;IACD,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;CACrD,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAC1C,UAAkB,EAClB,UAAkD,EAClD,QAA8C;IAE9C,MAAM,CAAC,GAAG,UAAU,EAAE,KAAiD,CAAC;IACxE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM;YAAE,OAAO,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;YACpC,OAAO;gBACL,GAAG,CAAC;gBACJ,aAAa,EAAE,QAAQ,CAAC,aAAa;aACtC,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI;QAAE,OAAO,QAAQ,CAAC;IAC1C,OAAO,qBAAqB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type { JsonObject, MemorixGraphConcept, MemorixGraphConceptIdentifier, MemorixGraphContent, MemorixGraphDirectoryResult, MemorixGraphDocument, MemorixGraphEdge, MemorixGraphNode, } from "./types.js";
2
+ export { graphLensForStorageContentType, storageContentTypeForLens, } from "./types.js";
3
+ export { DEFAULT_ASSET_TOPOLOGY_VULNERABILITIES_GRAPH, FALLBACK_ENTITY_GRAPH, resolveEntityGraphCapability, } from "./fallback-graph-capabilities.js";
4
+ export { listMemorixGraphDescriptors, loadMemorixGraphDescriptor, resolveMemorixGraphDescriptor, type MemorixGraphDescriptorResolution, type MemorixGraphDescriptorSource, } from "./load-graph-descriptor.js";
5
+ export { inferGraphDescriptorBundle, inferGraphDescriptorFromSchema, guessFocusObjectTypeFromGraphId, type InferredGraphBundle, } from "./infer-graph-descriptor.js";
6
+ export { buildMemorixGraphDocument, type BuildMemorixGraphDocumentInput, } from "./build-graph-document.js";
7
+ export { buildMemorixGraphDirectory, fetchMemorixGraphNodeContent, type BuildMemorixGraphDirectoryInput, } from "./build-graph-directory.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphs/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,4CAA4C,EAC5C,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,GAClC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,yBAAyB,EACzB,KAAK,8BAA8B,GACpC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,KAAK,+BAA+B,GACrC,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { graphLensForStorageContentType, storageContentTypeForLens, } from "./types.js";
2
+ export { DEFAULT_ASSET_TOPOLOGY_VULNERABILITIES_GRAPH, FALLBACK_ENTITY_GRAPH, resolveEntityGraphCapability, } from "./fallback-graph-capabilities.js";
3
+ export { listMemorixGraphDescriptors, loadMemorixGraphDescriptor, resolveMemorixGraphDescriptor, } from "./load-graph-descriptor.js";
4
+ export { inferGraphDescriptorBundle, inferGraphDescriptorFromSchema, guessFocusObjectTypeFromGraphId, } from "./infer-graph-descriptor.js";
5
+ export { buildMemorixGraphDocument, } from "./build-graph-document.js";
6
+ export { buildMemorixGraphDirectory, fetchMemorixGraphNodeContent, } from "./build-graph-directory.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphs/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,4CAA4C,EAC5C,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,GAG9B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,+BAA+B,GAEhC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAE7B,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { MemorixEntityGraphCapability, MemorixGraphDescriptor } from "@x12i/memorix-descriptors";
2
+ import type { MemorixRetrievalClient } from "../client/types.js";
3
+ export type InferredGraphBundle = {
4
+ descriptor: MemorixGraphDescriptor;
5
+ entityCapabilities: Record<string, MemorixEntityGraphCapability>;
6
+ warnings: string[];
7
+ };
8
+ export declare function guessFocusObjectTypeFromGraphId(graphId: string, objectTypes: string[]): string | null;
9
+ /**
10
+ * Lightweight schema-only guess (no Hippox). Uses entity.relations as queryByField templates.
11
+ */
12
+ export declare function inferGraphDescriptorFromSchema(client: MemorixRetrievalClient, graphId: string, focusObjectTypeHint?: string): Promise<InferredGraphBundle | null>;
13
+ /**
14
+ * Prefer Hippox (schema + fuzzy). Fall back to schema-only if Hippox is unavailable.
15
+ */
16
+ export declare function inferGraphDescriptorBundle(client: MemorixRetrievalClient, graphId: string): Promise<InferredGraphBundle | null>;
17
+ //# sourceMappingURL=infer-graph-descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer-graph-descriptor.d.ts","sourceRoot":"","sources":["../../src/graphs/infer-graph-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAKjE,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,sBAAsB,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAoBF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,GAAG,IAAI,CA0Bf;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,EACf,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA4JrC;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA2BrC"}
@@ -0,0 +1,234 @@
1
+ import { discoverMemorixEntities } from "../descriptors/discover-entities.js";
2
+ import { loadMemorixEntityDescriptorByName } from "../descriptors/discover-entities.js";
3
+ import { entityDescriptorConnections } from "../descriptors/discover-entities.js";
4
+ function slugTemplateId(source, target, sourcePath) {
5
+ const pathSlug = sourcePath
6
+ .replace(/^data\./, "")
7
+ .replace(/[^a-zA-Z0-9]+/g, "-")
8
+ .replace(/^-|-$/g, "")
9
+ .toLowerCase();
10
+ return `schema-${source}-to-${target}-${pathSlug || "join"}`;
11
+ }
12
+ function humanizeGraphId(graphId) {
13
+ return graphId
14
+ .replace(/-graph$/i, "")
15
+ .split("-")
16
+ .filter(Boolean)
17
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
18
+ .join(" ");
19
+ }
20
+ export function guessFocusObjectTypeFromGraphId(graphId, objectTypes) {
21
+ if (!objectTypes.length)
22
+ return null;
23
+ const stem = graphId.replace(/-graph$/i, "").toLowerCase();
24
+ if (objectTypes.includes(stem))
25
+ return stem;
26
+ const scored = [];
27
+ for (const ot of objectTypes) {
28
+ const singular = ot.endsWith("s") ? ot.slice(0, -1) : ot;
29
+ const candidates = [ot, singular].filter((c) => c.length >= 3);
30
+ let bestIndex = -1;
31
+ let bestScore = 0;
32
+ for (const candidate of candidates) {
33
+ const idx = stem.indexOf(candidate);
34
+ if (idx < 0)
35
+ continue;
36
+ const score = 1000 - idx + (candidate === ot ? 5 : 0) + candidate.length;
37
+ if (bestIndex < 0 || idx < bestIndex || (idx === bestIndex && score > bestScore)) {
38
+ bestIndex = idx;
39
+ bestScore = score;
40
+ }
41
+ }
42
+ if (bestIndex >= 0)
43
+ scored.push({ ot, score: bestScore, index: bestIndex });
44
+ }
45
+ scored.sort((a, b) => a.index - b.index || b.score - a.score);
46
+ return scored[0]?.ot ?? objectTypes[0] ?? null;
47
+ }
48
+ /**
49
+ * Lightweight schema-only guess (no Hippox). Uses entity.relations as queryByField templates.
50
+ */
51
+ export async function inferGraphDescriptorFromSchema(client, graphId, focusObjectTypeHint) {
52
+ const discovery = await discoverMemorixEntities(client);
53
+ const objectTypes = discovery.summaries.map((s) => s.entityName).filter(Boolean);
54
+ if (objectTypes.length < 1)
55
+ return null;
56
+ const focusObjectType = focusObjectTypeHint ?? guessFocusObjectTypeFromGraphId(graphId, objectTypes);
57
+ if (!focusObjectType)
58
+ return null;
59
+ const entityCapabilities = {};
60
+ const includeEdgeTemplates = [];
61
+ const related = new Set([focusObjectType]);
62
+ const warnings = [];
63
+ for (const ot of objectTypes) {
64
+ try {
65
+ const entity = await loadMemorixEntityDescriptorByName(client, ot);
66
+ const kind = entity.graph?.node?.kind ??
67
+ (ot.replace(/s$/, "") || ot);
68
+ entityCapabilities[ot] = {
69
+ node: {
70
+ kind,
71
+ contentLenses: entity.graph?.node
72
+ ?.contentLenses ?? ["snapshot"],
73
+ directoryFields: entity.graph?.node
74
+ ?.directoryFields ?? [],
75
+ },
76
+ edgeTemplates: [],
77
+ };
78
+ // Prefer authored graph.edgeTemplates when present.
79
+ const authored = entity.graph;
80
+ if (authored?.edgeTemplates?.length) {
81
+ entityCapabilities[ot] = {
82
+ node: {
83
+ ...entityCapabilities[ot].node,
84
+ ...authored.node,
85
+ },
86
+ edgeTemplates: [...authored.edgeTemplates],
87
+ };
88
+ for (const t of authored.edgeTemplates) {
89
+ includeEdgeTemplates.push(t.id);
90
+ for (const e of t.edges)
91
+ related.add(e.toObjectType);
92
+ }
93
+ continue;
94
+ }
95
+ for (const conn of entityDescriptorConnections(entity)) {
96
+ if (!objectTypes.includes(conn.targetEntityName))
97
+ continue;
98
+ const templateId = slugTemplateId(ot, conn.targetEntityName, conn.sourceProperty);
99
+ includeEdgeTemplates.push(templateId);
100
+ related.add(conn.targetEntityName);
101
+ entityCapabilities[ot].edgeTemplates.push({
102
+ id: templateId,
103
+ source: {
104
+ kind: "queryByField",
105
+ objectType: conn.targetEntityName,
106
+ sourcePath: conn.sourceProperty,
107
+ targetPath: conn.targetProperty,
108
+ limit: 50,
109
+ },
110
+ edges: [
111
+ {
112
+ type: `linksTo${conn.targetEntityName
113
+ .split("-")
114
+ .map((p) => p.charAt(0).toUpperCase() + p.slice(1))
115
+ .join("")}`,
116
+ from: { source: "concept" },
117
+ to: { source: "relatedConcept" },
118
+ toObjectType: conn.targetEntityName,
119
+ toKind: entityCapabilities[conn.targetEntityName]?.node.kind ??
120
+ conn.targetEntityName,
121
+ neighbor: "to",
122
+ },
123
+ ],
124
+ });
125
+ }
126
+ }
127
+ catch {
128
+ warnings.push(`Could not load entity descriptor for ${ot}`);
129
+ }
130
+ }
131
+ // Restrict to neighborhood of focus using authored/schema edges only.
132
+ const adjacency = new Map();
133
+ for (const [ot, cap] of Object.entries(entityCapabilities)) {
134
+ for (const t of cap.edgeTemplates ?? []) {
135
+ for (const e of t.edges) {
136
+ if (!adjacency.has(ot))
137
+ adjacency.set(ot, new Set());
138
+ adjacency.get(ot).add(e.toObjectType);
139
+ }
140
+ }
141
+ }
142
+ const reachable = new Set([focusObjectType]);
143
+ const queue = [focusObjectType];
144
+ while (queue.length) {
145
+ const cur = queue.shift();
146
+ for (const next of adjacency.get(cur) ?? []) {
147
+ if (reachable.has(next))
148
+ continue;
149
+ reachable.add(next);
150
+ queue.push(next);
151
+ }
152
+ }
153
+ const filteredTemplates = includeEdgeTemplates.filter((id) => {
154
+ for (const [ot, cap] of Object.entries(entityCapabilities)) {
155
+ if (!reachable.has(ot))
156
+ continue;
157
+ if (cap.edgeTemplates?.some((t) => t.id === id))
158
+ return true;
159
+ }
160
+ return false;
161
+ });
162
+ const nodes = [...reachable].sort((a, b) => {
163
+ if (a === focusObjectType)
164
+ return -1;
165
+ if (b === focusObjectType)
166
+ return 1;
167
+ return a.localeCompare(b);
168
+ });
169
+ if (filteredTemplates.length === 0 && nodes.length === 1) {
170
+ warnings.push("Schema inference found no relations from focus object type.");
171
+ }
172
+ const descriptor = {
173
+ id: graphId,
174
+ title: humanizeGraphId(graphId),
175
+ focusObjectType,
176
+ maxDepth: 2,
177
+ includeEdgeTemplates: filteredTemplates,
178
+ tiers: [
179
+ { id: "focus", label: "Focus", objectTypes: [focusObjectType] },
180
+ ...(nodes.filter((n) => n !== focusObjectType).length
181
+ ? [
182
+ {
183
+ id: "related",
184
+ label: "Related",
185
+ objectTypes: nodes.filter((n) => n !== focusObjectType),
186
+ },
187
+ ]
188
+ : []),
189
+ ],
190
+ nodes: nodes.map((ot) => ({
191
+ objectType: ot,
192
+ kind: entityCapabilities[ot]?.node.kind,
193
+ tier: ot === focusObjectType ? "focus" : "related",
194
+ })),
195
+ directory: {
196
+ defaultObjectTypes: nodes,
197
+ searchFields: ["title", "identifierKey"],
198
+ },
199
+ ui: { icon: "network", group: "inferred", order: 100 },
200
+ };
201
+ return { descriptor, entityCapabilities, warnings };
202
+ }
203
+ /**
204
+ * Prefer Hippox (schema + fuzzy). Fall back to schema-only if Hippox is unavailable.
205
+ */
206
+ export async function inferGraphDescriptorBundle(client, graphId) {
207
+ try {
208
+ const hippox = await import("@x12i/memorix-hippox");
209
+ const guess = await hippox.guessMemorixGraphDescriptor({
210
+ retrieval: client,
211
+ graphId,
212
+ processEnv: client.processEnv,
213
+ sampleLimit: 200,
214
+ minInclusionRatio: 0.5,
215
+ minConfidence: 0.35,
216
+ });
217
+ if (guess) {
218
+ return {
219
+ descriptor: guess.descriptor,
220
+ entityCapabilities: guess.entityCapabilities,
221
+ warnings: guess.warnings,
222
+ };
223
+ }
224
+ }
225
+ catch (err) {
226
+ const message = err instanceof Error ? err.message : String(err);
227
+ // Package missing or runtime failure → schema-only path.
228
+ if (!message.includes("Cannot find package") && !message.includes("Cannot find module")) {
229
+ // Still try schema; keep going.
230
+ }
231
+ }
232
+ return inferGraphDescriptorFromSchema(client, graphId);
233
+ }
234
+ //# sourceMappingURL=infer-graph-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer-graph-descriptor.js","sourceRoot":"","sources":["../../src/graphs/infer-graph-descriptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type MemorixEntityGraphCapability, type MemorixGraphDescriptor } from "@x12i/memorix-descriptors";
2
+ import type { MemorixRetrievalClient } from "../client/types.js";
3
+ export { DEFAULT_ASSET_TOPOLOGY_VULNERABILITIES_GRAPH } from "./fallback-graph-capabilities.js";
4
+ export type MemorixGraphDescriptorSource = "catalox" | "inferred" | "fallback";
5
+ export type MemorixGraphDescriptorResolution = {
6
+ descriptor: MemorixGraphDescriptor;
7
+ /** False when Catalox has no graph descriptor item (inferred or bundled fallback used). */
8
+ defined: boolean;
9
+ source: MemorixGraphDescriptorSource;
10
+ /** Synthesized entity graph capabilities when source is inferred. */
11
+ inferredCapabilities?: Record<string, MemorixEntityGraphCapability>;
12
+ inferenceWarnings?: string[];
13
+ };
14
+ export declare function resolveMemorixGraphDescriptor(client: MemorixRetrievalClient, graphId: string): Promise<MemorixGraphDescriptorResolution>;
15
+ export declare function loadMemorixGraphDescriptor(client: MemorixRetrievalClient, graphId: string): Promise<MemorixGraphDescriptor>;
16
+ export declare function listMemorixGraphDescriptors(client: MemorixRetrievalClient): Promise<Array<{
17
+ id: string;
18
+ title: string;
19
+ defined: boolean;
20
+ source: MemorixGraphDescriptorSource;
21
+ }>>;
22
+ //# sourceMappingURL=load-graph-descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-graph-descriptor.d.ts","sourceRoot":"","sources":["../../src/graphs/load-graph-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,4CAA4C,EAAE,MAAM,kCAAkC,CAAC;AAEhG,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/E,MAAM,MAAM,gCAAgC,GAAG;IAC7C,UAAU,EAAE,sBAAsB,CAAC;IACnC,2FAA2F;IAC3F,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,4BAA4B,CAAC;IACrC,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IACpE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAeF,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gCAAgC,CAAC,CA+C3C;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,sBAAsB,CAAC,CAGjC;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,4BAA4B,CAAA;CAAE,CAAC,CAAC,CA2CvG"}