@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
package/README.md ADDED
@@ -0,0 +1,114 @@
1
+ # `@x12i/memorix-package-seed`
2
+
3
+ Package-owned Catalox seeding with mandatory agent identity, multi-agent replication, platform-core bootstrap, validated plane writers, and an atomic once-only ledger.
4
+
5
+ ## Catalox database routing
6
+
7
+ Seeding does **not** use `MEMORIX_AGENT_ID` / `MEMORIX_CATALOX_DB` for the destination database. The pack declares `identity.agentId` + `targetAgentIds`, and each destination is opened as:
8
+
9
+ ```ts
10
+ import { getMemorixMetadataDatabaseName } from "@x12i/memorix-db-router";
11
+
12
+ const dbName = getMemorixMetadataDatabaseName(agentId); // `<agentId>-memorix-catalox`
13
+ ```
14
+
15
+ Shared env requirements: `MONGO_URI` and Memorix app id (`MEMORIX_APP_ID` / descriptors resolution).
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ npm install @x12i/memorix-package-seed
21
+ ```
22
+
23
+ ## Pack layout
24
+
25
+ ```text
26
+ my-pack/
27
+ package-seed.json
28
+ package-seed.manifest.json
29
+ pipeline-services.json # optional
30
+ abstraction-map.json # optional
31
+ pipeline-steps.json # optional
32
+ pipeline-definitions.json # optional
33
+ pipeline-templates.json # optional
34
+ inventory-agents.json # optional
35
+ artifacts/ # authoring-only (e.g. entra mappings)
36
+ ```
37
+
38
+ Staging packs live under [`.operational/package-seed-packs/`](../.operational/package-seed-packs/README.md) (MOVE-OUT vs STAY documented there).
39
+
40
+ ## API
41
+
42
+ ```ts
43
+ import {
44
+ createPackageSeeder,
45
+ attachPlatformCoreBootstrap,
46
+ ensureSeeded,
47
+ loadManifestFromDir,
48
+ runPackageSeedOnStart,
49
+ } from "@x12i/memorix-package-seed";
50
+
51
+ const seeder = createPackageSeeder(
52
+ attachPlatformCoreBootstrap({
53
+ seedsDir: new URL("./seeds", import.meta.url).pathname,
54
+ mode: "strict", // strict | upgrade | force
55
+ }),
56
+ );
57
+
58
+ try {
59
+ const result = await seeder.ensureSeeded();
60
+ // result.outcome: applied | skipped | conflict | failed
61
+ } finally {
62
+ await seeder.close();
63
+ }
64
+ ```
65
+
66
+ Startup helper (trusted package config only — never wire to arbitrary HTTP input):
67
+
68
+ ```bash
69
+ PACKAGE_SEED_ON_START=1 PACKAGE_SEED_MODE=strict PACKAGE_SEED_STRICT=1
70
+ ```
71
+
72
+ ```ts
73
+ await runPackageSeedOnStart({ seedsDir: "./seeds" });
74
+ ```
75
+
76
+ ### Modes
77
+
78
+ | Mode | Behavior |
79
+ |------|----------|
80
+ | `strict` (default) | same contentHash → skip; different → conflict |
81
+ | `upgrade` | re-apply when `seedRevision` changes; revision-not-bumped → conflict |
82
+ | `force` | always re-apply (ops) |
83
+
84
+ ### Platform core
85
+
86
+ Before integration packs, `ensurePlatformCoreSeeded(targetAgentId)` applies `@x12i/memorix-platform-core-seed` into that agent’s Catalox DB (`PACKAGE_SEED_PLATFORM_CORE_DIR` or `.operational/package-seed-packs/_platform-core`).
87
+
88
+ ### Ledger + lease
89
+
90
+ - Ledger catalog: `memorix-package-seed-ledger` (Catalox native items)
91
+ - Atomic leases: Mongo collection `memorix-package-seed-leases` with fencing/heartbeat
92
+ - `resetLedger` removes ledger/lease state only (never seeded catalog data); requires `PACKAGE_SEED_ALLOW_RESET=1`, `yes: true`, actor, reason
93
+
94
+ ## CLI
95
+
96
+ ```bash
97
+ npx memorix-package-seed validate --dir ./seeds
98
+ npx memorix-package-seed apply --dir ./seeds --mode strict
99
+ npx memorix-package-seed status --dir ./seeds
100
+ PACKAGE_SEED_ALLOW_RESET=1 npx memorix-package-seed reset-ledger \
101
+ --dir ./seeds --target agent-firewall-topology --actor ops --reason migrate --yes
102
+ ```
103
+
104
+ Exit codes: `0` ok/skipped, `1` failed, `2` validation/conflict, `3` status-not-found.
105
+
106
+ ## Security boundary
107
+
108
+ Seed roots and identities are **trusted deployment configuration**. Do not expose an HTTP endpoint that accepts arbitrary package/agent/file input.
109
+
110
+ ## Related
111
+
112
+ - `@x12i/memorix-db-router` — database name routing
113
+ - `@x12i/memorix-pipeline-services` / `@x12i/memorix-pipeline-orchestrator` — typed plane writers
114
+ - `.operational/package-seed-packs/` — exported MOVE-OUT packs
@@ -0,0 +1,17 @@
1
+ export declare function collectItemAgents(item: unknown): string[];
2
+ /**
3
+ * Ensures every declared item agent is in targetAgentIds, then merges primary
4
+ * agentId into agents / scope.agents without dropping additional scopes.
5
+ * Set injectAgents:false for inventory-agents plane items ({id,label} defs).
6
+ */
7
+ export declare function mergePrimaryAgent(item: unknown, primaryAgentId: string, options: {
8
+ targetAgentIds: string[];
9
+ allowAdditionalAgents: boolean;
10
+ injectAgents?: boolean;
11
+ }): unknown;
12
+ export declare function mergePlaneItems(items: unknown[], primaryAgentId: string, options: {
13
+ targetAgentIds: string[];
14
+ allowAdditionalAgents: boolean;
15
+ injectAgents?: boolean;
16
+ }): unknown[];
17
+ //# sourceMappingURL=agent-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-merge.d.ts","sourceRoot":"","sources":["../src/agent-merge.ts"],"names":[],"mappings":"AAOA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAczD;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE;IACP,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACA,OAAO,CAsDT;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EAAE,EAChB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE;IACP,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACA,OAAO,EAAE,CAEX"}
@@ -0,0 +1,94 @@
1
+ import { MemorixPackageSeedError } from "./errors.js";
2
+ import { uniqueSorted } from "./identity.js";
3
+ function isRecord(value) {
4
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5
+ }
6
+ export function collectItemAgents(item) {
7
+ if (!isRecord(item))
8
+ return [];
9
+ const agents = [];
10
+ if (Array.isArray(item.agents)) {
11
+ for (const a of item.agents) {
12
+ if (typeof a === "string" && a.trim())
13
+ agents.push(a.trim());
14
+ }
15
+ }
16
+ if (isRecord(item.scope) && Array.isArray(item.scope.agents)) {
17
+ for (const a of item.scope.agents) {
18
+ if (typeof a === "string" && a.trim())
19
+ agents.push(a.trim());
20
+ }
21
+ }
22
+ return uniqueSorted(agents);
23
+ }
24
+ function isInventoryPolicyDocument(item) {
25
+ if (item.id === "memorix-ui-agents")
26
+ return true;
27
+ if (Array.isArray(item.agents) &&
28
+ item.agents.some((a) => isRecord(a) && typeof a.id === "string")) {
29
+ return true;
30
+ }
31
+ return false;
32
+ }
33
+ /**
34
+ * Ensures every declared item agent is in targetAgentIds, then merges primary
35
+ * agentId into agents / scope.agents without dropping additional scopes.
36
+ * Set injectAgents:false for inventory-agents plane items ({id,label} defs).
37
+ */
38
+ export function mergePrimaryAgent(item, primaryAgentId, options) {
39
+ if (!isRecord(item))
40
+ return item;
41
+ if (isInventoryPolicyDocument(item) || options.injectAgents === false) {
42
+ const nestedIds = Array.isArray(item.agents)
43
+ ? item.agents
44
+ .filter((a) => isRecord(a))
45
+ .map((a) => (typeof a.id === "string" ? a.id.trim() : ""))
46
+ .filter(Boolean)
47
+ : [];
48
+ const declaredId = typeof item.id === "string" &&
49
+ item.id.trim() &&
50
+ item.id !== "memorix-ui-agents"
51
+ ? [item.id.trim()]
52
+ : [];
53
+ const ids = uniqueSorted([...nestedIds, ...declaredId]);
54
+ const foreign = ids.filter((a) => !options.targetAgentIds.includes(a));
55
+ if (foreign.length > 0) {
56
+ throw new MemorixPackageSeedError({
57
+ code: "AGENT_SCOPE_MISMATCH",
58
+ message: `Item agents ${JSON.stringify(foreign)} are outside targetAgentIds ${JSON.stringify(options.targetAgentIds)}`,
59
+ field: "agents",
60
+ value: foreign,
61
+ });
62
+ }
63
+ return item;
64
+ }
65
+ const next = { ...item };
66
+ const existing = collectItemAgents(item);
67
+ const foreign = existing.filter((a) => !options.targetAgentIds.includes(a));
68
+ if (foreign.length > 0) {
69
+ throw new MemorixPackageSeedError({
70
+ code: "AGENT_SCOPE_MISMATCH",
71
+ message: `Item agents ${JSON.stringify(foreign)} are outside targetAgentIds ${JSON.stringify(options.targetAgentIds)}`,
72
+ field: "agents",
73
+ value: foreign,
74
+ });
75
+ }
76
+ const merged = uniqueSorted([...existing, primaryAgentId]);
77
+ next.agents = merged;
78
+ if (isRecord(next.scope)) {
79
+ next.scope = {
80
+ ...next.scope,
81
+ agents: uniqueSorted([
82
+ ...(Array.isArray(next.scope.agents)
83
+ ? next.scope.agents.filter((a) => typeof a === "string")
84
+ : []),
85
+ primaryAgentId,
86
+ ]),
87
+ };
88
+ }
89
+ return next;
90
+ }
91
+ export function mergePlaneItems(items, primaryAgentId, options) {
92
+ return items.map((item) => mergePrimaryAgent(item, primaryAgentId, options));
93
+ }
94
+ //# sourceMappingURL=agent-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-merge.js","sourceRoot":"","sources":["../src/agent-merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { CataloxBound } from "@x12i/catalox";
2
+ import type { Db } from "mongodb";
3
+ export type OpenPackageSeedCataloxResult = {
4
+ catalox: CataloxBound;
5
+ mongoDb: Db;
6
+ mongoStore: {
7
+ close: () => Promise<void>;
8
+ db: Db;
9
+ };
10
+ databaseName: string;
11
+ appId: string;
12
+ close: () => Promise<void>;
13
+ };
14
+ export declare function openPackageSeedCatalox(options: {
15
+ agentId: string;
16
+ processEnv?: NodeJS.ProcessEnv;
17
+ mongoUri?: string;
18
+ appId?: string;
19
+ }): Promise<OpenPackageSeedCataloxResult>;
20
+ export declare function ensurePackageSeedCatalogs(catalox: CataloxBound): Promise<void>;
21
+ //# sourceMappingURL=catalox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox.d.ts","sourceRoot":"","sources":["../src/catalox.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAKlC,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,EAAE,CAAC;IACZ,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,EAAE,EAAE,EAAE,CAAA;KAAE,CAAC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CA4BxC;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -0,0 +1,37 @@
1
+ import { getMemorixMetadataDatabaseName } from "@x12i/memorix-db-router";
2
+ import { createMemorixCataloxFromEnv, resolveMemorixAppId, } from "@x12i/memorix-descriptors";
3
+ import { MEMORIX_PACKAGE_SEED_LEDGER_CATALOG, } from "./constants.js";
4
+ export async function openPackageSeedCatalox(options) {
5
+ const processEnv = options.processEnv ?? process.env;
6
+ const databaseName = getMemorixMetadataDatabaseName(options.agentId);
7
+ const appId = resolveMemorixAppId({ appId: options.appId }, processEnv);
8
+ const { catalox, mongoStore } = await createMemorixCataloxFromEnv({
9
+ processEnv,
10
+ dbName: databaseName,
11
+ mongoUri: options.mongoUri,
12
+ });
13
+ const bound = catalox.withContext({
14
+ appId,
15
+ actor: { type: "service", id: `package-seed:${options.agentId}` },
16
+ superAdmin: true,
17
+ });
18
+ const close = async () => {
19
+ await mongoStore.close();
20
+ };
21
+ return {
22
+ catalox: bound,
23
+ mongoDb: mongoStore.db,
24
+ mongoStore,
25
+ databaseName,
26
+ appId,
27
+ close,
28
+ };
29
+ }
30
+ export async function ensurePackageSeedCatalogs(catalox) {
31
+ await catalox.ensureCatalog({
32
+ catalogId: MEMORIX_PACKAGE_SEED_LEDGER_CATALOG,
33
+ name: "Memorix package seed ledger",
34
+ status: "active",
35
+ });
36
+ }
37
+ //# sourceMappingURL=catalox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox.js","sourceRoot":"","sources":["../src/catalox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,mCAAmC,GACpC,MAAM,gBAAgB,CAAC;AAWxB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAK5C;IACC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;IACrD,MAAM,YAAY,GAAG,8BAA8B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,mBAAmB,CAC/B,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EACxB,UAAU,CACX,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,2BAA2B,CAAC;QAChE,UAAU;QACV,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QAChC,KAAK;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,OAAO,CAAC,OAAO,EAAE,EAAE;QACjE,UAAU,EAAE,IAAI;KACjB,CAAiB,CAAC;IACnB,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,UAAU,CAAC,EAAE;QACtB,UAAU;QACV,YAAY;QACZ,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAqB;IAErB,MAAM,OAAO,CAAC,aAAa,CAAC;QAC1B,SAAS,EAAE,mCAAmC;QAC9C,IAAI,EAAE,6BAA6B;QACnC,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;AACL,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,161 @@
1
+ #!/usr/bin/env node
2
+ import { resolve } from "node:path";
3
+ import { MemorixPackageSeedError } from "./errors.js";
4
+ import { createPackageSeeder, ensureSeeded } from "./ensure-seeded.js";
5
+ import { loadManifestFromDir } from "./manifest.js";
6
+ import { attachPlatformCoreBootstrap } from "./platform-core.js";
7
+ function printHelp() {
8
+ console.log(`memorix-package-seed <command> [options]
9
+
10
+ Commands:
11
+ validate --dir <seedDir> [--agent <agentId>]
12
+ apply --dir <seedDir> [--agent <agentId>] [--mode strict|upgrade|force]
13
+ status --dir <seedDir> [--agent <agentId>]
14
+ reset-ledger --dir <seedDir> --target <agentId> --actor <who> --reason <why> --yes
15
+
16
+ Exit codes:
17
+ 0 applied/skipped/status-found/valid
18
+ 1 failed
19
+ 2 validation/conflict
20
+ 3 status-not-found
21
+ `);
22
+ }
23
+ function argValue(args, name) {
24
+ const idx = args.indexOf(name);
25
+ if (idx === -1)
26
+ return undefined;
27
+ return args[idx + 1];
28
+ }
29
+ function hasFlag(args, name) {
30
+ return args.includes(name);
31
+ }
32
+ function parseMode(raw) {
33
+ if (!raw || raw === "strict")
34
+ return "strict";
35
+ if (raw === "upgrade" || raw === "force")
36
+ return raw;
37
+ throw new MemorixPackageSeedError({
38
+ code: "INVALID_MANIFEST",
39
+ message: `Invalid --mode ${raw}`,
40
+ field: "mode",
41
+ });
42
+ }
43
+ async function main(argv) {
44
+ const [cmd, ...args] = argv;
45
+ if (!cmd || cmd === "--help" || cmd === "-h" || cmd === "help") {
46
+ printHelp();
47
+ return 0;
48
+ }
49
+ const dir = argValue(args, "--dir");
50
+ if (!dir) {
51
+ console.error("Missing --dir <seedDir>");
52
+ return 2;
53
+ }
54
+ const seedsDir = resolve(dir);
55
+ const agent = argValue(args, "--agent");
56
+ try {
57
+ if (cmd === "validate") {
58
+ const loaded = loadManifestFromDir(seedsDir, { cliAgentId: agent });
59
+ console.log(JSON.stringify({
60
+ ok: true,
61
+ packageId: loaded.identity.packageId,
62
+ agentId: loaded.identity.agentId,
63
+ targetAgentIds: loaded.identity.targetAgentIds,
64
+ seedRevision: loaded.manifest.seedRevision,
65
+ payloadHash: loaded.payloadHash,
66
+ contentHash: loaded.contentHash,
67
+ planes: loaded.planes.map((p) => ({
68
+ kind: p.kind,
69
+ catalogId: p.catalogId,
70
+ itemCount: p.items.length,
71
+ source: p.source,
72
+ })),
73
+ artifacts: loaded.artifactPaths,
74
+ }, null, 2));
75
+ return 0;
76
+ }
77
+ if (cmd === "apply") {
78
+ const mode = parseMode(argValue(args, "--mode"));
79
+ // Assert --agent identity up front.
80
+ loadManifestFromDir(seedsDir, { cliAgentId: agent });
81
+ const result = await ensureSeeded(attachPlatformCoreBootstrap({
82
+ seedsDir,
83
+ mode,
84
+ actor: "cli",
85
+ }));
86
+ console.log(JSON.stringify(result, null, 2));
87
+ if (result.outcome === "failed")
88
+ return 1;
89
+ if (result.outcome === "conflict")
90
+ return 2;
91
+ return 0;
92
+ }
93
+ if (cmd === "status") {
94
+ const loaded = loadManifestFromDir(seedsDir, { cliAgentId: agent });
95
+ const seeder = createPackageSeeder({ seedsDir });
96
+ try {
97
+ const status = await seeder.status(loaded.identity.packageId, agent);
98
+ console.log(JSON.stringify(status, null, 2));
99
+ const found = status.targets.some((t) => t.ledger);
100
+ return found ? 0 : 3;
101
+ }
102
+ finally {
103
+ await seeder.close();
104
+ }
105
+ }
106
+ if (cmd === "reset-ledger") {
107
+ const target = argValue(args, "--target");
108
+ const actor = argValue(args, "--actor");
109
+ const reason = argValue(args, "--reason");
110
+ const yes = hasFlag(args, "--yes");
111
+ if (!target || !actor || !reason) {
112
+ console.error("reset-ledger requires --target --actor --reason --yes");
113
+ return 2;
114
+ }
115
+ const loaded = loadManifestFromDir(seedsDir, { cliAgentId: agent });
116
+ const seeder = createPackageSeeder({ seedsDir });
117
+ try {
118
+ await seeder.resetLedger({
119
+ packageId: loaded.identity.packageId,
120
+ targetAgentId: target,
121
+ actor,
122
+ reason,
123
+ yes,
124
+ });
125
+ console.log(JSON.stringify({ ok: true, packageId: loaded.identity.packageId, target }, null, 2));
126
+ return 0;
127
+ }
128
+ finally {
129
+ await seeder.close();
130
+ }
131
+ }
132
+ console.error(`Unknown command: ${cmd}`);
133
+ printHelp();
134
+ return 2;
135
+ }
136
+ catch (error) {
137
+ const message = error instanceof Error ? error.message : String(error);
138
+ const code = error instanceof MemorixPackageSeedError ? error.code : "APPLY_FAILED";
139
+ console.error(JSON.stringify({ ok: false, code, message }, null, 2));
140
+ if (error instanceof MemorixPackageSeedError &&
141
+ (code === "IDENTITY_MISMATCH" ||
142
+ code === "INVALID_MANIFEST" ||
143
+ code === "INVALID_PATH" ||
144
+ code === "INVALID_PLANE" ||
145
+ code === "UNKNOWN_PLANE_KIND" ||
146
+ code === "SECRET_DETECTED" ||
147
+ code === "AGENT_SCOPE_MISMATCH" ||
148
+ code === "REVISION_NOT_BUMPED" ||
149
+ code === "MISSING_CUSTOM_WRITER" ||
150
+ code === "RESET_NOT_ALLOWED" ||
151
+ code === "MISSING_IDENTITY" ||
152
+ code === "INVALID_IDENTITY" ||
153
+ code === "PAYLOAD_TOO_LARGE")) {
154
+ return 2;
155
+ }
156
+ return 1;
157
+ }
158
+ }
159
+ const exitCode = await main(process.argv.slice(2));
160
+ process.exit(exitCode);
161
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const MEMORIX_PACKAGE_SEED_LEDGER_CATALOG: "memorix-package-seed-ledger";
2
+ export declare const MEMORIX_PACKAGE_SEED_LEASES_COLLECTION: "memorix-package-seed-leases";
3
+ export declare const PLATFORM_CORE_PACKAGE_ID: "@x12i/memorix-platform-core-seed";
4
+ export declare const MAX_PLANE_FILE_BYTES: number;
5
+ export declare const MAX_PACK_BYTES: number;
6
+ export declare const MAX_PLANES = 100;
7
+ export declare const MAX_TOTAL_ITEMS = 100000;
8
+ export declare const DEFAULT_LEASE_TTL_MS = 30000;
9
+ export declare const DEFAULT_LEASE_WAIT_MS = 60000;
10
+ export declare const DEFAULT_LEASE_POLL_MS = 250;
11
+ export declare const NATIVE_CATALOG_ALLOWLIST: readonly ["memorix-integration-abstraction-maps", "memorix-security-unified-objects", "memorix-security-relationship-types", "memorix-cross-domain-unification", "memorix-object-type-descriptors", "lists", "memorix-item-descriptors", "memorix-graph-descriptors", "memorix-inventory-policies", "memorix-write-descriptors", "memorix-workflow-field-schemas"];
12
+ export declare const BUILTIN_PLANE_KINDS: readonly ["pipeline-services", "pipeline-worker-bases", "integration-abstraction-map", "pipeline-steps", "pipeline-definitions", "pipeline-templates", "inventory-agents", "native-catalog-items", "object-types", "skills-metadata", "custom"];
13
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mCAAmC,EAC9C,6BAAsC,CAAC;AAEzC,eAAO,MAAM,sCAAsC,EACjD,6BAAsC,CAAC;AAEzC,eAAO,MAAM,wBAAwB,EACnC,kCAA2C,CAAC;AAE9C,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AACrD,eAAO,MAAM,cAAc,QAAmB,CAAC;AAC/C,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,eAAe,SAAU,CAAC;AAEvC,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,eAAO,MAAM,wBAAwB,oWAY3B,CAAC;AAEX,eAAO,MAAM,mBAAmB,iPAYtB,CAAC"}
@@ -0,0 +1,37 @@
1
+ export const MEMORIX_PACKAGE_SEED_LEDGER_CATALOG = "memorix-package-seed-ledger";
2
+ export const MEMORIX_PACKAGE_SEED_LEASES_COLLECTION = "memorix-package-seed-leases";
3
+ export const PLATFORM_CORE_PACKAGE_ID = "@x12i/memorix-platform-core-seed";
4
+ export const MAX_PLANE_FILE_BYTES = 10 * 1024 * 1024;
5
+ export const MAX_PACK_BYTES = 50 * 1024 * 1024;
6
+ export const MAX_PLANES = 100;
7
+ export const MAX_TOTAL_ITEMS = 100_000;
8
+ export const DEFAULT_LEASE_TTL_MS = 30_000;
9
+ export const DEFAULT_LEASE_WAIT_MS = 60_000;
10
+ export const DEFAULT_LEASE_POLL_MS = 250;
11
+ export const NATIVE_CATALOG_ALLOWLIST = [
12
+ "memorix-integration-abstraction-maps",
13
+ "memorix-security-unified-objects",
14
+ "memorix-security-relationship-types",
15
+ "memorix-cross-domain-unification",
16
+ "memorix-object-type-descriptors",
17
+ "lists",
18
+ "memorix-item-descriptors",
19
+ "memorix-graph-descriptors",
20
+ "memorix-inventory-policies",
21
+ "memorix-write-descriptors",
22
+ "memorix-workflow-field-schemas",
23
+ ];
24
+ export const BUILTIN_PLANE_KINDS = [
25
+ "pipeline-services",
26
+ "pipeline-worker-bases",
27
+ "integration-abstraction-map",
28
+ "pipeline-steps",
29
+ "pipeline-definitions",
30
+ "pipeline-templates",
31
+ "inventory-agents",
32
+ "native-catalog-items",
33
+ "object-types",
34
+ "skills-metadata",
35
+ "custom",
36
+ ];
37
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mCAAmC,GAC9C,6BAAsC,CAAC;AAEzC,MAAM,CAAC,MAAM,sCAAsC,GACjD,6BAAsC,CAAC;AAEzC,MAAM,CAAC,MAAM,wBAAwB,GACnC,kCAA2C,CAAC;AAE9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,sCAAsC;IACtC,kCAAkC;IAClC,qCAAqC;IACrC,kCAAkC;IAClC,iCAAiC;IACjC,OAAO;IACP,0BAA0B;IAC1B,2BAA2B;IAC3B,4BAA4B;IAC5B,2BAA2B;IAC3B,gCAAgC;CACxB,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,mBAAmB;IACnB,uBAAuB;IACvB,6BAA6B;IAC7B,gBAAgB;IAChB,sBAAsB;IACtB,oBAAoB;IACpB,kBAAkB;IAClB,sBAAsB;IACtB,cAAc;IACd,iBAAiB;IACjB,QAAQ;CACA,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { EnsureSeededResult, MemorixPackageSeedMode, PackageSeedIdentity, PackageSeedLedgerItem } from "./types.js";
2
+ export type EnsureSeededOptions = {
3
+ identity?: PackageSeedIdentity;
4
+ seedsDir: string;
5
+ mode?: MemorixPackageSeedMode;
6
+ processEnv?: NodeJS.ProcessEnv;
7
+ mongoUri?: string;
8
+ appId?: string;
9
+ actor?: string;
10
+ /** When set, apply only these destinations (e.g. platform-core bootstrap). */
11
+ applyTargetAgentIds?: string[];
12
+ skipPlatformCore?: boolean;
13
+ ensurePlatformCore?: (targetAgentId: string) => Promise<EnsureSeededResult | null>;
14
+ };
15
+ export type PackageSeeder = {
16
+ ensureSeeded: (options?: Partial<EnsureSeededOptions>) => Promise<EnsureSeededResult>;
17
+ status: (packageId?: string, targetAgentId?: string) => Promise<{
18
+ targets: Array<{
19
+ targetAgentId: string;
20
+ databaseName: string;
21
+ ledger: PackageSeedLedgerItem | null;
22
+ }>;
23
+ }>;
24
+ resetLedger: (options: {
25
+ packageId: string;
26
+ targetAgentId: string;
27
+ actor: string;
28
+ reason: string;
29
+ yes: boolean;
30
+ }) => Promise<void>;
31
+ close: () => Promise<void>;
32
+ [Symbol.asyncDispose]: () => Promise<void>;
33
+ };
34
+ export declare function ensureSeeded(options: EnsureSeededOptions): Promise<EnsureSeededResult>;
35
+ export declare function createPackageSeeder(defaults: EnsureSeededOptions): PackageSeeder;
36
+ //# sourceMappingURL=ensure-seeded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-seeded.d.ts","sourceRoot":"","sources":["../src/ensure-seeded.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,kBAAkB,EAElB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EAGtB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,CACnB,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,CACZ,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,KACnC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAC9D,OAAO,EAAE,KAAK,CAAC;YACb,aAAa,EAAE,MAAM,CAAC;YACtB,YAAY,EAAE,MAAM,CAAC;YACrB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;SACtC,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,WAAW,EAAE,CAAC,OAAO,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,OAAO,CAAC;KACd,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAiRF,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA0C7B;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,mBAAmB,GAC5B,aAAa,CAqGf"}