gnosys 5.10.0 → 5.11.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 (498) hide show
  1. package/README.md +66 -0
  2. package/dist/cli.d.ts +0 -1
  3. package/dist/cli.js +289 -137
  4. package/dist/index.d.ts +3 -1
  5. package/dist/index.js +427 -348
  6. package/dist/lib/archive.d.ts +3 -4
  7. package/dist/lib/archive.js +0 -1
  8. package/dist/lib/ask.d.ts +3 -4
  9. package/dist/lib/ask.js +0 -1
  10. package/dist/lib/atomicWrite.d.ts +7 -0
  11. package/dist/lib/atomicWrite.js +46 -0
  12. package/dist/lib/attachments.d.ts +0 -1
  13. package/dist/lib/attachments.js +0 -1
  14. package/dist/lib/audioExtract.d.ts +0 -1
  15. package/dist/lib/audioExtract.js +0 -1
  16. package/dist/lib/audit.d.ts +0 -1
  17. package/dist/lib/audit.js +0 -1
  18. package/dist/lib/bootstrap.d.ts +1 -2
  19. package/dist/lib/bootstrap.js +0 -1
  20. package/dist/lib/centralize.d.ts +20 -0
  21. package/dist/lib/centralize.js +34 -0
  22. package/dist/lib/chat/SlashPalette.d.ts +2 -3
  23. package/dist/lib/chat/SlashPalette.js +0 -1
  24. package/dist/lib/chat/boot-splash.d.ts +1 -2
  25. package/dist/lib/chat/boot-splash.js +0 -1
  26. package/dist/lib/chat/choose.d.ts +0 -1
  27. package/dist/lib/chat/choose.js +0 -2
  28. package/dist/lib/chat/commands.d.ts +1 -2
  29. package/dist/lib/chat/commands.js +0 -1
  30. package/dist/lib/chat/components/CitationText.d.ts +1 -2
  31. package/dist/lib/chat/components/CitationText.js +0 -1
  32. package/dist/lib/chat/components/MarkdownRenderer.d.ts +0 -1
  33. package/dist/lib/chat/components/MarkdownRenderer.js +0 -1
  34. package/dist/lib/chat/components/ToolCallCard.d.ts +1 -2
  35. package/dist/lib/chat/components/ToolCallCard.js +0 -1
  36. package/dist/lib/chat/focus.d.ts +3 -3
  37. package/dist/lib/chat/focus.js +0 -1
  38. package/dist/lib/chat/index.d.ts +3 -4
  39. package/dist/lib/chat/index.js +2 -2
  40. package/dist/lib/chat/intent.d.ts +1 -17
  41. package/dist/lib/chat/intent.js +2 -3
  42. package/dist/lib/chat/llmTurn.d.ts +5 -6
  43. package/dist/lib/chat/llmTurn.js +0 -1
  44. package/dist/lib/chat/recall.d.ts +2 -3
  45. package/dist/lib/chat/recall.js +1 -2
  46. package/dist/lib/chat/render.d.ts +2 -3
  47. package/dist/lib/chat/render.js +0 -1
  48. package/dist/lib/chat/session.d.ts +0 -1
  49. package/dist/lib/chat/session.js +0 -1
  50. package/dist/lib/chat/theme.d.ts +0 -1
  51. package/dist/lib/chat/theme.js +0 -1
  52. package/dist/lib/chat/toolFence.d.ts +2 -2
  53. package/dist/lib/chat/toolFence.js +0 -1
  54. package/dist/lib/chat/tools.d.ts +0 -1
  55. package/dist/lib/chat/tools.js +0 -1
  56. package/dist/lib/chat/types.d.ts +0 -1
  57. package/dist/lib/chat/types.js +0 -1
  58. package/dist/lib/chat/write.d.ts +5 -5
  59. package/dist/lib/chat/write.js +0 -1
  60. package/dist/lib/chunkSplitter.d.ts +0 -1
  61. package/dist/lib/chunkSplitter.js +0 -1
  62. package/dist/lib/cleanup.d.ts +0 -1
  63. package/dist/lib/cleanup.js +0 -1
  64. package/dist/lib/config.d.ts +0 -1
  65. package/dist/lib/config.js +3 -3
  66. package/dist/lib/dashboard.d.ts +3 -4
  67. package/dist/lib/dashboard.js +0 -1
  68. package/dist/lib/db.d.ts +0 -1
  69. package/dist/lib/db.js +40 -8
  70. package/dist/lib/dbSearch.d.ts +3 -4
  71. package/dist/lib/dbSearch.js +0 -1
  72. package/dist/lib/dbWrite.d.ts +2 -3
  73. package/dist/lib/dbWrite.js +0 -1
  74. package/dist/lib/desktopNotify.d.ts +0 -1
  75. package/dist/lib/desktopNotify.js +0 -1
  76. package/dist/lib/docxExtract.d.ts +0 -1
  77. package/dist/lib/docxExtract.js +22 -1
  78. package/dist/lib/dream.d.ts +2 -3
  79. package/dist/lib/dream.js +2 -2
  80. package/dist/lib/embeddings.d.ts +0 -3
  81. package/dist/lib/embeddings.js +7 -3
  82. package/dist/lib/export.d.ts +6 -2
  83. package/dist/lib/export.js +24 -2
  84. package/dist/lib/exportProject.d.ts +4 -3
  85. package/dist/lib/exportProject.js +3 -1
  86. package/dist/lib/federated.d.ts +1 -2
  87. package/dist/lib/federated.js +0 -1
  88. package/dist/lib/fileDetect.d.ts +0 -1
  89. package/dist/lib/fileDetect.js +0 -1
  90. package/dist/lib/graph.d.ts +4 -4
  91. package/dist/lib/graph.js +0 -1
  92. package/dist/lib/heartbeat.d.ts +0 -13
  93. package/dist/lib/heartbeat.js +1 -2
  94. package/dist/lib/hybridSearch.d.ts +5 -21
  95. package/dist/lib/hybridSearch.js +0 -1
  96. package/dist/lib/idFormat.d.ts +0 -2
  97. package/dist/lib/idFormat.js +1 -2
  98. package/dist/lib/imageExtract.d.ts +0 -1
  99. package/dist/lib/imageExtract.js +0 -1
  100. package/dist/lib/import.d.ts +6 -5
  101. package/dist/lib/import.js +3 -33
  102. package/dist/lib/importProject.d.ts +4 -4
  103. package/dist/lib/importProject.js +1 -2
  104. package/dist/lib/ingest.d.ts +3 -4
  105. package/dist/lib/ingest.js +0 -1
  106. package/dist/lib/lensing.d.ts +1 -2
  107. package/dist/lib/lensing.js +0 -1
  108. package/dist/lib/llm.d.ts +6 -45
  109. package/dist/lib/llm.js +27 -9
  110. package/dist/lib/lock.d.ts +0 -1
  111. package/dist/lib/lock.js +0 -1
  112. package/dist/lib/log.d.ts +4 -0
  113. package/dist/lib/log.js +85 -0
  114. package/dist/lib/machineConfig.d.ts +2 -3
  115. package/dist/lib/machineConfig.js +14 -3
  116. package/dist/lib/machineMigrate.d.ts +0 -1
  117. package/dist/lib/machineMigrate.js +0 -1
  118. package/dist/lib/maintenance.d.ts +4 -5
  119. package/dist/lib/maintenance.js +0 -1
  120. package/dist/lib/mcpClientConfig.d.ts +20 -0
  121. package/dist/lib/mcpClientConfig.js +62 -0
  122. package/dist/lib/mcpHttp.d.ts +52 -0
  123. package/dist/lib/mcpHttp.js +227 -0
  124. package/dist/lib/migrate.d.ts +1 -2
  125. package/dist/lib/migrate.js +1 -1
  126. package/dist/lib/modelValidation.d.ts +0 -1
  127. package/dist/lib/modelValidation.js +0 -1
  128. package/dist/lib/multimodalIngest.d.ts +1 -2
  129. package/dist/lib/multimodalIngest.js +0 -1
  130. package/dist/lib/packageManager.d.ts +5 -0
  131. package/dist/lib/packageManager.js +30 -0
  132. package/dist/lib/paths.d.ts +0 -7
  133. package/dist/lib/paths.js +1 -2
  134. package/dist/lib/pdfExtract.d.ts +0 -1
  135. package/dist/lib/pdfExtract.js +0 -1
  136. package/dist/lib/portfolio.d.ts +1 -2
  137. package/dist/lib/portfolio.js +0 -1
  138. package/dist/lib/portfolioHtml.d.ts +1 -2
  139. package/dist/lib/portfolioHtml.js +0 -1
  140. package/dist/lib/preferences.d.ts +6 -2
  141. package/dist/lib/preferences.js +19 -1
  142. package/dist/lib/progress.d.ts +2 -2
  143. package/dist/lib/progress.js +0 -1
  144. package/dist/lib/projectIdentity.d.ts +1 -2
  145. package/dist/lib/projectIdentity.js +5 -5
  146. package/dist/lib/projectPaths.d.ts +2 -2
  147. package/dist/lib/projectPaths.js +0 -1
  148. package/dist/lib/projectScan.d.ts +2 -2
  149. package/dist/lib/projectScan.js +0 -1
  150. package/dist/lib/recall.d.ts +6 -6
  151. package/dist/lib/recall.js +0 -1
  152. package/dist/lib/remote.d.ts +3 -20
  153. package/dist/lib/remote.js +37 -2
  154. package/dist/lib/remoteWizard.d.ts +2 -3
  155. package/dist/lib/remoteWizard.js +0 -1
  156. package/dist/lib/resolver.d.ts +1 -2
  157. package/dist/lib/resolver.js +2 -3
  158. package/dist/lib/retry.d.ts +0 -1
  159. package/dist/lib/retry.js +1 -2
  160. package/dist/lib/rulesGen.d.ts +2 -8
  161. package/dist/lib/rulesGen.js +1 -2
  162. package/dist/lib/search.d.ts +1 -2
  163. package/dist/lib/search.js +1 -1
  164. package/dist/lib/searchTypes.d.ts +18 -0
  165. package/dist/lib/searchTypes.js +2 -0
  166. package/dist/lib/setup/coldStart.d.ts +0 -1
  167. package/dist/lib/setup/coldStart.js +0 -1
  168. package/dist/lib/setup/configSetRender.d.ts +0 -1
  169. package/dist/lib/setup/configSetRender.js +0 -1
  170. package/dist/lib/setup/dreamRender.d.ts +0 -1
  171. package/dist/lib/setup/dreamRender.js +0 -1
  172. package/dist/lib/setup/dreamState.d.ts +2 -2
  173. package/dist/lib/setup/dreamState.js +0 -1
  174. package/dist/lib/setup/modelsRender.d.ts +0 -1
  175. package/dist/lib/setup/modelsRender.js +0 -1
  176. package/dist/lib/setup/remoteRender.d.ts +0 -1
  177. package/dist/lib/setup/remoteRender.js +0 -1
  178. package/dist/lib/setup/routingRender.d.ts +0 -1
  179. package/dist/lib/setup/routingRender.js +0 -1
  180. package/dist/lib/setup/sections/ides.d.ts +1 -2
  181. package/dist/lib/setup/sections/ides.js +3 -2
  182. package/dist/lib/setup/sections/preferences.d.ts +1 -2
  183. package/dist/lib/setup/sections/preferences.js +3 -2
  184. package/dist/lib/setup/sections/routing.d.ts +1 -2
  185. package/dist/lib/setup/sections/routing.js +0 -1
  186. package/dist/lib/setup/storePath.d.ts +0 -1
  187. package/dist/lib/setup/storePath.js +0 -1
  188. package/dist/lib/setup/summary.d.ts +1 -2
  189. package/dist/lib/setup/summary.js +0 -1
  190. package/dist/lib/setup/syncProjectsRender.d.ts +0 -1
  191. package/dist/lib/setup/syncProjectsRender.js +0 -1
  192. package/dist/lib/setup/ui/diff.d.ts +0 -1
  193. package/dist/lib/setup/ui/diff.js +0 -1
  194. package/dist/lib/setup/ui/footer.d.ts +0 -1
  195. package/dist/lib/setup/ui/footer.js +0 -1
  196. package/dist/lib/setup/ui/header.d.ts +0 -1
  197. package/dist/lib/setup/ui/header.js +0 -1
  198. package/dist/lib/setup/ui/index.d.ts +0 -1
  199. package/dist/lib/setup/ui/index.js +0 -1
  200. package/dist/lib/setup/ui/menu.d.ts +0 -1
  201. package/dist/lib/setup/ui/menu.js +0 -1
  202. package/dist/lib/setup/ui/panel.d.ts +0 -1
  203. package/dist/lib/setup/ui/panel.js +0 -1
  204. package/dist/lib/setup/ui/prompt.d.ts +0 -1
  205. package/dist/lib/setup/ui/prompt.js +0 -1
  206. package/dist/lib/setup/ui/safePrompt.d.ts +0 -1
  207. package/dist/lib/setup/ui/safePrompt.js +0 -1
  208. package/dist/lib/setup/ui/spinner.d.ts +0 -1
  209. package/dist/lib/setup/ui/spinner.js +0 -1
  210. package/dist/lib/setup/ui/status.d.ts +0 -1
  211. package/dist/lib/setup/ui/status.js +0 -1
  212. package/dist/lib/setup/ui/table.d.ts +0 -1
  213. package/dist/lib/setup/ui/table.js +0 -1
  214. package/dist/lib/setup/ui/title.d.ts +0 -1
  215. package/dist/lib/setup/ui/title.js +0 -1
  216. package/dist/lib/setup/ui/tokens.d.ts +0 -1
  217. package/dist/lib/setup/ui/tokens.js +0 -1
  218. package/dist/lib/setup.d.ts +2 -31
  219. package/dist/lib/setup.js +13 -9
  220. package/dist/lib/staticSearch.d.ts +0 -1
  221. package/dist/lib/staticSearch.js +0 -1
  222. package/dist/lib/store.d.ts +0 -1
  223. package/dist/lib/store.js +0 -1
  224. package/dist/lib/structuredIngest.d.ts +0 -1
  225. package/dist/lib/structuredIngest.js +0 -1
  226. package/dist/lib/tags.d.ts +0 -1
  227. package/dist/lib/tags.js +0 -1
  228. package/dist/lib/timeline.d.ts +2 -3
  229. package/dist/lib/timeline.js +3 -4
  230. package/dist/lib/trace.d.ts +1 -16
  231. package/dist/lib/trace.js +0 -1
  232. package/dist/lib/upgrade.d.ts +0 -1
  233. package/dist/lib/upgrade.js +0 -1
  234. package/dist/lib/videoExtract.d.ts +0 -1
  235. package/dist/lib/videoExtract.js +0 -1
  236. package/dist/lib/webIndex.d.ts +1 -3
  237. package/dist/lib/webIndex.js +0 -1
  238. package/dist/lib/webIngest.d.ts +13 -1
  239. package/dist/lib/webIngest.js +98 -24
  240. package/dist/lib/wikilinks.d.ts +3 -3
  241. package/dist/lib/wikilinks.js +0 -1
  242. package/dist/postinstall.d.ts +0 -1
  243. package/dist/postinstall.js +0 -1
  244. package/dist/sandbox/client.d.ts +0 -1
  245. package/dist/sandbox/client.js +0 -1
  246. package/dist/sandbox/helper-template.d.ts +0 -1
  247. package/dist/sandbox/helper-template.js +0 -1
  248. package/dist/sandbox/manager.d.ts +0 -9
  249. package/dist/sandbox/manager.js +2 -3
  250. package/dist/sandbox/server.d.ts +2 -3
  251. package/dist/sandbox/server.js +7 -7
  252. package/docs/logo.svg +25 -0
  253. package/package.json +18 -6
  254. package/prompts/synthesize.md +2 -0
  255. package/dist/cli.d.ts.map +0 -1
  256. package/dist/cli.js.map +0 -1
  257. package/dist/index.d.ts.map +0 -1
  258. package/dist/index.js.map +0 -1
  259. package/dist/lib/archive.d.ts.map +0 -1
  260. package/dist/lib/archive.js.map +0 -1
  261. package/dist/lib/ask.d.ts.map +0 -1
  262. package/dist/lib/ask.js.map +0 -1
  263. package/dist/lib/attachments.d.ts.map +0 -1
  264. package/dist/lib/attachments.js.map +0 -1
  265. package/dist/lib/audioExtract.d.ts.map +0 -1
  266. package/dist/lib/audioExtract.js.map +0 -1
  267. package/dist/lib/audit.d.ts.map +0 -1
  268. package/dist/lib/audit.js.map +0 -1
  269. package/dist/lib/bootstrap.d.ts.map +0 -1
  270. package/dist/lib/bootstrap.js.map +0 -1
  271. package/dist/lib/chat/SlashPalette.d.ts.map +0 -1
  272. package/dist/lib/chat/SlashPalette.js.map +0 -1
  273. package/dist/lib/chat/boot-splash.d.ts.map +0 -1
  274. package/dist/lib/chat/boot-splash.js.map +0 -1
  275. package/dist/lib/chat/choose.d.ts.map +0 -1
  276. package/dist/lib/chat/choose.js.map +0 -1
  277. package/dist/lib/chat/commands.d.ts.map +0 -1
  278. package/dist/lib/chat/commands.js.map +0 -1
  279. package/dist/lib/chat/components/CitationText.d.ts.map +0 -1
  280. package/dist/lib/chat/components/CitationText.js.map +0 -1
  281. package/dist/lib/chat/components/MarkdownRenderer.d.ts.map +0 -1
  282. package/dist/lib/chat/components/MarkdownRenderer.js.map +0 -1
  283. package/dist/lib/chat/components/ToolCallCard.d.ts.map +0 -1
  284. package/dist/lib/chat/components/ToolCallCard.js.map +0 -1
  285. package/dist/lib/chat/focus.d.ts.map +0 -1
  286. package/dist/lib/chat/focus.js.map +0 -1
  287. package/dist/lib/chat/index.d.ts.map +0 -1
  288. package/dist/lib/chat/index.js.map +0 -1
  289. package/dist/lib/chat/intent.d.ts.map +0 -1
  290. package/dist/lib/chat/intent.js.map +0 -1
  291. package/dist/lib/chat/llmTurn.d.ts.map +0 -1
  292. package/dist/lib/chat/llmTurn.js.map +0 -1
  293. package/dist/lib/chat/recall.d.ts.map +0 -1
  294. package/dist/lib/chat/recall.js.map +0 -1
  295. package/dist/lib/chat/render.d.ts.map +0 -1
  296. package/dist/lib/chat/render.js.map +0 -1
  297. package/dist/lib/chat/session.d.ts.map +0 -1
  298. package/dist/lib/chat/session.js.map +0 -1
  299. package/dist/lib/chat/theme.d.ts.map +0 -1
  300. package/dist/lib/chat/theme.js.map +0 -1
  301. package/dist/lib/chat/toolFence.d.ts.map +0 -1
  302. package/dist/lib/chat/toolFence.js.map +0 -1
  303. package/dist/lib/chat/tools.d.ts.map +0 -1
  304. package/dist/lib/chat/tools.js.map +0 -1
  305. package/dist/lib/chat/types.d.ts.map +0 -1
  306. package/dist/lib/chat/types.js.map +0 -1
  307. package/dist/lib/chat/write.d.ts.map +0 -1
  308. package/dist/lib/chat/write.js.map +0 -1
  309. package/dist/lib/chunkSplitter.d.ts.map +0 -1
  310. package/dist/lib/chunkSplitter.js.map +0 -1
  311. package/dist/lib/cleanup.d.ts.map +0 -1
  312. package/dist/lib/cleanup.js.map +0 -1
  313. package/dist/lib/config.d.ts.map +0 -1
  314. package/dist/lib/config.js.map +0 -1
  315. package/dist/lib/dashboard.d.ts.map +0 -1
  316. package/dist/lib/dashboard.js.map +0 -1
  317. package/dist/lib/db.d.ts.map +0 -1
  318. package/dist/lib/db.js.map +0 -1
  319. package/dist/lib/dbSearch.d.ts.map +0 -1
  320. package/dist/lib/dbSearch.js.map +0 -1
  321. package/dist/lib/dbWrite.d.ts.map +0 -1
  322. package/dist/lib/dbWrite.js.map +0 -1
  323. package/dist/lib/desktopNotify.d.ts.map +0 -1
  324. package/dist/lib/desktopNotify.js.map +0 -1
  325. package/dist/lib/docxExtract.d.ts.map +0 -1
  326. package/dist/lib/docxExtract.js.map +0 -1
  327. package/dist/lib/dream.d.ts.map +0 -1
  328. package/dist/lib/dream.js.map +0 -1
  329. package/dist/lib/embeddings.d.ts.map +0 -1
  330. package/dist/lib/embeddings.js.map +0 -1
  331. package/dist/lib/export.d.ts.map +0 -1
  332. package/dist/lib/export.js.map +0 -1
  333. package/dist/lib/exportProject.d.ts.map +0 -1
  334. package/dist/lib/exportProject.js.map +0 -1
  335. package/dist/lib/federated.d.ts.map +0 -1
  336. package/dist/lib/federated.js.map +0 -1
  337. package/dist/lib/fileDetect.d.ts.map +0 -1
  338. package/dist/lib/fileDetect.js.map +0 -1
  339. package/dist/lib/graph.d.ts.map +0 -1
  340. package/dist/lib/graph.js.map +0 -1
  341. package/dist/lib/heartbeat.d.ts.map +0 -1
  342. package/dist/lib/heartbeat.js.map +0 -1
  343. package/dist/lib/history.d.ts +0 -39
  344. package/dist/lib/history.d.ts.map +0 -1
  345. package/dist/lib/history.js +0 -112
  346. package/dist/lib/history.js.map +0 -1
  347. package/dist/lib/hybridSearch.d.ts.map +0 -1
  348. package/dist/lib/hybridSearch.js.map +0 -1
  349. package/dist/lib/idFormat.d.ts.map +0 -1
  350. package/dist/lib/idFormat.js.map +0 -1
  351. package/dist/lib/imageExtract.d.ts.map +0 -1
  352. package/dist/lib/imageExtract.js.map +0 -1
  353. package/dist/lib/import.d.ts.map +0 -1
  354. package/dist/lib/import.js.map +0 -1
  355. package/dist/lib/importProject.d.ts.map +0 -1
  356. package/dist/lib/importProject.js.map +0 -1
  357. package/dist/lib/ingest.d.ts.map +0 -1
  358. package/dist/lib/ingest.js.map +0 -1
  359. package/dist/lib/lensing.d.ts.map +0 -1
  360. package/dist/lib/lensing.js.map +0 -1
  361. package/dist/lib/llm.d.ts.map +0 -1
  362. package/dist/lib/llm.js.map +0 -1
  363. package/dist/lib/lock.d.ts.map +0 -1
  364. package/dist/lib/lock.js.map +0 -1
  365. package/dist/lib/machineConfig.d.ts.map +0 -1
  366. package/dist/lib/machineConfig.js.map +0 -1
  367. package/dist/lib/machineMigrate.d.ts.map +0 -1
  368. package/dist/lib/machineMigrate.js.map +0 -1
  369. package/dist/lib/maintenance.d.ts.map +0 -1
  370. package/dist/lib/maintenance.js.map +0 -1
  371. package/dist/lib/migrate.d.ts.map +0 -1
  372. package/dist/lib/migrate.js.map +0 -1
  373. package/dist/lib/modelValidation.d.ts.map +0 -1
  374. package/dist/lib/modelValidation.js.map +0 -1
  375. package/dist/lib/multimodalIngest.d.ts.map +0 -1
  376. package/dist/lib/multimodalIngest.js.map +0 -1
  377. package/dist/lib/paths.d.ts.map +0 -1
  378. package/dist/lib/paths.js.map +0 -1
  379. package/dist/lib/pdfExtract.d.ts.map +0 -1
  380. package/dist/lib/pdfExtract.js.map +0 -1
  381. package/dist/lib/portfolio.d.ts.map +0 -1
  382. package/dist/lib/portfolio.js.map +0 -1
  383. package/dist/lib/portfolioHtml.d.ts.map +0 -1
  384. package/dist/lib/portfolioHtml.js.map +0 -1
  385. package/dist/lib/preferences.d.ts.map +0 -1
  386. package/dist/lib/preferences.js.map +0 -1
  387. package/dist/lib/progress.d.ts.map +0 -1
  388. package/dist/lib/progress.js.map +0 -1
  389. package/dist/lib/projectIdentity.d.ts.map +0 -1
  390. package/dist/lib/projectIdentity.js.map +0 -1
  391. package/dist/lib/projectPaths.d.ts.map +0 -1
  392. package/dist/lib/projectPaths.js.map +0 -1
  393. package/dist/lib/projectScan.d.ts.map +0 -1
  394. package/dist/lib/projectScan.js.map +0 -1
  395. package/dist/lib/recall.d.ts.map +0 -1
  396. package/dist/lib/recall.js.map +0 -1
  397. package/dist/lib/remote.d.ts.map +0 -1
  398. package/dist/lib/remote.js.map +0 -1
  399. package/dist/lib/remoteWizard.d.ts.map +0 -1
  400. package/dist/lib/remoteWizard.js.map +0 -1
  401. package/dist/lib/resolver.d.ts.map +0 -1
  402. package/dist/lib/resolver.js.map +0 -1
  403. package/dist/lib/retry.d.ts.map +0 -1
  404. package/dist/lib/retry.js.map +0 -1
  405. package/dist/lib/rulesGen.d.ts.map +0 -1
  406. package/dist/lib/rulesGen.js.map +0 -1
  407. package/dist/lib/search.d.ts.map +0 -1
  408. package/dist/lib/search.js.map +0 -1
  409. package/dist/lib/setup/coldStart.d.ts.map +0 -1
  410. package/dist/lib/setup/coldStart.js.map +0 -1
  411. package/dist/lib/setup/configSetRender.d.ts.map +0 -1
  412. package/dist/lib/setup/configSetRender.js.map +0 -1
  413. package/dist/lib/setup/dreamRender.d.ts.map +0 -1
  414. package/dist/lib/setup/dreamRender.js.map +0 -1
  415. package/dist/lib/setup/dreamState.d.ts.map +0 -1
  416. package/dist/lib/setup/dreamState.js.map +0 -1
  417. package/dist/lib/setup/modelsRender.d.ts.map +0 -1
  418. package/dist/lib/setup/modelsRender.js.map +0 -1
  419. package/dist/lib/setup/remoteRender.d.ts.map +0 -1
  420. package/dist/lib/setup/remoteRender.js.map +0 -1
  421. package/dist/lib/setup/routingRender.d.ts.map +0 -1
  422. package/dist/lib/setup/routingRender.js.map +0 -1
  423. package/dist/lib/setup/sections/ides.d.ts.map +0 -1
  424. package/dist/lib/setup/sections/ides.js.map +0 -1
  425. package/dist/lib/setup/sections/preferences.d.ts.map +0 -1
  426. package/dist/lib/setup/sections/preferences.js.map +0 -1
  427. package/dist/lib/setup/sections/routing.d.ts.map +0 -1
  428. package/dist/lib/setup/sections/routing.js.map +0 -1
  429. package/dist/lib/setup/storePath.d.ts.map +0 -1
  430. package/dist/lib/setup/storePath.js.map +0 -1
  431. package/dist/lib/setup/summary.d.ts.map +0 -1
  432. package/dist/lib/setup/summary.js.map +0 -1
  433. package/dist/lib/setup/syncProjectsRender.d.ts.map +0 -1
  434. package/dist/lib/setup/syncProjectsRender.js.map +0 -1
  435. package/dist/lib/setup/ui/diff.d.ts.map +0 -1
  436. package/dist/lib/setup/ui/diff.js.map +0 -1
  437. package/dist/lib/setup/ui/footer.d.ts.map +0 -1
  438. package/dist/lib/setup/ui/footer.js.map +0 -1
  439. package/dist/lib/setup/ui/header.d.ts.map +0 -1
  440. package/dist/lib/setup/ui/header.js.map +0 -1
  441. package/dist/lib/setup/ui/index.d.ts.map +0 -1
  442. package/dist/lib/setup/ui/index.js.map +0 -1
  443. package/dist/lib/setup/ui/menu.d.ts.map +0 -1
  444. package/dist/lib/setup/ui/menu.js.map +0 -1
  445. package/dist/lib/setup/ui/panel.d.ts.map +0 -1
  446. package/dist/lib/setup/ui/panel.js.map +0 -1
  447. package/dist/lib/setup/ui/prompt.d.ts.map +0 -1
  448. package/dist/lib/setup/ui/prompt.js.map +0 -1
  449. package/dist/lib/setup/ui/safePrompt.d.ts.map +0 -1
  450. package/dist/lib/setup/ui/safePrompt.js.map +0 -1
  451. package/dist/lib/setup/ui/spinner.d.ts.map +0 -1
  452. package/dist/lib/setup/ui/spinner.js.map +0 -1
  453. package/dist/lib/setup/ui/status.d.ts.map +0 -1
  454. package/dist/lib/setup/ui/status.js.map +0 -1
  455. package/dist/lib/setup/ui/table.d.ts.map +0 -1
  456. package/dist/lib/setup/ui/table.js.map +0 -1
  457. package/dist/lib/setup/ui/title.d.ts.map +0 -1
  458. package/dist/lib/setup/ui/title.js.map +0 -1
  459. package/dist/lib/setup/ui/tokens.d.ts.map +0 -1
  460. package/dist/lib/setup/ui/tokens.js.map +0 -1
  461. package/dist/lib/setup.d.ts.map +0 -1
  462. package/dist/lib/setup.js.map +0 -1
  463. package/dist/lib/staticSearch.d.ts.map +0 -1
  464. package/dist/lib/staticSearch.js.map +0 -1
  465. package/dist/lib/store.d.ts.map +0 -1
  466. package/dist/lib/store.js.map +0 -1
  467. package/dist/lib/structuredIngest.d.ts.map +0 -1
  468. package/dist/lib/structuredIngest.js.map +0 -1
  469. package/dist/lib/tags.d.ts.map +0 -1
  470. package/dist/lib/tags.js.map +0 -1
  471. package/dist/lib/timeline.d.ts.map +0 -1
  472. package/dist/lib/timeline.js.map +0 -1
  473. package/dist/lib/trace.d.ts.map +0 -1
  474. package/dist/lib/trace.js.map +0 -1
  475. package/dist/lib/upgrade.d.ts.map +0 -1
  476. package/dist/lib/upgrade.js.map +0 -1
  477. package/dist/lib/videoExtract.d.ts.map +0 -1
  478. package/dist/lib/videoExtract.js.map +0 -1
  479. package/dist/lib/webIndex.d.ts.map +0 -1
  480. package/dist/lib/webIndex.js.map +0 -1
  481. package/dist/lib/webIngest.d.ts.map +0 -1
  482. package/dist/lib/webIngest.js.map +0 -1
  483. package/dist/lib/wikilinks.d.ts.map +0 -1
  484. package/dist/lib/wikilinks.js.map +0 -1
  485. package/dist/postinstall.d.ts.map +0 -1
  486. package/dist/postinstall.js.map +0 -1
  487. package/dist/sandbox/client.d.ts.map +0 -1
  488. package/dist/sandbox/client.js.map +0 -1
  489. package/dist/sandbox/helper-template.d.ts.map +0 -1
  490. package/dist/sandbox/helper-template.js.map +0 -1
  491. package/dist/sandbox/index.d.ts +0 -10
  492. package/dist/sandbox/index.d.ts.map +0 -1
  493. package/dist/sandbox/index.js +0 -10
  494. package/dist/sandbox/index.js.map +0 -1
  495. package/dist/sandbox/manager.d.ts.map +0 -1
  496. package/dist/sandbox/manager.js.map +0 -1
  497. package/dist/sandbox/server.d.ts.map +0 -1
  498. package/dist/sandbox/server.js.map +0 -1
@@ -3,4 +3,3 @@
3
3
  * React/ink components can import without pulling fs/path dependencies.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=types.js.map
@@ -11,10 +11,10 @@
11
11
  * tags.from-chat: ["true"]
12
12
  * tags.source: ["remember" | "save-turn" | "auto" | "attach"]
13
13
  */
14
- import { GnosysDB } from "../db.js";
15
- import { GnosysConfig } from "../config.js";
16
- import { Turn } from "./types.js";
17
- export type PromoteSource = "remember" | "save-turn" | "auto" | "attach";
14
+ import type { GnosysDB } from "../db.js";
15
+ import type { GnosysConfig } from "../config.js";
16
+ import type { Turn } from "./types.js";
17
+ type PromoteSource = "remember" | "save-turn" | "auto" | "attach";
18
18
  export interface PromoteOptions {
19
19
  /** Free-form text to save. */
20
20
  content: string;
@@ -63,4 +63,4 @@ export interface AutoPromoteHint {
63
63
  * Returns null when nothing matches.
64
64
  */
65
65
  export declare function detectAutoPromote(userText: string): AutoPromoteHint | null;
66
- //# sourceMappingURL=write.d.ts.map
66
+ export {};
@@ -200,4 +200,3 @@ function fnv1a(text) {
200
200
  }
201
201
  return (hash >>> 0).toString(16).padStart(8, "0");
202
202
  }
203
- //# sourceMappingURL=write.js.map
@@ -43,4 +43,3 @@ export declare function splitSegments(segments: Array<{
43
43
  page?: string;
44
44
  timerange?: string;
45
45
  }>, options?: ChunkOptions): TextChunk[];
46
- //# sourceMappingURL=chunkSplitter.d.ts.map
@@ -230,4 +230,3 @@ export function splitSegments(segments, options) {
230
230
  }
231
231
  return allChunks;
232
232
  }
233
- //# sourceMappingURL=chunkSplitter.js.map
@@ -49,4 +49,3 @@ export interface CleanupResult {
49
49
  * writes when `yes === true`, otherwise just returns the diff (dry run).
50
50
  */
51
51
  export declare function cleanupRegistry(opts: CleanupOptions): Promise<CleanupResult>;
52
- //# sourceMappingURL=cleanup.d.ts.map
@@ -165,4 +165,3 @@ export async function cleanupRegistry(opts) {
165
165
  }
166
166
  return { removed: toRemove, kept: categorized.alive.length, wrote: true };
167
167
  }
168
- //# sourceMappingURL=cleanup.js.map
@@ -382,4 +382,3 @@ export declare function generateConfigTemplate(): string;
382
382
  */
383
383
  export declare const ALL_PROVIDERS: LLMProviderName[];
384
384
  export {};
385
- //# sourceMappingURL=config.d.ts.map
@@ -7,6 +7,7 @@ import fs from "fs/promises";
7
7
  import path from "path";
8
8
  import { execSync } from "child_process";
9
9
  import { getGnosysHome } from "./paths.js";
10
+ import { atomicWriteFile } from "./atomicWrite.js";
10
11
  // ─── LLM Provider Schemas ───────────────────────────────────────────────
11
12
  const LLMProviderEnum = z.enum(["anthropic", "ollama", "groq", "openai", "lmstudio", "xai", "mistral", "custom"]);
12
13
  const AnthropicConfigSchema = z.object({
@@ -534,7 +535,7 @@ export async function loadConfig(storePath) {
534
535
  export async function writeConfig(storePath, config) {
535
536
  const configPath = path.join(storePath, "gnosys.json");
536
537
  const merged = GnosysConfigSchema.parse(config);
537
- await fs.writeFile(configPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
538
+ await atomicWriteFile(configPath, JSON.stringify(merged, null, 2) + "\n");
538
539
  }
539
540
  /**
540
541
  * Update specific fields in gnosys.json without overwriting the whole file.
@@ -554,7 +555,7 @@ export async function updateConfig(storePath, updates) {
554
555
  // Validate for shape/type errors. The validated object has defaults
555
556
  // applied; we deliberately throw it away and persist `merged` instead.
556
557
  const validated = GnosysConfigSchema.parse(merged);
557
- await fs.writeFile(configPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
558
+ await atomicWriteFile(configPath, JSON.stringify(merged, null, 2) + "\n");
558
559
  return validated;
559
560
  }
560
561
  /**
@@ -617,4 +618,3 @@ export function generateConfigTemplate() {
617
618
  * All supported provider names.
618
619
  */
619
620
  export const ALL_PROVIDERS = ["anthropic", "ollama", "groq", "openai", "lmstudio", "xai", "mistral", "custom"];
620
- //# sourceMappingURL=config.js.map
@@ -2,9 +2,9 @@
2
2
  * Gnosys Dashboard — Aggregated system status in a pretty terminal display.
3
3
  * Combines memory stats, maintenance health, graph stats, and LLM routing.
4
4
  */
5
- import { GnosysResolver } from "./resolver.js";
6
- import { GnosysConfig, LLMProviderName } from "./config.js";
7
- import { GnosysDB } from "./db.js";
5
+ import type { GnosysResolver } from "./resolver.js";
6
+ import { type GnosysConfig, type LLMProviderName } from "./config.js";
7
+ import type { GnosysDB } from "./db.js";
8
8
  export interface DashboardData {
9
9
  stores: Array<{
10
10
  label: string;
@@ -92,4 +92,3 @@ export declare function formatDashboard(data: DashboardData): string;
92
92
  * Format dashboard data as structured JSON for MCP tool consumption.
93
93
  */
94
94
  export declare function formatDashboardJSON(data: DashboardData): string;
95
- //# sourceMappingURL=dashboard.d.ts.map
@@ -421,4 +421,3 @@ export function formatDashboard(data) {
421
421
  export function formatDashboardJSON(data) {
422
422
  return JSON.stringify(data, null, 2);
423
423
  }
424
- //# sourceMappingURL=dashboard.js.map
package/dist/lib/db.d.ts CHANGED
@@ -379,4 +379,3 @@ export declare class GnosysDB {
379
379
  getSchemaVersion(): number;
380
380
  }
381
381
  export { fnv1a };
382
- //# sourceMappingURL=db.d.ts.map
package/dist/lib/db.js CHANGED
@@ -21,6 +21,7 @@ import fs from "fs";
21
21
  import { enableWAL } from "./lock.js";
22
22
  import { getGnosysHome as getGnosysHomeImpl, getCentralDbPath as getCentralDbPathImpl } from "./paths.js";
23
23
  import { readMachineConfig } from "./machineConfig.js";
24
+ import { logError } from "./log.js";
24
25
  import { ulid } from "ulidx";
25
26
  // ─── Schema ─────────────────────────────────────────────────────────────
26
27
  const SCHEMA_VERSION = 4;
@@ -62,6 +63,8 @@ CREATE INDEX IF NOT EXISTS idx_memories_last_reinforced ON memories(last_reinfor
62
63
  CREATE INDEX IF NOT EXISTS idx_memories_content_hash ON memories(content_hash);
63
64
  CREATE INDEX IF NOT EXISTS idx_memories_project_id ON memories(project_id);
64
65
  CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(scope);
66
+ CREATE INDEX IF NOT EXISTS idx_memories_modified ON memories(modified);
67
+ CREATE INDEX IF NOT EXISTS idx_memories_created ON memories(created);
65
68
 
66
69
  CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
67
70
  id,
@@ -291,7 +294,10 @@ export class GnosysDB {
291
294
  // Quiet fallback notice on stderr — visible to humans, doesn't pollute
292
295
  // stdout that scripts/agents are piping. Only emitted when remote is
293
296
  // CONFIGURED but unreachable (the user expected it to work).
294
- process.stderr.write(`gnosys: remote unreachable (${remotePath}), using local cache\n`);
297
+ logError(new Error(`remote unreachable (${remotePath}), using local cache`), {
298
+ module: "db",
299
+ op: "open",
300
+ });
295
301
  return localDb;
296
302
  }
297
303
  // Remote is reachable — open it and return. Close local first since we
@@ -310,7 +316,13 @@ export class GnosysDB {
310
316
  */
311
317
  static openLocal() {
312
318
  const dir = GnosysDB.getGnosysHome();
313
- fs.mkdirSync(dir, { recursive: true });
319
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
320
+ try {
321
+ fs.chmodSync(dir, 0o700);
322
+ }
323
+ catch {
324
+ // best-effort (Windows / network FS)
325
+ }
314
326
  return new GnosysDB(dir);
315
327
  }
316
328
  constructor(storePath, opts) {
@@ -322,9 +334,22 @@ export class GnosysDB {
322
334
  const retryDelay = opts?.retryDelayMs ?? 500;
323
335
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
324
336
  try {
325
- fs.mkdirSync(storePath, { recursive: true });
337
+ fs.mkdirSync(storePath, { recursive: true, mode: 0o700 });
326
338
  this.db = new Database(this.dbFilePath);
327
339
  enableWAL(this.db);
340
+ try {
341
+ fs.chmodSync(storePath, 0o700);
342
+ fs.chmodSync(this.dbFilePath, 0o600);
343
+ for (const ext of ["-wal", "-shm"]) {
344
+ const sidecar = this.dbFilePath + ext;
345
+ if (fs.existsSync(sidecar)) {
346
+ fs.chmodSync(sidecar, 0o600);
347
+ }
348
+ }
349
+ }
350
+ catch {
351
+ // best-effort (Windows / network FS)
352
+ }
328
353
  this.db.pragma("foreign_keys = ON");
329
354
  // Longer busy timeout for network shares (10s)
330
355
  this.db.pragma("busy_timeout = 10000");
@@ -475,6 +500,13 @@ export class GnosysDB {
475
500
  return new GnosysDB(dir);
476
501
  }
477
502
  applySchema() {
503
+ const currentVersion = this.db.pragma("user_version", { simple: true });
504
+ // Legacy DBs (user_version >= 1) must migrate before the full current
505
+ // schema is applied — SCHEMA_SQL creates indexes on columns (project_id,
506
+ // scope, …) that do not exist on v1/v2 databases yet.
507
+ if (currentVersion > 0 && currentVersion < SCHEMA_VERSION) {
508
+ this.migrateSchema(currentVersion);
509
+ }
478
510
  // Apply main schema
479
511
  this.db.exec(SCHEMA_SQL);
480
512
  // Apply triggers (separate because of FTS5 delete syntax)
@@ -484,10 +516,11 @@ export class GnosysDB {
484
516
  catch {
485
517
  // Triggers may already exist — that's fine
486
518
  }
487
- // Schema migration: v1 v2 (add project_id, scope, projects table)
488
- const currentVersion = this.db.pragma("user_version", { simple: true });
489
- if (currentVersion < SCHEMA_VERSION) {
490
- this.migrateSchema(currentVersion);
519
+ // Fresh DBs (user_version 0) get the full schema first, then migrate
520
+ // to stamp user_version and apply any incremental steps idempotently.
521
+ const versionAfterSchema = this.db.pragma("user_version", { simple: true });
522
+ if (versionAfterSchema < SCHEMA_VERSION) {
523
+ this.migrateSchema(versionAfterSchema);
491
524
  }
492
525
  }
493
526
  /**
@@ -1219,4 +1252,3 @@ export class GnosysDB {
1219
1252
  }
1220
1253
  // ─── Migration Helper ─────────────────────────────────────────────────
1221
1254
  export { fnv1a };
1222
- //# sourceMappingURL=db.js.map
@@ -9,9 +9,9 @@
9
9
  * Implements the same result types so consumers (recall, hybridSearch, ask)
10
10
  * work without modification.
11
11
  */
12
- import { GnosysDB, DbMemory } from "./db.js";
13
- import { SearchResult, DiscoverResult } from "./search.js";
14
- import { HybridSearchResult, SearchMode } from "./hybridSearch.js";
12
+ import type { GnosysDB, DbMemory } from "./db.js";
13
+ import type { SearchResult, DiscoverResult } from "./search.js";
14
+ import type { HybridSearchResult, SearchMode } from "./searchTypes.js";
15
15
  export declare class GnosysDbSearch {
16
16
  private db;
17
17
  constructor(db: GnosysDB);
@@ -62,4 +62,3 @@ export declare class GnosysDbSearch {
62
62
  */
63
63
  embeddingCount(): number;
64
64
  }
65
- //# sourceMappingURL=dbSearch.d.ts.map
@@ -235,4 +235,3 @@ export class GnosysDbSearch {
235
235
  return this.db.getEmbeddingCount();
236
236
  }
237
237
  }
238
- //# sourceMappingURL=dbSearch.js.map
@@ -13,8 +13,8 @@
13
13
  * Once the Obsidian Export Bridge (Phase 7e) is complete, .md writes
14
14
  * become optional — controlled by config.
15
15
  */
16
- import { GnosysDB } from "./db.js";
17
- import { MemoryFrontmatter } from "./store.js";
16
+ import type { GnosysDB } from "./db.js";
17
+ import { type MemoryFrontmatter } from "./store.js";
18
18
  /**
19
19
  * Sync a memory write to gnosys.db after it's been written to .md.
20
20
  * Call this after GnosysStore.writeMemory() or updateMemory().
@@ -53,4 +53,3 @@ export declare function syncConfidenceToDb(db: GnosysDB, memoryId: string, newCo
53
53
  * This supplements (and eventually replaces) the JSONL audit log.
54
54
  */
55
55
  export declare function auditToDb(db: GnosysDB, operation: string, memoryId?: string, details?: Record<string, unknown>, durationMs?: number, traceId?: string): void;
56
- //# sourceMappingURL=dbWrite.d.ts.map
@@ -187,4 +187,3 @@ export function auditToDb(db, operation, memoryId, details, durationMs, traceId)
187
187
  trace_id: traceId || null,
188
188
  });
189
189
  }
190
- //# sourceMappingURL=dbWrite.js.map
@@ -28,4 +28,3 @@ export interface NotifyOptions {
28
28
  * fell back to stderr.
29
29
  */
30
30
  export declare function notifyDesktop(message: string, opts?: NotifyOptions): Promise<boolean>;
31
- //# sourceMappingURL=desktopNotify.d.ts.map
@@ -77,4 +77,3 @@ function stderrFallback(title, message) {
77
77
  function escapeAppleScript(s) {
78
78
  return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
79
79
  }
80
- //# sourceMappingURL=desktopNotify.js.map
@@ -24,4 +24,3 @@ export interface DocxChunk {
24
24
  * a single chunk.
25
25
  */
26
26
  export declare function extractDocxText(filePath: string): Promise<DocxChunk[]>;
27
- //# sourceMappingURL=docxExtract.d.ts.map
@@ -6,6 +6,8 @@
6
6
  * Both libraries are loaded via dynamic import so they stay optional.
7
7
  */
8
8
  import * as fs from "fs/promises";
9
+ /** Reject DOCX archives whose entries decompress beyond this total (zip-bomb guard). */
10
+ const MAX_DECOMPRESSED_BYTES = 200 * 1024 * 1024;
9
11
  // ─── Public API ─────────────────────────────────────────────────────────
10
12
  /**
11
13
  * Extract text from a DOCX file as markdown, split into section chunks.
@@ -25,6 +27,7 @@ export async function extractDocxText(filePath) {
25
27
  const TurndownService = (await import("turndown")).default;
26
28
  // Read the file and convert to HTML
27
29
  const buffer = await fs.readFile(filePath);
30
+ await assertDocxDecompressedSizeWithinLimit(buffer);
28
31
  const result = await mammoth.convertToHtml({ buffer });
29
32
  const html = result.value;
30
33
  if (!html || !html.trim()) {
@@ -77,4 +80,22 @@ export async function extractDocxText(filePath) {
77
80
  }
78
81
  return chunks;
79
82
  }
80
- //# sourceMappingURL=docxExtract.js.map
83
+ /**
84
+ * Inspect ZIP central-directory metadata before decompression.
85
+ * Rejects archives whose total uncompressed payload exceeds the cap.
86
+ */
87
+ async function assertDocxDecompressedSizeWithinLimit(buffer) {
88
+ const JSZip = (await import("jszip")).default;
89
+ const zip = await JSZip.loadAsync(buffer);
90
+ let total = 0;
91
+ zip.forEach((_relativePath, entry) => {
92
+ if (entry.dir)
93
+ return;
94
+ const data = entry._data;
95
+ const size = data?.uncompressedSize ?? 0;
96
+ total += size;
97
+ });
98
+ if (total > MAX_DECOMPRESSED_BYTES) {
99
+ throw new Error(`DOCX decompresses to ~${Math.floor(total / 1048576)}MB, exceeds the ${MAX_DECOMPRESSED_BYTES / 1048576}MB limit (possible zip bomb).`);
100
+ }
101
+ }
@@ -17,8 +17,8 @@
17
17
  * - Off by default — must be explicitly enabled
18
18
  * - Uses cheap/local LLM (configurable, defaults to Ollama)
19
19
  */
20
- import { GnosysDB } from "./db.js";
21
- import { GnosysConfig, LLMProviderName } from "./config.js";
20
+ import type { GnosysDB } from "./db.js";
21
+ import type { GnosysConfig, LLMProviderName } from "./config.js";
22
22
  export interface DreamConfig {
23
23
  /** Enable dream mode (default: false) */
24
24
  enabled: boolean;
@@ -179,4 +179,3 @@ export declare class DreamScheduler {
179
179
  * Format a dream report as human-readable text.
180
180
  */
181
181
  export declare function formatDreamReport(report: DreamReport): string;
182
- //# sourceMappingURL=dream.d.ts.map
package/dist/lib/dream.js CHANGED
@@ -21,6 +21,7 @@ import os from "os";
21
21
  import { getLLMProvider } from "./llm.js";
22
22
  import { notifyDesktop } from "./desktopNotify.js";
23
23
  import { syncConfidenceToDb, auditToDb } from "./dbWrite.js";
24
+ import { logError } from "./log.js";
24
25
  /** Layer 4 alert threshold: fire desktop notification at this many consecutive provider failures. */
25
26
  const DREAM_FAILURE_NOTIFY_THRESHOLD = 3;
26
27
  export const DEFAULT_DREAM_CONFIG = {
@@ -739,7 +740,7 @@ export class DreamScheduler {
739
740
  console.error(`[dream] Complete: ${report.decayUpdated} decay, ${report.summariesGenerated} summaries, ${report.reviewSuggestions.length} reviews, ${report.relationshipsDiscovered} relations (${(report.durationMs / 1000).toFixed(1)}s)`);
740
741
  }
741
742
  catch (err) {
742
- console.error(`[dream] Error: ${err instanceof Error ? err.message : String(err)}`);
743
+ logError(err, { module: "dream", op: "scheduler" });
743
744
  }
744
745
  finally {
745
746
  this.running = false;
@@ -794,4 +795,3 @@ export function formatDreamReport(report) {
794
795
  }
795
796
  return lines.join("\n");
796
797
  }
797
- //# sourceMappingURL=dream.js.map
@@ -4,7 +4,6 @@
4
4
  * Model (~80 MB) is downloaded only on first use and cached.
5
5
  * Embeddings are stored in SQLite as regeneratable sidecar data.
6
6
  */
7
- declare const EMBEDDING_DIM = 384;
8
7
  export declare class GnosysEmbeddings {
9
8
  private pipeline;
10
9
  private db;
@@ -80,5 +79,3 @@ export declare class GnosysEmbeddings {
80
79
  };
81
80
  close(): void;
82
81
  }
83
- export { EMBEDDING_DIM };
84
- //# sourceMappingURL=embeddings.d.ts.map
@@ -45,7 +45,13 @@ export class GnosysEmbeddings {
45
45
  // Dynamic import — keeps @huggingface/transformers out of the main bundle.
46
46
  // dtype 'q8' replaces the v2-era `quantized: true` option (8-bit quantized,
47
47
  // ~80 MB vs ~280 MB for fp32). Smaller is fine for sentence embeddings.
48
- const { pipeline } = await import("@huggingface/transformers");
48
+ let pipeline;
49
+ try {
50
+ ({ pipeline } = await import("@huggingface/transformers"));
51
+ }
52
+ catch {
53
+ throw new Error("Local embeddings require @huggingface/transformers. Install it with: npm install @huggingface/transformers");
54
+ }
49
55
  this.pipeline = (await pipeline("feature-extraction", MODEL_NAME, {
50
56
  dtype: "q8",
51
57
  }));
@@ -227,5 +233,3 @@ export class GnosysEmbeddings {
227
233
  this.db = null;
228
234
  }
229
235
  }
230
- export { EMBEDDING_DIM };
231
- //# sourceMappingURL=embeddings.js.map
@@ -18,7 +18,7 @@
18
18
  * _graph/
19
19
  * relationships.md (relationship index)
20
20
  */
21
- import { GnosysDB } from "./db.js";
21
+ import type { GnosysDB } from "./db.js";
22
22
  export interface ExportOptions {
23
23
  /** Target directory for export (will be created if needed) */
24
24
  targetDir: string;
@@ -38,6 +38,7 @@ export interface ExportOptions {
38
38
  export interface ExportReport {
39
39
  memoriesExported: number;
40
40
  memoriesSkipped: number;
41
+ archivedExcluded: number;
41
42
  summariesExported: number;
42
43
  reviewsExported: boolean;
43
44
  graphExported: boolean;
@@ -84,9 +85,12 @@ export declare class GnosysExporter {
84
85
  * Slugify a title for use as a filename.
85
86
  */
86
87
  private slugify;
88
+ /**
89
+ * Ensure a resolved file path stays within the export target directory.
90
+ */
91
+ private assertWithin;
87
92
  }
88
93
  /**
89
94
  * Format an export report as human-readable text.
90
95
  */
91
96
  export declare function formatExportReport(report: ExportReport): string;
92
- //# sourceMappingURL=export.d.ts.map
@@ -34,6 +34,7 @@ export class GnosysExporter {
34
34
  const report = {
35
35
  memoriesExported: 0,
36
36
  memoriesSkipped: 0,
37
+ archivedExcluded: 0,
37
38
  summariesExported: 0,
38
39
  reviewsExported: false,
39
40
  graphExported: false,
@@ -46,6 +47,10 @@ export class GnosysExporter {
46
47
  const memories = activeOnly
47
48
  ? this.db.getActiveMemories()
48
49
  : this.db.getAllMemories();
50
+ if (activeOnly) {
51
+ report.archivedExcluded =
52
+ this.db.getAllMemories().length - this.db.getActiveMemories().length;
53
+ }
49
54
  const total = memories.length;
50
55
  // Export each memory as a Markdown file
51
56
  for (let i = 0; i < memories.length; i++) {
@@ -99,7 +104,8 @@ export class GnosysExporter {
99
104
  * Returns true if exported, false if skipped (already exists).
100
105
  */
101
106
  async exportMemory(mem, targetDir, overwrite) {
102
- const categoryDir = path.join(targetDir, mem.category);
107
+ const safeCategory = this.slugify(mem.category) || "uncategorized";
108
+ const categoryDir = path.join(targetDir, safeCategory);
103
109
  await fs.mkdir(categoryDir, { recursive: true });
104
110
  const filename = this.slugify(mem.title) + ".md";
105
111
  const filePath = path.join(categoryDir, filename);
@@ -142,6 +148,7 @@ export class GnosysExporter {
142
148
  if (wikilinks.length > 0) {
143
149
  content += `\n\n---\n\n## Related\n\n${wikilinks.join("\n")}`;
144
150
  }
151
+ this.assertWithin(targetDir, filePath);
145
152
  await fs.writeFile(filePath, content, "utf-8");
146
153
  return true;
147
154
  }
@@ -180,6 +187,7 @@ export class GnosysExporter {
180
187
  "",
181
188
  summary.content,
182
189
  ].join("\n");
190
+ this.assertWithin(targetDir, filePath);
183
191
  await fs.writeFile(filePath, content, "utf-8");
184
192
  exported++;
185
193
  }
@@ -230,6 +238,7 @@ export class GnosysExporter {
230
238
  // Skip malformed reviews
231
239
  }
232
240
  }
241
+ this.assertWithin(targetDir, filePath);
233
242
  await fs.writeFile(filePath, lines.join("\n"), "utf-8");
234
243
  return true;
235
244
  }
@@ -278,6 +287,7 @@ export class GnosysExporter {
278
287
  if (bySource.size === 0) {
279
288
  lines.push("No relationships discovered yet. Run `gnosys dream` to discover relationships.");
280
289
  }
290
+ this.assertWithin(targetDir, filePath);
281
291
  await fs.writeFile(filePath, lines.join("\n"), "utf-8");
282
292
  return true;
283
293
  }
@@ -334,6 +344,16 @@ export class GnosysExporter {
334
344
  .replace(/^-|-$/g, "")
335
345
  .substring(0, 80);
336
346
  }
347
+ /**
348
+ * Ensure a resolved file path stays within the export target directory.
349
+ */
350
+ assertWithin(targetDir, filePath) {
351
+ const root = path.resolve(targetDir);
352
+ const resolved = path.resolve(filePath);
353
+ if (resolved !== root && !resolved.startsWith(root + path.sep)) {
354
+ throw new Error(`Refusing to write outside export dir: ${resolved}`);
355
+ }
356
+ }
337
357
  }
338
358
  // ─── Format Helper ───────────────────────────────────────────────────────
339
359
  /**
@@ -347,6 +367,9 @@ export function formatExportReport(report) {
347
367
  lines.push(`Target: ${report.targetDir}`);
348
368
  lines.push(`Memories exported: ${report.memoriesExported}`);
349
369
  lines.push(`Memories skipped (already exist): ${report.memoriesSkipped}`);
370
+ if (report.archivedExcluded > 0) {
371
+ lines.push(`Archived excluded: ${report.archivedExcluded} — re-run with --all for a full export`);
372
+ }
350
373
  lines.push(`Summaries exported: ${report.summariesExported}`);
351
374
  lines.push(`Reviews exported: ${report.reviewsExported ? "yes" : "no"}`);
352
375
  lines.push(`Graph exported: ${report.graphExported ? "yes" : "no"}`);
@@ -359,4 +382,3 @@ export function formatExportReport(report) {
359
382
  }
360
383
  return lines.join("\n");
361
384
  }
362
- //# sourceMappingURL=export.js.map
@@ -3,10 +3,10 @@
3
3
  * audit log, and metadata into a portable .json.gz file. Lossless round-trip
4
4
  * with importProject.ts. Format version 1.
5
5
  */
6
- import { GnosysDB, DbMemory, DbProject, DbRelationship, DbAuditEntry } from "./db.js";
6
+ import type { GnosysDB, DbMemory, DbProject, DbRelationship, DbAuditEntry } from "./db.js";
7
7
  export declare const BUNDLE_FORMAT = "gnosys-project-bundle";
8
8
  export declare const BUNDLE_VERSION = 1;
9
- export interface BundleManifest {
9
+ interface BundleManifest {
10
10
  format: typeof BUNDLE_FORMAT;
11
11
  version: number;
12
12
  created: string;
@@ -38,6 +38,7 @@ export interface ExportProjectOptions {
38
38
  export interface ExportProjectResult {
39
39
  outputPath: string;
40
40
  memoryCount: number;
41
+ archivedExcluded: number;
41
42
  relationshipCount: number;
42
43
  auditEntryCount: number;
43
44
  uncompressedBytes: number;
@@ -48,4 +49,4 @@ export interface ExportProjectResult {
48
49
  * Bundle is fully self-contained — embeddings are base64-encoded inline.
49
50
  */
50
51
  export declare function exportProject(db: GnosysDB, opts: ExportProjectOptions): ExportProjectResult;
51
- //# sourceMappingURL=exportProject.d.ts.map
52
+ export {};
@@ -31,6 +31,8 @@ export function exportProject(db, opts) {
31
31
  throw new Error(`Project not found: ${opts.projectId}`);
32
32
  }
33
33
  const rawMemories = db.getMemoriesByProject(opts.projectId, !!opts.includeArchived);
34
+ const totalIncludingArchived = db.getMemoriesByProject(opts.projectId, true).length;
35
+ const archivedExcluded = opts.includeArchived ? 0 : totalIncludingArchived - rawMemories.length;
34
36
  const memories = rawMemories.map((m) => {
35
37
  const { embedding: _embedding, ...rest } = m;
36
38
  return {
@@ -63,10 +65,10 @@ export function exportProject(db, opts) {
63
65
  return {
64
66
  outputPath: opts.outputPath,
65
67
  memoryCount: memories.length,
68
+ archivedExcluded,
66
69
  relationshipCount: relationships.length,
67
70
  auditEntryCount: audit_log.length,
68
71
  uncompressedBytes: Buffer.byteLength(json, "utf-8"),
69
72
  compressedBytes: compressed.length,
70
73
  };
71
74
  }
72
- //# sourceMappingURL=exportProject.js.map
@@ -8,7 +8,7 @@
8
8
  * Tier boosting order: project (1.5x) > user (1.0x) > global (0.7x)
9
9
  * Recency boost: memories accessed/modified in the last 24h get a 1.3x boost
10
10
  */
11
- import { GnosysDB, DbMemory, MemoryScope } from "./db.js";
11
+ import type { GnosysDB, DbMemory, MemoryScope } from "./db.js";
12
12
  import { type MachineConfig } from "./machineConfig.js";
13
13
  export interface FederatedResult {
14
14
  id: string;
@@ -111,4 +111,3 @@ export declare function getWorkingSet(db: GnosysDB, projectId: string, opts?: {
111
111
  * Format the working set as a concise context block for agent consumption.
112
112
  */
113
113
  export declare function formatWorkingSet(memories: DbMemory[]): string;
114
- //# sourceMappingURL=federated.d.ts.map
@@ -304,4 +304,3 @@ function getRelativeTime(isoDate) {
304
304
  const days = Math.floor(hours / 24);
305
305
  return `${days}d ago`;
306
306
  }
307
- //# sourceMappingURL=federated.js.map
@@ -17,4 +17,3 @@ export interface FileInfo {
17
17
  * 3. Falls back to "unknown" if neither matches
18
18
  */
19
19
  export declare function detectFileType(filePath: string): Promise<FileInfo>;
20
- //# sourceMappingURL=fileDetect.d.ts.map
@@ -121,4 +121,3 @@ export async function detectFileType(filePath) {
121
121
  mimeType: "application/octet-stream",
122
122
  };
123
123
  }
124
- //# sourceMappingURL=fileDetect.js.map
@@ -3,15 +3,15 @@
3
3
  * Fully regeneratable sidecar file. Parses all [[wikilinks]] from memories
4
4
  * and builds a JSON graph with nodes, edges, and stats.
5
5
  */
6
- import { GnosysResolver } from "./resolver.js";
7
- export interface GraphNode {
6
+ import type { GnosysResolver } from "./resolver.js";
7
+ interface GraphNode {
8
8
  id: string;
9
9
  title: string;
10
10
  edges: number;
11
11
  outgoing: number;
12
12
  incoming: number;
13
13
  }
14
- export interface GraphEdge {
14
+ interface GraphEdge {
15
15
  source: string;
16
16
  target: string;
17
17
  label: string;
@@ -47,4 +47,4 @@ export declare function loadGraph(storePath: string): Promise<GraphJSON | null>;
47
47
  * Format graph stats for display.
48
48
  */
49
49
  export declare function formatGraphStats(stats: GraphStats): string;
50
- //# sourceMappingURL=graph.d.ts.map
50
+ export {};
package/dist/lib/graph.js CHANGED
@@ -115,4 +115,3 @@ export function formatGraphStats(stats) {
115
115
  }
116
116
  return lines.join("\n");
117
117
  }
118
- //# sourceMappingURL=graph.js.map