brains-mcp 1.61.2

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 (350) hide show
  1. package/README.md +95 -0
  2. package/dist/access/projectShares.d.ts +48 -0
  3. package/dist/access/projectShares.d.ts.map +1 -0
  4. package/dist/access/projectShares.js +203 -0
  5. package/dist/access/projectShares.js.map +1 -0
  6. package/dist/access/sharedInstructionsNote.d.ts +37 -0
  7. package/dist/access/sharedInstructionsNote.d.ts.map +1 -0
  8. package/dist/access/sharedInstructionsNote.js +76 -0
  9. package/dist/access/sharedInstructionsNote.js.map +1 -0
  10. package/dist/admin/seedUsers.d.ts +23 -0
  11. package/dist/admin/seedUsers.d.ts.map +1 -0
  12. package/dist/admin/seedUsers.js +168 -0
  13. package/dist/admin/seedUsers.js.map +1 -0
  14. package/dist/api/openapi.d.ts +2 -0
  15. package/dist/api/openapi.d.ts.map +1 -0
  16. package/dist/api/openapi.js +942 -0
  17. package/dist/api/openapi.js.map +1 -0
  18. package/dist/auth/clientStore.d.ts +43 -0
  19. package/dist/auth/clientStore.d.ts.map +1 -0
  20. package/dist/auth/clientStore.js +168 -0
  21. package/dist/auth/clientStore.js.map +1 -0
  22. package/dist/auth/deleteAccount.d.ts +34 -0
  23. package/dist/auth/deleteAccount.d.ts.map +1 -0
  24. package/dist/auth/deleteAccount.js +203 -0
  25. package/dist/auth/deleteAccount.js.map +1 -0
  26. package/dist/auth/oauth.d.ts +118 -0
  27. package/dist/auth/oauth.d.ts.map +1 -0
  28. package/dist/auth/oauth.js +491 -0
  29. package/dist/auth/oauth.js.map +1 -0
  30. package/dist/auth/patStore.d.ts +87 -0
  31. package/dist/auth/patStore.d.ts.map +1 -0
  32. package/dist/auth/patStore.js +308 -0
  33. package/dist/auth/patStore.js.map +1 -0
  34. package/dist/auth/supabase.d.ts +15 -0
  35. package/dist/auth/supabase.d.ts.map +1 -0
  36. package/dist/auth/supabase.js +66 -0
  37. package/dist/auth/supabase.js.map +1 -0
  38. package/dist/auth/tokenStore.d.ts +73 -0
  39. package/dist/auth/tokenStore.d.ts.map +1 -0
  40. package/dist/auth/tokenStore.js +261 -0
  41. package/dist/auth/tokenStore.js.map +1 -0
  42. package/dist/backup/drive.d.ts +24 -0
  43. package/dist/backup/drive.d.ts.map +1 -0
  44. package/dist/backup/drive.js +70 -0
  45. package/dist/backup/drive.js.map +1 -0
  46. package/dist/billing/tierStore.d.ts +59 -0
  47. package/dist/billing/tierStore.d.ts.map +1 -0
  48. package/dist/billing/tierStore.js +152 -0
  49. package/dist/billing/tierStore.js.map +1 -0
  50. package/dist/digest/activityDigest.d.ts +32 -0
  51. package/dist/digest/activityDigest.d.ts.map +1 -0
  52. package/dist/digest/activityDigest.js +299 -0
  53. package/dist/digest/activityDigest.js.map +1 -0
  54. package/dist/digest/digestCron.d.ts +40 -0
  55. package/dist/digest/digestCron.d.ts.map +1 -0
  56. package/dist/digest/digestCron.js +146 -0
  57. package/dist/digest/digestCron.js.map +1 -0
  58. package/dist/digest/digestPreferences.d.ts +25 -0
  59. package/dist/digest/digestPreferences.d.ts.map +1 -0
  60. package/dist/digest/digestPreferences.js +79 -0
  61. package/dist/digest/digestPreferences.js.map +1 -0
  62. package/dist/digest/emailSender.d.ts +20 -0
  63. package/dist/digest/emailSender.d.ts.map +1 -0
  64. package/dist/digest/emailSender.js +35 -0
  65. package/dist/digest/emailSender.js.map +1 -0
  66. package/dist/drive/client.d.ts +43 -0
  67. package/dist/drive/client.d.ts.map +1 -0
  68. package/dist/drive/client.js +282 -0
  69. package/dist/drive/client.js.map +1 -0
  70. package/dist/drive/errors.d.ts +27 -0
  71. package/dist/drive/errors.d.ts.map +1 -0
  72. package/dist/drive/errors.js +51 -0
  73. package/dist/drive/errors.js.map +1 -0
  74. package/dist/drive/fileCache.d.ts +22 -0
  75. package/dist/drive/fileCache.d.ts.map +1 -0
  76. package/dist/drive/fileCache.js +57 -0
  77. package/dist/drive/fileCache.js.map +1 -0
  78. package/dist/governance/accessControl.d.ts +87 -0
  79. package/dist/governance/accessControl.d.ts.map +1 -0
  80. package/dist/governance/accessControl.js +179 -0
  81. package/dist/governance/accessControl.js.map +1 -0
  82. package/dist/html/components.d.ts +8 -0
  83. package/dist/html/components.d.ts.map +1 -0
  84. package/dist/html/components.js +19 -0
  85. package/dist/html/components.js.map +1 -0
  86. package/dist/html/layout.d.ts +7 -0
  87. package/dist/html/layout.d.ts.map +1 -0
  88. package/dist/html/layout.js +24 -0
  89. package/dist/html/layout.js.map +1 -0
  90. package/dist/html/metricsUi.d.ts +8 -0
  91. package/dist/html/metricsUi.d.ts.map +1 -0
  92. package/dist/html/metricsUi.js +271 -0
  93. package/dist/html/metricsUi.js.map +1 -0
  94. package/dist/httpServer.d.ts +19 -0
  95. package/dist/httpServer.d.ts.map +1 -0
  96. package/dist/httpServer.js +3913 -0
  97. package/dist/httpServer.js.map +1 -0
  98. package/dist/index.d.ts +3 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +40 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/jobs/asyncJobRegistry.d.ts +30 -0
  103. package/dist/jobs/asyncJobRegistry.d.ts.map +1 -0
  104. package/dist/jobs/asyncJobRegistry.js +70 -0
  105. package/dist/jobs/asyncJobRegistry.js.map +1 -0
  106. package/dist/observability/metricsQuery.d.ts +41 -0
  107. package/dist/observability/metricsQuery.d.ts.map +1 -0
  108. package/dist/observability/metricsQuery.js +106 -0
  109. package/dist/observability/metricsQuery.js.map +1 -0
  110. package/dist/observability/relevanceSignal.d.ts +26 -0
  111. package/dist/observability/relevanceSignal.d.ts.map +1 -0
  112. package/dist/observability/relevanceSignal.js +95 -0
  113. package/dist/observability/relevanceSignal.js.map +1 -0
  114. package/dist/observability/requestEvents.d.ts +31 -0
  115. package/dist/observability/requestEvents.d.ts.map +1 -0
  116. package/dist/observability/requestEvents.js +54 -0
  117. package/dist/observability/requestEvents.js.map +1 -0
  118. package/dist/observability/slowQueryAlert.d.ts +25 -0
  119. package/dist/observability/slowQueryAlert.d.ts.map +1 -0
  120. package/dist/observability/slowQueryAlert.js +67 -0
  121. package/dist/observability/slowQueryAlert.js.map +1 -0
  122. package/dist/observability/zeroResultTriage.d.ts +22 -0
  123. package/dist/observability/zeroResultTriage.d.ts.map +1 -0
  124. package/dist/observability/zeroResultTriage.js +116 -0
  125. package/dist/observability/zeroResultTriage.js.map +1 -0
  126. package/dist/search/embeddings.d.ts +31 -0
  127. package/dist/search/embeddings.d.ts.map +1 -0
  128. package/dist/search/embeddings.js +91 -0
  129. package/dist/search/embeddings.js.map +1 -0
  130. package/dist/search/fileWatcher.d.ts +28 -0
  131. package/dist/search/fileWatcher.d.ts.map +1 -0
  132. package/dist/search/fileWatcher.js +103 -0
  133. package/dist/search/fileWatcher.js.map +1 -0
  134. package/dist/search/hotQueryCache.d.ts +31 -0
  135. package/dist/search/hotQueryCache.d.ts.map +1 -0
  136. package/dist/search/hotQueryCache.js +103 -0
  137. package/dist/search/hotQueryCache.js.map +1 -0
  138. package/dist/search/postgresIndex.d.ts +439 -0
  139. package/dist/search/postgresIndex.d.ts.map +1 -0
  140. package/dist/search/postgresIndex.js +1610 -0
  141. package/dist/search/postgresIndex.js.map +1 -0
  142. package/dist/search/sqliteIndex.d.ts +66 -0
  143. package/dist/search/sqliteIndex.d.ts.map +1 -0
  144. package/dist/search/sqliteIndex.js +342 -0
  145. package/dist/search/sqliteIndex.js.map +1 -0
  146. package/dist/server.d.ts +43 -0
  147. package/dist/server.d.ts.map +1 -0
  148. package/dist/server.js +532 -0
  149. package/dist/server.js.map +1 -0
  150. package/dist/session/bundle.d.ts +53 -0
  151. package/dist/session/bundle.d.ts.map +1 -0
  152. package/dist/session/bundle.js +97 -0
  153. package/dist/session/bundle.js.map +1 -0
  154. package/dist/storage/client.d.ts +157 -0
  155. package/dist/storage/client.d.ts.map +1 -0
  156. package/dist/storage/client.js +825 -0
  157. package/dist/storage/client.js.map +1 -0
  158. package/dist/tools/addWebhookPattern.d.ts +15 -0
  159. package/dist/tools/addWebhookPattern.d.ts.map +1 -0
  160. package/dist/tools/addWebhookPattern.js +15 -0
  161. package/dist/tools/addWebhookPattern.js.map +1 -0
  162. package/dist/tools/appendLog.d.ts +18 -0
  163. package/dist/tools/appendLog.d.ts.map +1 -0
  164. package/dist/tools/appendLog.js +18 -0
  165. package/dist/tools/appendLog.js.map +1 -0
  166. package/dist/tools/auditIndex.d.ts +15 -0
  167. package/dist/tools/auditIndex.d.ts.map +1 -0
  168. package/dist/tools/auditIndex.js +165 -0
  169. package/dist/tools/auditIndex.js.map +1 -0
  170. package/dist/tools/batchDeletePages.d.ts +18 -0
  171. package/dist/tools/batchDeletePages.d.ts.map +1 -0
  172. package/dist/tools/batchDeletePages.js +143 -0
  173. package/dist/tools/batchDeletePages.js.map +1 -0
  174. package/dist/tools/coerce.d.ts +3 -0
  175. package/dist/tools/coerce.d.ts.map +1 -0
  176. package/dist/tools/coerce.js +12 -0
  177. package/dist/tools/coerce.js.map +1 -0
  178. package/dist/tools/createPage.d.ts +24 -0
  179. package/dist/tools/createPage.d.ts.map +1 -0
  180. package/dist/tools/createPage.js +99 -0
  181. package/dist/tools/createPage.js.map +1 -0
  182. package/dist/tools/createPages.d.ts +51 -0
  183. package/dist/tools/createPages.d.ts.map +1 -0
  184. package/dist/tools/createPages.js +91 -0
  185. package/dist/tools/createPages.js.map +1 -0
  186. package/dist/tools/deletePage.d.ts +19 -0
  187. package/dist/tools/deletePage.d.ts.map +1 -0
  188. package/dist/tools/deletePage.js +127 -0
  189. package/dist/tools/deletePage.js.map +1 -0
  190. package/dist/tools/exportWiki.d.ts +48 -0
  191. package/dist/tools/exportWiki.d.ts.map +1 -0
  192. package/dist/tools/exportWiki.js +233 -0
  193. package/dist/tools/exportWiki.js.map +1 -0
  194. package/dist/tools/extractLinks.d.ts +14 -0
  195. package/dist/tools/extractLinks.d.ts.map +1 -0
  196. package/dist/tools/extractLinks.js +25 -0
  197. package/dist/tools/extractLinks.js.map +1 -0
  198. package/dist/tools/generateClaudeInstructions.d.ts +27 -0
  199. package/dist/tools/generateClaudeInstructions.d.ts.map +1 -0
  200. package/dist/tools/generateClaudeInstructions.js +263 -0
  201. package/dist/tools/generateClaudeInstructions.js.map +1 -0
  202. package/dist/tools/generateGptInstructions.d.ts +27 -0
  203. package/dist/tools/generateGptInstructions.d.ts.map +1 -0
  204. package/dist/tools/generateGptInstructions.js +208 -0
  205. package/dist/tools/generateGptInstructions.js.map +1 -0
  206. package/dist/tools/getBacklinks.d.ts +12 -0
  207. package/dist/tools/getBacklinks.d.ts.map +1 -0
  208. package/dist/tools/getBacklinks.js +13 -0
  209. package/dist/tools/getBacklinks.js.map +1 -0
  210. package/dist/tools/getRelated.d.ts +12 -0
  211. package/dist/tools/getRelated.d.ts.map +1 -0
  212. package/dist/tools/getRelated.js +13 -0
  213. package/dist/tools/getRelated.js.map +1 -0
  214. package/dist/tools/healthCheck.d.ts +5 -0
  215. package/dist/tools/healthCheck.d.ts.map +1 -0
  216. package/dist/tools/healthCheck.js +167 -0
  217. package/dist/tools/healthCheck.js.map +1 -0
  218. package/dist/tools/importBrainSource.d.ts +36 -0
  219. package/dist/tools/importBrainSource.d.ts.map +1 -0
  220. package/dist/tools/importBrainSource.js +314 -0
  221. package/dist/tools/importBrainSource.js.map +1 -0
  222. package/dist/tools/importWikiZip.d.ts +60 -0
  223. package/dist/tools/importWikiZip.d.ts.map +1 -0
  224. package/dist/tools/importWikiZip.js +379 -0
  225. package/dist/tools/importWikiZip.js.map +1 -0
  226. package/dist/tools/initProject.d.ts +34 -0
  227. package/dist/tools/initProject.d.ts.map +1 -0
  228. package/dist/tools/initProject.js +443 -0
  229. package/dist/tools/initProject.js.map +1 -0
  230. package/dist/tools/instructionContext.d.ts +60 -0
  231. package/dist/tools/instructionContext.d.ts.map +1 -0
  232. package/dist/tools/instructionContext.js +210 -0
  233. package/dist/tools/instructionContext.js.map +1 -0
  234. package/dist/tools/listArchivedPages.d.ts +17 -0
  235. package/dist/tools/listArchivedPages.d.ts.map +1 -0
  236. package/dist/tools/listArchivedPages.js +51 -0
  237. package/dist/tools/listArchivedPages.js.map +1 -0
  238. package/dist/tools/listPages.d.ts +28 -0
  239. package/dist/tools/listPages.d.ts.map +1 -0
  240. package/dist/tools/listPages.js +166 -0
  241. package/dist/tools/listPages.js.map +1 -0
  242. package/dist/tools/listWebhooks.d.ts +7 -0
  243. package/dist/tools/listWebhooks.d.ts.map +1 -0
  244. package/dist/tools/listWebhooks.js +10 -0
  245. package/dist/tools/listWebhooks.js.map +1 -0
  246. package/dist/tools/movePage.d.ts +18 -0
  247. package/dist/tools/movePage.d.ts.map +1 -0
  248. package/dist/tools/movePage.js +182 -0
  249. package/dist/tools/movePage.js.map +1 -0
  250. package/dist/tools/pageHistory.d.ts +36 -0
  251. package/dist/tools/pageHistory.d.ts.map +1 -0
  252. package/dist/tools/pageHistory.js +60 -0
  253. package/dist/tools/pageHistory.js.map +1 -0
  254. package/dist/tools/patchPage.d.ts +141 -0
  255. package/dist/tools/patchPage.d.ts.map +1 -0
  256. package/dist/tools/patchPage.js +287 -0
  257. package/dist/tools/patchPage.js.map +1 -0
  258. package/dist/tools/pullSessionBundle.d.ts +34 -0
  259. package/dist/tools/pullSessionBundle.d.ts.map +1 -0
  260. package/dist/tools/pullSessionBundle.js +432 -0
  261. package/dist/tools/pullSessionBundle.js.map +1 -0
  262. package/dist/tools/purgeWiki.d.ts +23 -0
  263. package/dist/tools/purgeWiki.d.ts.map +1 -0
  264. package/dist/tools/purgeWiki.js +113 -0
  265. package/dist/tools/purgeWiki.js.map +1 -0
  266. package/dist/tools/pushSessionBundle.d.ts +139 -0
  267. package/dist/tools/pushSessionBundle.d.ts.map +1 -0
  268. package/dist/tools/pushSessionBundle.js +282 -0
  269. package/dist/tools/pushSessionBundle.js.map +1 -0
  270. package/dist/tools/readGovernanceAudit.d.ts +17 -0
  271. package/dist/tools/readGovernanceAudit.d.ts.map +1 -0
  272. package/dist/tools/readGovernanceAudit.js +21 -0
  273. package/dist/tools/readGovernanceAudit.js.map +1 -0
  274. package/dist/tools/readPage.d.ts +13 -0
  275. package/dist/tools/readPage.d.ts.map +1 -0
  276. package/dist/tools/readPage.js +46 -0
  277. package/dist/tools/readPage.js.map +1 -0
  278. package/dist/tools/removeWebhook.d.ts +14 -0
  279. package/dist/tools/removeWebhook.d.ts.map +1 -0
  280. package/dist/tools/removeWebhook.js +12 -0
  281. package/dist/tools/removeWebhook.js.map +1 -0
  282. package/dist/tools/resolveProject.d.ts +58 -0
  283. package/dist/tools/resolveProject.d.ts.map +1 -0
  284. package/dist/tools/resolveProject.js +175 -0
  285. package/dist/tools/resolveProject.js.map +1 -0
  286. package/dist/tools/restorePage.d.ts +47 -0
  287. package/dist/tools/restorePage.d.ts.map +1 -0
  288. package/dist/tools/restorePage.js +111 -0
  289. package/dist/tools/restorePage.js.map +1 -0
  290. package/dist/tools/searchPages.d.ts +28 -0
  291. package/dist/tools/searchPages.d.ts.map +1 -0
  292. package/dist/tools/searchPages.js +372 -0
  293. package/dist/tools/searchPages.js.map +1 -0
  294. package/dist/tools/setWebhook.d.ts +30 -0
  295. package/dist/tools/setWebhook.d.ts.map +1 -0
  296. package/dist/tools/setWebhook.js +30 -0
  297. package/dist/tools/setWebhook.js.map +1 -0
  298. package/dist/tools/shareProject.d.ts +25 -0
  299. package/dist/tools/shareProject.d.ts.map +1 -0
  300. package/dist/tools/shareProject.js +56 -0
  301. package/dist/tools/shareProject.js.map +1 -0
  302. package/dist/tools/suggestLinks.d.ts +29 -0
  303. package/dist/tools/suggestLinks.d.ts.map +1 -0
  304. package/dist/tools/suggestLinks.js +214 -0
  305. package/dist/tools/suggestLinks.js.map +1 -0
  306. package/dist/tools/updatePage.d.ts +27 -0
  307. package/dist/tools/updatePage.d.ts.map +1 -0
  308. package/dist/tools/updatePage.js +118 -0
  309. package/dist/tools/updatePage.js.map +1 -0
  310. package/dist/webhooks/dispatch.d.ts +49 -0
  311. package/dist/webhooks/dispatch.d.ts.map +1 -0
  312. package/dist/webhooks/dispatch.js +159 -0
  313. package/dist/webhooks/dispatch.js.map +1 -0
  314. package/dist/webhooks/webhookRules.d.ts +34 -0
  315. package/dist/webhooks/webhookRules.d.ts.map +1 -0
  316. package/dist/webhooks/webhookRules.js +129 -0
  317. package/dist/webhooks/webhookRules.js.map +1 -0
  318. package/dist/wiki/frontmatter.d.ts +45 -0
  319. package/dist/wiki/frontmatter.d.ts.map +1 -0
  320. package/dist/wiki/frontmatter.js +68 -0
  321. package/dist/wiki/frontmatter.js.map +1 -0
  322. package/dist/wiki/index.d.ts +22 -0
  323. package/dist/wiki/index.d.ts.map +1 -0
  324. package/dist/wiki/index.js +203 -0
  325. package/dist/wiki/index.js.map +1 -0
  326. package/dist/wiki/ingestPolicy.d.ts +18 -0
  327. package/dist/wiki/ingestPolicy.d.ts.map +1 -0
  328. package/dist/wiki/ingestPolicy.js +64 -0
  329. package/dist/wiki/ingestPolicy.js.map +1 -0
  330. package/dist/wiki/layoutLint.d.ts +51 -0
  331. package/dist/wiki/layoutLint.d.ts.map +1 -0
  332. package/dist/wiki/layoutLint.js +146 -0
  333. package/dist/wiki/layoutLint.js.map +1 -0
  334. package/dist/wiki/links.d.ts +6 -0
  335. package/dist/wiki/links.d.ts.map +1 -0
  336. package/dist/wiki/links.js +45 -0
  337. package/dist/wiki/links.js.map +1 -0
  338. package/dist/wiki/log.d.ts +58 -0
  339. package/dist/wiki/log.d.ts.map +1 -0
  340. package/dist/wiki/log.js +126 -0
  341. package/dist/wiki/log.js.map +1 -0
  342. package/dist/wiki/path.d.ts +8 -0
  343. package/dist/wiki/path.d.ts.map +1 -0
  344. package/dist/wiki/path.js +25 -0
  345. package/dist/wiki/path.js.map +1 -0
  346. package/dist/wiki/storageLimits.d.ts +163 -0
  347. package/dist/wiki/storageLimits.d.ts.map +1 -0
  348. package/dist/wiki/storageLimits.js +281 -0
  349. package/dist/wiki/storageLimits.js.map +1 -0
  350. package/package.json +81 -0
@@ -0,0 +1,314 @@
1
+ import fs from "fs/promises";
2
+ import path from "path";
3
+ import matter from "gray-matter";
4
+ import { z } from "zod";
5
+ import { createPages } from "./createPages.js";
6
+ import { appendLogEntry } from "../wiki/log.js";
7
+ const CAR_SECTION_ORDER = [
8
+ "Overview",
9
+ "Modifications",
10
+ "Setup-Notes",
11
+ "Maintenance-Log",
12
+ "Build-History",
13
+ "Event-History",
14
+ "2026-Strategic-Plan",
15
+ "Tuning-Notes",
16
+ ];
17
+ const SKIP_BASENAMES = new Set(["published-videos.md", "video-catalog.md"]);
18
+ export const importBrainSourceInputSchema = z.object({
19
+ sourceRoot: z
20
+ .string()
21
+ .min(1)
22
+ .describe("Absolute or relative path to a source brain folder to import"),
23
+ execute: z
24
+ .boolean()
25
+ .default(false)
26
+ .describe("If false, returns a preview plan only. If true, executes the import."),
27
+ maxFiles: z
28
+ .number()
29
+ .int()
30
+ .min(1)
31
+ .max(5000)
32
+ .default(2000)
33
+ .describe("Safety cap on scanned markdown files"),
34
+ skipRawCatalogs: z
35
+ .boolean()
36
+ .default(true)
37
+ .describe("Skip known large raw catalogs like published-videos.md"),
38
+ excludeDirs: z
39
+ .array(z.string())
40
+ .default(["data/social-posts", "caption-generation-system"])
41
+ .describe("Relative directory prefixes to exclude from import"),
42
+ chunkSize: z
43
+ .number()
44
+ .int()
45
+ .min(1)
46
+ .max(20)
47
+ .default(20)
48
+ .describe("Pages per create_pages batch while executing"),
49
+ runLabel: z
50
+ .string()
51
+ .optional()
52
+ .describe("Optional label for ingest timing logs"),
53
+ logTiming: z
54
+ .boolean()
55
+ .default(true)
56
+ .describe("If true, writes a timing summary entry to log.md after execute"),
57
+ previewLimit: z
58
+ .number()
59
+ .int()
60
+ .min(1)
61
+ .max(200)
62
+ .default(40)
63
+ .describe("Max preview rows returned in plan output"),
64
+ });
65
+ export async function importBrainSource(drive, input, userId = "") {
66
+ const startedAt = new Date().toISOString();
67
+ const startMs = Date.now();
68
+ const sourceRoot = path.resolve(input.sourceRoot);
69
+ const sourceFiles = await collectMarkdownFiles(sourceRoot, input.maxFiles);
70
+ const excludePrefixes = input.excludeDirs.map((d) => normalizeRelPath(d));
71
+ const includedFiles = [];
72
+ const skippedFiles = [];
73
+ for (const relPath of sourceFiles) {
74
+ const rel = normalizeRelPath(relPath);
75
+ if (excludePrefixes.some((prefix) => rel === prefix || rel.startsWith(`${prefix}/`))) {
76
+ skippedFiles.push({ path: rel, reason: "excluded_dir" });
77
+ continue;
78
+ }
79
+ if (input.skipRawCatalogs && SKIP_BASENAMES.has(path.posix.basename(rel))) {
80
+ skippedFiles.push({ path: rel, reason: "raw_catalog" });
81
+ continue;
82
+ }
83
+ includedFiles.push(rel);
84
+ }
85
+ const carGroups = new Map();
86
+ const singlePages = [];
87
+ const droppedEmpty = [];
88
+ for (const relPath of includedFiles) {
89
+ const absolute = path.join(sourceRoot, relPath);
90
+ const raw = await fs.readFile(absolute, "utf8");
91
+ const parsed = matter(raw);
92
+ const body = parsed.content.trim();
93
+ if (!body) {
94
+ droppedEmpty.push(relPath);
95
+ continue;
96
+ }
97
+ const carsMatch = relPath.match(/^cars\/([^/]+)\/([^/]+)\/([^/]+)\.md$/i);
98
+ if (carsMatch) {
99
+ const owner = slugify(carsMatch[1]);
100
+ const car = slugify(carsMatch[2]);
101
+ const sectionName = carsMatch[3];
102
+ const key = `${owner}/${car}`;
103
+ const title = pickTitle(parsed.data, sectionName);
104
+ const docs = carGroups.get(key) ?? [];
105
+ docs.push({ sourcePath: relPath, sectionName, title, body });
106
+ carGroups.set(key, docs);
107
+ continue;
108
+ }
109
+ const mappedFolder = mapFolder(relPath);
110
+ const mappedName = mapPageName(mappedFolder, relPath);
111
+ const title = pickTitle(parsed.data, path.posix.basename(relPath, ".md"));
112
+ singlePages.push({
113
+ page: {
114
+ name: mappedName,
115
+ title,
116
+ body,
117
+ summary: summarize(body),
118
+ },
119
+ sourcePaths: [relPath],
120
+ });
121
+ }
122
+ const carPages = Array.from(carGroups.entries()).map(([key, docs]) => {
123
+ const [owner, car] = key.split("/");
124
+ const sorted = docs.slice().sort((a, b) => sectionRank(a.sectionName) - sectionRank(b.sectionName));
125
+ const overview = sorted.find((d) => d.sectionName.toLowerCase() === "overview");
126
+ const title = overview?.title ?? `${humanize(owner)} ${humanize(car)}`;
127
+ const sectionBodies = sorted
128
+ .map((d) => `## ${humanize(d.sectionName)}\n\n${d.body}`)
129
+ .join("\n\n");
130
+ return {
131
+ page: {
132
+ name: `canonical/cars/${owner}-${car}.md`,
133
+ title,
134
+ body: sectionBodies,
135
+ summary: summarize(overview?.body ?? sorted[0]?.body ?? ""),
136
+ },
137
+ sourcePaths: sorted.map((d) => d.sourcePath),
138
+ };
139
+ });
140
+ const planned = dedupeByPageName([...carPages, ...singlePages]);
141
+ if (!input.execute) {
142
+ return {
143
+ success: true,
144
+ mode: "preview",
145
+ sourceRoot,
146
+ startedAt,
147
+ completedAt: new Date().toISOString(),
148
+ durationMs: Date.now() - startMs,
149
+ discoveredFiles: sourceFiles.length,
150
+ includedFiles: includedFiles.length,
151
+ skippedCount: skippedFiles.length + droppedEmpty.length,
152
+ plannedPages: planned.length,
153
+ skipped: {
154
+ excludedOrCatalog: skippedFiles.slice(0, input.previewLimit),
155
+ droppedEmpty: droppedEmpty.slice(0, input.previewLimit),
156
+ },
157
+ preview: planned.slice(0, input.previewLimit).map((p) => ({
158
+ name: p.page.name,
159
+ title: p.page.title,
160
+ summary: p.page.summary,
161
+ sourceCount: p.sourcePaths.length,
162
+ sourcePaths: p.sourcePaths,
163
+ })),
164
+ };
165
+ }
166
+ const failures = [];
167
+ let createdCount = 0;
168
+ let failedCount = 0;
169
+ for (let i = 0; i < planned.length; i += input.chunkSize) {
170
+ const batch = planned.slice(i, i + input.chunkSize);
171
+ const result = (await createPages(drive, {
172
+ pages: batch.map((p) => p.page),
173
+ verbose: false,
174
+ logTiming: false,
175
+ runLabel: `${input.runLabel ?? "import-brain-source"}-batch-${Math.floor(i / input.chunkSize) + 1}`,
176
+ }, userId));
177
+ createdCount += result.count;
178
+ failedCount += result.failedCount;
179
+ if (result.failures.length > 0) {
180
+ failures.push({
181
+ batch: Math.floor(i / input.chunkSize) + 1,
182
+ error: result.failures.map((f) => f.error).join("; "),
183
+ });
184
+ }
185
+ }
186
+ const durationMs = Date.now() - startMs;
187
+ const completedAt = new Date().toISOString();
188
+ if (input.logTiming) {
189
+ await appendLogEntry(drive, {
190
+ type: "ingest",
191
+ title: `Import timing: ${input.runLabel ?? "import-brain-source"}`,
192
+ detail: `durationMs=${durationMs}, discovered=${sourceFiles.length}, included=${includedFiles.length}, ` +
193
+ `planned=${planned.length}, succeeded=${createdCount}, failed=${failedCount}`,
194
+ }, userId).catch(() => {
195
+ /* non-fatal */
196
+ });
197
+ }
198
+ return {
199
+ success: failedCount === 0,
200
+ mode: "execute",
201
+ sourceRoot,
202
+ startedAt,
203
+ completedAt,
204
+ durationMs,
205
+ discoveredFiles: sourceFiles.length,
206
+ includedFiles: includedFiles.length,
207
+ skippedCount: skippedFiles.length + droppedEmpty.length,
208
+ plannedPages: planned.length,
209
+ count: createdCount,
210
+ failedCount,
211
+ failures,
212
+ };
213
+ }
214
+ async function collectMarkdownFiles(sourceRoot, maxFiles) {
215
+ const output = [];
216
+ const walk = async (dir) => {
217
+ const entries = await fs.readdir(dir, { withFileTypes: true });
218
+ for (const entry of entries) {
219
+ if (output.length >= maxFiles)
220
+ return;
221
+ const abs = path.join(dir, entry.name);
222
+ if (entry.isDirectory()) {
223
+ await walk(abs);
224
+ continue;
225
+ }
226
+ if (!entry.isFile() || !entry.name.toLowerCase().endsWith(".md"))
227
+ continue;
228
+ output.push(path.relative(sourceRoot, abs).split(path.sep).join("/"));
229
+ }
230
+ };
231
+ await walk(sourceRoot);
232
+ return output.sort((a, b) => a.localeCompare(b));
233
+ }
234
+ function mapFolder(relPath) {
235
+ if (relPath.startsWith("active/"))
236
+ return "projects";
237
+ if (relPath.startsWith("events/results/") || relPath.startsWith("data/"))
238
+ return "data";
239
+ if (relPath.startsWith("events/"))
240
+ return "canonical";
241
+ if (relPath.startsWith("core/archive/"))
242
+ return "history";
243
+ if (relPath.includes("decision"))
244
+ return "decisions";
245
+ return "canonical";
246
+ }
247
+ function mapPageName(folder, relPath) {
248
+ const withoutExt = relPath.replace(/\.md$/i, "");
249
+ const slug = withoutExt
250
+ .split("/")
251
+ .map((part) => slugify(part))
252
+ .join("-");
253
+ return `${folder}/${slug}.md`;
254
+ }
255
+ function pickTitle(frontmatterData, fallback) {
256
+ const data = (frontmatterData ?? {});
257
+ const title = data.title;
258
+ if (typeof title === "string" && title.trim())
259
+ return title.trim();
260
+ return humanize(fallback);
261
+ }
262
+ function sectionRank(name) {
263
+ const idx = CAR_SECTION_ORDER.findIndex((v) => v.toLowerCase() === name.toLowerCase());
264
+ return idx === -1 ? CAR_SECTION_ORDER.length : idx;
265
+ }
266
+ function dedupeByPageName(planned) {
267
+ const merged = new Map();
268
+ for (const item of planned) {
269
+ const key = item.page.name;
270
+ const existing = merged.get(key);
271
+ if (!existing) {
272
+ merged.set(key, item);
273
+ continue;
274
+ }
275
+ const existingBody = existing.page.body.trim();
276
+ const nextBody = item.page.body.trim();
277
+ existing.page.body = `${existingBody}\n\n## Additional Source\n\n${nextBody}`;
278
+ existing.page.summary = existing.page.summary || item.page.summary;
279
+ existing.sourcePaths = [...existing.sourcePaths, ...item.sourcePaths];
280
+ }
281
+ return Array.from(merged.values());
282
+ }
283
+ function summarize(body) {
284
+ const oneLine = body
285
+ .replace(/\r/g, "")
286
+ .split("\n")
287
+ .map((line) => line.trim())
288
+ .find((line) => line.length > 0);
289
+ if (!oneLine)
290
+ return "";
291
+ return oneLine.slice(0, 180);
292
+ }
293
+ function slugify(value) {
294
+ const slug = value
295
+ .trim()
296
+ .toLowerCase()
297
+ .replace(/\.md$/i, "")
298
+ .replace(/[^a-z0-9-]+/g, "-")
299
+ .replace(/-+/g, "-")
300
+ .replace(/^-|-$/g, "");
301
+ return slug || "untitled";
302
+ }
303
+ function humanize(value) {
304
+ return value
305
+ .replace(/\.md$/i, "")
306
+ .replace(/[-_]+/g, " ")
307
+ .replace(/\s+/g, " ")
308
+ .trim()
309
+ .replace(/\b\w/g, (m) => m.toUpperCase());
310
+ }
311
+ function normalizeRelPath(value) {
312
+ return value.replace(/\\/g, "/").replace(/^\/+|\/+$/g, "");
313
+ }
314
+ //# sourceMappingURL=importBrainSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importBrainSource.js","sourceRoot":"","sources":["../../src/tools/importBrainSource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { z } from "zod";
2
+ import type { StorageClient } from "../storage/client.js";
3
+ export declare const importWikiZipInputSchema: z.ZodObject<{
4
+ zipData: z.ZodOptional<z.ZodString>;
5
+ zipPath: z.ZodOptional<z.ZodString>;
6
+ execute: z.ZodDefault<z.ZodBoolean>;
7
+ mode: z.ZodDefault<z.ZodEnum<["additive", "replace"]>>;
8
+ conflictStrategy: z.ZodDefault<z.ZodEnum<["skip", "overwrite", "merge"]>>;
9
+ includeSystem: z.ZodDefault<z.ZodBoolean>;
10
+ logTiming: z.ZodDefault<z.ZodBoolean>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ mode: "replace" | "additive";
13
+ logTiming: boolean;
14
+ execute: boolean;
15
+ includeSystem: boolean;
16
+ conflictStrategy: "skip" | "overwrite" | "merge";
17
+ zipData?: string | undefined;
18
+ zipPath?: string | undefined;
19
+ }, {
20
+ mode?: "replace" | "additive" | undefined;
21
+ logTiming?: boolean | undefined;
22
+ execute?: boolean | undefined;
23
+ includeSystem?: boolean | undefined;
24
+ zipData?: string | undefined;
25
+ zipPath?: string | undefined;
26
+ conflictStrategy?: "skip" | "overwrite" | "merge" | undefined;
27
+ }>;
28
+ export type ImportWikiZipInput = z.infer<typeof importWikiZipInputSchema>;
29
+ export declare function isValidWikiFilename(name: string): boolean;
30
+ export declare function runImportFromBuffer(drive: StorageClient, buffer: Buffer, opts?: {
31
+ conflictStrategy?: "overwrite" | "skip" | "error" | "merge";
32
+ includeSystem?: boolean;
33
+ deletedNames?: string[];
34
+ userId?: string;
35
+ onProgress?: (processed: number, total: number, phase: string) => void;
36
+ }): Promise<{
37
+ created: number;
38
+ updated: number;
39
+ deleted: number;
40
+ skipped: number;
41
+ errors: Array<{
42
+ path: string;
43
+ reason: string;
44
+ }>;
45
+ warnings: Array<{
46
+ path: string;
47
+ reason: string;
48
+ }>;
49
+ }>;
50
+ export declare function importWikiZip(drive: StorageClient, input: ImportWikiZipInput, userId?: string): Promise<object>;
51
+ /**
52
+ * Derive unique top-level folder prefixes from applied diff entries.
53
+ * Returns sorted paths like ["canonical/", "decisions/", "projects/"].
54
+ */
55
+ export declare function computeDiscoveredFolders(diffs: Array<{
56
+ name: string;
57
+ status: string;
58
+ }>): string[];
59
+ export declare function buildInstructionRefreshHint(folders: string[]): string;
60
+ //# sourceMappingURL=importWikiZip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importWikiZip.d.ts","sourceRoot":"","sources":["../../src/tools/importWikiZip.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAO1D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;EAkCnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAe1E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASzD;AAED,wBAAsB,mBAAmB,CACzC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IACN,gBAAgB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE,GACH,OAAO,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD,CAAC,CAsKD;AAED,wBAAsB,aAAa,CACnC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,kBAAkB,EACzB,MAAM,SAAK,GACR,OAAO,CAAC,MAAM,CAAC,CAsKjB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,EAAE,CAUjG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAUrE"}