@x12i/memorix-service 3.0.6 → 3.2.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 (178) hide show
  1. package/README.md +8 -1
  2. package/dist/ai-services/associate-prep.d.ts +37 -0
  3. package/dist/ai-services/associate-prep.d.ts.map +1 -0
  4. package/dist/ai-services/associate-prep.js +208 -0
  5. package/dist/ai-services/associate-prep.js.map +1 -0
  6. package/dist/ai-services/chunk-markdown.d.ts +22 -0
  7. package/dist/ai-services/chunk-markdown.d.ts.map +1 -0
  8. package/dist/ai-services/chunk-markdown.js +159 -0
  9. package/dist/ai-services/chunk-markdown.js.map +1 -0
  10. package/dist/ai-services/client.d.ts +31 -0
  11. package/dist/ai-services/client.d.ts.map +1 -0
  12. package/dist/ai-services/client.js +104 -0
  13. package/dist/ai-services/client.js.map +1 -0
  14. package/dist/ai-services/config.d.ts +17 -0
  15. package/dist/ai-services/config.d.ts.map +1 -0
  16. package/dist/ai-services/config.js +44 -0
  17. package/dist/ai-services/config.js.map +1 -0
  18. package/dist/ai-services/normalize-output.d.ts +29 -0
  19. package/dist/ai-services/normalize-output.d.ts.map +1 -0
  20. package/dist/ai-services/normalize-output.js +428 -0
  21. package/dist/ai-services/normalize-output.js.map +1 -0
  22. package/dist/ai-services/skill-execution.d.ts +24 -0
  23. package/dist/ai-services/skill-execution.d.ts.map +1 -0
  24. package/dist/ai-services/skill-execution.js +74 -0
  25. package/dist/ai-services/skill-execution.js.map +1 -0
  26. package/dist/ai-services/types.d.ts +62 -0
  27. package/dist/ai-services/types.d.ts.map +1 -0
  28. package/dist/ai-services/types.js +3 -0
  29. package/dist/ai-services/types.js.map +1 -0
  30. package/dist/app.d.ts.map +1 -1
  31. package/dist/app.js +41 -6
  32. package/dist/app.js.map +1 -1
  33. package/dist/assist/ask.d.ts +35 -0
  34. package/dist/assist/ask.d.ts.map +1 -0
  35. package/dist/assist/ask.js +346 -0
  36. package/dist/assist/ask.js.map +1 -0
  37. package/dist/assist/facts.d.ts +5 -0
  38. package/dist/assist/facts.d.ts.map +1 -0
  39. package/dist/assist/facts.js +237 -0
  40. package/dist/assist/facts.js.map +1 -0
  41. package/dist/assist/merge-ask-proposal.d.ts +9 -0
  42. package/dist/assist/merge-ask-proposal.d.ts.map +1 -0
  43. package/dist/assist/merge-ask-proposal.js +57 -0
  44. package/dist/assist/merge-ask-proposal.js.map +1 -0
  45. package/dist/assist/types.d.ts +60 -0
  46. package/dist/assist/types.d.ts.map +1 -0
  47. package/dist/assist/types.js +57 -0
  48. package/dist/assist/types.js.map +1 -0
  49. package/dist/assist/validate.d.ts +4 -0
  50. package/dist/assist/validate.d.ts.map +1 -0
  51. package/dist/assist/validate.js +319 -0
  52. package/dist/assist/validate.js.map +1 -0
  53. package/dist/cli.js +29 -6
  54. package/dist/cli.js.map +1 -1
  55. package/dist/connector-catalog.d.ts +68 -0
  56. package/dist/connector-catalog.d.ts.map +1 -0
  57. package/dist/connector-catalog.js +258 -0
  58. package/dist/connector-catalog.js.map +1 -0
  59. package/dist/connector-role.d.ts +22 -0
  60. package/dist/connector-role.d.ts.map +1 -0
  61. package/dist/connector-role.js +71 -0
  62. package/dist/connector-role.js.map +1 -0
  63. package/dist/destination-runtime.d.ts +8 -0
  64. package/dist/destination-runtime.d.ts.map +1 -0
  65. package/dist/destination-runtime.js +11 -0
  66. package/dist/destination-runtime.js.map +1 -0
  67. package/dist/execution-target.d.ts +141 -0
  68. package/dist/execution-target.d.ts.map +1 -0
  69. package/dist/execution-target.js +853 -0
  70. package/dist/execution-target.js.map +1 -0
  71. package/dist/generic-connectors.d.ts +41 -0
  72. package/dist/generic-connectors.d.ts.map +1 -0
  73. package/dist/generic-connectors.js +158 -0
  74. package/dist/generic-connectors.js.map +1 -0
  75. package/dist/isolation.d.ts +1 -1
  76. package/dist/isolation.d.ts.map +1 -1
  77. package/dist/jobs-scope.d.ts +21 -0
  78. package/dist/jobs-scope.d.ts.map +1 -0
  79. package/dist/jobs-scope.js +83 -0
  80. package/dist/jobs-scope.js.map +1 -0
  81. package/dist/journey/collect.js +2 -2
  82. package/dist/journey/collect.js.map +1 -1
  83. package/dist/journey/coverage.js +3 -3
  84. package/dist/journey/coverage.js.map +1 -1
  85. package/dist/known-packs.d.ts +1 -1
  86. package/dist/known-packs.d.ts.map +1 -1
  87. package/dist/known-packs.js +1 -1
  88. package/dist/known-packs.js.map +1 -1
  89. package/dist/live.d.ts +13 -1
  90. package/dist/live.d.ts.map +1 -1
  91. package/dist/live.js +866 -2
  92. package/dist/live.js.map +1 -1
  93. package/dist/magit/magit-pack-service.d.ts +112 -0
  94. package/dist/magit/magit-pack-service.d.ts.map +1 -1
  95. package/dist/magit/magit-pack-service.js +494 -12
  96. package/dist/magit/magit-pack-service.js.map +1 -1
  97. package/dist/magit/pack-to-patchset.d.ts +20 -1
  98. package/dist/magit/pack-to-patchset.d.ts.map +1 -1
  99. package/dist/magit/pack-to-patchset.js +82 -9
  100. package/dist/magit/pack-to-patchset.js.map +1 -1
  101. package/dist/magit/package-catalog-bridge.d.ts +58 -0
  102. package/dist/magit/package-catalog-bridge.d.ts.map +1 -0
  103. package/dist/magit/package-catalog-bridge.js +220 -0
  104. package/dist/magit/package-catalog-bridge.js.map +1 -0
  105. package/dist/magit/proposal-to-pack.d.ts +22 -0
  106. package/dist/magit/proposal-to-pack.d.ts.map +1 -0
  107. package/dist/magit/proposal-to-pack.js +68 -0
  108. package/dist/magit/proposal-to-pack.js.map +1 -0
  109. package/dist/mongo-metadata-store.d.ts.map +1 -1
  110. package/dist/mongo-metadata-store.js +9 -3
  111. package/dist/mongo-metadata-store.js.map +1 -1
  112. package/dist/openapi/openapi.json +6262 -3139
  113. package/dist/org-sources.d.ts +14 -0
  114. package/dist/org-sources.d.ts.map +1 -0
  115. package/dist/org-sources.js +31 -0
  116. package/dist/org-sources.js.map +1 -0
  117. package/dist/pipeline-compile.d.ts +67 -1
  118. package/dist/pipeline-compile.d.ts.map +1 -1
  119. package/dist/pipeline-compile.js +455 -29
  120. package/dist/pipeline-compile.js.map +1 -1
  121. package/dist/pipeline-invoke.d.ts +63 -0
  122. package/dist/pipeline-invoke.d.ts.map +1 -0
  123. package/dist/pipeline-invoke.js +114 -0
  124. package/dist/pipeline-invoke.js.map +1 -0
  125. package/dist/pipeline-ports.d.ts +13 -0
  126. package/dist/pipeline-ports.d.ts.map +1 -0
  127. package/dist/pipeline-ports.js +104 -0
  128. package/dist/pipeline-ports.js.map +1 -0
  129. package/dist/platform.d.ts +47 -3
  130. package/dist/platform.d.ts.map +1 -1
  131. package/dist/platform.js +309 -26
  132. package/dist/platform.js.map +1 -1
  133. package/dist/routes/ai-services.d.ts +4 -0
  134. package/dist/routes/ai-services.d.ts.map +1 -0
  135. package/dist/routes/ai-services.js +239 -0
  136. package/dist/routes/ai-services.js.map +1 -0
  137. package/dist/routes/assist.d.ts +4 -0
  138. package/dist/routes/assist.d.ts.map +1 -0
  139. package/dist/routes/assist.js +75 -0
  140. package/dist/routes/assist.js.map +1 -0
  141. package/dist/routes/connector-invocations.d.ts.map +1 -1
  142. package/dist/routes/connector-invocations.js +18 -21
  143. package/dist/routes/connector-invocations.js.map +1 -1
  144. package/dist/routes/data-journey.js +11 -11
  145. package/dist/routes/data-journey.js.map +1 -1
  146. package/dist/routes/intelligence.d.ts.map +1 -1
  147. package/dist/routes/intelligence.js +19 -1
  148. package/dist/routes/intelligence.js.map +1 -1
  149. package/dist/routes/jobs.d.ts +4 -0
  150. package/dist/routes/jobs.d.ts.map +1 -0
  151. package/dist/routes/jobs.js +888 -0
  152. package/dist/routes/jobs.js.map +1 -0
  153. package/dist/routes/memory.d.ts.map +1 -1
  154. package/dist/routes/memory.js +278 -80
  155. package/dist/routes/memory.js.map +1 -1
  156. package/dist/routes/metadata.d.ts.map +1 -1
  157. package/dist/routes/metadata.js +770 -21
  158. package/dist/routes/metadata.js.map +1 -1
  159. package/dist/routes/pipelines.d.ts.map +1 -1
  160. package/dist/routes/pipelines.js +98 -22
  161. package/dist/routes/pipelines.js.map +1 -1
  162. package/dist/routes/relationships.d.ts.map +1 -1
  163. package/dist/routes/relationships.js +109 -2
  164. package/dist/routes/relationships.js.map +1 -1
  165. package/dist/routes/simulation.d.ts +7 -0
  166. package/dist/routes/simulation.d.ts.map +1 -0
  167. package/dist/routes/simulation.js +22 -0
  168. package/dist/routes/simulation.js.map +1 -0
  169. package/dist/runx/client.d.ts +18 -0
  170. package/dist/runx/client.d.ts.map +1 -0
  171. package/dist/runx/client.js +59 -0
  172. package/dist/runx/client.js.map +1 -0
  173. package/dist/simulation.d.ts +26 -0
  174. package/dist/simulation.d.ts.map +1 -0
  175. package/dist/simulation.js +46 -0
  176. package/dist/simulation.js.map +1 -0
  177. package/openapi/openapi.json +6262 -3139
  178. package/package.json +18 -8
@@ -1,13 +1,17 @@
1
1
  /**
2
2
  * MagitPackService — server-only façade over @x12i/magit for pack versioning.
3
- * Phase 0: ensureRepo + saveVersion (proposePatchset) + history.
3
+ * Phase 0–5: ensureRepo, saveVersion, history, diff, packAtCommit, publish, proposals.
4
4
  */
5
- import { existsSync, mkdirSync, writeFileSync } from "node:fs";
5
+ import { createHash } from "node:crypto";
6
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
6
7
  import { join } from "node:path";
7
8
  import { MongoClient } from "mongodb";
8
- import { magit, listProposalLedgerEntries, isPatchsetError, } from "@x12i/magit";
9
+ import { magit, listProposalLedgerEntries, isPatchsetError, createProgressReporter, labelDiff, } from "@x12i/magit";
10
+ import { checksumMetadataPack } from "@x12i/memorix-metadata-runtime";
9
11
  import { ServiceError } from "../errors.js";
10
- import { MAGIT_AGENTS_COLLECTION, MAGIT_SEED_AGENT_ID, packToPatchset, parseSaveVersionIdempotencyKey, } from "./pack-to-patchset.js";
12
+ import { isOrgRuntimeFolderSource, stripOrgRuntimeSourcesFromPack, } from "../org-sources.js";
13
+ import { MAGIT_AGENTS_COLLECTION, MAGIT_SEED_AGENT_ID, packToPatchset, parseRecordId, parseSaveVersionIdempotencyKey, recordIdForDefinition, recordsToPack, } from "./pack-to-patchset.js";
14
+ import { mergeProposalIntoPack, } from "./proposal-to-pack.js";
11
15
  const MEMORIX_LENS = {
12
16
  [MAGIT_AGENTS_COLLECTION]: {
13
17
  docKey: "agentId",
@@ -22,9 +26,19 @@ const MEMORIX_LENS = {
22
26
  };
23
27
  const MAGITIGNORE = `# Memorix Phase 0 — ignore install ledger (not versioned)
24
28
  memorix_metadata_install_ledger
29
+ memorix_metadata_releases
25
30
  `;
31
+ const RELEASES_FILE = "memorix-releases.json";
32
+ /**
33
+ * Magit is on by default when durable Mongo is configured (platform gates that).
34
+ * Set METADATA_MAGIT=0 / false / off to disable.
35
+ */
26
36
  export function isMetadataMagitEnabled() {
27
- return process.env.METADATA_MAGIT?.trim() === "1";
37
+ const v = process.env.METADATA_MAGIT?.trim().toLowerCase();
38
+ if (v === "0" || v === "false" || v === "off" || v === "no")
39
+ return false;
40
+ // Default-on when unset or any other truthy-ish value (including "1"/"true"/"on").
41
+ return true;
28
42
  }
29
43
  export function resolveMagitRepoRootParent() {
30
44
  const fromEnv = process.env.MAGIT_REPO_ROOT?.trim();
@@ -32,18 +46,71 @@ export function resolveMagitRepoRootParent() {
32
46
  return fromEnv;
33
47
  return join(process.cwd(), ".tmp", "magit-repos");
34
48
  }
49
+ function isLiveRef(ref) {
50
+ return ref === "live" || ref === "LIVE";
51
+ }
52
+ function isHeadRef(ref) {
53
+ return ref === "HEAD" || ref === "head";
54
+ }
55
+ function fieldDiffs(before, after) {
56
+ const beforeObj = before && typeof before === "object" && !Array.isArray(before)
57
+ ? before
58
+ : null;
59
+ const afterObj = after && typeof after === "object" && !Array.isArray(after)
60
+ ? after
61
+ : null;
62
+ if (!beforeObj && !afterObj)
63
+ return undefined;
64
+ const keys = new Set([
65
+ ...Object.keys(beforeObj ?? {}),
66
+ ...Object.keys(afterObj ?? {}),
67
+ ]);
68
+ const fields = [];
69
+ for (const path of [...keys].sort()) {
70
+ const hasB = beforeObj != null && path in beforeObj;
71
+ const hasA = afterObj != null && path in afterObj;
72
+ if (!hasB && hasA)
73
+ fields.push({ path, change: "added" });
74
+ else if (hasB && !hasA)
75
+ fields.push({ path, change: "removed" });
76
+ else if (hasB &&
77
+ hasA &&
78
+ JSON.stringify(beforeObj[path]) !== JSON.stringify(afterObj[path])) {
79
+ fields.push({ path, change: "changed" });
80
+ }
81
+ }
82
+ return fields.length ? fields : undefined;
83
+ }
84
+ function unwrapDefinitionBody(body) {
85
+ if (!body || typeof body !== "object")
86
+ return body;
87
+ const rec = body;
88
+ if (rec.definition && typeof rec.definition === "object")
89
+ return rec.definition;
90
+ return body;
91
+ }
35
92
  export class MagitPackService {
36
93
  cfg;
37
94
  ensured = new Set();
38
95
  constructor(cfg) {
39
96
  this.cfg = cfg;
40
97
  }
98
+ progress() {
99
+ const log = this.cfg.log;
100
+ createProgressReporter({ mode: "json" });
101
+ return {
102
+ tick(phase, detail) {
103
+ log?.(`[magit] ${phase}`, detail);
104
+ },
105
+ };
106
+ }
41
107
  repoRootFor(orgId) {
42
108
  return join(this.cfg.repoRootParent, orgId);
43
109
  }
44
110
  async ensureRepo(orgId) {
45
111
  if (this.ensured.has(orgId))
46
112
  return;
113
+ const { tick } = this.progress();
47
114
  try {
48
115
  this.ensureMongoEnv();
49
116
  mkdirSync(this.cfg.repoRootParent, { recursive: true });
@@ -52,6 +119,7 @@ export class MagitPackService {
52
119
  const repo = await magit.open({ repoRoot });
53
120
  const configPath = join(repoRoot, ".magit", "config.json");
54
121
  if (!existsSync(configPath)) {
122
+ tick("ensureRepo.init", { orgId });
55
123
  await repo.init({
56
124
  name: `memorix-metadata-${orgId}`,
57
125
  driver: "transform",
@@ -77,7 +145,6 @@ export class MagitPackService {
77
145
  skipRemoteBootstrap: true,
78
146
  });
79
147
  writeFileSync(join(repoRoot, ".magitignore"), MAGITIGNORE, "utf8");
80
- // Proposals can only edit collections present in the base commit.
81
148
  await this.seedAgentsCollectionCommit(repo);
82
149
  }
83
150
  this.ensured.add(orgId);
@@ -92,13 +159,44 @@ export class MagitPackService {
92
159
  throw new ServiceError("VALIDATION", "message required for save version", 400);
93
160
  }
94
161
  await this.ensureRepo(orgId);
162
+ const { tick } = this.progress();
95
163
  try {
164
+ const cleanPack = stripOrgRuntimeSourcesFromPack(pack);
165
+ tick("saveVersion.start", { orgId, agentId: cleanPack.agentId });
96
166
  const repo = await magit.open({ repoRoot: this.repoRootFor(orgId) });
97
- const { patchset, checksum } = packToPatchset(pack, {
167
+ const tip = (await repo.listCommitsFromHead({ maxCount: 1 }))[0]?.hash;
168
+ // Magit history is cumulative — delete prior org folder source records so
169
+ // packAtCommit cannot resurrect src_* after a stripped save.
170
+ const deleteRecordIds = [];
171
+ if (tip) {
172
+ try {
173
+ const tipPack = await this.packAtCommitRaw(orgId, cleanPack.agentId, tip);
174
+ for (const src of tipPack.pack.sources ?? []) {
175
+ if (!isOrgRuntimeFolderSource(src))
176
+ continue;
177
+ const id = String(src.id ?? "");
178
+ if (!id)
179
+ continue;
180
+ deleteRecordIds.push(recordIdForDefinition(cleanPack.agentId, "sources", id));
181
+ }
182
+ }
183
+ catch {
184
+ // Tip may be seed-only; proceed with puts only.
185
+ }
186
+ }
187
+ const { patchset, checksum } = packToPatchset(cleanPack, {
98
188
  message,
99
189
  actor: opts.actor?.subject,
190
+ baseCommit: tip,
191
+ deleteRecordIds,
100
192
  });
101
193
  const result = await repo.proposePatchset(patchset);
194
+ // Magit proposals are content-addressed and do not move HEAD. Pin the tip so
195
+ // the next agent/pack save inherits prior records (multi-agent release sets).
196
+ if (!result.reused) {
197
+ this.pinPackTip(repo, result.commitHash);
198
+ }
199
+ tick("saveVersion.done", { commit: result.commitHash, reused: result.reused });
102
200
  return {
103
201
  commit: result.commitHash,
104
202
  checksum,
@@ -109,6 +207,48 @@ export class MagitPackService {
109
207
  throw this.mapError(err, "failed to save pack version");
110
208
  }
111
209
  }
210
+ /**
211
+ * Advance Magit HEAD / main to a proposal commit so subsequent proposePatchset
212
+ * calls with base HEAD inherit prior agent records.
213
+ */
214
+ pinPackTip(repo, commitHash) {
215
+ const storeDir = repo.repoPaths().storeDir;
216
+ mkdirSync(join(storeDir, "refs", "heads"), { recursive: true });
217
+ writeFileSync(join(storeDir, "HEAD"), `${commitHash}\n`, "utf8");
218
+ writeFileSync(join(storeDir, "refs", "heads", "main"), `${commitHash}\n`, "utf8");
219
+ }
220
+ /**
221
+ * Merge proposal draft into base pack and save a Magit version (not live).
222
+ */
223
+ async importProposal(orgId, opts) {
224
+ const agentId = opts.agentId?.trim();
225
+ if (!agentId)
226
+ throw new ServiceError("VALIDATION", "agentId required", 400);
227
+ if (!opts.proposal?.proposalId?.trim()) {
228
+ throw new ServiceError("VALIDATION", "proposalId required", 400);
229
+ }
230
+ let pack;
231
+ try {
232
+ pack = mergeProposalIntoPack(opts.basePack, opts.proposal, agentId);
233
+ }
234
+ catch (err) {
235
+ throw new ServiceError("VALIDATION", err instanceof Error ? err.message : String(err), 400);
236
+ }
237
+ const saved = await this.saveVersion(orgId, pack, {
238
+ message: `proposal:${opts.proposal.proposalId.trim()}`,
239
+ actor: opts.actor,
240
+ });
241
+ return { ...saved, pack };
242
+ }
243
+ /**
244
+ * Snapshot a live pack as the initial Magit commit for legacy checksum-only installs.
245
+ */
246
+ async backfillLineage(orgId, pack, opts) {
247
+ return this.saveVersion(orgId, pack, {
248
+ message: "backfill: initial snapshot",
249
+ actor: opts?.actor,
250
+ });
251
+ }
112
252
  async history(orgId, agentId, opts) {
113
253
  if (!agentId?.trim()) {
114
254
  throw new ServiceError("VALIDATION", "agentId required", 400);
@@ -148,7 +288,6 @@ export class MagitPackService {
148
288
  const byCommit = new Map();
149
289
  for (const row of head)
150
290
  byCommit.set(row.commit, row);
151
- // Prefer save-version rows (checksum from idempotency key).
152
291
  for (const row of saved)
153
292
  byCommit.set(row.commit, row);
154
293
  return [...byCommit.values()]
@@ -159,6 +298,350 @@ export class MagitPackService {
159
298
  throw this.mapError(err, "failed to list pack versions");
160
299
  }
161
300
  }
301
+ async diff(orgId, agentId, opts) {
302
+ if (!agentId?.trim()) {
303
+ throw new ServiceError("VALIDATION", "agentId required", 400);
304
+ }
305
+ const from = opts.from?.trim();
306
+ const to = opts.to?.trim();
307
+ if (!from || !to) {
308
+ throw new ServiceError("VALIDATION", "from and to required", 400);
309
+ }
310
+ await this.ensureRepo(orgId);
311
+ const { tick } = this.progress();
312
+ try {
313
+ tick("diff.start", { orgId, agentId, from, to });
314
+ this.ensureMongoEnv();
315
+ const repo = await magit.open({ repoRoot: this.repoRootFor(orgId) });
316
+ const changes = await this.collectDiffRows(repo, agentId, from, to);
317
+ tick("diff.done", { changeCount: changes.length });
318
+ return { agentId, from, to, changes };
319
+ }
320
+ catch (err) {
321
+ throw this.mapError(err, "failed to diff pack versions");
322
+ }
323
+ }
324
+ /** Reconstruct pack without org-source hygiene (used to emit Magit deletes). */
325
+ async packAtCommitRaw(orgId, agentId, commitHash) {
326
+ this.ensureMongoEnv();
327
+ const repo = await magit.open({ repoRoot: this.repoRootFor(orgId) });
328
+ const seed = await this.resolveSeedCommit(repo);
329
+ const diff = await repo.diffBetweenCommits({
330
+ from: seed,
331
+ to: commitHash,
332
+ recordFull: true,
333
+ includeRemovedRecordBodies: false,
334
+ });
335
+ const col = diff.collections[MAGIT_AGENTS_COLLECTION];
336
+ const rows = (col?.records ?? [])
337
+ .filter((r) => r.after != null)
338
+ .map((r) => ({ id: r.id, after: r.after }));
339
+ const pack = recordsToPack(agentId, rows);
340
+ const checksum = checksumMetadataPack(pack);
341
+ return { pack, checksum, commit: commitHash };
342
+ }
343
+ async packAtCommit(orgId, agentId, commit) {
344
+ if (!agentId?.trim()) {
345
+ throw new ServiceError("VALIDATION", "agentId required", 400);
346
+ }
347
+ const commitHash = commit?.trim();
348
+ if (!commitHash) {
349
+ throw new ServiceError("VALIDATION", "commit required", 400);
350
+ }
351
+ await this.ensureRepo(orgId);
352
+ const { tick } = this.progress();
353
+ try {
354
+ tick("packAtCommit.start", { agentId, commit: commitHash });
355
+ const loaded = await this.packAtCommitRaw(orgId, agentId, commitHash);
356
+ const pack = stripOrgRuntimeSourcesFromPack(loaded.pack);
357
+ const checksum = checksumMetadataPack(pack);
358
+ return { pack, checksum, commit: commitHash };
359
+ }
360
+ catch (err) {
361
+ throw this.mapError(err, "failed to load pack at commit");
362
+ }
363
+ }
364
+ /**
365
+ * Apply a Magit commit into live metadata Mongo (transform driver).
366
+ * Caller must rehydrate the Memorix metadata store afterward.
367
+ */
368
+ async applyCommit(orgId, opts) {
369
+ const commitHash = opts.commit?.trim();
370
+ if (!commitHash) {
371
+ throw new ServiceError("VALIDATION", "commit required", 400);
372
+ }
373
+ await this.ensureRepo(orgId);
374
+ try {
375
+ this.ensureMongoEnv();
376
+ const repo = await magit.open({ repoRoot: this.repoRootFor(orgId) });
377
+ void opts.agentId;
378
+ const result = await repo.applyCommit(commitHash, {
379
+ mongoTarget: {
380
+ urlEnv: this.cfg.mongoUrlEnv,
381
+ db: this.cfg.metadataDb,
382
+ },
383
+ recordsMode: "exact",
384
+ });
385
+ return {
386
+ commit: result.commit,
387
+ summary: {
388
+ recordsUpserted: result.summary.recordsUpserted,
389
+ recordsDeleted: result.summary.recordsDeleted,
390
+ },
391
+ };
392
+ }
393
+ catch (err) {
394
+ throw this.mapError(err, "failed to apply pack commit");
395
+ }
396
+ }
397
+ async publishPlan(orgId, opts) {
398
+ const release = opts.release?.trim();
399
+ const commit = opts.commit?.trim();
400
+ const agentIds = opts.agentIds.map((a) => a.trim()).filter(Boolean);
401
+ if (!release)
402
+ throw new ServiceError("VALIDATION", "release name required", 400);
403
+ if (!commit)
404
+ throw new ServiceError("VALIDATION", "commit required", 400);
405
+ if (!agentIds.length) {
406
+ throw new ServiceError("VALIDATION", "agentIds required", 400);
407
+ }
408
+ await this.ensureRepo(orgId);
409
+ try {
410
+ this.ensureMongoEnv();
411
+ const repo = await magit.open({ repoRoot: this.repoRootFor(orgId) });
412
+ const plan = await repo.diffCommitToLive(commit, {
413
+ mongoTarget: {
414
+ urlEnv: this.cfg.mongoUrlEnv,
415
+ db: this.cfg.metadataDb,
416
+ },
417
+ recordFull: true,
418
+ only: agentIds.map((id) => `agentId=${id}`),
419
+ });
420
+ let toInsert = 0;
421
+ let toUpdate = 0;
422
+ let wouldDelete = 0;
423
+ const changes = [];
424
+ for (const agentId of agentIds) {
425
+ const col = plan.collections[MAGIT_AGENTS_COLLECTION];
426
+ if (!col)
427
+ continue;
428
+ toInsert += col.toInsert;
429
+ toUpdate += col.toUpdate;
430
+ wouldDelete += col.wouldDelete;
431
+ for (const row of col.records ?? []) {
432
+ const parsed = parseRecordId(row.id);
433
+ if (!parsed || parsed.agentId !== agentId)
434
+ continue;
435
+ let change = "changed";
436
+ if (row.before == null && row.after != null)
437
+ change = "added";
438
+ else if (row.before != null && row.after == null)
439
+ change = "removed";
440
+ const beforeBody = unwrapDefinitionBody(row.before);
441
+ const afterBody = unwrapDefinitionBody(row.after);
442
+ const fields = fieldDiffs(beforeBody, afterBody);
443
+ let labels;
444
+ try {
445
+ const labeled = labelDiff({
446
+ kind: parsed.kind,
447
+ id: parsed.id,
448
+ change,
449
+ before: beforeBody,
450
+ after: afterBody,
451
+ });
452
+ if (Array.isArray(labeled)) {
453
+ labels = labeled.map(String);
454
+ }
455
+ else if (labeled && typeof labeled === "object") {
456
+ const maybe = labeled.labels;
457
+ if (Array.isArray(maybe))
458
+ labels = maybe.map(String);
459
+ }
460
+ }
461
+ catch {
462
+ /* optional enrichment */
463
+ }
464
+ changes.push({
465
+ kind: parsed.kind,
466
+ id: parsed.id,
467
+ change,
468
+ ...(labels?.length ? { labels } : {}),
469
+ ...(fields ? { fields } : {}),
470
+ });
471
+ }
472
+ }
473
+ const planHash = createHash("sha256")
474
+ .update(JSON.stringify({ release, commit, agentIds, toInsert, toUpdate, wouldDelete }))
475
+ .digest("hex");
476
+ return {
477
+ release,
478
+ commit,
479
+ agentIds,
480
+ planHash,
481
+ summary: { toInsert, toUpdate, wouldDelete },
482
+ changes,
483
+ };
484
+ }
485
+ catch (err) {
486
+ throw this.mapError(err, "failed to plan publish");
487
+ }
488
+ }
489
+ async recordRelease(orgId, release) {
490
+ await this.ensureRepo(orgId);
491
+ const path = this.releasesPath(orgId);
492
+ const all = this.readReleases(orgId);
493
+ const next = all.filter((r) => r.name !== release.name);
494
+ next.push(release);
495
+ next.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
496
+ writeFileSync(path, JSON.stringify({ releases: next }, null, 2), "utf8");
497
+ return release;
498
+ }
499
+ listReleases(orgId) {
500
+ return this.readReleases(orgId);
501
+ }
502
+ releasesPath(orgId) {
503
+ return join(this.repoRootFor(orgId), ".magit", RELEASES_FILE);
504
+ }
505
+ readReleases(orgId) {
506
+ const path = this.releasesPath(orgId);
507
+ if (!existsSync(path))
508
+ return [];
509
+ try {
510
+ const raw = JSON.parse(readFileSync(path, "utf8"));
511
+ return Array.isArray(raw.releases) ? raw.releases : [];
512
+ }
513
+ catch {
514
+ return [];
515
+ }
516
+ }
517
+ async resolveSeedCommit(repo) {
518
+ const commits = await repo.listCommitsFromHead({ maxCount: 200 });
519
+ const seed = [...commits]
520
+ .reverse()
521
+ .find((c) => (c.message ?? "").includes("seed metadata"));
522
+ if (seed?.hash)
523
+ return seed.hash;
524
+ const oldest = commits[commits.length - 1];
525
+ if (!oldest?.hash) {
526
+ throw new ServiceError("MAGIT_UNAVAILABLE", "Magit repo has no commits", 503);
527
+ }
528
+ return oldest.hash;
529
+ }
530
+ async resolveCommitRef(repo, ref) {
531
+ if (isHeadRef(ref)) {
532
+ const head = await repo.listCommitsFromHead({ maxCount: 1 });
533
+ const hash = head[0]?.hash;
534
+ if (!hash) {
535
+ throw new ServiceError("VALIDATION", "HEAD has no commits", 400);
536
+ }
537
+ return hash;
538
+ }
539
+ return ref;
540
+ }
541
+ async collectDiffRows(repo, agentId, from, to) {
542
+ const rows = [];
543
+ const pushRows = (records, infer) => {
544
+ for (const r of records ?? []) {
545
+ const parsed = parseRecordId(r.id);
546
+ if (!parsed || parsed.agentId !== agentId)
547
+ continue;
548
+ if (parsed.agentId === MAGIT_SEED_AGENT_ID)
549
+ continue;
550
+ const change = infer(r);
551
+ if (!change)
552
+ continue;
553
+ const beforeBody = unwrapDefinitionBody(r.before);
554
+ const afterBody = unwrapDefinitionBody(r.after);
555
+ const fields = fieldDiffs(beforeBody, afterBody);
556
+ let labels;
557
+ try {
558
+ const labeled = labelDiff({
559
+ kind: parsed.kind,
560
+ id: parsed.id,
561
+ change,
562
+ before: beforeBody,
563
+ after: afterBody,
564
+ });
565
+ if (Array.isArray(labeled))
566
+ labels = labeled.map(String);
567
+ else if (labeled && typeof labeled === "object") {
568
+ const maybe = labeled.labels;
569
+ if (Array.isArray(maybe))
570
+ labels = maybe.map(String);
571
+ }
572
+ }
573
+ catch {
574
+ /* optional */
575
+ }
576
+ rows.push({
577
+ kind: parsed.kind,
578
+ id: parsed.id,
579
+ change,
580
+ ...(labels?.length ? { labels } : {}),
581
+ ...(fields ? { fields } : {}),
582
+ });
583
+ }
584
+ };
585
+ if (isLiveRef(from) && isLiveRef(to)) {
586
+ return [];
587
+ }
588
+ if (isLiveRef(to) || isLiveRef(from)) {
589
+ const commitSide = isLiveRef(to) ? from : to;
590
+ const commitHash = await this.resolveCommitRef(repo, commitSide);
591
+ const plan = await repo.diffCommitToLive(commitHash, {
592
+ mongoTarget: {
593
+ urlEnv: this.cfg.mongoUrlEnv,
594
+ db: this.cfg.metadataDb,
595
+ },
596
+ recordFull: true,
597
+ only: [`agentId=${agentId}`],
598
+ });
599
+ const col = plan.collections[MAGIT_AGENTS_COLLECTION];
600
+ const invert = isLiveRef(from);
601
+ pushRows(col?.records, (r) => {
602
+ const hasBefore = r.before != null || Boolean(r.beforeHash);
603
+ const hasAfter = r.after != null || Boolean(r.afterHash);
604
+ let change = null;
605
+ if (!hasBefore && hasAfter)
606
+ change = "added";
607
+ else if (hasBefore && !hasAfter)
608
+ change = "removed";
609
+ else if (hasBefore && hasAfter)
610
+ change = "changed";
611
+ if (!change)
612
+ return null;
613
+ if (!invert)
614
+ return change;
615
+ if (change === "added")
616
+ return "removed";
617
+ if (change === "removed")
618
+ return "added";
619
+ return "changed";
620
+ });
621
+ return rows;
622
+ }
623
+ const fromHash = await this.resolveCommitRef(repo, from);
624
+ const toHash = await this.resolveCommitRef(repo, to);
625
+ const diff = await repo.diffBetweenCommits({
626
+ from: fromHash,
627
+ to: toHash,
628
+ recordFull: true,
629
+ includeRemovedRecordBodies: true,
630
+ });
631
+ const col = diff.collections[MAGIT_AGENTS_COLLECTION];
632
+ pushRows(col?.records, (r) => {
633
+ const hasBefore = r.before != null || Boolean(r.beforeHash);
634
+ const hasAfter = r.after != null || Boolean(r.afterHash);
635
+ if (!hasBefore && hasAfter)
636
+ return "added";
637
+ if (hasBefore && !hasAfter)
638
+ return "removed";
639
+ if (hasBefore && hasAfter)
640
+ return "changed";
641
+ return null;
642
+ });
643
+ return rows;
644
+ }
162
645
  /**
163
646
  * Snapshot a temporary seed agent so HEAD carries `memorix_metadata_agents`,
164
647
  * then remove the seed from live Mongo (saveVersion must stay non-live).
@@ -196,16 +679,15 @@ export class MagitPackService {
196
679
  }
197
680
  }
198
681
  ensureMongoEnv() {
199
- if (!this.cfg.mongoUri?.trim()) {
200
- throw new ServiceError("MAGIT_UNAVAILABLE", "mongo URI required for Magit metadata versioning", 503);
682
+ if (!process.env[this.cfg.mongoUrlEnv]?.trim()) {
683
+ process.env[this.cfg.mongoUrlEnv] = this.cfg.mongoUri;
201
684
  }
202
- process.env[this.cfg.mongoUrlEnv] = this.cfg.mongoUri;
203
685
  }
204
686
  mapError(err, fallback) {
205
687
  if (err instanceof ServiceError)
206
688
  return err;
207
689
  if (isPatchsetError(err)) {
208
- return new ServiceError("VALIDATION", err.message || "invalid pack version patchset", 400, { magitCode: err.code });
690
+ return new ServiceError("VALIDATION", `${fallback}: ${err.message}`, 400);
209
691
  }
210
692
  const message = err instanceof Error ? err.message : String(err);
211
693
  return new ServiceError("MAGIT_UNAVAILABLE", `${fallback}: ${message}`, 503);
@@ -1 +1 @@
1
- {"version":3,"file":"magit-pack-service.js","sourceRoot":"","sources":["../../src/magit/magit-pack-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"magit-pack-service.js","sourceRoot":"","sources":["../../src/magit/magit-pack-service.ts"],"names":[],"mappings":"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"}