@x12i/memorix-pipeline 1.1.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 (62) hide show
  1. package/README.md +93 -0
  2. package/dist/association/associated-buckets.d.ts +12 -0
  3. package/dist/association/associated-buckets.d.ts.map +1 -0
  4. package/dist/association/associated-buckets.js +66 -0
  5. package/dist/association/associated-buckets.js.map +1 -0
  6. package/dist/association/association-roll-down.d.ts +33 -0
  7. package/dist/association/association-roll-down.d.ts.map +1 -0
  8. package/dist/association/association-roll-down.js +154 -0
  9. package/dist/association/association-roll-down.js.map +1 -0
  10. package/dist/graph/entity-flow-graph.d.ts +17 -0
  11. package/dist/graph/entity-flow-graph.d.ts.map +1 -0
  12. package/dist/graph/entity-flow-graph.js +79 -0
  13. package/dist/graph/entity-flow-graph.js.map +1 -0
  14. package/dist/index.d.ts +13 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +13 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/lifecycle/pipeline-lifecycle.d.ts +22 -0
  19. package/dist/lifecycle/pipeline-lifecycle.d.ts.map +1 -0
  20. package/dist/lifecycle/pipeline-lifecycle.js +82 -0
  21. package/dist/lifecycle/pipeline-lifecycle.js.map +1 -0
  22. package/dist/mongo/data-access.d.ts +17 -0
  23. package/dist/mongo/data-access.d.ts.map +1 -0
  24. package/dist/mongo/data-access.js +246 -0
  25. package/dist/mongo/data-access.js.map +1 -0
  26. package/dist/narratives/narrative-sync.d.ts +31 -0
  27. package/dist/narratives/narrative-sync.d.ts.map +1 -0
  28. package/dist/narratives/narrative-sync.js +289 -0
  29. package/dist/narratives/narrative-sync.js.map +1 -0
  30. package/dist/parts-catalog/build-catalog.d.ts +12 -0
  31. package/dist/parts-catalog/build-catalog.d.ts.map +1 -0
  32. package/dist/parts-catalog/build-catalog.js +285 -0
  33. package/dist/parts-catalog/build-catalog.js.map +1 -0
  34. package/dist/parts-catalog/index.d.ts +3 -0
  35. package/dist/parts-catalog/index.d.ts.map +1 -0
  36. package/dist/parts-catalog/index.js +2 -0
  37. package/dist/parts-catalog/index.js.map +1 -0
  38. package/dist/parts-catalog/types.d.ts +80 -0
  39. package/dist/parts-catalog/types.d.ts.map +1 -0
  40. package/dist/parts-catalog/types.js +2 -0
  41. package/dist/parts-catalog/types.js.map +1 -0
  42. package/dist/pipeline-engine.d.ts +87 -0
  43. package/dist/pipeline-engine.d.ts.map +1 -0
  44. package/dist/pipeline-engine.js +210 -0
  45. package/dist/pipeline-engine.js.map +1 -0
  46. package/dist/pipeline-job-types.d.ts +14 -0
  47. package/dist/pipeline-job-types.d.ts.map +1 -0
  48. package/dist/pipeline-job-types.js +48 -0
  49. package/dist/pipeline-job-types.js.map +1 -0
  50. package/dist/pipeline-jobs.d.ts +22 -0
  51. package/dist/pipeline-jobs.d.ts.map +1 -0
  52. package/dist/pipeline-jobs.js +27 -0
  53. package/dist/pipeline-jobs.js.map +1 -0
  54. package/dist/pipeline-stages.d.ts +44 -0
  55. package/dist/pipeline-stages.d.ts.map +1 -0
  56. package/dist/pipeline-stages.js +200 -0
  57. package/dist/pipeline-stages.js.map +1 -0
  58. package/dist/pipeline-status.d.ts +66 -0
  59. package/dist/pipeline-status.d.ts.map +1 -0
  60. package/dist/pipeline-status.js +137 -0
  61. package/dist/pipeline-status.js.map +1 -0
  62. package/package.json +54 -0
@@ -0,0 +1,289 @@
1
+ import { discoverHavingNarrativeSignals, NARRATIVE_SYNC_DETECTED_BY, deriveCommonPropertyNarrativesFromItems, mergeAssociatedItems, readAssociatedItems, evaluateMetaNarrative, evaluateRecordPredicate, IGNORED_COMMON_VALUES, toKebab, } from "@x12i/memorix-descriptors";
2
+ import { getByPath } from "@x12i/memorix-resolvers";
3
+ import { associatedPropertyForPostfix } from "../association/associated-buckets.js";
4
+ function isNonEmpty(value) {
5
+ if (value === undefined || value === null)
6
+ return false;
7
+ if (Array.isArray(value))
8
+ return value.length > 0;
9
+ if (typeof value === "object")
10
+ return Object.keys(value).length > 0;
11
+ if (typeof value === "string")
12
+ return value.length > 0;
13
+ return true;
14
+ }
15
+ function arrayMeetsMin(value, minItems) {
16
+ return Array.isArray(value) && value.length >= minItems;
17
+ }
18
+ function readNarrativesMap(record) {
19
+ const root = record.narratives;
20
+ if (root && typeof root === "object" && !Array.isArray(root)) {
21
+ return root;
22
+ }
23
+ const system = record._system;
24
+ const nested = system?.narratives;
25
+ if (nested && typeof nested === "object" && !Array.isArray(nested)) {
26
+ return nested;
27
+ }
28
+ return {};
29
+ }
30
+ function isAutoManagedTag(entry) {
31
+ return entry?.detectedBy === NARRATIVE_SYNC_DETECTED_BY;
32
+ }
33
+ function isAutoManagedDerivedTag(entry) {
34
+ return isAutoManagedTag(entry) && entry?.kind === "association-common-property";
35
+ }
36
+ function normalizedIgnoredValues(signal) {
37
+ return new Set([
38
+ ...IGNORED_COMMON_VALUES,
39
+ ...(signal.ignoredValues ?? []).map((value) => toKebab(String(value))),
40
+ ]);
41
+ }
42
+ function isMeaningfulCommonValue(value, signal) {
43
+ if (value === undefined || value === null)
44
+ return false;
45
+ if (typeof value === "boolean")
46
+ return value;
47
+ if (typeof value === "number")
48
+ return Number.isFinite(value);
49
+ if (Array.isArray(value))
50
+ return value.some((item) => isMeaningfulCommonValue(item, signal));
51
+ if (typeof value === "object")
52
+ return Object.keys(value).length > 0;
53
+ const slug = toKebab(String(value));
54
+ const ignored = signal ? normalizedIgnoredValues(signal) : IGNORED_COMMON_VALUES;
55
+ return !ignored.has(slug);
56
+ }
57
+ function readCommonPropertyFromItem(item, propertyKey, propertyPath) {
58
+ const direct = item[propertyKey];
59
+ if (direct !== undefined)
60
+ return direct;
61
+ if (propertyPath) {
62
+ const fromPath = getByPath(item, propertyPath);
63
+ if (fromPath !== undefined)
64
+ return fromPath;
65
+ if (propertyPath.startsWith("data.")) {
66
+ const trimmed = propertyPath.slice("data.".length);
67
+ const fromTrimmed = getByPath(item, trimmed);
68
+ if (fromTrimmed !== undefined)
69
+ return fromTrimmed;
70
+ }
71
+ }
72
+ return undefined;
73
+ }
74
+ function associatedSourceRefs(signal) {
75
+ return signal.sourceRefs?.length ? signal.sourceRefs : [signal.sourceRef];
76
+ }
77
+ async function loadLinkedCommonPropertyItems(record, signal, descriptor, dataAccess) {
78
+ const relationKey = signal.relationKey ?? signal.sourceRef;
79
+ const relation = descriptor.relations?.[relationKey];
80
+ if (!relation)
81
+ return [];
82
+ const materialized = relation.defaultArrayProperty
83
+ ? readAssociatedItems(record, relation.defaultArrayProperty)
84
+ : [];
85
+ if (materialized.length > 0)
86
+ return materialized;
87
+ return dataAccess?.loadRelationTargets
88
+ ? dataAccess.loadRelationTargets(record, relationKey, relation)
89
+ : [];
90
+ }
91
+ async function evaluateSignal(record, signal, descriptor, dataAccess) {
92
+ if (signal.blocked)
93
+ return false;
94
+ const minItems = signal.minItems ?? 1;
95
+ switch (signal.kind) {
96
+ case "associated-property": {
97
+ const items = mergeAssociatedItems(record, associatedSourceRefs(signal));
98
+ return items.length >= minItems;
99
+ }
100
+ case "relation": {
101
+ const relation = descriptor.relations?.[signal.sourceRef];
102
+ if (!relation)
103
+ return false;
104
+ const arrayProp = relation.defaultArrayProperty;
105
+ if (arrayProp) {
106
+ if (arrayProp.startsWith("associated") && arrayMeetsMin(record[arrayProp], minItems)) {
107
+ return true;
108
+ }
109
+ if (arrayMeetsMin(record[arrayProp], minItems)) {
110
+ return true;
111
+ }
112
+ }
113
+ if (dataAccess?.hasRelationTargets) {
114
+ return dataAccess.hasRelationTargets(record, signal.sourceRef, relation);
115
+ }
116
+ return false;
117
+ }
118
+ case "root-property": {
119
+ const path = signal.rootPath ?? signal.sourceRef;
120
+ return isNonEmpty(getByPath(record, path));
121
+ }
122
+ case "side-content": {
123
+ const postfix = signal.contentPostfix ?? signal.sourceRef;
124
+ const associatedProp = associatedPropertyForPostfix(postfix);
125
+ if (arrayMeetsMin(record[associatedProp], minItems))
126
+ return true;
127
+ if (isNonEmpty(record[postfix]))
128
+ return true;
129
+ if (dataAccess?.hasSideContent) {
130
+ return dataAccess.hasSideContent(record, postfix);
131
+ }
132
+ return false;
133
+ }
134
+ case "common-property": {
135
+ const path = signal.propertyPath ?? signal.sourceRef;
136
+ return isMeaningfulCommonValue(getByPath(record, path), signal);
137
+ }
138
+ case "linked-common-property": {
139
+ const targets = await loadLinkedCommonPropertyItems(record, signal, descriptor, dataAccess);
140
+ return targets.some((target) => {
141
+ const propertyKey = signal.targetPropertyKey ?? signal.propertyKey ?? signal.sourceRef;
142
+ const value = readCommonPropertyFromItem(target, propertyKey, signal.targetPropertyPath);
143
+ return isMeaningfulCommonValue(value, signal);
144
+ });
145
+ }
146
+ case "record-predicate": {
147
+ if (!signal.predicateId)
148
+ return false;
149
+ return evaluateRecordPredicate(record, signal.predicateId);
150
+ }
151
+ case "meta":
152
+ return false;
153
+ default:
154
+ return false;
155
+ }
156
+ }
157
+ function applyDerivedNarratives(derived, evaluated, derivedDetails) {
158
+ for (const item of derived) {
159
+ evaluated[item.key] = true;
160
+ derivedDetails[item.key] = item.detail;
161
+ }
162
+ }
163
+ export async function evaluateHavingNarratives(record, descriptor, dataAccessOrOptions) {
164
+ const options = dataAccessOrOptions &&
165
+ ("dataAccess" in dataAccessOrOptions || "descriptors" in dataAccessOrOptions)
166
+ ? dataAccessOrOptions
167
+ : ({ dataAccess: dataAccessOrOptions });
168
+ const dataAccess = options.dataAccess;
169
+ const signals = discoverHavingNarrativeSignals(descriptor, options.descriptors);
170
+ const baseSignals = signals.filter((signal) => signal.kind !== "meta");
171
+ const metaSignals = signals.filter((signal) => signal.kind === "meta");
172
+ const evaluated = {};
173
+ const existing = readNarrativesMap(record);
174
+ const derivedDetails = {};
175
+ for (const signal of baseSignals) {
176
+ evaluated[signal.key] = await evaluateSignal(record, signal, descriptor, dataAccess);
177
+ if (signal.kind === "associated-property" && evaluated[signal.key]) {
178
+ const items = mergeAssociatedItems(record, associatedSourceRefs(signal));
179
+ const derived = deriveCommonPropertyNarrativesFromItems(items, signal, {
180
+ primarySourceRef: signal.sourceRef,
181
+ });
182
+ applyDerivedNarratives(derived, evaluated, derivedDetails);
183
+ }
184
+ if (signal.kind === "relation" && evaluated[signal.key]) {
185
+ const relation = descriptor.relations?.[signal.sourceRef];
186
+ const materialized = relation?.defaultArrayProperty
187
+ ? readAssociatedItems(record, relation.defaultArrayProperty)
188
+ : [];
189
+ const relationTargets = materialized.length > 0
190
+ ? materialized
191
+ : relation && dataAccess?.loadRelationTargets
192
+ ? await dataAccess.loadRelationTargets(record, signal.sourceRef, relation)
193
+ : [];
194
+ const derived = deriveCommonPropertyNarrativesFromItems(relationTargets, signal);
195
+ applyDerivedNarratives(derived, evaluated, derivedDetails);
196
+ }
197
+ if (signal.kind === "common-property" || signal.kind === "linked-common-property") {
198
+ if (evaluated[signal.key]) {
199
+ derivedDetails[signal.key] = {
200
+ kind: "having-signal",
201
+ sourceRef: signal.sourceRef,
202
+ property: signal.propertyKey ?? signal.targetPropertyKey,
203
+ targetEntity: signal.targetEntity,
204
+ };
205
+ }
206
+ }
207
+ if (signal.kind === "record-predicate" && evaluated[signal.key]) {
208
+ derivedDetails[signal.key] = {
209
+ kind: "having-signal",
210
+ sourceRef: signal.predicateId ?? signal.sourceRef,
211
+ };
212
+ }
213
+ }
214
+ for (const signal of metaSignals) {
215
+ const matches = signal.metaRuleId
216
+ ? evaluateMetaNarrative(signal.metaRuleId, evaluated)
217
+ : false;
218
+ evaluated[signal.key] = matches;
219
+ if (matches) {
220
+ derivedDetails[signal.key] = {
221
+ kind: "having-signal",
222
+ sourceRef: signal.metaRuleId ?? signal.sourceRef,
223
+ };
224
+ }
225
+ }
226
+ const add = [];
227
+ const remove = [];
228
+ for (const signal of signals) {
229
+ const shouldHave = evaluated[signal.key] ?? false;
230
+ const entry = existing[signal.key];
231
+ const hasAutoTag = Boolean(entry) && isAutoManagedTag(entry);
232
+ if (shouldHave && !entry) {
233
+ add.push(signal.key);
234
+ }
235
+ else if (shouldHave && entry && !isAutoManagedTag(entry)) {
236
+ // Preserve manually assigned tags.
237
+ }
238
+ else if (!shouldHave && hasAutoTag) {
239
+ remove.push(signal.key);
240
+ }
241
+ }
242
+ for (const [key, detail] of Object.entries(derivedDetails)) {
243
+ if (!evaluated[key])
244
+ continue;
245
+ const entry = existing[key];
246
+ if (!entry && !add.includes(key)) {
247
+ add.push(key);
248
+ }
249
+ else if (entry && !isAutoManagedTag(entry)) {
250
+ // Preserve manually assigned tags.
251
+ }
252
+ if (!detail.detectedBy)
253
+ detail.detectedBy = NARRATIVE_SYNC_DETECTED_BY;
254
+ }
255
+ for (const [key, entry] of Object.entries(existing)) {
256
+ if (isAutoManagedDerivedTag(entry) && !evaluated[key]) {
257
+ remove.push(key);
258
+ }
259
+ }
260
+ return { add, remove, evaluated, signals, details: derivedDetails };
261
+ }
262
+ export function applyNarrativeSync(record, result, now = new Date().toISOString()) {
263
+ const next = { ...record };
264
+ const narratives = { ...readNarrativesMap(record) };
265
+ for (const key of result.add) {
266
+ const detail = "details" in result ? result.details?.[key] : undefined;
267
+ narratives[key] = {
268
+ addedAt: now,
269
+ detectedBy: NARRATIVE_SYNC_DETECTED_BY,
270
+ kind: detail?.kind ?? "having-signal",
271
+ ...detail,
272
+ };
273
+ }
274
+ for (const key of result.remove) {
275
+ const entry = narratives[key];
276
+ if (isAutoManagedTag(entry)) {
277
+ delete narratives[key];
278
+ }
279
+ }
280
+ if (Object.keys(narratives).length > 0) {
281
+ next.narratives = narratives;
282
+ }
283
+ else {
284
+ delete next.narratives;
285
+ }
286
+ return next;
287
+ }
288
+ export { NARRATIVE_SYNC_DETECTED_BY };
289
+ //# sourceMappingURL=narrative-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrative-sync.js","sourceRoot":"","sources":["../../src/narratives/narrative-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type PipelineStage } from "../pipeline-job-types.js";
2
+ import type { LoadPipelinePartsCatalogOptions, PipelinePartsCatalog } from "./types.js";
3
+ export declare function defaultRepoRoot(): string;
4
+ export declare function loadPipelinePartsCatalog(options?: LoadPipelinePartsCatalogOptions): Promise<PipelinePartsCatalog>;
5
+ export declare function catalogPartIdsForObjectType(catalog: PipelinePartsCatalog, objectType: string): string[];
6
+ export declare function stageReferenceMeta(): {
7
+ stage: PipelineStage;
8
+ jobTypeId: string;
9
+ primaryLifecycle: import("../index.js").PipelineLifecycleProcess;
10
+ description: string;
11
+ }[];
12
+ //# sourceMappingURL=build-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-catalog.d.ts","sourceRoot":"","sources":["../../src/parts-catalog/build-catalog.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAEV,+BAA+B,EAE/B,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAwEpB,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AA2LD,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,oBAAoB,CAAC,CA4D/B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,oBAAoB,EAC7B,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAIV;AAED,wBAAgB,kBAAkB;;;;;IAOjC"}
@@ -0,0 +1,285 @@
1
+ import { readFile, readdir } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { builtinInsightProcessors } from "@x12i/memorix-insights";
5
+ import { builtinResolvers } from "@x12i/memorix-resolvers";
6
+ import { PIPELINE_JOB_TYPE_IDS, PIPELINE_STAGES, STAGE_PRIMARY_LIFECYCLE, } from "../pipeline-job-types.js";
7
+ const RESOLVER_META = {
8
+ "exact-match": {
9
+ title: "Exact match",
10
+ description: "Normalize and copy join field values from source paths.",
11
+ stageAffinity: ["resolution"],
12
+ },
13
+ "multi-value": {
14
+ title: "Multi-value split",
15
+ description: "Split delimited strings into array join fields.",
16
+ stageAffinity: ["resolution"],
17
+ },
18
+ "bridge-index": {
19
+ title: "Bridge index",
20
+ description: "Resolve join keys through a bridge collection index.",
21
+ stageAffinity: ["resolution"],
22
+ },
23
+ "subnet-cidr": {
24
+ title: "Subnet CIDR",
25
+ description: "Normalize CIDR or resolve asset IPs to canonical subnet CIDRs.",
26
+ stageAffinity: ["resolution"],
27
+ },
28
+ "subnet-key": {
29
+ title: "Subnet key",
30
+ description: "Derive legacy subnetIp/subnetId from asset IP or CIDR network portion.",
31
+ stageAffinity: ["resolution"],
32
+ },
33
+ "topology-extractor": {
34
+ title: "Topology extractor",
35
+ description: "Build associatedTopology from associatedData or subnet IP lookup.",
36
+ stageAffinity: ["resolution"],
37
+ },
38
+ "zone-from-topology": {
39
+ title: "Zone from topology",
40
+ description: "Remediate UNKNOWN subnet zones from topology-raw graph.",
41
+ stageAffinity: ["enrichment"],
42
+ },
43
+ };
44
+ const STAGE_DESCRIPTIONS = {
45
+ resolution: "Run descriptor processing.resolvers (subnet-cidr, topology-extractor, etc.).",
46
+ enrichment: "Run insight processors and zone/subnet enrichment resolvers.",
47
+ association: "Parent route roll-down and associated bucket materialization.",
48
+ "narrative-sync": "Derive flat narratives from associations, relations, and descriptor signals.",
49
+ };
50
+ const REMEDIATION_OPS = [
51
+ {
52
+ id: "remediation:load-topology-zones-analysis",
53
+ kind: "remediation-op",
54
+ title: "Load zone cyber-analysis seed",
55
+ description: "One-time upsert of topology-zones-analysis from analyst JSON.",
56
+ package: "scripts/memorix-2.0-migrate",
57
+ editable: false,
58
+ remediationScript: "scripts/memorix-2.0-migrate/patches/load-topology-zones-analysis.mjs",
59
+ },
60
+ {
61
+ id: "remediation:remove-has-vulnerabilities",
62
+ kind: "remediation-op",
63
+ title: "Remove legacy hasVulnerabilities",
64
+ description: "One-time unset of data.hasVulnerabilities and stale has-has-vulnerabilities narratives.",
65
+ package: "scripts/memorix-2.0-migrate",
66
+ editable: false,
67
+ remediationScript: "scripts/memorix-2.0-migrate/patches/remove-assets-snapshots-has-vulnerabilities.mjs",
68
+ },
69
+ ];
70
+ export function defaultRepoRoot() {
71
+ const here = dirname(fileURLToPath(import.meta.url));
72
+ return join(here, "..", "..", "..");
73
+ }
74
+ function indexUsedBy(descriptors) {
75
+ const byKey = new Map();
76
+ const add = (key, entry) => {
77
+ const bucket = byKey.get(key) ?? [];
78
+ if (!bucket.some((e) => e.objectType === entry.objectType && e.path === entry.path)) {
79
+ bucket.push(entry);
80
+ }
81
+ byKey.set(key, bucket);
82
+ };
83
+ for (const descriptor of descriptors ?? []) {
84
+ for (const resolver of descriptor.processing?.resolvers ?? []) {
85
+ const type = resolver.resolverType;
86
+ if (type) {
87
+ add(`resolver:${type}`, {
88
+ objectType: descriptor.entityName,
89
+ path: `processing.resolvers.${resolver.processorId ?? type}`,
90
+ });
91
+ }
92
+ }
93
+ for (const stage of descriptor.processing?.insightStages ?? []) {
94
+ if (stage.processorId) {
95
+ add(`insight:${stage.processorId}`, {
96
+ objectType: descriptor.entityName,
97
+ path: `processing.insightStages.${stage.processorId}`,
98
+ });
99
+ }
100
+ }
101
+ for (const prop of descriptor.associatedProperties ?? []) {
102
+ if (prop.refreshRuleKey) {
103
+ add(`preset:${prop.refreshRuleKey}`, {
104
+ objectType: descriptor.entityName,
105
+ path: `associatedProperties.${prop.name ?? prop.refreshRuleKey}`,
106
+ });
107
+ }
108
+ }
109
+ }
110
+ return byKey;
111
+ }
112
+ function buildResolverParts(usedBy) {
113
+ return builtinResolvers.map((def) => {
114
+ const meta = RESOLVER_META[def.type] ?? {
115
+ title: def.type,
116
+ description: `Resolver type ${def.type}`,
117
+ stageAffinity: ["resolution"],
118
+ };
119
+ return {
120
+ id: `resolver:${def.type}`,
121
+ kind: "resolver",
122
+ title: meta.title,
123
+ description: meta.description,
124
+ package: "@x12i/memorix-resolvers",
125
+ stageAffinity: meta.stageAffinity,
126
+ resolverType: def.type,
127
+ editable: false,
128
+ usedBy: usedBy.get(`resolver:${def.type}`),
129
+ };
130
+ });
131
+ }
132
+ function buildInsightParts(usedBy) {
133
+ return builtinInsightProcessors.map((def) => ({
134
+ id: `insight:${def.processorId}`,
135
+ kind: "insight-processor",
136
+ title: def.processorId,
137
+ description: `Insight processor ${def.processorId}`,
138
+ package: "@x12i/memorix-insights",
139
+ stageAffinity: ["enrichment"],
140
+ processorId: def.processorId,
141
+ editable: false,
142
+ usedBy: usedBy.get(`insight:${def.processorId}`),
143
+ }));
144
+ }
145
+ function buildStageParts() {
146
+ return PIPELINE_STAGES.map((stage) => ({
147
+ id: `stage:${stage}`,
148
+ kind: "pipeline-stage",
149
+ title: stage,
150
+ description: STAGE_DESCRIPTIONS[stage],
151
+ package: "@x12i/memorix-pipeline",
152
+ stage,
153
+ stageAffinity: [stage],
154
+ editable: false,
155
+ }));
156
+ }
157
+ async function loadRegistry(repoRoot) {
158
+ const path = join(repoRoot, ".operational/metadata/associated-properties-registry.json");
159
+ return JSON.parse(await readFile(path, "utf8"));
160
+ }
161
+ async function loadPresetManifest(repoRoot) {
162
+ const path = join(repoRoot, "memorix-associator/presets/manifest.json");
163
+ return JSON.parse(await readFile(path, "utf8"));
164
+ }
165
+ async function buildPresetParts(repoRoot, registry, usedBy) {
166
+ const manifest = await loadPresetManifest(repoRoot);
167
+ const registryByKey = new Map((registry.managedAssociatedProperties ?? []).map((e) => [e.refreshRuleKey, e]));
168
+ return (manifest.presets ?? []).map((preset) => {
169
+ const reg = registryByKey.get(preset.refreshRuleKey);
170
+ return {
171
+ id: `preset:${preset.refreshRuleKey}`,
172
+ kind: "association-preset",
173
+ title: preset.refreshRuleKey,
174
+ description: `${preset.sourceObjectType}.${preset.associatedProperty} association refresh`,
175
+ package: "@x12i/memorix-associator",
176
+ stageAffinity: ["association"],
177
+ editable: false,
178
+ presetPath: preset.presetPath,
179
+ usedBy: usedBy.get(`preset:${preset.refreshRuleKey}`),
180
+ registryEntry: reg
181
+ ? {
182
+ refreshRuleKey: reg.refreshRuleKey,
183
+ associatedProperty: reg.associatedProperty,
184
+ sourceObjectType: reg.sourceObjectType,
185
+ liveCoverage: reg.liveCoverage,
186
+ }
187
+ : undefined,
188
+ };
189
+ });
190
+ }
191
+ async function loadPlaybooks(repoRoot) {
192
+ const dir = join(repoRoot, ".operational/playbooks");
193
+ let files = [];
194
+ try {
195
+ files = (await readdir(dir)).filter((f) => f.endsWith(".json"));
196
+ }
197
+ catch {
198
+ return [];
199
+ }
200
+ const playbooks = [];
201
+ for (const file of files) {
202
+ const raw = JSON.parse(await readFile(join(dir, file), "utf8"));
203
+ const stepPartIds = raw.steps.map((step) => {
204
+ if (step.kind === "pipeline-stage")
205
+ return `stage:${step.stage}`;
206
+ if (step.kind === "associator-preset")
207
+ return `preset:${step.refreshRuleKey}`;
208
+ if (step.kind === "resolver")
209
+ return `resolver:${step.resolverType}`;
210
+ return "";
211
+ }).filter(Boolean);
212
+ playbooks.push({ ...raw, stepPartIds });
213
+ }
214
+ return playbooks;
215
+ }
216
+ export async function loadPipelinePartsCatalog(options = {}) {
217
+ const repoRoot = options.repoRoot ?? defaultRepoRoot();
218
+ const usedBy = indexUsedBy(options.descriptors);
219
+ const registry = await loadRegistry(repoRoot);
220
+ const parts = [
221
+ ...buildResolverParts(usedBy),
222
+ ...buildInsightParts(usedBy),
223
+ ...buildStageParts(),
224
+ ...(await buildPresetParts(repoRoot, registry, usedBy)),
225
+ ...REMEDIATION_OPS,
226
+ ];
227
+ for (const entry of registry.managedAssociatedProperties ?? []) {
228
+ if (entry.enrichmentResolver && !parts.some((p) => p.id === `resolver:${entry.enrichmentResolver}`)) {
229
+ const meta = RESOLVER_META[entry.enrichmentResolver] ?? {
230
+ title: entry.enrichmentResolver,
231
+ description: `Enrichment resolver for ${entry.refreshRuleKey}`,
232
+ stageAffinity: ["resolution"],
233
+ };
234
+ parts.push({
235
+ id: `resolver:${entry.enrichmentResolver}`,
236
+ kind: "resolver",
237
+ title: meta.title,
238
+ description: meta.description,
239
+ package: "@x12i/memorix-resolvers",
240
+ stageAffinity: meta.stageAffinity,
241
+ resolverType: entry.enrichmentResolver,
242
+ editable: false,
243
+ registryEntry: {
244
+ refreshRuleKey: entry.refreshRuleKey,
245
+ associatedProperty: entry.associatedProperty,
246
+ sourceObjectType: entry.sourceObjectType,
247
+ liveCoverage: entry.liveCoverage,
248
+ },
249
+ });
250
+ }
251
+ }
252
+ const playbooks = await loadPlaybooks(repoRoot);
253
+ for (const playbook of playbooks) {
254
+ parts.push({
255
+ id: `playbook:${playbook.id}`,
256
+ kind: "enrichment-playbook",
257
+ title: playbook.title,
258
+ description: playbook.description,
259
+ package: "@x12i/memorix-pipeline",
260
+ editable: false,
261
+ playbookSteps: playbook.stepPartIds,
262
+ });
263
+ }
264
+ const byId = Object.fromEntries(parts.map((part) => [part.id, part]));
265
+ return {
266
+ generatedAt: new Date().toISOString(),
267
+ parts,
268
+ playbooks,
269
+ byId,
270
+ };
271
+ }
272
+ export function catalogPartIdsForObjectType(catalog, objectType) {
273
+ return catalog.parts
274
+ .filter((part) => part.usedBy?.some((u) => u.objectType === objectType))
275
+ .map((part) => part.id);
276
+ }
277
+ export function stageReferenceMeta() {
278
+ return PIPELINE_STAGES.map((stage) => ({
279
+ stage,
280
+ jobTypeId: PIPELINE_JOB_TYPE_IDS[stage],
281
+ primaryLifecycle: STAGE_PRIMARY_LIFECYCLE[stage],
282
+ description: STAGE_DESCRIPTIONS[stage],
283
+ }));
284
+ }
285
+ //# sourceMappingURL=build-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-catalog.js","sourceRoot":"","sources":["../../src/parts-catalog/build-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,uBAAuB,GAExB,MAAM,0BAA0B,CAAC;AASlC,MAAM,aAAa,GAGf;IACF,aAAa,EAAE;QACb,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,yDAAyD;QACtE,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B;IACD,aAAa,EAAE;QACb,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,iDAAiD;QAC9D,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B;IACD,cAAc,EAAE;QACd,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,sDAAsD;QACnE,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B;IACD,aAAa,EAAE;QACb,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,gEAAgE;QAC7E,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,wEAAwE;QACrF,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B;IACD,oBAAoB,EAAE;QACpB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,mEAAmE;QAChF,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B;IACD,oBAAoB,EAAE;QACpB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,yDAAyD;QACtE,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAkC;IACxD,UAAU,EAAE,8EAA8E;IAC1F,UAAU,EAAE,8DAA8D;IAC1E,WAAW,EAAE,+DAA+D;IAC5E,gBAAgB,EAAE,8EAA8E;CACjG,CAAC;AAEF,MAAM,eAAe,GAAmB;IACtC;QACE,EAAE,EAAE,0CAA0C;QAC9C,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,KAAK;QACf,iBAAiB,EAAE,sEAAsE;KAC1F;IACD;QACE,EAAE,EAAE,wCAAwC;QAC5C,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,kCAAkC;QACzC,WAAW,EAAE,yFAAyF;QACtG,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,KAAK;QACf,iBAAiB,EACf,qFAAqF;KACxF;CACF,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAClB,WAA2D;IAE3D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,KAAyB,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;QAC3C,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;YACnC,IAAI,IAAI,EAAE,CAAC;gBACT,GAAG,CAAC,YAAY,IAAI,EAAE,EAAE;oBACtB,UAAU,EAAE,UAAU,CAAC,UAAU;oBACjC,IAAI,EAAE,wBAAwB,QAAQ,CAAC,WAAW,IAAI,IAAI,EAAE;iBAC7D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,UAAU,EAAE,aAAa,IAAI,EAAE,EAAE,CAAC;YAC/D,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,GAAG,CAAC,WAAW,KAAK,CAAC,WAAW,EAAE,EAAE;oBAClC,UAAU,EAAE,UAAU,CAAC,UAAU;oBACjC,IAAI,EAAE,4BAA4B,KAAK,CAAC,WAAW,EAAE;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,GAAG,CAAC,UAAU,IAAI,CAAC,cAAc,EAAE,EAAE;oBACnC,UAAU,EAAE,UAAU,CAAC,UAAU;oBACjC,IAAI,EAAE,wBAAwB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;iBACjE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAyC;IACnE,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;YACtC,KAAK,EAAE,GAAG,CAAC,IAAI;YACf,WAAW,EAAE,iBAAiB,GAAG,CAAC,IAAI,EAAE;YACxC,aAAa,EAAE,CAAC,YAA6B,CAAC;SAC/C,CAAC;QACF,OAAO;YACL,EAAE,EAAE,YAAY,GAAG,CAAC,IAAI,EAAE;YAC1B,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,yBAAyB;YAClC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,GAAG,CAAC,IAAI;YACtB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAyC;IAClE,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5C,EAAE,EAAE,WAAW,GAAG,CAAC,WAAW,EAAE;QAChC,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,GAAG,CAAC,WAAW;QACtB,WAAW,EAAE,qBAAqB,GAAG,CAAC,WAAW,EAAE;QACnD,OAAO,EAAE,wBAAwB;QACjC,aAAa,EAAE,CAAC,YAA6B,CAAC;QAC9C,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,WAAW,EAAE,CAAC;KACjD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrC,EAAE,EAAE,SAAS,KAAK,EAAE;QACpB,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC;QACtC,OAAO,EAAE,wBAAwB;QACjC,KAAK;QACL,aAAa,EAAE,CAAC,KAAK,CAAC;QACtB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,CAAC;AACN,CAAC;AAkBD,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,2DAA2D,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAiB,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,0CAA0C,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAO7C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,QAAsB,EACtB,MAAyC;IAEzC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,CAAC,QAAQ,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAC/E,CAAC;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrD,OAAO;YACL,EAAE,EAAE,UAAU,MAAM,CAAC,cAAc,EAAE;YACrC,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,MAAM,CAAC,cAAc;YAC5B,WAAW,EAAE,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,kBAAkB,sBAAsB;YAC1F,OAAO,EAAE,0BAA0B;YACnC,aAAa,EAAE,CAAC,aAA8B,CAAC;YAC/C,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,cAAc,EAAE,CAAC;YACrD,aAAa,EAAE,GAAG;gBAChB,CAAC,CAAC;oBACE,cAAc,EAAE,GAAG,CAAC,cAAc;oBAClC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;oBAC1C,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;oBACtC,YAAY,EAAE,GAAG,CAAC,YAIL;iBACd;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IACrD,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAuB,CAAC;QACtF,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB;gBAAE,OAAO,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;YACjE,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB;gBAAE,OAAO,UAAU,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;YACrE,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,UAA2C,EAAE;IAE7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAmB;QAC5B,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC7B,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC5B,GAAG,eAAe,EAAE;QACpB,GAAG,CAAC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,GAAG,eAAe;KACnB,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,2BAA2B,IAAI,EAAE,EAAE,CAAC;QAC/D,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC;YACpG,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI;gBACtD,KAAK,EAAE,KAAK,CAAC,kBAAkB;gBAC/B,WAAW,EAAE,2BAA2B,KAAK,CAAC,cAAc,EAAE;gBAC9D,aAAa,EAAE,CAAC,YAA6B,CAAC;aAC/C,CAAC;YACF,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,YAAY,KAAK,CAAC,kBAAkB,EAAE;gBAC1C,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,yBAAyB;gBAClC,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,YAAY,EAAE,KAAK,CAAC,kBAAkB;gBACtC,QAAQ,EAAE,KAAK;gBACf,aAAa,EAAE;oBACb,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;oBAC5C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;oBACxC,YAAY,EAAE,KAAK,CAAC,YAAY;iBACjC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,YAAY,QAAQ,CAAC,EAAE,EAAE;YAC7B,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,OAAO,EAAE,wBAAwB;YACjC,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,QAAQ,CAAC,WAAW;SACpC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtE,OAAO;QACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,KAAK;QACL,SAAS;QACT,IAAI;KACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAA6B,EAC7B,UAAkB;IAElB,OAAO,OAAO,CAAC,KAAK;SACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;SACvE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrC,KAAK;QACL,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC;QACvC,gBAAgB,EAAE,uBAAuB,CAAC,KAAK,CAAC;QAChD,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC;KACvC,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { PipelinePart, PipelinePartKind, PipelinePartsCatalog, EnrichmentPlaybook, EnrichmentPlaybookStep, LoadPipelinePartsCatalogOptions, PipelinePartRegistryLink, PipelinePartUsedBy, } from "./types.js";
2
+ export { loadPipelinePartsCatalog, catalogPartIdsForObjectType, stageReferenceMeta, defaultRepoRoot, } from "./build-catalog.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parts-catalog/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { loadPipelinePartsCatalog, catalogPartIdsForObjectType, stageReferenceMeta, defaultRepoRoot, } from "./build-catalog.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parts-catalog/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,GAChB,MAAM,oBAAoB,CAAC"}