@x12i/memorix-package-seed 1.0.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 (86) hide show
  1. package/README.md +114 -0
  2. package/dist/agent-merge.d.ts +17 -0
  3. package/dist/agent-merge.d.ts.map +1 -0
  4. package/dist/agent-merge.js +94 -0
  5. package/dist/agent-merge.js.map +1 -0
  6. package/dist/catalox.d.ts +21 -0
  7. package/dist/catalox.d.ts.map +1 -0
  8. package/dist/catalox.js +37 -0
  9. package/dist/catalox.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +161 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/constants.d.ts +13 -0
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/constants.js +37 -0
  17. package/dist/constants.js.map +1 -0
  18. package/dist/ensure-seeded.d.ts +36 -0
  19. package/dist/ensure-seeded.d.ts.map +1 -0
  20. package/dist/ensure-seeded.js +335 -0
  21. package/dist/ensure-seeded.js.map +1 -0
  22. package/dist/errors.d.ts +13 -0
  23. package/dist/errors.d.ts.map +1 -0
  24. package/dist/errors.js +13 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/hash.d.ts +6 -0
  27. package/dist/hash.d.ts.map +1 -0
  28. package/dist/hash.js +27 -0
  29. package/dist/hash.js.map +1 -0
  30. package/dist/identity.d.ts +8 -0
  31. package/dist/identity.d.ts.map +1 -0
  32. package/dist/identity.js +60 -0
  33. package/dist/identity.js.map +1 -0
  34. package/dist/index.d.ts +21 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +45 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/lease.d.ts +17 -0
  39. package/dist/lease.d.ts.map +1 -0
  40. package/dist/lease.js +113 -0
  41. package/dist/lease.js.map +1 -0
  42. package/dist/ledger.d.ts +20 -0
  43. package/dist/ledger.d.ts.map +1 -0
  44. package/dist/ledger.js +48 -0
  45. package/dist/ledger.js.map +1 -0
  46. package/dist/manifest.d.ts +9 -0
  47. package/dist/manifest.d.ts.map +1 -0
  48. package/dist/manifest.js +275 -0
  49. package/dist/manifest.js.map +1 -0
  50. package/dist/platform-core.d.ts +19 -0
  51. package/dist/platform-core.d.ts.map +1 -0
  52. package/dist/platform-core.js +68 -0
  53. package/dist/platform-core.js.map +1 -0
  54. package/dist/secrets.d.ts +2 -0
  55. package/dist/secrets.d.ts.map +1 -0
  56. package/dist/secrets.js +34 -0
  57. package/dist/secrets.js.map +1 -0
  58. package/dist/types.d.ts +115 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/writers/inventory-agents.d.ts +3 -0
  63. package/dist/writers/inventory-agents.d.ts.map +1 -0
  64. package/dist/writers/inventory-agents.js +102 -0
  65. package/dist/writers/inventory-agents.js.map +1 -0
  66. package/dist/writers/native-items.d.ts +6 -0
  67. package/dist/writers/native-items.d.ts.map +1 -0
  68. package/dist/writers/native-items.js +63 -0
  69. package/dist/writers/native-items.js.map +1 -0
  70. package/dist/writers/orchestration.d.ts +5 -0
  71. package/dist/writers/orchestration.d.ts.map +1 -0
  72. package/dist/writers/orchestration.js +102 -0
  73. package/dist/writers/orchestration.js.map +1 -0
  74. package/dist/writers/pipeline-services.d.ts +3 -0
  75. package/dist/writers/pipeline-services.d.ts.map +1 -0
  76. package/dist/writers/pipeline-services.js +52 -0
  77. package/dist/writers/pipeline-services.js.map +1 -0
  78. package/dist/writers/registry.d.ts +5 -0
  79. package/dist/writers/registry.d.ts.map +1 -0
  80. package/dist/writers/registry.js +81 -0
  81. package/dist/writers/registry.js.map +1 -0
  82. package/dist/writers/worker-bases.d.ts +3 -0
  83. package/dist/writers/worker-bases.d.ts.map +1 -0
  84. package/dist/writers/worker-bases.js +36 -0
  85. package/dist/writers/worker-bases.js.map +1 -0
  86. package/package.json +62 -0
@@ -0,0 +1,115 @@
1
+ import type { BUILTIN_PLANE_KINDS } from "./constants.js";
2
+ export type MemorixPackageSeedMode = "strict" | "upgrade" | "force";
3
+ export type MemorixPackageSeedOutcome = "applied" | "skipped" | "conflict" | "failed";
4
+ export type MemorixPackageSeedErrorCode = "MISSING_IDENTITY" | "INVALID_IDENTITY" | "IDENTITY_MISMATCH" | "INVALID_MANIFEST" | "INVALID_PATH" | "INVALID_PLANE" | "UNKNOWN_PLANE_KIND" | "SECRET_DETECTED" | "PAYLOAD_TOO_LARGE" | "REVISION_NOT_BUMPED" | "AGENT_SCOPE_MISMATCH" | "MISSING_CUSTOM_WRITER" | "RESET_NOT_ALLOWED" | "LEASE_LOST" | "CORE_BOOTSTRAP_FAILED" | "APPLY_FAILED";
5
+ export type PackageSeedIdentity = {
6
+ packageId: string;
7
+ packageVersion: string;
8
+ agentId: string;
9
+ targetAgentIds?: string[];
10
+ };
11
+ export type PackageSeedManifestPlane = {
12
+ kind: (typeof BUILTIN_PLANE_KINDS)[number] | string;
13
+ catalogId: string;
14
+ file?: string;
15
+ inline?: unknown[];
16
+ options?: Record<string, unknown>;
17
+ };
18
+ export type PackageSeedManifest = {
19
+ schemaVersion: 1;
20
+ packageId: string;
21
+ agentId: string;
22
+ targetAgentIds?: string[];
23
+ seedRevision: string;
24
+ description?: string;
25
+ planes: PackageSeedManifestPlane[];
26
+ options?: {
27
+ allowAdditionalAgents?: boolean;
28
+ contentHashIncludes?: string[];
29
+ };
30
+ };
31
+ export type PackageSeedPlanePayload = {
32
+ kind: string;
33
+ catalogId: string;
34
+ items: unknown[];
35
+ options?: Record<string, unknown>;
36
+ source?: string;
37
+ };
38
+ export type LoadedPackageSeed = {
39
+ identity: Required<PackageSeedIdentity> & {
40
+ targetAgentIds: string[];
41
+ };
42
+ manifest: PackageSeedManifest;
43
+ planes: PackageSeedPlanePayload[];
44
+ seedDir: string;
45
+ artifactPaths: string[];
46
+ payloadHash: string;
47
+ contentHash: string;
48
+ };
49
+ export type PlaneWriteReport = {
50
+ kind: string;
51
+ catalogId: string;
52
+ itemCount: number;
53
+ upserted: number;
54
+ skipped: number;
55
+ };
56
+ export type TargetApplyReport = {
57
+ targetAgentId: string;
58
+ databaseName: string;
59
+ outcome: MemorixPackageSeedOutcome;
60
+ reasonCode?: string;
61
+ message?: string;
62
+ planes?: PlaneWriteReport[];
63
+ };
64
+ export type EnsureSeededResult = {
65
+ outcome: MemorixPackageSeedOutcome;
66
+ packageId: string;
67
+ primaryAgentId: string;
68
+ contentHash: string;
69
+ payloadHash: string;
70
+ seedRevision: string;
71
+ targets: TargetApplyReport[];
72
+ };
73
+ export type PackageSeedLedgerItem = {
74
+ id: string;
75
+ kind: "package-seed-ledger";
76
+ packageId: string;
77
+ primaryAgentId: string;
78
+ targetAgentId: string;
79
+ packageVersion: string;
80
+ seedRevision: string;
81
+ payloadHash: string;
82
+ contentHash: string;
83
+ status: "applying" | "applied" | "failed";
84
+ attempts: number;
85
+ appliedAt?: string;
86
+ updatedAt: string;
87
+ appliedBy?: string;
88
+ planes?: PlaneWriteReport[];
89
+ lastError?: {
90
+ message: string;
91
+ at: string;
92
+ code?: string;
93
+ };
94
+ };
95
+ export type SeedApplyContext = {
96
+ catalox: unknown;
97
+ mongoDb: import("mongodb").Db;
98
+ targetAgentId: string;
99
+ primaryAgentId: string;
100
+ packageId: string;
101
+ packageVersion: string;
102
+ seedRevision: string;
103
+ mode: MemorixPackageSeedMode;
104
+ processEnv: NodeJS.ProcessEnv;
105
+ appId: string;
106
+ abortSignal: AbortSignal;
107
+ checkFence: () => Promise<void>;
108
+ };
109
+ export type PlaneWriteResult = {
110
+ itemCount: number;
111
+ upserted: number;
112
+ skipped: number;
113
+ };
114
+ export type PlaneWriter = (ctx: SeedApplyContext, items: unknown[], options?: Record<string, unknown>) => Promise<PlaneWriteResult>;
115
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { PlaneWriter } from "../types.js";
2
+ export declare const writeInventoryAgents: PlaneWriter;
3
+ //# sourceMappingURL=inventory-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-agents.d.ts","sourceRoot":"","sources":["../../src/writers/inventory-agents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA0B/C,eAAO,MAAM,oBAAoB,EAAE,WA2FlC,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { MemorixPackageSeedError } from "../errors.js";
2
+ import { acquireSeedLease } from "../lease.js";
3
+ async function ensureInventoryPoliciesCatalog(catalox) {
4
+ await catalox.ensureCatalog({
5
+ catalogId: "memorix-inventory-policies",
6
+ name: "Memorix inventory policies",
7
+ status: "active",
8
+ });
9
+ }
10
+ function asAgentRecords(raw) {
11
+ if (!raw || typeof raw !== "object") {
12
+ throw new MemorixPackageSeedError({
13
+ code: "INVALID_PLANE",
14
+ message: "inventory agent item must be an object",
15
+ });
16
+ }
17
+ const maybeDoc = raw;
18
+ if (Array.isArray(maybeDoc.agents)) {
19
+ return maybeDoc.agents;
20
+ }
21
+ return [raw];
22
+ }
23
+ export const writeInventoryAgents = async (ctx, items) => {
24
+ const catalox = ctx.catalox;
25
+ const catalogId = "memorix-inventory-policies";
26
+ await ensureInventoryPoliciesCatalog(catalox);
27
+ const lease = await acquireSeedLease(ctx.mongoDb, `inventory-agents:${ctx.targetAgentId}`);
28
+ try {
29
+ await lease.checkFence();
30
+ const existingResult = await catalox.getCatalogItem(catalogId, "memorix-ui-agents");
31
+ const existing = existingResult.outcome === "not_found" ||
32
+ existingResult.outcome === "mapping_blocked"
33
+ ? {
34
+ id: "memorix-ui-agents",
35
+ schemaVersion: "memorix.inventoryPolicy.v1",
36
+ agents: [],
37
+ scope: { domains: [], agents: [] },
38
+ }
39
+ : {
40
+ id: "memorix-ui-agents",
41
+ ...(existingResult.item.data ?? {}),
42
+ };
43
+ const currentAgents = Array.isArray(existing.agents)
44
+ ? [...existing.agents]
45
+ : [];
46
+ const byId = new Map();
47
+ for (const agent of currentAgents) {
48
+ if (typeof agent.id === "string")
49
+ byId.set(agent.id, agent);
50
+ }
51
+ let upserted = 0;
52
+ for (const raw of items) {
53
+ await lease.checkFence();
54
+ for (const agent of asAgentRecords(raw)) {
55
+ const id = typeof agent.id === "string" ? agent.id.trim() : "";
56
+ if (!id) {
57
+ throw new MemorixPackageSeedError({
58
+ code: "INVALID_PLANE",
59
+ message: "inventory agent requires id",
60
+ });
61
+ }
62
+ const prior = byId.get(id);
63
+ if (prior && JSON.stringify(prior) !== JSON.stringify(agent)) {
64
+ throw new MemorixPackageSeedError({
65
+ code: "APPLY_FAILED",
66
+ message: `Conflicting inventory agent definition for ${id}`,
67
+ field: "agents",
68
+ value: id,
69
+ });
70
+ }
71
+ if (!prior) {
72
+ byId.set(id, agent);
73
+ upserted += 1;
74
+ }
75
+ }
76
+ }
77
+ const mergedAgents = [...byId.values()].sort((a, b) => String(a.id).localeCompare(String(b.id)));
78
+ const scopeAgents = mergedAgents
79
+ .map((a) => a.id)
80
+ .filter((id) => typeof id === "string");
81
+ const priorScope = existing.scope && typeof existing.scope === "object"
82
+ ? existing.scope
83
+ : {};
84
+ await catalox.upsertNativeCatalogItem(catalogId, {
85
+ ...existing,
86
+ id: "memorix-ui-agents",
87
+ schemaVersion: typeof existing.schemaVersion === "string"
88
+ ? existing.schemaVersion
89
+ : "memorix.inventoryPolicy.v1",
90
+ agents: mergedAgents,
91
+ scope: {
92
+ ...priorScope,
93
+ agents: scopeAgents,
94
+ },
95
+ });
96
+ return { itemCount: items.length, upserted, skipped: 0 };
97
+ }
98
+ finally {
99
+ await lease.release();
100
+ }
101
+ };
102
+ //# sourceMappingURL=inventory-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-agents.js","sourceRoot":"","sources":["../../src/writers/inventory-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PlaneWriter } from "../types.js";
2
+ export declare function createNativeItemsWriter(catalogId: string, options?: {
3
+ allowAnyCatalog?: boolean;
4
+ }): PlaneWriter;
5
+ export declare const writeNativeCatalogItems: PlaneWriter;
6
+ //# sourceMappingURL=native-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-items.d.ts","sourceRoot":"","sources":["../../src/writers/native-items.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA+B/C,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,WAAW,CA2Bb;AAED,eAAO,MAAM,uBAAuB,EAAE,WAgBrC,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { NATIVE_CATALOG_ALLOWLIST } from "../constants.js";
2
+ import { MemorixPackageSeedError } from "../errors.js";
3
+ function itemId(item) {
4
+ if (!item || typeof item !== "object") {
5
+ throw new MemorixPackageSeedError({
6
+ code: "INVALID_PLANE",
7
+ message: "native catalog item must be an object with id",
8
+ });
9
+ }
10
+ const id = item.id;
11
+ if (typeof id !== "string" || !id.trim()) {
12
+ throw new MemorixPackageSeedError({
13
+ code: "INVALID_PLANE",
14
+ message: "native catalog item requires string id",
15
+ });
16
+ }
17
+ return id.trim();
18
+ }
19
+ async function ensureNativeCatalog(catalox, catalogId, name) {
20
+ await catalox.ensureCatalog({
21
+ catalogId,
22
+ name,
23
+ status: "active",
24
+ });
25
+ }
26
+ export function createNativeItemsWriter(catalogId, options = {}) {
27
+ return async (ctx, items) => {
28
+ if (!options.allowAnyCatalog &&
29
+ !NATIVE_CATALOG_ALLOWLIST.includes(catalogId)) {
30
+ throw new MemorixPackageSeedError({
31
+ code: "INVALID_PLANE",
32
+ message: `Catalog ${catalogId} is not allowlisted for native upsert`,
33
+ field: "catalogId",
34
+ value: catalogId,
35
+ });
36
+ }
37
+ const catalox = ctx.catalox;
38
+ await ensureNativeCatalog(catalox, catalogId, catalogId);
39
+ let upserted = 0;
40
+ for (const raw of items) {
41
+ await ctx.checkFence();
42
+ const id = itemId(raw);
43
+ await catalox.upsertNativeCatalogItem(catalogId, {
44
+ ...raw,
45
+ id,
46
+ });
47
+ upserted += 1;
48
+ }
49
+ return { itemCount: items.length, upserted, skipped: 0 };
50
+ };
51
+ }
52
+ export const writeNativeCatalogItems = async (ctx, items, options) => {
53
+ const catalogId = typeof options?.catalogId === "string" ? options.catalogId.trim() : "";
54
+ if (!catalogId) {
55
+ throw new MemorixPackageSeedError({
56
+ code: "INVALID_PLANE",
57
+ message: "native-catalog-items requires options.catalogId or plane.catalogId via registry",
58
+ field: "catalogId",
59
+ });
60
+ }
61
+ return createNativeItemsWriter(catalogId)(ctx, items, options);
62
+ };
63
+ //# sourceMappingURL=native-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-items.js","sourceRoot":"","sources":["../../src/writers/native-items.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,SAAS,MAAM,CAAC,IAAa;IAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,+CAA+C;SACzD,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,GAAI,IAAyB,CAAC,EAAE,CAAC;IACzC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,wCAAwC;SAClD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,OAAqB,EACrB,SAAiB,EACjB,IAAY;IAEZ,MAAM,OAAO,CAAC,aAAa,CAAC;QAC1B,SAAS;QACT,IAAI;QACJ,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,SAAiB,EACjB,UAAyC,EAAE;IAE3C,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC1B,IACE,CAAC,OAAO,CAAC,eAAe;YACxB,CAAE,wBAA8C,CAAC,QAAQ,CAAC,SAAS,CAAC,EACpE,CAAC;YACD,MAAM,IAAI,uBAAuB,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,WAAW,SAAS,uCAAuC;gBACpE,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAuB,CAAC;QAC5C,MAAM,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,OAAO,CAAC,uBAAuB,CAAC,SAAS,EAAE;gBAC/C,GAAI,GAA+B;gBACnC,EAAE;aACH,CAAC,CAAC;YACH,QAAQ,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC3D,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAgB,KAAK,EACvD,GAAG,EACH,KAAK,EACL,OAAO,EACP,EAAE;IACF,MAAM,SAAS,GACb,OAAO,OAAO,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EACL,iFAAiF;YACnF,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PlaneWriter } from "../types.js";
2
+ export declare const writePipelineSteps: PlaneWriter;
3
+ export declare const writePipelineDefinitions: PlaneWriter;
4
+ export declare const writePipelineTemplates: PlaneWriter;
5
+ //# sourceMappingURL=orchestration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.d.ts","sourceRoot":"","sources":["../../src/writers/orchestration.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,aAAa,CAAC;AAUjE,eAAO,MAAM,kBAAkB,EAAE,WAyBhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,WAgCtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,WA4BpC,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { createCataloxPipelineOrchestratorStore, validatePipelineStep, } from "@x12i/memorix-pipeline-orchestrator";
2
+ import { MemorixPackageSeedError } from "../errors.js";
3
+ function createStore(ctx) {
4
+ return createCataloxPipelineOrchestratorStore({
5
+ catalox: ctx.catalox,
6
+ appId: ctx.appId,
7
+ processEnv: ctx.processEnv,
8
+ });
9
+ }
10
+ export const writePipelineSteps = async (ctx, items) => {
11
+ const store = createStore(ctx);
12
+ let upserted = 0;
13
+ for (const raw of items) {
14
+ await ctx.checkFence();
15
+ const step = raw;
16
+ if (!step?.id) {
17
+ throw new MemorixPackageSeedError({
18
+ code: "INVALID_PLANE",
19
+ message: "pipeline step requires id",
20
+ });
21
+ }
22
+ const check = validatePipelineStep(step);
23
+ if (!check.ok) {
24
+ throw new MemorixPackageSeedError({
25
+ code: "INVALID_PLANE",
26
+ message: check.issues.map((i) => i.message).join("; "),
27
+ });
28
+ }
29
+ const existing = await store.getStep(step.id);
30
+ if (existing)
31
+ await store.updateStep(step.id, step);
32
+ else
33
+ await store.createStep(step);
34
+ upserted += 1;
35
+ }
36
+ return { itemCount: items.length, upserted, skipped: 0 };
37
+ };
38
+ export const writePipelineDefinitions = async (ctx, items) => {
39
+ const store = createStore(ctx);
40
+ let upserted = 0;
41
+ for (const raw of items) {
42
+ await ctx.checkFence();
43
+ const input = raw;
44
+ const id = input.id?.trim();
45
+ if (!id) {
46
+ throw new MemorixPackageSeedError({
47
+ code: "INVALID_PLANE",
48
+ message: "pipeline definition requires id",
49
+ });
50
+ }
51
+ const existing = await store.getPipeline(id);
52
+ if (existing) {
53
+ const patch = {
54
+ name: input.name,
55
+ description: input.description ?? null,
56
+ agentId: input.agentId ?? null,
57
+ vendor: input.vendor ?? null,
58
+ templateId: input.templateId ?? null,
59
+ stepIds: input.stepIds,
60
+ requiredRunInputs: input.requiredRunInputs ?? null,
61
+ defaults: input.defaults ?? null,
62
+ };
63
+ await store.updatePipeline(id, patch);
64
+ }
65
+ else {
66
+ await store.createPipeline({ ...input, id });
67
+ }
68
+ upserted += 1;
69
+ }
70
+ return { itemCount: items.length, upserted, skipped: 0 };
71
+ };
72
+ export const writePipelineTemplates = async (ctx, items) => {
73
+ const store = createStore(ctx);
74
+ let upserted = 0;
75
+ for (const raw of items) {
76
+ await ctx.checkFence();
77
+ const input = raw;
78
+ const id = input.id?.trim();
79
+ if (!id) {
80
+ throw new MemorixPackageSeedError({
81
+ code: "INVALID_PLANE",
82
+ message: "pipeline template requires id",
83
+ });
84
+ }
85
+ const existing = await store.getTemplate(id);
86
+ if (existing) {
87
+ const patch = {
88
+ name: input.name,
89
+ description: input.description,
90
+ icon: input.icon ?? null,
91
+ stageShape: input.stageShape,
92
+ };
93
+ await store.updateTemplate(id, patch);
94
+ }
95
+ else {
96
+ await store.createTemplate({ ...input, id });
97
+ }
98
+ upserted += 1;
99
+ }
100
+ return { itemCount: items.length, upserted, skipped: 0 };
101
+ };
102
+ //# sourceMappingURL=orchestration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/writers/orchestration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PlaneWriter } from "../types.js";
2
+ export declare const writePipelineServices: PlaneWriter;
3
+ //# sourceMappingURL=pipeline-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-services.d.ts","sourceRoot":"","sources":["../../src/writers/pipeline-services.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA6B/C,eAAO,MAAM,qBAAqB,EAAE,WAoBnC,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { createCataloxPipelineServicesStore, isPipelineServiceType, } from "@x12i/memorix-pipeline-services";
2
+ import { MemorixPackageSeedError } from "../errors.js";
3
+ function asServiceInput(item) {
4
+ if (!item || typeof item !== "object") {
5
+ throw new MemorixPackageSeedError({
6
+ code: "INVALID_PLANE",
7
+ message: "pipeline-services item must be an object",
8
+ });
9
+ }
10
+ const row = item;
11
+ const serviceType = row.serviceType;
12
+ const serviceId = row.serviceId;
13
+ if (typeof serviceType !== "string" || !isPipelineServiceType(serviceType)) {
14
+ throw new MemorixPackageSeedError({
15
+ code: "INVALID_PLANE",
16
+ message: `Invalid serviceType: ${String(serviceType)}`,
17
+ field: "serviceType",
18
+ });
19
+ }
20
+ if (typeof serviceId !== "string" || !serviceId.trim()) {
21
+ throw new MemorixPackageSeedError({
22
+ code: "INVALID_PLANE",
23
+ message: "serviceId is required",
24
+ field: "serviceId",
25
+ });
26
+ }
27
+ return row;
28
+ }
29
+ export const writePipelineServices = async (ctx, items) => {
30
+ await ctx.checkFence();
31
+ const store = createCataloxPipelineServicesStore({
32
+ catalox: ctx.catalox,
33
+ catalogId: "memorix-pipeline-services",
34
+ appId: ctx.appId,
35
+ processEnv: ctx.processEnv,
36
+ });
37
+ let upserted = 0;
38
+ for (const raw of items) {
39
+ await ctx.checkFence();
40
+ const input = asServiceInput(raw);
41
+ const serviceType = input.serviceType;
42
+ const serviceId = String(input.serviceId).trim();
43
+ const existing = await store.get(serviceType, serviceId);
44
+ if (existing)
45
+ await store.update(serviceType, serviceId, input);
46
+ else
47
+ await store.register(input);
48
+ upserted += 1;
49
+ }
50
+ return { itemCount: items.length, upserted, skipped: 0 };
51
+ };
52
+ //# sourceMappingURL=pipeline-services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-services.js","sourceRoot":"","sources":["../../src/writers/pipeline-services.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,qBAAqB,GAGtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,SAAS,cAAc,CAAC,IAAa;IACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,0CAA0C;SACpD,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,wBAAwB,MAAM,CAAC,WAAW,CAAC,EAAE;YACtD,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAA8C,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAgB,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IACrE,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,kCAAkC,CAAC;QAC/C,OAAO,EAAE,GAAG,CAAC,OAAgB;QAC7B,SAAS,EAAE,2BAA2B;QACtC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,UAAU,EAAE,GAAG,CAAC,UAAU;KAC3B,CAAC,CAAC;IACH,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAkC,CAAC;QAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,QAAQ;YAAE,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;;YAC3D,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,QAAQ,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC3D,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PlaneWriter } from "../types.js";
2
+ export declare function registerCustomPlaneWriter(kind: string, writer: PlaneWriter): void;
3
+ export declare function resolvePlaneWriter(kind: string, catalogId: string): PlaneWriter;
4
+ export declare function listBuiltinPlaneKinds(): string[];
5
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/writers/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgC/C,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAClB,IAAI,CAWN;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,WAAW,CA+Cb;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD"}
@@ -0,0 +1,81 @@
1
+ import { MemorixPackageSeedError } from "../errors.js";
2
+ import { writeInventoryAgents } from "./inventory-agents.js";
3
+ import { createNativeItemsWriter, writeNativeCatalogItems } from "./native-items.js";
4
+ import { writePipelineDefinitions, writePipelineSteps, writePipelineTemplates, } from "./orchestration.js";
5
+ import { writePipelineServices } from "./pipeline-services.js";
6
+ import { writeWorkerBases } from "./worker-bases.js";
7
+ const builtinWriters = new Map([
8
+ ["pipeline-services", writePipelineServices],
9
+ ["pipeline-worker-bases", writeWorkerBases],
10
+ [
11
+ "integration-abstraction-map",
12
+ createNativeItemsWriter("memorix-integration-abstraction-maps"),
13
+ ],
14
+ ["pipeline-steps", writePipelineSteps],
15
+ ["pipeline-definitions", writePipelineDefinitions],
16
+ ["pipeline-templates", writePipelineTemplates],
17
+ ["inventory-agents", writeInventoryAgents],
18
+ ["native-catalog-items", writeNativeCatalogItems],
19
+ [
20
+ "object-types",
21
+ createNativeItemsWriter("memorix-object-type-descriptors"),
22
+ ],
23
+ ["skills-metadata", writeNativeCatalogItems],
24
+ ]);
25
+ const customWriters = new Map();
26
+ export function registerCustomPlaneWriter(kind, writer) {
27
+ const key = kind.trim();
28
+ if (!key || key === "custom") {
29
+ throw new MemorixPackageSeedError({
30
+ code: "INVALID_PLANE",
31
+ message: "Custom writer kind must be a non-empty name other than 'custom'",
32
+ field: "kind",
33
+ value: kind,
34
+ });
35
+ }
36
+ customWriters.set(key, writer);
37
+ }
38
+ export function resolvePlaneWriter(kind, catalogId) {
39
+ const custom = customWriters.get(kind);
40
+ if (custom)
41
+ return custom;
42
+ if (kind === "custom") {
43
+ throw new MemorixPackageSeedError({
44
+ code: "MISSING_CUSTOM_WRITER",
45
+ message: "Plane kind 'custom' requires an explicitly registered writer via registerCustomPlaneWriter",
46
+ field: "kind",
47
+ });
48
+ }
49
+ if (kind === "native-catalog-items" || kind === "skills-metadata") {
50
+ const base = builtinWriters.get(kind);
51
+ if (!base) {
52
+ throw new MemorixPackageSeedError({
53
+ code: "UNKNOWN_PLANE_KIND",
54
+ message: `Unknown plane kind: ${kind}`,
55
+ field: "kind",
56
+ value: kind,
57
+ });
58
+ }
59
+ return async (ctx, items, options) => base(ctx, items, { ...options, catalogId });
60
+ }
61
+ if (kind === "integration-abstraction-map") {
62
+ return createNativeItemsWriter(catalogId || "memorix-integration-abstraction-maps");
63
+ }
64
+ if (kind === "object-types") {
65
+ return createNativeItemsWriter(catalogId || "memorix-object-type-descriptors");
66
+ }
67
+ const writer = builtinWriters.get(kind);
68
+ if (!writer) {
69
+ throw new MemorixPackageSeedError({
70
+ code: "UNKNOWN_PLANE_KIND",
71
+ message: `Unknown plane kind: ${kind}`,
72
+ field: "kind",
73
+ value: kind,
74
+ });
75
+ }
76
+ return writer;
77
+ }
78
+ export function listBuiltinPlaneKinds() {
79
+ return [...builtinWriters.keys()];
80
+ }
81
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/writers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAsB;IAClD,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;IAC5C,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;IAC3C;QACE,6BAA6B;QAC7B,uBAAuB,CAAC,sCAAsC,CAAC;KAChE;IACD,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IACtC,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;IAClD,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;IAC9C,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAC1C,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IACjD;QACE,cAAc;QACd,uBAAuB,CAAC,iCAAiC,CAAC;KAC3D;IACD,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;CAC7C,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;AAErD,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,MAAmB;IAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,iEAAiE;YAC1E,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;IACD,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,SAAiB;IAEjB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EACL,4FAA4F;YAC9F,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAAC;gBAChC,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,uBAAuB,IAAI,EAAE;gBACtC,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACnC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,KAAK,6BAA6B,EAAE,CAAC;QAC3C,OAAO,uBAAuB,CAAC,SAAS,IAAI,sCAAsC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5B,OAAO,uBAAuB,CAC5B,SAAS,IAAI,iCAAiC,CAC/C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,uBAAuB,CAAC;YAChC,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,uBAAuB,IAAI,EAAE;YACtC,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PlaneWriter } from "../types.js";
2
+ export declare const writeWorkerBases: PlaneWriter;
3
+ //# sourceMappingURL=worker-bases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-bases.d.ts","sourceRoot":"","sources":["../../src/writers/worker-bases.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,WA+B9B,CAAC"}