agenthub-multiagent-mcp 1.60.0 → 1.64.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 (123) hide show
  1. package/README.md +3 -3
  2. package/dist/brain/memvidBrain.d.ts +22 -0
  3. package/dist/brain/memvidBrain.d.ts.map +1 -1
  4. package/dist/brain/memvidBrain.js +41 -2
  5. package/dist/brain/memvidBrain.js.map +1 -1
  6. package/dist/brain/memvidBrain.test.js +90 -0
  7. package/dist/brain/memvidBrain.test.js.map +1 -1
  8. package/dist/brain/migrate.d.ts +43 -0
  9. package/dist/brain/migrate.d.ts.map +1 -1
  10. package/dist/brain/migrate.js +148 -23
  11. package/dist/brain/migrate.js.map +1 -1
  12. package/dist/brain/migrate.test.js +194 -1
  13. package/dist/brain/migrate.test.js.map +1 -1
  14. package/dist/channel.js +48 -6
  15. package/dist/channel.js.map +1 -1
  16. package/dist/channelDiagnostics.d.ts +53 -0
  17. package/dist/channelDiagnostics.d.ts.map +1 -1
  18. package/dist/channelDiagnostics.js +91 -0
  19. package/dist/channelDiagnostics.js.map +1 -1
  20. package/dist/channelDiagnostics.test.js +109 -1
  21. package/dist/channelDiagnostics.test.js.map +1 -1
  22. package/dist/client.d.ts +17 -0
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +32 -0
  25. package/dist/client.js.map +1 -1
  26. package/dist/daemon.js +16 -22
  27. package/dist/daemon.js.map +1 -1
  28. package/dist/index.js +36 -3
  29. package/dist/index.js.map +1 -1
  30. package/dist/lib/pending-items.d.ts +63 -0
  31. package/dist/lib/pending-items.d.ts.map +1 -0
  32. package/dist/lib/pending-items.js +96 -0
  33. package/dist/lib/pending-items.js.map +1 -0
  34. package/dist/pinSweep.d.ts +83 -0
  35. package/dist/pinSweep.d.ts.map +1 -0
  36. package/dist/pinSweep.js +105 -0
  37. package/dist/pinSweep.js.map +1 -0
  38. package/dist/pinSweep.test.d.ts +12 -0
  39. package/dist/pinSweep.test.d.ts.map +1 -0
  40. package/dist/pinSweep.test.js +110 -0
  41. package/dist/pinSweep.test.js.map +1 -0
  42. package/dist/pinSweepCli.d.ts +20 -0
  43. package/dist/pinSweepCli.d.ts.map +1 -0
  44. package/dist/pinSweepCli.js +287 -0
  45. package/dist/pinSweepCli.js.map +1 -0
  46. package/dist/run-claude.sh +36 -5
  47. package/dist/sessionCapture.d.ts.map +1 -1
  48. package/dist/sessionCapture.js +7 -1
  49. package/dist/sessionCapture.js.map +1 -1
  50. package/dist/sessionCapture.test.js +20 -0
  51. package/dist/sessionCapture.test.js.map +1 -1
  52. package/dist/setup.js +11 -0
  53. package/dist/setup.js.map +1 -1
  54. package/dist/shiftFiles.d.ts +33 -0
  55. package/dist/shiftFiles.d.ts.map +1 -0
  56. package/dist/shiftFiles.js +57 -0
  57. package/dist/shiftFiles.js.map +1 -0
  58. package/dist/shiftFiles.test.d.ts +2 -0
  59. package/dist/shiftFiles.test.d.ts.map +1 -0
  60. package/dist/shiftFiles.test.js +141 -0
  61. package/dist/shiftFiles.test.js.map +1 -0
  62. package/dist/skillInstaller.d.ts.map +1 -1
  63. package/dist/skillInstaller.gate.test.js +2 -0
  64. package/dist/skillInstaller.gate.test.js.map +1 -1
  65. package/dist/skillInstaller.js +8 -0
  66. package/dist/skillInstaller.js.map +1 -1
  67. package/dist/skillInstaller.test.js +8 -1
  68. package/dist/skillInstaller.test.js.map +1 -1
  69. package/dist/tools/goshtiRead.d.ts +72 -0
  70. package/dist/tools/goshtiRead.d.ts.map +1 -0
  71. package/dist/tools/goshtiRead.js +274 -0
  72. package/dist/tools/goshtiRead.js.map +1 -0
  73. package/dist/tools/goshtiRead.test.d.ts +8 -0
  74. package/dist/tools/goshtiRead.test.d.ts.map +1 -0
  75. package/dist/tools/goshtiRead.test.js +182 -0
  76. package/dist/tools/goshtiRead.test.js.map +1 -0
  77. package/dist/tools/inboxBounds.d.ts +80 -0
  78. package/dist/tools/inboxBounds.d.ts.map +1 -0
  79. package/dist/tools/inboxBounds.js +105 -0
  80. package/dist/tools/inboxBounds.js.map +1 -0
  81. package/dist/tools/inboxBounds.test.d.ts +15 -0
  82. package/dist/tools/inboxBounds.test.d.ts.map +1 -0
  83. package/dist/tools/inboxBounds.test.js +135 -0
  84. package/dist/tools/inboxBounds.test.js.map +1 -0
  85. package/dist/tools/index.d.ts +11 -0
  86. package/dist/tools/index.d.ts.map +1 -1
  87. package/dist/tools/index.js +79 -18
  88. package/dist/tools/index.js.map +1 -1
  89. package/dist/tools/intakeRequests.d.ts +35 -0
  90. package/dist/tools/intakeRequests.d.ts.map +1 -0
  91. package/dist/tools/intakeRequests.js +344 -0
  92. package/dist/tools/intakeRequests.js.map +1 -0
  93. package/dist/tools/intakeRequests.test.d.ts +8 -0
  94. package/dist/tools/intakeRequests.test.d.ts.map +1 -0
  95. package/dist/tools/intakeRequests.test.js +183 -0
  96. package/dist/tools/intakeRequests.test.js.map +1 -0
  97. package/dist/tools/pushedItemsSafety.test.d.ts +12 -0
  98. package/dist/tools/pushedItemsSafety.test.d.ts.map +1 -0
  99. package/dist/tools/pushedItemsSafety.test.js +179 -0
  100. package/dist/tools/pushedItemsSafety.test.js.map +1 -0
  101. package/dist/tools/tools.test.js +17 -5
  102. package/dist/tools/tools.test.js.map +1 -1
  103. package/dist/tools/wrapperCost.test.d.ts +13 -0
  104. package/dist/tools/wrapperCost.test.d.ts.map +1 -0
  105. package/dist/tools/wrapperCost.test.js +149 -0
  106. package/dist/tools/wrapperCost.test.js.map +1 -0
  107. package/dist/websocket.d.ts +30 -1
  108. package/dist/websocket.d.ts.map +1 -1
  109. package/dist/websocket.js +40 -3
  110. package/dist/websocket.js.map +1 -1
  111. package/dist/websocketQueue.test.d.ts +10 -0
  112. package/dist/websocketQueue.test.d.ts.map +1 -0
  113. package/dist/websocketQueue.test.js +78 -0
  114. package/dist/websocketQueue.test.js.map +1 -0
  115. package/package.json +4 -4
  116. package/skills/catalog.json +23 -10
  117. package/skills/commands/close-session.md +144 -144
  118. package/skills/commands/start-session.md +25 -6
  119. package/skills/manifest.json +8 -1
  120. package/skills/skills/code-brain-hook/SKILL.md +61 -61
  121. package/skills/skills/file-bug/SKILL.md +75 -75
  122. package/skills/skills/inbox/SKILL.md +99 -0
  123. package/skills/skills/multiagent-brainstorm/SKILL.md +164 -164
@@ -41,12 +41,16 @@ function tempPathFor(dir, agentId) {
41
41
  * Remove everything a failed attempt leaves behind: the partial brain, and the
42
42
  * marker filed under the throwaway id.
43
43
  *
44
- * Best-effort. A leftover that cannot be deleted is retried by the next
45
- * attempt, because the name is now stable.
44
+ * Best-effort, and returns whether the temp brain is actually gone so the
45
+ * caller can report a leftover instead of inferring one. This is the FIRST line
46
+ * of defence only: on Windows the `.mv2` is memory-mapped by tantivy and this
47
+ * `unlinkSync` throws, which is why correctness rests on `clearLeftoverTemp`
48
+ * running before the next attempt writes rather than on this succeeding.
46
49
  */
47
50
  function discardTempArtefacts(dir, agentId) {
51
+ const tempPath = tempPathFor(dir, agentId);
48
52
  const paths = [
49
- tempPathFor(dir, agentId),
53
+ tempPath,
50
54
  join(dir, `.${tempAgentFor(agentId).replace(/[^a-zA-Z0-9_-]/g, "_")}.write-failed.json`),
51
55
  ];
52
56
  for (const p of paths) {
@@ -55,9 +59,41 @@ function discardTempArtefacts(dir, agentId) {
55
59
  unlinkSync(p);
56
60
  }
57
61
  catch {
58
- // Locked or already gone. The next attempt reuses the same name.
62
+ // Locked or already gone. The next attempt clears it before writing.
59
63
  }
60
64
  }
65
+ return !existsSync(tempPath);
66
+ }
67
+ /**
68
+ * Make sure the temp brain is gone before anything is written into it.
69
+ *
70
+ * Refusing is the whole point. Appending onto a leftover is precisely what
71
+ * turns one transient failure into a permanent one, so "could not clear" must
72
+ * never degrade into "carry on" — the attempt is abandoned with the journal
73
+ * untouched so the next one can try again.
74
+ *
75
+ * The existence re-check after the unlink is not paranoia: on Windows a delete
76
+ * is accepted while the name stays visible until the last handle drops
77
+ * (delete-on-close), so a successful `unlinkSync` is not proof the file is
78
+ * gone. Catching that here costs one `existsSync`; not catching it produced an
79
+ * unexplainable count mismatch six weeks later.
80
+ *
81
+ * The message is phrased so `isTransientIOFault` classifies it retryable — a
82
+ * mapped file usually becomes deletable within a few hundred milliseconds,
83
+ * which is what the migration backoff is for.
84
+ */
85
+ function clearLeftoverTemp(tempPath) {
86
+ if (!existsSync(tempPath))
87
+ return;
88
+ try {
89
+ unlinkSync(tempPath);
90
+ }
91
+ catch (err) {
92
+ throw new Error(`temp brain ${tempPath} could not be cleared before writing: ${err instanceof Error ? err.message : String(err)}`);
93
+ }
94
+ if (existsSync(tempPath)) {
95
+ throw new Error(`temp brain ${tempPath} could not be cleared before writing: still present after delete`);
96
+ }
61
97
  }
62
98
  function parseJsonlLines(path) {
63
99
  const raw = readFileSync(path, "utf-8");
@@ -89,16 +125,89 @@ function jsonlEntryToSession(entry) {
89
125
  outcome: typeof entry.outcome === "string" ? entry.outcome : undefined,
90
126
  };
91
127
  }
128
+ /**
129
+ * How many times a migration attempt is retried on a transient IO fault, and how
130
+ * long to wait between attempts.
131
+ *
132
+ * The backoff is deliberately short. The fault is transient but not instantly
133
+ * self-healing (an immediate retry recovered 1 in 3, measured), so several
134
+ * closely-spaced attempts beat a few slow ones — and a migration that takes six
135
+ * attempts should still finish in under a second rather than stalling startup.
136
+ *
137
+ * Tunable so a test that forces permanent failure need not pay the full budget.
138
+ */
139
+ function migrateAttempts() {
140
+ const v = Number(process.env.AGENTHUB_BRAIN_MIGRATE_ATTEMPTS);
141
+ return Number.isFinite(v) && v > 0 ? v : 6;
142
+ }
143
+ const MIGRATE_BACKOFF_MS = 40;
144
+ /**
145
+ * Is this the transient Windows fault that makes an append fail for no reason
146
+ * the caller can fix?
147
+ *
148
+ * Measured on the reference machine: fresh single-session appends fail ~10% of
149
+ * the time (3 in 30, at random positions), and an immediate retry recovered only
150
+ * 1 in 3 — transient, but not instantly self-healing.
151
+ */
152
+ function isTransientIOFault(message) {
153
+ // `could not be cleared` is the leftover-temp refusal (AGHUB-1332). It is
154
+ // retryable for the same reason as the others: a memory-mapped `.mv2` is
155
+ // briefly undeletable and a delete-on-close name briefly lingers, and both
156
+ // clear within a short backoff. A `count mismatch` deliberately does NOT
157
+ // match — that is a real disagreement about what was written, and retrying it
158
+ // would be retrying a question already answered.
159
+ return /Access is denied|os error 5|Tantivy error|could not be cleared/i.test(message);
160
+ }
161
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
92
162
  /**
93
163
  * Migrate a single agent's JSONL brain to memvid. Idempotent.
164
+ *
165
+ * RETRIES, and why that is safe HERE when it is not safe for a normal append.
166
+ *
167
+ * A migration writes every session into a THROWAWAY temp brain, verifies the
168
+ * session count, and only then renames it over the real file. Each attempt
169
+ * CLEARS the temp before writing and refuses to start if it cannot, and a
170
+ * failed attempt leaves the journal unfrozen. That is what makes a retry
171
+ * idempotent and checked.
172
+ *
173
+ * This used to say the failed attempt's own cleanup was what guaranteed the
174
+ * next one "starts from nothing". It did not: that cleanup swallows a failed
175
+ * `unlinkSync`, which on Windows is the common case for a memory-mapped `.mv2`,
176
+ * and the next attempt then appended onto the leftover — making the count check
177
+ * unsatisfiable forever and wedging the agent (AGHUB-1332). The guarantee has
178
+ * to be made by the attempt that is about to write, not by the one that failed.
179
+ *
180
+ * `appendSession` on a real brain is the opposite case: the documented Windows
181
+ * fault can report failure *after* the frame has landed, so retrying there can
182
+ * duplicate a session. That is why there is no retry in the writer, and why
183
+ * `vitest.config.ts` argues against a global test retry — a retry that hides a
184
+ * landed-but-reported-failed write is how a real bug stayed invisible.
185
+ *
186
+ * Without this, a multi-session brain almost never migrates: at ~10% per append,
187
+ * ten sessions succeed about a third of the time.
94
188
  */
95
189
  export async function migrateAgent(agentId) {
190
+ const attempts = migrateAttempts();
191
+ let last = null;
192
+ for (let attempt = 1; attempt <= attempts; attempt++) {
193
+ const result = await migrateAgentOnce(agentId);
194
+ if (!result.error || !isTransientIOFault(result.error))
195
+ return result;
196
+ last = result;
197
+ if (attempt < attempts) {
198
+ process.stderr.write(`[brain/migrate] ${agentId}: transient IO fault on attempt ${attempt}/${attempts}, retrying
199
+ `);
200
+ await sleep(attempt * MIGRATE_BACKOFF_MS);
201
+ }
202
+ }
203
+ return last;
204
+ }
205
+ async function migrateAgentOnce(agentId) {
96
206
  const started = Date.now();
97
207
  const dir = brainsDir();
98
208
  const safe = agentId.replace(/[^a-zA-Z0-9_-]/g, "_");
99
209
  const jsonlPath = join(dir, `${safe}.jsonl`);
100
210
  const mv2Path = join(dir, `${safe}.mv2`);
101
- const mv2NewPath = join(dir, `${safe}.mv2.new`);
102
211
  const result = {
103
212
  agentId,
104
213
  skipped: false,
@@ -123,16 +232,27 @@ export async function migrateAgent(agentId) {
123
232
  return result;
124
233
  }
125
234
  }
126
- // Clean up any leftover partial write from a previous run.
127
- if (existsSync(mv2NewPath)) {
128
- try {
129
- unlinkSync(mv2NewPath);
130
- }
131
- catch {
132
- // If we can't delete, bail — don't corrupt a file we don't understand.
133
- throw new Error(`leftover ${mv2NewPath} could not be removed`);
134
- }
135
- }
235
+ // The temp id derives from the AGENT ALONE. It used to carry
236
+ // `Date.now()`, which meant every failed boot minted a new temp file and a
237
+ // new failure marker under an id that could never recur — so nothing could
238
+ // ever clean either up. 58 leftover files and 804 markers, 20 MB, on one
239
+ // machine.
240
+ const tempAgent = tempAgentFor(agentId);
241
+ const tempPath = tempPathFor(dir, agentId);
242
+ // Clear any leftover temp brain from a previous attempt, BEFORE writing.
243
+ //
244
+ // This is load-bearing, not hygiene. The verification below is
245
+ // `finalCount === sessionsWritten`, a CUMULATIVE count against a PER-PASS
246
+ // one, so it means nothing unless the temp starts empty. `appendSession`
247
+ // appends; a stable temp name does not overwrite its own leftover, it grows
248
+ // it. One surviving leftover therefore made the equality unsatisfiable for
249
+ // every future attempt and wedged the agent permanently — 17, 5 and 158
250
+ // accumulated sessions against 1, 1 and 25 written, on one machine
251
+ // (AGHUB-1332).
252
+ //
253
+ // Until this change the cleanup here targeted `<safe>.mv2.new`, a path
254
+ // nothing ever writes to, while the loop below wrote `<agent>__migrating.mv2`.
255
+ clearLeftoverTemp(tempPath);
136
256
  const { entries, malformed } = parseJsonlLines(jsonlPath);
137
257
  result.sessionsRead = entries.length;
138
258
  result.malformedLines = malformed;
@@ -145,13 +265,6 @@ export async function migrateAgent(agentId) {
145
265
  // writes to `<safe>.mv2`, so the only way to point it elsewhere is to hand
146
266
  // it a different agent id and rename afterwards.
147
267
  const brain = new MemvidBrain();
148
- // The temp id derives from the AGENT ALONE. It used to carry
149
- // `Date.now()`, which meant every failed boot minted a new temp file and a
150
- // new failure marker under an id that could never recur — so nothing could
151
- // ever clean either up. 58 leftover files and 804 markers, 20 MB, on one
152
- // machine. A stable name overwrites its own leftover instead.
153
- const tempAgent = tempAgentFor(agentId);
154
- const tempPath = tempPathFor(dir, agentId);
155
268
  for (const entry of entries) {
156
269
  const session = jsonlEntryToSession(entry);
157
270
  await brain.appendSession(tempAgent, session);
@@ -181,7 +294,12 @@ export async function migrateAgent(agentId) {
181
294
  // that cleaned up its temp file; every other failure — which in practice
182
295
  // meant every failure — stranded one, plus a marker under an id nothing
183
296
  // could ever clear.
184
- discardTempArtefacts(dir, agentId);
297
+ // A leftover that survives this is no longer fatal — the next attempt
298
+ // clears it before writing (`clearLeftoverTemp`) — but it is worth saying
299
+ // out loud rather than inferring from a later count mismatch.
300
+ if (!discardTempArtefacts(dir, agentId)) {
301
+ process.stderr.write(`[brain/migrate] ${agentId}: temp brain survived cleanup; the next attempt will clear it before writing\n`);
302
+ }
185
303
  // File the failure under the REAL agent, so a later successful write for
186
304
  // that agent clears it and so anyone reading the directory can tell which
187
305
  // agent is affected.
@@ -214,4 +332,11 @@ export async function migrateAllPending() {
214
332
  }
215
333
  return results;
216
334
  }
335
+ /**
336
+ * Exported for tests only: the transient-fault classifier decides whether a
337
+ * failed migration gets another attempt, and it is wrong in both directions —
338
+ * retrying a genuine error wastes six attempts, and not retrying a transient one
339
+ * leaves a brain permanently unmigrated.
340
+ */
341
+ export const __testables = { isTransientIOFault };
217
342
  //# sourceMappingURL=migrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/brain/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAgBxE,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,GAAG,OAAO,aAAa,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,OAAe;IAC/C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,GAAW,EAAE,OAAe;IACxD,MAAM,KAAK,GAAG;QACZ,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,oBAAoB,CAAC;KACzF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,CAAC,CAAC;gBAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAmC,EAAE,CAAC;IACnD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,IAAI,CAAC,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,IAAI,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA8B;IACzD,OAAO;QACL,cAAc,EAAE,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QAC3F,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC/D,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC/D,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC5E,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;YAC/C,CAAC,CAAE,KAAK,CAAC,aAA2B,CAAC,GAAG,CAAC,MAAM,CAAC;YAChD,CAAC,CAAC,SAAS;QACb,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KACvE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAoB;QAC9B,OAAO;QACP,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,CAAC;QACjB,OAAO;QACP,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC;gBACrC,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,UAAU,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;gBACvE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,uBAAuB,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;QAElC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,yEAAyE;QACzE,2EAA2E;QAC3E,iDAAiD;QACjD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAEhC,6DAA6D;QAC7D,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,8DAA8D;QAC9D,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,sDAAsD;QACtD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,UAAU,KAAK,MAAM,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,eAAe,qBAAqB,UAAU,EAAE,CACjF,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE9B,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,GAAG,SAAS,WAAW,QAAQ,EAAE,CAAC;QACrD,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,OAAO,cAAc,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,YAAY,aAAa;YAChG,UAAU,UAAU,aAAa,MAAM,CAAC,SAAS,MAAM,CAC1D,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAExC,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,oBAAoB;QACpB,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEnC,yEAAyE;QACzE,0EAA0E;QAC1E,qBAAqB;QACrB,IAAI,CAAC;YACH,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,OAAO,kBAAkB,MAAM,CAAC,SAAS,QAAQ,MAAM,CAAC,KAAK,IAAI,CACrF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/brain/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAgBxE,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,GAAG,OAAO,aAAa,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,OAAe;IAC/C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAAC,GAAW,EAAE,OAAe;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG;QACZ,QAAQ;QACR,IAAI,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,oBAAoB,CAAC;KACzF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,CAAC,CAAC;gBAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;QACvE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,iBAAiB,CAAC,QAAgB;IACzC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IAClC,IAAI,CAAC;QACH,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,cAAc,QAAQ,yCACpB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE,CACH,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,cAAc,QAAQ,kEAAkE,CACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAmC,EAAE,CAAC;IACnD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,IAAI,CAAC,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,IAAI,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA8B;IACzD,OAAO;QACL,cAAc,EAAE,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QAC3F,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC/D,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC/D,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC5E,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;YAC/C,CAAC,CAAE,KAAK,CAAC,aAA2B,CAAC,GAAG,CAAC,MAAM,CAAC;YAChD,CAAC,CAAC,SAAS;QACb,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KACvE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,eAAe;IACtB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,0EAA0E;IAC1E,yEAAyE;IACzE,2EAA2E;IAC3E,yEAAyE;IACzE,8EAA8E;IAC9E,iDAAiD;IACjD,OAAO,iEAAiE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe;IAChD,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,IAAI,GAA2B,IAAI,CAAC;IACxC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACtE,IAAI,GAAG,MAAM,CAAC;QACd,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,OAAO,mCAAmC,OAAO,IAAI,QAAQ;CACvF,CACM,CAAC;YACF,MAAM,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,IAAuB,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAoB;QAC9B,OAAO;QACP,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,CAAC;QACjB,OAAO;QACP,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC;gBACrC,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,WAAW;QACX,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE3C,yEAAyE;QACzE,EAAE;QACF,+DAA+D;QAC/D,0EAA0E;QAC1E,yEAAyE;QACzE,4EAA4E;QAC5E,2EAA2E;QAC3E,wEAAwE;QACxE,mEAAmE;QACnE,gBAAgB;QAChB,EAAE;QACF,uEAAuE;QACvE,+EAA+E;QAC/E,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAE5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;QAElC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,yEAAyE;QACzE,2EAA2E;QAC3E,iDAAiD;QACjD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAEhC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,sDAAsD;QACtD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,UAAU,KAAK,MAAM,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,eAAe,qBAAqB,UAAU,EAAE,CACjF,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE9B,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,GAAG,SAAS,WAAW,QAAQ,EAAE,CAAC;QACrD,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,OAAO,cAAc,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,YAAY,aAAa;YAChG,UAAU,UAAU,aAAa,MAAM,CAAC,SAAS,MAAM,CAC1D,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAExC,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,oBAAoB;QACpB,sEAAsE;QACtE,0EAA0E;QAC1E,8DAA8D;QAC9D,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,OAAO,gFAAgF,CAC3G,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,0EAA0E;QAC1E,qBAAqB;QACrB,IAAI,CAAC;YACH,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,OAAO,kBAAkB,MAAM,CAAC,SAAS,QAAQ,MAAM,CAAC,KAAK,IAAI,CACrF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,kBAAkB,EAAE,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Unit tests for JSONL → memvid migration (§1.5 finish-agenthub-v1-backlog).
3
3
  */
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
- import { mkdtempSync, mkdirSync, rmSync, writeFileSync, readFileSync, existsSync, readdirSync, } from "fs";
5
+ import { mkdtempSync, mkdirSync, rmSync, writeFileSync, readFileSync, existsSync, readdirSync, utimesSync, } from "fs";
6
6
  import { tmpdir } from "os";
7
7
  import { join } from "path";
8
8
  let tempHome;
@@ -275,4 +275,197 @@ describe("migrateAgent leaves nothing behind when it fails", () => {
275
275
  expect(tempFilesFor(agent)).toEqual([]);
276
276
  });
277
277
  });
278
+ // fix-brain-session-count §5 — the retry that unsticks a real brain.
279
+ describe("transient IO faults", () => {
280
+ it("classifies the Windows fault as transient and other errors as not", async () => {
281
+ const { __testables } = await import("./migrate.js");
282
+ // Only exported for this assertion; the classifier decides whether a failed
283
+ // migration is worth another attempt, and misclassifying either way is bad:
284
+ // retrying a real error wastes six attempts, not retrying a transient one
285
+ // leaves a brain permanently unmigrated.
286
+ expect(__testables.isTransientIOFault("Tantivy error: An IO error occurred: 'Access is denied. (os error 5)'")).toBe(true);
287
+ expect(__testables.isTransientIOFault("count mismatch: wrote 3 but .mv2 reports 25")).toBe(false);
288
+ expect(__testables.isTransientIOFault("leftover could not be removed")).toBe(false);
289
+ });
290
+ });
291
+ /**
292
+ * The leftover wedge (fix-brain-migration-leftover, AGHUB-1332).
293
+ *
294
+ * `migrateAgentOnce` verifies `finalCount === sessionsWritten` before renaming
295
+ * the temp brain over the real one. That compares a CUMULATIVE count against a
296
+ * PER-PASS count, so it only means anything if the temp starts empty.
297
+ *
298
+ * It did not. The pre-loop cleanup deleted `<safe>.mv2.new` — a path nothing
299
+ * ever writes to — while the write loop wrote `<agent>__migrating.mv2`, which
300
+ * was only ever removed by the best-effort cleanup in the `catch`. That cleanup
301
+ * swallows a failed `unlinkSync`, which on Windows is the common case for a
302
+ * memory-mapped `.mv2`. The next attempt then appended onto the leftover and the
303
+ * equality became unsatisfiable FOREVER.
304
+ *
305
+ * Observed live 2026-09-12: "wrote 1 but .mv2 reports 17" (17 accumulated
306
+ * attempts), "wrote 1 but reports 5", "wrote 25 but reports 158". One of the
307
+ * three, `sumit-lordclaw`, was a perfectly healthy brain.
308
+ *
309
+ * These tests model the temp brain the way it really behaves — an append adds a
310
+ * session, a count reads the file's total — because the accumulation IS the bug.
311
+ * A fake that ignores prior content cannot fail here.
312
+ */
313
+ describe("a leftover temp brain never wedges a migration", () => {
314
+ beforeEach(() => {
315
+ tempHome = mkdtempSync(join(tmpdir(), "memvid-migrate-wedge-"));
316
+ process.env.__TEST_HOME__ = tempHome;
317
+ });
318
+ afterEach(() => {
319
+ vi.doUnmock("./memvidBrain.js");
320
+ vi.doUnmock("fs");
321
+ vi.resetModules();
322
+ try {
323
+ rmSync(tempHome, { recursive: true, force: true });
324
+ }
325
+ catch {
326
+ // best effort
327
+ }
328
+ delete process.env.__TEST_HOME__;
329
+ });
330
+ const safe = (id) => id.replace(/[^a-zA-Z0-9_-]/g, "_");
331
+ const tempPathOf = (agent) => join(brainsDirIn(tempHome), `${safe(agent)}__migrating.mv2`);
332
+ /** Sessions the fake brain has stored at a path, one per line. */
333
+ function sessionsAt(path) {
334
+ if (!existsSync(path))
335
+ return [];
336
+ return readFileSync(path, "utf-8").split("\n").filter(Boolean);
337
+ }
338
+ /** Plant a leftover temp brain holding `n` sessions, as a failed attempt would. */
339
+ function plantLeftover(agent, n) {
340
+ const dir = brainsDirIn(tempHome);
341
+ mkdirSync(dir, { recursive: true });
342
+ writeFileSync(tempPathOf(agent), Array.from({ length: n }, (_, i) => `stale-session-${i + 1}`).join("\n") + "\n", "utf-8");
343
+ }
344
+ /**
345
+ * A brain that APPENDS, and counts what is on disk. Records what each append
346
+ * saw so a test can assert the leftover was gone *before* the first write, not
347
+ * merely gone by the end.
348
+ */
349
+ async function withAppendingBrain() {
350
+ const seenAtFirstAppend = { value: null };
351
+ const real = await vi.importActual("./memvidBrain.js");
352
+ vi.doMock("./memvidBrain.js", () => ({
353
+ ...real,
354
+ MemvidBrain: class {
355
+ async appendSession(agentId, session) {
356
+ const dir = brainsDirIn(tempHome);
357
+ mkdirSync(dir, { recursive: true });
358
+ const p = join(dir, `${safe(agentId)}.mv2`);
359
+ const existing = sessionsAt(p);
360
+ if (seenAtFirstAppend.value === null)
361
+ seenAtFirstAppend.value = existing;
362
+ writeFileSync(p, [...existing, `session:${session?.summary ?? "?"}`].join("\n") + "\n", "utf-8");
363
+ return existing.length + 1;
364
+ }
365
+ async getSessionCount(agentId) {
366
+ return sessionsAt(join(brainsDirIn(tempHome), `${safe(agentId)}.mv2`)).length;
367
+ }
368
+ },
369
+ }));
370
+ vi.resetModules();
371
+ return { migrate: await import("./migrate.js"), seenAtFirstAppend };
372
+ }
373
+ // 1.1 — the wedge itself. On the unfixed code this fails with
374
+ // "count mismatch: wrote 1 but .mv2 reports 4".
375
+ it("migrates even when a previous attempt left a temp brain behind", async () => {
376
+ const agent = "wedged";
377
+ seedJsonl(agent, [{ session_number: 1, summary: "only", content: "c" }]);
378
+ plantLeftover(agent, 3);
379
+ const { migrate } = await withAppendingBrain();
380
+ const r = await migrate.migrateAgent(agent);
381
+ expect(r.error).toBeUndefined();
382
+ expect(r.sessionsWritten).toBe(1);
383
+ expect(r.frozenPath).toBeDefined();
384
+ // The migrated brain holds this journal's one session — not the stale three.
385
+ expect(sessionsAt(join(brainsDirIn(tempHome), `${safe(agent)}.mv2`))).toEqual(["session:only"]);
386
+ });
387
+ // 1.2 — the leftover must be gone BEFORE the first write, not cleaned up after.
388
+ // A fix that deletes it at the wrong moment still corrupts the count.
389
+ it("clears the leftover before writing the first session", async () => {
390
+ const agent = "wedged-order";
391
+ seedJsonl(agent, [{ session_number: 1, summary: "only", content: "c" }]);
392
+ plantLeftover(agent, 3);
393
+ const { migrate, seenAtFirstAppend } = await withAppendingBrain();
394
+ await migrate.migrateAgent(agent);
395
+ expect(seenAtFirstAppend.value).toEqual([]);
396
+ });
397
+ // 1.3 — refusing is the point. Appending onto a leftover is what makes one
398
+ // transient failure permanent, so "could not clear" must not degrade into
399
+ // "carry on".
400
+ it("fails the attempt, writing nothing, when the leftover cannot be removed", async () => {
401
+ const agent = "wedged-locked";
402
+ const dir = brainsDirIn(tempHome);
403
+ mkdirSync(dir, { recursive: true });
404
+ // Written BEFORE the journal, so the journal is newer and migration runs.
405
+ // Seeded the other way round it skips as "mv2 up-to-date" and the test
406
+ // passes without exercising anything — which is exactly what it did first.
407
+ writeFileSync(join(dir, `${safe(agent)}.mv2`), "the existing brain", "utf-8");
408
+ seedJsonl(agent, [{ session_number: 1, summary: "only", content: "c" }]);
409
+ // Write order alone is not enough. The skip is `mv2.mtime >= jsonl.mtime`,
410
+ // and two writes in the same millisecond tie — so the migration skipped as
411
+ // "mv2 up-to-date" and this test went green without exercising anything, on
412
+ // roughly one full-suite run in two. Backdate explicitly.
413
+ const old = new Date(Date.now() - 60_000);
414
+ utimesSync(join(dir, `${safe(agent)}.mv2`), old, old);
415
+ plantLeftover(agent, 3);
416
+ const actualFs = await vi.importActual("fs");
417
+ vi.doMock("fs", () => ({
418
+ ...actualFs,
419
+ default: actualFs,
420
+ unlinkSync: (p) => {
421
+ if (String(p).includes("__migrating"))
422
+ throw new Error("EBUSY: resource busy or locked");
423
+ return actualFs.unlinkSync(p);
424
+ },
425
+ }));
426
+ const { migrate } = await withAppendingBrain();
427
+ const r = await migrate.migrateAgent(agent);
428
+ expect(r.error).toBeDefined();
429
+ expect(r.error).toContain("__migrating");
430
+ expect(r.sessionsWritten).toBe(0);
431
+ // Nothing appended onto the leftover — it still holds exactly the stale three.
432
+ expect(sessionsAt(tempPathOf(agent))).toHaveLength(3);
433
+ // The journal survives so a later attempt can retry from the original data.
434
+ expect(existsSync(join(dir, `${agent}.jsonl`))).toBe(true);
435
+ expect(r.frozenPath).toBeUndefined();
436
+ // The real brain is untouched.
437
+ expect(readFileSync(join(dir, `${safe(agent)}.mv2`), "utf-8")).toBe("the existing brain");
438
+ });
439
+ // 1.4 — Windows delete-on-close leaves the NAME visible until the last handle
440
+ // drops, so a delete that "succeeds" is not proof the file is gone.
441
+ it("fails the attempt when the leftover survives its own deletion", async () => {
442
+ const agent = "wedged-lingering";
443
+ seedJsonl(agent, [{ session_number: 1, summary: "only", content: "c" }]);
444
+ plantLeftover(agent, 3);
445
+ const actualFs = await vi.importActual("fs");
446
+ vi.doMock("fs", () => ({
447
+ ...actualFs,
448
+ default: actualFs,
449
+ // Reports success and deletes nothing.
450
+ unlinkSync: (p) => {
451
+ if (String(p).includes("__migrating"))
452
+ return undefined;
453
+ return actualFs.unlinkSync(p);
454
+ },
455
+ }));
456
+ const { migrate } = await withAppendingBrain();
457
+ const r = await migrate.migrateAgent(agent);
458
+ expect(r.error).toBeDefined();
459
+ expect(r.sessionsWritten).toBe(0);
460
+ expect(sessionsAt(tempPathOf(agent))).toHaveLength(3);
461
+ });
462
+ // The refusal is worth retrying: a mapped file usually becomes deletable
463
+ // within a few hundred ms, which is exactly what the backoff is for.
464
+ it("classifies an uncleared leftover as transient so the backoff retries it", async () => {
465
+ const { __testables } = await import("./migrate.js");
466
+ expect(__testables.isTransientIOFault("temp brain x__migrating.mv2 could not be cleared before writing")).toBe(true);
467
+ // A count mismatch is still a real disagreement, not something to retry.
468
+ expect(__testables.isTransientIOFault("count mismatch: wrote 3 but .mv2 reports 25")).toBe(false);
469
+ });
470
+ });
278
471
  //# sourceMappingURL=migrate.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.test.js","sourceRoot":"","sources":["../../src/brain/migrate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.test.js","sourceRoot":"","sources":["../../src/brain/migrate.test.ts"],"names":[],"mappings":"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"}
package/dist/channel.js CHANGED
@@ -22,7 +22,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
22
22
  import WebSocket from "ws";
23
23
  import { buildSteerTurnContent, parseSteerFrame, sessionSteerEnabled } from "./streamingRuntimeLib.js";
24
24
  import * as state from "./state.js";
25
- import { channelSocketHeaders, describeChannelFailure, shouldNotifySession, sessionFailureNotice, } from "./channelDiagnostics.js";
25
+ import { channelSocketHeaders, channelFailureMeta, describeChannelFailure, shouldNotifySession, sessionFailureNotice, missingIdentity, describeMissingIdentity, missingIdentityNotice, missingIdentityMeta, } from "./channelDiagnostics.js";
26
26
  // =============================================================================
27
27
  // Config
28
28
  // =============================================================================
@@ -291,7 +291,17 @@ function connectWebSocket() {
291
291
  ws?.send(JSON.stringify({ type: "ack", message_id: m.id, timestamp: new Date().toISOString() }));
292
292
  return;
293
293
  }
294
- // ACK the message
294
+ // ACK the message.
295
+ //
296
+ // This fires BEFORE the notification below is awaited, so a failed
297
+ // injection acks a message nobody saw. That is harmless *only* because
298
+ // the server's `ack` handler is a debug log and writes no message
299
+ // status (`server/internal/hub/websocket.go`, `case WSTypeAck`). If you
300
+ // ever give that handler a body — marking the message delivered or read
301
+ // — move this send to AFTER a successful notification, or you
302
+ // reintroduce the acked-but-never-delivered shape that lost four of
303
+ // krishi-dev's messages on 2026-10-14
304
+ // (fix-inbox-delivery-and-tool-wrapping, AGHUB-1426).
295
305
  ws?.send(JSON.stringify({ type: "ack", message_id: m.id, timestamp: new Date().toISOString() }));
296
306
  // Emit channel notification — this injects into the active session
297
307
  const priority = m.priority === "urgent" ? " [URGENT]" : m.priority === "high" ? " [HIGH]" : "";
@@ -375,7 +385,7 @@ function reportFailure(url, status, error) {
375
385
  method: "notifications/claude/channel",
376
386
  params: {
377
387
  content: sessionFailureNotice(failure),
378
- meta: { source: "agenthub", kind: "channel_transport_failure", status, agent: AGENT_ID },
388
+ meta: channelFailureMeta(failure),
379
389
  },
380
390
  })
381
391
  .catch(() => { });
@@ -394,10 +404,42 @@ function scheduleReconnect() {
394
404
  async function main() {
395
405
  const transport = new StdioServerTransport();
396
406
  await server.connect(transport);
397
- // Connect WebSocket after MCP is ready
398
- if (AGENT_ID && API_KEY) {
399
- connectWebSocket();
407
+ // Connect WebSocket after MCP is ready.
408
+ //
409
+ // A missing identity is REPORTED, not skipped. This used to be a bare
410
+ // `if (AGENT_ID && API_KEY)` with no else, which made a misconfigured channel
411
+ // indistinguishable from a healthy idle one: the MCP server is up, the tools
412
+ // are registered, and the instructions block above already claims a
413
+ // connection. The plugin form made this state reachable in practice — its
414
+ // manifest names these as `${...}` references for the launcher to supply.
415
+ const missing = missingIdentity({ agentId: AGENT_ID, apiKey: API_KEY, url: API_URL });
416
+ if (missing.length > 0) {
417
+ reportMissingIdentity();
418
+ return;
400
419
  }
420
+ connectWebSocket();
421
+ }
422
+ /**
423
+ * Say — to stderr and into the session — that this channel has no identity and
424
+ * will deliver nothing.
425
+ *
426
+ * Both, for the same reason a transport failure reports both: stderr is where an
427
+ * MCP server's diagnostics are visible without disturbing the stdio protocol, and
428
+ * the person who needs to know is not reading logs.
429
+ */
430
+ function reportMissingIdentity() {
431
+ const id = { agentId: AGENT_ID, apiKey: API_KEY, url: API_URL };
432
+ process.stderr.write(`${describeMissingIdentity(id)}\n`);
433
+ // Best effort, and never fatal: failing to report a failure must not throw.
434
+ void server
435
+ .notification({
436
+ method: "notifications/claude/channel",
437
+ params: {
438
+ content: missingIdentityNotice(id),
439
+ meta: missingIdentityMeta(id),
440
+ },
441
+ })
442
+ .catch(() => { });
401
443
  }
402
444
  main().catch(() => process.exit(1));
403
445
  //# sourceMappingURL=channel.js.map