@raviolelabs/engram-mcp 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (662) hide show
  1. package/CLAUDE.md +232 -0
  2. package/LICENSE +21 -0
  3. package/README.md +222 -0
  4. package/SKILL.md +299 -0
  5. package/dist/cloud/auth.d.ts +29 -0
  6. package/dist/cloud/auth.d.ts.map +1 -0
  7. package/dist/cloud/auth.js +132 -0
  8. package/dist/cloud/auth.js.map +1 -0
  9. package/dist/cloud/bridge-client.d.ts +10 -0
  10. package/dist/cloud/bridge-client.d.ts.map +1 -0
  11. package/dist/cloud/bridge-client.js +167 -0
  12. package/dist/cloud/bridge-client.js.map +1 -0
  13. package/dist/cloud/crypto.d.ts +42 -0
  14. package/dist/cloud/crypto.d.ts.map +1 -0
  15. package/dist/cloud/crypto.js +146 -0
  16. package/dist/cloud/crypto.js.map +1 -0
  17. package/dist/cloud/endpoints.d.ts +26 -0
  18. package/dist/cloud/endpoints.d.ts.map +1 -0
  19. package/dist/cloud/endpoints.js +26 -0
  20. package/dist/cloud/endpoints.js.map +1 -0
  21. package/dist/cloud/pairing.d.ts +30 -0
  22. package/dist/cloud/pairing.d.ts.map +1 -0
  23. package/dist/cloud/pairing.js +157 -0
  24. package/dist/cloud/pairing.js.map +1 -0
  25. package/dist/cloud/transit-poller.d.ts +35 -0
  26. package/dist/cloud/transit-poller.d.ts.map +1 -0
  27. package/dist/cloud/transit-poller.js +281 -0
  28. package/dist/cloud/transit-poller.js.map +1 -0
  29. package/dist/config/index.d.ts +3 -0
  30. package/dist/config/index.d.ts.map +1 -0
  31. package/dist/config/index.js +24 -0
  32. package/dist/config/index.js.map +1 -0
  33. package/dist/config/schema.d.ts +466 -0
  34. package/dist/config/schema.d.ts.map +1 -0
  35. package/dist/config/schema.js +171 -0
  36. package/dist/config/schema.js.map +1 -0
  37. package/dist/core/db/index.d.ts +7 -0
  38. package/dist/core/db/index.d.ts.map +1 -0
  39. package/dist/core/db/index.js +273 -0
  40. package/dist/core/db/index.js.map +1 -0
  41. package/dist/core/logger.d.ts +19 -0
  42. package/dist/core/logger.d.ts.map +1 -0
  43. package/dist/core/logger.js +223 -0
  44. package/dist/core/logger.js.map +1 -0
  45. package/dist/core/server/http.d.ts +15 -0
  46. package/dist/core/server/http.d.ts.map +1 -0
  47. package/dist/core/server/http.js +76 -0
  48. package/dist/core/server/http.js.map +1 -0
  49. package/dist/core/server/instructions.d.ts +2 -0
  50. package/dist/core/server/instructions.d.ts.map +1 -0
  51. package/dist/core/server/instructions.js +36 -0
  52. package/dist/core/server/instructions.js.map +1 -0
  53. package/dist/core/server/mcp-handler.d.ts +39 -0
  54. package/dist/core/server/mcp-handler.d.ts.map +1 -0
  55. package/dist/core/server/mcp-handler.js +204 -0
  56. package/dist/core/server/mcp-handler.js.map +1 -0
  57. package/dist/core/server/mcp-http.d.ts +4 -0
  58. package/dist/core/server/mcp-http.d.ts.map +1 -0
  59. package/dist/core/server/mcp-http.js +56 -0
  60. package/dist/core/server/mcp-http.js.map +1 -0
  61. package/dist/core/server/tool-router.d.ts +9 -0
  62. package/dist/core/server/tool-router.d.ts.map +1 -0
  63. package/dist/core/server/tool-router.js +25 -0
  64. package/dist/core/server/tool-router.js.map +1 -0
  65. package/dist/core/server/websocket.d.ts +4 -0
  66. package/dist/core/server/websocket.d.ts.map +1 -0
  67. package/dist/core/server/websocket.js +25 -0
  68. package/dist/core/server/websocket.js.map +1 -0
  69. package/dist/db/index.d.ts +2 -0
  70. package/dist/db/index.d.ts.map +1 -0
  71. package/dist/db/index.js +3 -0
  72. package/dist/db/index.js.map +1 -0
  73. package/dist/embeddings/index.d.ts +24 -0
  74. package/dist/embeddings/index.d.ts.map +1 -0
  75. package/dist/embeddings/index.js +86 -0
  76. package/dist/embeddings/index.js.map +1 -0
  77. package/dist/embeddings/providers/engram.d.ts +7 -0
  78. package/dist/embeddings/providers/engram.d.ts.map +1 -0
  79. package/dist/embeddings/providers/engram.js +67 -0
  80. package/dist/embeddings/providers/engram.js.map +1 -0
  81. package/dist/embeddings/providers/ollama.d.ts +3 -0
  82. package/dist/embeddings/providers/ollama.d.ts.map +1 -0
  83. package/dist/embeddings/providers/ollama.js +9 -0
  84. package/dist/embeddings/providers/ollama.js.map +1 -0
  85. package/dist/embeddings/providers/openai-compat.d.ts +7 -0
  86. package/dist/embeddings/providers/openai-compat.d.ts.map +1 -0
  87. package/dist/embeddings/providers/openai-compat.js +27 -0
  88. package/dist/embeddings/providers/openai-compat.js.map +1 -0
  89. package/dist/embeddings/providers/openai.d.ts +3 -0
  90. package/dist/embeddings/providers/openai.d.ts.map +1 -0
  91. package/dist/embeddings/providers/openai.js +12 -0
  92. package/dist/embeddings/providers/openai.js.map +1 -0
  93. package/dist/embeddings/providers/voyage.d.ts +3 -0
  94. package/dist/embeddings/providers/voyage.d.ts.map +1 -0
  95. package/dist/embeddings/providers/voyage.js +12 -0
  96. package/dist/embeddings/providers/voyage.js.map +1 -0
  97. package/dist/index.d.ts +1 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +3 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/ingest/jobs.d.ts +29 -0
  102. package/dist/ingest/jobs.d.ts.map +1 -0
  103. package/dist/ingest/jobs.js +131 -0
  104. package/dist/ingest/jobs.js.map +1 -0
  105. package/dist/logger.d.ts +2 -0
  106. package/dist/logger.d.ts.map +1 -0
  107. package/dist/logger.js +3 -0
  108. package/dist/logger.js.map +1 -0
  109. package/dist/mcp-server/server.d.ts +2 -0
  110. package/dist/mcp-server/server.d.ts.map +1 -0
  111. package/dist/mcp-server/server.js +3 -0
  112. package/dist/mcp-server/server.js.map +1 -0
  113. package/dist/mcp-server/tests/mcp-e2e.test.d.ts +2 -0
  114. package/dist/mcp-server/tests/mcp-e2e.test.d.ts.map +1 -0
  115. package/dist/mcp-server/tests/mcp-e2e.test.js +157 -0
  116. package/dist/mcp-server/tests/mcp-e2e.test.js.map +1 -0
  117. package/dist/mcp-server/tool-router.d.ts +2 -0
  118. package/dist/mcp-server/tool-router.d.ts.map +1 -0
  119. package/dist/mcp-server/tool-router.js +3 -0
  120. package/dist/mcp-server/tool-router.js.map +1 -0
  121. package/dist/memory/admin/tools.d.ts +6 -0
  122. package/dist/memory/admin/tools.d.ts.map +1 -0
  123. package/dist/memory/admin/tools.js +134 -0
  124. package/dist/memory/admin/tools.js.map +1 -0
  125. package/dist/memory/core/chunker.d.ts +6 -0
  126. package/dist/memory/core/chunker.d.ts.map +1 -0
  127. package/dist/memory/core/chunker.js +49 -0
  128. package/dist/memory/core/chunker.js.map +1 -0
  129. package/dist/memory/core/module-interface.d.ts +23 -0
  130. package/dist/memory/core/module-interface.d.ts.map +1 -0
  131. package/dist/memory/core/module-interface.js +2 -0
  132. package/dist/memory/core/module-interface.js.map +1 -0
  133. package/dist/memory/core/module-registry.d.ts +14 -0
  134. package/dist/memory/core/module-registry.d.ts.map +1 -0
  135. package/dist/memory/core/module-registry.js +45 -0
  136. package/dist/memory/core/module-registry.js.map +1 -0
  137. package/dist/memory/core/property-extractor.d.ts +6 -0
  138. package/dist/memory/core/property-extractor.d.ts.map +1 -0
  139. package/dist/memory/core/property-extractor.js +90 -0
  140. package/dist/memory/core/property-extractor.js.map +1 -0
  141. package/dist/memory/core/reindex.d.ts +11 -0
  142. package/dist/memory/core/reindex.d.ts.map +1 -0
  143. package/dist/memory/core/reindex.js +55 -0
  144. package/dist/memory/core/reindex.js.map +1 -0
  145. package/dist/memory/core/source-registry.d.ts +42 -0
  146. package/dist/memory/core/source-registry.d.ts.map +1 -0
  147. package/dist/memory/core/source-registry.js +86 -0
  148. package/dist/memory/core/source-registry.js.map +1 -0
  149. package/dist/memory/core/store.d.ts +40 -0
  150. package/dist/memory/core/store.d.ts.map +1 -0
  151. package/dist/memory/core/store.js +257 -0
  152. package/dist/memory/core/store.js.map +1 -0
  153. package/dist/memory/core/wikilinks.d.ts +13 -0
  154. package/dist/memory/core/wikilinks.d.ts.map +1 -0
  155. package/dist/memory/core/wikilinks.js +25 -0
  156. package/dist/memory/core/wikilinks.js.map +1 -0
  157. package/dist/memory/modules/_custom/generic-module.d.ts +7 -0
  158. package/dist/memory/modules/_custom/generic-module.d.ts.map +1 -0
  159. package/dist/memory/modules/_custom/generic-module.js +108 -0
  160. package/dist/memory/modules/_custom/generic-module.js.map +1 -0
  161. package/dist/memory/modules/_custom/persistence.d.ts +15 -0
  162. package/dist/memory/modules/_custom/persistence.d.ts.map +1 -0
  163. package/dist/memory/modules/_custom/persistence.js +47 -0
  164. package/dist/memory/modules/_custom/persistence.js.map +1 -0
  165. package/dist/memory/modules/_custom/tests/custom-types.test.d.ts +2 -0
  166. package/dist/memory/modules/_custom/tests/custom-types.test.d.ts.map +1 -0
  167. package/dist/memory/modules/_custom/tests/custom-types.test.js +89 -0
  168. package/dist/memory/modules/_custom/tests/custom-types.test.js.map +1 -0
  169. package/dist/memory/modules/_custom/tools.d.ts +7 -0
  170. package/dist/memory/modules/_custom/tools.d.ts.map +1 -0
  171. package/dist/memory/modules/_custom/tools.js +72 -0
  172. package/dist/memory/modules/_custom/tools.js.map +1 -0
  173. package/dist/memory/modules/audio/ingest.d.ts +9 -0
  174. package/dist/memory/modules/audio/ingest.d.ts.map +1 -0
  175. package/dist/memory/modules/audio/ingest.js +32 -0
  176. package/dist/memory/modules/audio/ingest.js.map +1 -0
  177. package/dist/memory/modules/audio/module.d.ts +6 -0
  178. package/dist/memory/modules/audio/module.d.ts.map +1 -0
  179. package/dist/memory/modules/audio/module.js +18 -0
  180. package/dist/memory/modules/audio/module.js.map +1 -0
  181. package/dist/memory/modules/audio/tests/audio.test.d.ts +2 -0
  182. package/dist/memory/modules/audio/tests/audio.test.d.ts.map +1 -0
  183. package/dist/memory/modules/audio/tests/audio.test.js +57 -0
  184. package/dist/memory/modules/audio/tests/audio.test.js.map +1 -0
  185. package/dist/memory/modules/audio/tests/transcriber.test.d.ts +2 -0
  186. package/dist/memory/modules/audio/tests/transcriber.test.d.ts.map +1 -0
  187. package/dist/memory/modules/audio/tests/transcriber.test.js +27 -0
  188. package/dist/memory/modules/audio/tests/transcriber.test.js.map +1 -0
  189. package/dist/memory/modules/audio/tools.d.ts +5 -0
  190. package/dist/memory/modules/audio/tools.d.ts.map +1 -0
  191. package/dist/memory/modules/audio/tools.js +60 -0
  192. package/dist/memory/modules/audio/tools.js.map +1 -0
  193. package/dist/memory/modules/audio/transcriber.d.ts +15 -0
  194. package/dist/memory/modules/audio/transcriber.d.ts.map +1 -0
  195. package/dist/memory/modules/audio/transcriber.js +177 -0
  196. package/dist/memory/modules/audio/transcriber.js.map +1 -0
  197. package/dist/memory/modules/conversations/ingest.d.ts +10 -0
  198. package/dist/memory/modules/conversations/ingest.d.ts.map +1 -0
  199. package/dist/memory/modules/conversations/ingest.js +38 -0
  200. package/dist/memory/modules/conversations/ingest.js.map +1 -0
  201. package/dist/memory/modules/conversations/module.d.ts +6 -0
  202. package/dist/memory/modules/conversations/module.d.ts.map +1 -0
  203. package/dist/memory/modules/conversations/module.js +43 -0
  204. package/dist/memory/modules/conversations/module.js.map +1 -0
  205. package/dist/memory/modules/conversations/tests/conversations.test.d.ts +2 -0
  206. package/dist/memory/modules/conversations/tests/conversations.test.d.ts.map +1 -0
  207. package/dist/memory/modules/conversations/tests/conversations.test.js +70 -0
  208. package/dist/memory/modules/conversations/tests/conversations.test.js.map +1 -0
  209. package/dist/memory/modules/conversations/tools.d.ts +5 -0
  210. package/dist/memory/modules/conversations/tools.d.ts.map +1 -0
  211. package/dist/memory/modules/conversations/tools.js +75 -0
  212. package/dist/memory/modules/conversations/tools.js.map +1 -0
  213. package/dist/memory/modules/drive/connector.d.ts +19 -0
  214. package/dist/memory/modules/drive/connector.d.ts.map +1 -0
  215. package/dist/memory/modules/drive/connector.js +52 -0
  216. package/dist/memory/modules/drive/connector.js.map +1 -0
  217. package/dist/memory/modules/drive/ingest.d.ts +9 -0
  218. package/dist/memory/modules/drive/ingest.d.ts.map +1 -0
  219. package/dist/memory/modules/drive/ingest.js +27 -0
  220. package/dist/memory/modules/drive/ingest.js.map +1 -0
  221. package/dist/memory/modules/drive/module.d.ts +6 -0
  222. package/dist/memory/modules/drive/module.d.ts.map +1 -0
  223. package/dist/memory/modules/drive/module.js +31 -0
  224. package/dist/memory/modules/drive/module.js.map +1 -0
  225. package/dist/memory/modules/drive/oauth.d.ts +14 -0
  226. package/dist/memory/modules/drive/oauth.d.ts.map +1 -0
  227. package/dist/memory/modules/drive/oauth.js +130 -0
  228. package/dist/memory/modules/drive/oauth.js.map +1 -0
  229. package/dist/memory/modules/drive/tests/drive.test.d.ts +2 -0
  230. package/dist/memory/modules/drive/tests/drive.test.d.ts.map +1 -0
  231. package/dist/memory/modules/drive/tests/drive.test.js +66 -0
  232. package/dist/memory/modules/drive/tests/drive.test.js.map +1 -0
  233. package/dist/memory/modules/drive/tools.d.ts +5 -0
  234. package/dist/memory/modules/drive/tools.d.ts.map +1 -0
  235. package/dist/memory/modules/drive/tools.js +131 -0
  236. package/dist/memory/modules/drive/tools.js.map +1 -0
  237. package/dist/memory/modules/drive/watcher.d.ts +5 -0
  238. package/dist/memory/modules/drive/watcher.d.ts.map +1 -0
  239. package/dist/memory/modules/drive/watcher.js +46 -0
  240. package/dist/memory/modules/drive/watcher.js.map +1 -0
  241. package/dist/memory/modules/notes/ingest.d.ts +3 -0
  242. package/dist/memory/modules/notes/ingest.d.ts.map +1 -0
  243. package/dist/memory/modules/notes/ingest.js +30 -0
  244. package/dist/memory/modules/notes/ingest.js.map +1 -0
  245. package/dist/memory/modules/notes/module.d.ts +5 -0
  246. package/dist/memory/modules/notes/module.d.ts.map +1 -0
  247. package/dist/memory/modules/notes/module.js +28 -0
  248. package/dist/memory/modules/notes/module.js.map +1 -0
  249. package/dist/memory/modules/notes/tests/notes.test.d.ts +2 -0
  250. package/dist/memory/modules/notes/tests/notes.test.d.ts.map +1 -0
  251. package/dist/memory/modules/notes/tests/notes.test.js +59 -0
  252. package/dist/memory/modules/notes/tests/notes.test.js.map +1 -0
  253. package/dist/memory/modules/notes/tools.d.ts +5 -0
  254. package/dist/memory/modules/notes/tools.d.ts.map +1 -0
  255. package/dist/memory/modules/notes/tools.js +69 -0
  256. package/dist/memory/modules/notes/tools.js.map +1 -0
  257. package/dist/memory/modules/notion/connector.d.ts +10 -0
  258. package/dist/memory/modules/notion/connector.d.ts.map +1 -0
  259. package/dist/memory/modules/notion/connector.js +112 -0
  260. package/dist/memory/modules/notion/connector.js.map +1 -0
  261. package/dist/memory/modules/notion/ingest.d.ts +9 -0
  262. package/dist/memory/modules/notion/ingest.d.ts.map +1 -0
  263. package/dist/memory/modules/notion/ingest.js +24 -0
  264. package/dist/memory/modules/notion/ingest.js.map +1 -0
  265. package/dist/memory/modules/notion/module.d.ts +6 -0
  266. package/dist/memory/modules/notion/module.d.ts.map +1 -0
  267. package/dist/memory/modules/notion/module.js +31 -0
  268. package/dist/memory/modules/notion/module.js.map +1 -0
  269. package/dist/memory/modules/notion/oauth.d.ts +19 -0
  270. package/dist/memory/modules/notion/oauth.d.ts.map +1 -0
  271. package/dist/memory/modules/notion/oauth.js +117 -0
  272. package/dist/memory/modules/notion/oauth.js.map +1 -0
  273. package/dist/memory/modules/notion/tests/notion.test.d.ts +2 -0
  274. package/dist/memory/modules/notion/tests/notion.test.d.ts.map +1 -0
  275. package/dist/memory/modules/notion/tests/notion.test.js +53 -0
  276. package/dist/memory/modules/notion/tests/notion.test.js.map +1 -0
  277. package/dist/memory/modules/notion/tools.d.ts +5 -0
  278. package/dist/memory/modules/notion/tools.d.ts.map +1 -0
  279. package/dist/memory/modules/notion/tools.js +116 -0
  280. package/dist/memory/modules/notion/tools.js.map +1 -0
  281. package/dist/memory/modules/notion/watcher.d.ts +5 -0
  282. package/dist/memory/modules/notion/watcher.d.ts.map +1 -0
  283. package/dist/memory/modules/notion/watcher.js +41 -0
  284. package/dist/memory/modules/notion/watcher.js.map +1 -0
  285. package/dist/memory/modules/obsidian/ingest.d.ts +9 -0
  286. package/dist/memory/modules/obsidian/ingest.d.ts.map +1 -0
  287. package/dist/memory/modules/obsidian/ingest.js +80 -0
  288. package/dist/memory/modules/obsidian/ingest.js.map +1 -0
  289. package/dist/memory/modules/obsidian/module.d.ts +6 -0
  290. package/dist/memory/modules/obsidian/module.d.ts.map +1 -0
  291. package/dist/memory/modules/obsidian/module.js +31 -0
  292. package/dist/memory/modules/obsidian/module.js.map +1 -0
  293. package/dist/memory/modules/obsidian/tests/obsidian.test.d.ts +2 -0
  294. package/dist/memory/modules/obsidian/tests/obsidian.test.d.ts.map +1 -0
  295. package/dist/memory/modules/obsidian/tests/obsidian.test.js +65 -0
  296. package/dist/memory/modules/obsidian/tests/obsidian.test.js.map +1 -0
  297. package/dist/memory/modules/obsidian/tests/vault-reader.test.d.ts +2 -0
  298. package/dist/memory/modules/obsidian/tests/vault-reader.test.d.ts.map +1 -0
  299. package/dist/memory/modules/obsidian/tests/vault-reader.test.js +37 -0
  300. package/dist/memory/modules/obsidian/tests/vault-reader.test.js.map +1 -0
  301. package/dist/memory/modules/obsidian/tools.d.ts +5 -0
  302. package/dist/memory/modules/obsidian/tools.d.ts.map +1 -0
  303. package/dist/memory/modules/obsidian/tools.js +101 -0
  304. package/dist/memory/modules/obsidian/tools.js.map +1 -0
  305. package/dist/memory/modules/obsidian/vault-reader.d.ts +8 -0
  306. package/dist/memory/modules/obsidian/vault-reader.d.ts.map +1 -0
  307. package/dist/memory/modules/obsidian/vault-reader.js +82 -0
  308. package/dist/memory/modules/obsidian/vault-reader.js.map +1 -0
  309. package/dist/memory/modules/obsidian/watcher.d.ts +5 -0
  310. package/dist/memory/modules/obsidian/watcher.d.ts.map +1 -0
  311. package/dist/memory/modules/obsidian/watcher.js +83 -0
  312. package/dist/memory/modules/obsidian/watcher.js.map +1 -0
  313. package/dist/memory/modules/youtube/ingest.d.ts +20 -0
  314. package/dist/memory/modules/youtube/ingest.d.ts.map +1 -0
  315. package/dist/memory/modules/youtube/ingest.js +49 -0
  316. package/dist/memory/modules/youtube/ingest.js.map +1 -0
  317. package/dist/memory/modules/youtube/module.d.ts +11 -0
  318. package/dist/memory/modules/youtube/module.d.ts.map +1 -0
  319. package/dist/memory/modules/youtube/module.js +26 -0
  320. package/dist/memory/modules/youtube/module.js.map +1 -0
  321. package/dist/memory/modules/youtube/tests/channel.test.d.ts +2 -0
  322. package/dist/memory/modules/youtube/tests/channel.test.d.ts.map +1 -0
  323. package/dist/memory/modules/youtube/tests/channel.test.js +61 -0
  324. package/dist/memory/modules/youtube/tests/channel.test.js.map +1 -0
  325. package/dist/memory/modules/youtube/tests/transcript-fetcher.test.d.ts +2 -0
  326. package/dist/memory/modules/youtube/tests/transcript-fetcher.test.d.ts.map +1 -0
  327. package/dist/memory/modules/youtube/tests/transcript-fetcher.test.js +23 -0
  328. package/dist/memory/modules/youtube/tests/transcript-fetcher.test.js.map +1 -0
  329. package/dist/memory/modules/youtube/tests/youtube.test.d.ts +2 -0
  330. package/dist/memory/modules/youtube/tests/youtube.test.d.ts.map +1 -0
  331. package/dist/memory/modules/youtube/tests/youtube.test.js +52 -0
  332. package/dist/memory/modules/youtube/tests/youtube.test.js.map +1 -0
  333. package/dist/memory/modules/youtube/tools.d.ts +5 -0
  334. package/dist/memory/modules/youtube/tools.d.ts.map +1 -0
  335. package/dist/memory/modules/youtube/tools.js +182 -0
  336. package/dist/memory/modules/youtube/tools.js.map +1 -0
  337. package/dist/memory/modules/youtube/transcript-fetcher.d.ts +17 -0
  338. package/dist/memory/modules/youtube/transcript-fetcher.d.ts.map +1 -0
  339. package/dist/memory/modules/youtube/transcript-fetcher.js +178 -0
  340. package/dist/memory/modules/youtube/transcript-fetcher.js.map +1 -0
  341. package/dist/memory/modules/youtube/watcher.d.ts +30 -0
  342. package/dist/memory/modules/youtube/watcher.d.ts.map +1 -0
  343. package/dist/memory/modules/youtube/watcher.js +198 -0
  344. package/dist/memory/modules/youtube/watcher.js.map +1 -0
  345. package/dist/memory/public/tools.d.ts +5 -0
  346. package/dist/memory/public/tools.d.ts.map +1 -0
  347. package/dist/memory/public/tools.js +1761 -0
  348. package/dist/memory/public/tools.js.map +1 -0
  349. package/dist/private/algorithms/chunker-semantic.d.ts +3 -0
  350. package/dist/private/algorithms/chunker-semantic.d.ts.map +1 -0
  351. package/dist/private/algorithms/chunker-semantic.js +70 -0
  352. package/dist/private/algorithms/chunker-semantic.js.map +1 -0
  353. package/dist/private/algorithms/find-related-smart.d.ts +4 -0
  354. package/dist/private/algorithms/find-related-smart.d.ts.map +1 -0
  355. package/dist/private/algorithms/find-related-smart.js +52 -0
  356. package/dist/private/algorithms/find-related-smart.js.map +1 -0
  357. package/dist/private/algorithms/graph-semantic-edges.d.ts +4 -0
  358. package/dist/private/algorithms/graph-semantic-edges.d.ts.map +1 -0
  359. package/dist/private/algorithms/graph-semantic-edges.js +38 -0
  360. package/dist/private/algorithms/graph-semantic-edges.js.map +1 -0
  361. package/dist/private/algorithms/search-all-smart.d.ts +9 -0
  362. package/dist/private/algorithms/search-all-smart.d.ts.map +1 -0
  363. package/dist/private/algorithms/search-all-smart.js +62 -0
  364. package/dist/private/algorithms/search-all-smart.js.map +1 -0
  365. package/dist/private/index.d.ts +7 -0
  366. package/dist/private/index.d.ts.map +1 -0
  367. package/dist/private/index.js +39 -0
  368. package/dist/private/index.js.map +1 -0
  369. package/dist/private/prompts/extraction-system.d.ts +2 -0
  370. package/dist/private/prompts/extraction-system.d.ts.map +1 -0
  371. package/dist/private/prompts/extraction-system.js +15 -0
  372. package/dist/private/prompts/extraction-system.js.map +1 -0
  373. package/dist/private/prompts/suggest-properties.d.ts +2 -0
  374. package/dist/private/prompts/suggest-properties.d.ts.map +1 -0
  375. package/dist/private/prompts/suggest-properties.js +18 -0
  376. package/dist/private/prompts/suggest-properties.js.map +1 -0
  377. package/dist/private/tests/find-related-smart.test.d.ts +2 -0
  378. package/dist/private/tests/find-related-smart.test.d.ts.map +1 -0
  379. package/dist/private/tests/find-related-smart.test.js +86 -0
  380. package/dist/private/tests/find-related-smart.test.js.map +1 -0
  381. package/dist/private/tests/property-extractor-smart.test.d.ts +2 -0
  382. package/dist/private/tests/property-extractor-smart.test.d.ts.map +1 -0
  383. package/dist/private/tests/property-extractor-smart.test.js +26 -0
  384. package/dist/private/tests/property-extractor-smart.test.js.map +1 -0
  385. package/dist/scripts/install-ollama.d.ts +3 -0
  386. package/dist/scripts/install-ollama.d.ts.map +1 -0
  387. package/dist/scripts/install-ollama.js +78 -0
  388. package/dist/scripts/install-ollama.js.map +1 -0
  389. package/dist/scripts/install.d.ts +3 -0
  390. package/dist/scripts/install.d.ts.map +1 -0
  391. package/dist/scripts/install.js +191 -0
  392. package/dist/scripts/install.js.map +1 -0
  393. package/dist/scripts/pair.d.ts +3 -0
  394. package/dist/scripts/pair.d.ts.map +1 -0
  395. package/dist/scripts/pair.js +78 -0
  396. package/dist/scripts/pair.js.map +1 -0
  397. package/dist/scripts/rebuild.d.ts +20 -0
  398. package/dist/scripts/rebuild.d.ts.map +1 -0
  399. package/dist/scripts/rebuild.js +171 -0
  400. package/dist/scripts/rebuild.js.map +1 -0
  401. package/dist/scripts/reindex.d.ts +3 -0
  402. package/dist/scripts/reindex.d.ts.map +1 -0
  403. package/dist/scripts/reindex.js +23 -0
  404. package/dist/scripts/reindex.js.map +1 -0
  405. package/dist/scripts/serve.d.ts +3 -0
  406. package/dist/scripts/serve.d.ts.map +1 -0
  407. package/dist/scripts/serve.js +57 -0
  408. package/dist/scripts/serve.js.map +1 -0
  409. package/dist/scripts/service.d.ts +19 -0
  410. package/dist/scripts/service.d.ts.map +1 -0
  411. package/dist/scripts/service.js +257 -0
  412. package/dist/scripts/service.js.map +1 -0
  413. package/dist/server/api/daily.d.ts +3 -0
  414. package/dist/server/api/daily.d.ts.map +1 -0
  415. package/dist/server/api/daily.js +44 -0
  416. package/dist/server/api/daily.js.map +1 -0
  417. package/dist/server/api/graph.d.ts +26 -0
  418. package/dist/server/api/graph.d.ts.map +1 -0
  419. package/dist/server/api/graph.js +80 -0
  420. package/dist/server/api/graph.js.map +1 -0
  421. package/dist/server/api/integrations.d.ts +4 -0
  422. package/dist/server/api/integrations.d.ts.map +1 -0
  423. package/dist/server/api/integrations.js +228 -0
  424. package/dist/server/api/integrations.js.map +1 -0
  425. package/dist/server/api/memories.d.ts +4 -0
  426. package/dist/server/api/memories.d.ts.map +1 -0
  427. package/dist/server/api/memories.js +267 -0
  428. package/dist/server/api/memories.js.map +1 -0
  429. package/dist/server/api/reindex.d.ts +3 -0
  430. package/dist/server/api/reindex.d.ts.map +1 -0
  431. package/dist/server/api/reindex.js +18 -0
  432. package/dist/server/api/reindex.js.map +1 -0
  433. package/dist/server/api/settings.d.ts +3 -0
  434. package/dist/server/api/settings.d.ts.map +1 -0
  435. package/dist/server/api/settings.js +24 -0
  436. package/dist/server/api/settings.js.map +1 -0
  437. package/dist/server/api/sources.d.ts +4 -0
  438. package/dist/server/api/sources.d.ts.map +1 -0
  439. package/dist/server/api/sources.js +45 -0
  440. package/dist/server/api/sources.js.map +1 -0
  441. package/dist/server/api/sync-status.d.ts +3 -0
  442. package/dist/server/api/sync-status.d.ts.map +1 -0
  443. package/dist/server/api/sync-status.js +43 -0
  444. package/dist/server/api/sync-status.js.map +1 -0
  445. package/dist/server/api/types.d.ts +3 -0
  446. package/dist/server/api/types.d.ts.map +1 -0
  447. package/dist/server/api/types.js +20 -0
  448. package/dist/server/api/types.js.map +1 -0
  449. package/dist/server/api/views.d.ts +25 -0
  450. package/dist/server/api/views.d.ts.map +1 -0
  451. package/dist/server/api/views.js +54 -0
  452. package/dist/server/api/views.js.map +1 -0
  453. package/dist/server/index.d.ts +2 -0
  454. package/dist/server/index.d.ts.map +1 -0
  455. package/dist/server/index.js +3 -0
  456. package/dist/server/index.js.map +1 -0
  457. package/dist/sync/apply.d.ts +55 -0
  458. package/dist/sync/apply.d.ts.map +1 -0
  459. package/dist/sync/apply.js +277 -0
  460. package/dist/sync/apply.js.map +1 -0
  461. package/dist/sync/channel-client.d.ts +27 -0
  462. package/dist/sync/channel-client.d.ts.map +1 -0
  463. package/dist/sync/channel-client.js +154 -0
  464. package/dist/sync/channel-client.js.map +1 -0
  465. package/dist/sync/cloud-saves.d.ts +49 -0
  466. package/dist/sync/cloud-saves.d.ts.map +1 -0
  467. package/dist/sync/cloud-saves.js +182 -0
  468. package/dist/sync/cloud-saves.js.map +1 -0
  469. package/dist/sync/ed25519.d.ts +54 -0
  470. package/dist/sync/ed25519.d.ts.map +1 -0
  471. package/dist/sync/ed25519.js +136 -0
  472. package/dist/sync/ed25519.js.map +1 -0
  473. package/dist/sync/ops-log.d.ts +43 -0
  474. package/dist/sync/ops-log.d.ts.map +1 -0
  475. package/dist/sync/ops-log.js +153 -0
  476. package/dist/sync/ops-log.js.map +1 -0
  477. package/dist/sync/recovery-setup.d.ts +26 -0
  478. package/dist/sync/recovery-setup.d.ts.map +1 -0
  479. package/dist/sync/recovery-setup.js +113 -0
  480. package/dist/sync/recovery-setup.js.map +1 -0
  481. package/dist/sync/replay.d.ts +19 -0
  482. package/dist/sync/replay.d.ts.map +1 -0
  483. package/dist/sync/replay.js +59 -0
  484. package/dist/sync/replay.js.map +1 -0
  485. package/dist/sync/shamir.d.ts +22 -0
  486. package/dist/sync/shamir.d.ts.map +1 -0
  487. package/dist/sync/shamir.js +109 -0
  488. package/dist/sync/shamir.js.map +1 -0
  489. package/dist/sync/tests/apply.test.d.ts +4 -0
  490. package/dist/sync/tests/apply.test.d.ts.map +1 -0
  491. package/dist/sync/tests/apply.test.js +119 -0
  492. package/dist/sync/tests/apply.test.js.map +1 -0
  493. package/dist/sync/tests/ops-log.test.d.ts +2 -0
  494. package/dist/sync/tests/ops-log.test.d.ts.map +1 -0
  495. package/dist/sync/tests/ops-log.test.js +105 -0
  496. package/dist/sync/tests/ops-log.test.js.map +1 -0
  497. package/dist/sync/tests/two-device-sync.test.d.ts +2 -0
  498. package/dist/sync/tests/two-device-sync.test.d.ts.map +1 -0
  499. package/dist/sync/tests/two-device-sync.test.js +250 -0
  500. package/dist/sync/tests/two-device-sync.test.js.map +1 -0
  501. package/dist/sync/types.d.ts +87 -0
  502. package/dist/sync/types.d.ts.map +1 -0
  503. package/dist/sync/types.js +37 -0
  504. package/dist/sync/types.js.map +1 -0
  505. package/dist/tests/chunker.test.d.ts +2 -0
  506. package/dist/tests/chunker.test.d.ts.map +1 -0
  507. package/dist/tests/chunker.test.js +24 -0
  508. package/dist/tests/chunker.test.js.map +1 -0
  509. package/dist/tests/cloud-auth.test.d.ts +2 -0
  510. package/dist/tests/cloud-auth.test.d.ts.map +1 -0
  511. package/dist/tests/cloud-auth.test.js +75 -0
  512. package/dist/tests/cloud-auth.test.js.map +1 -0
  513. package/dist/tests/cloud-crypto.test.d.ts +2 -0
  514. package/dist/tests/cloud-crypto.test.d.ts.map +1 -0
  515. package/dist/tests/cloud-crypto.test.js +58 -0
  516. package/dist/tests/cloud-crypto.test.js.map +1 -0
  517. package/dist/tests/cloud-integration.test.d.ts +2 -0
  518. package/dist/tests/cloud-integration.test.d.ts.map +1 -0
  519. package/dist/tests/cloud-integration.test.js +193 -0
  520. package/dist/tests/cloud-integration.test.js.map +1 -0
  521. package/dist/tests/cloud-pairing.test.d.ts +2 -0
  522. package/dist/tests/cloud-pairing.test.d.ts.map +1 -0
  523. package/dist/tests/cloud-pairing.test.js +86 -0
  524. package/dist/tests/cloud-pairing.test.js.map +1 -0
  525. package/dist/tests/cloud-saves-integration.test.d.ts +2 -0
  526. package/dist/tests/cloud-saves-integration.test.d.ts.map +1 -0
  527. package/dist/tests/cloud-saves-integration.test.js +92 -0
  528. package/dist/tests/cloud-saves-integration.test.js.map +1 -0
  529. package/dist/tests/cloud-transit.test.d.ts +2 -0
  530. package/dist/tests/cloud-transit.test.d.ts.map +1 -0
  531. package/dist/tests/cloud-transit.test.js +263 -0
  532. package/dist/tests/cloud-transit.test.js.map +1 -0
  533. package/dist/tests/config.test.d.ts +2 -0
  534. package/dist/tests/config.test.d.ts.map +1 -0
  535. package/dist/tests/config.test.js +25 -0
  536. package/dist/tests/config.test.js.map +1 -0
  537. package/dist/tests/db.test.d.ts +2 -0
  538. package/dist/tests/db.test.d.ts.map +1 -0
  539. package/dist/tests/db.test.js +75 -0
  540. package/dist/tests/db.test.js.map +1 -0
  541. package/dist/tests/embeddings-providers.test.d.ts +2 -0
  542. package/dist/tests/embeddings-providers.test.d.ts.map +1 -0
  543. package/dist/tests/embeddings-providers.test.js +62 -0
  544. package/dist/tests/embeddings-providers.test.js.map +1 -0
  545. package/dist/tests/embeddings.test.d.ts +2 -0
  546. package/dist/tests/embeddings.test.d.ts.map +1 -0
  547. package/dist/tests/embeddings.test.js +22 -0
  548. package/dist/tests/embeddings.test.js.map +1 -0
  549. package/dist/tests/integrations-api.test.d.ts +2 -0
  550. package/dist/tests/integrations-api.test.d.ts.map +1 -0
  551. package/dist/tests/integrations-api.test.js +129 -0
  552. package/dist/tests/integrations-api.test.js.map +1 -0
  553. package/dist/tests/memory-store.test.d.ts +2 -0
  554. package/dist/tests/memory-store.test.d.ts.map +1 -0
  555. package/dist/tests/memory-store.test.js +129 -0
  556. package/dist/tests/memory-store.test.js.map +1 -0
  557. package/dist/tests/module-registry.test.d.ts +2 -0
  558. package/dist/tests/module-registry.test.d.ts.map +1 -0
  559. package/dist/tests/module-registry.test.js +44 -0
  560. package/dist/tests/module-registry.test.js.map +1 -0
  561. package/dist/tests/property-extractor.test.d.ts +2 -0
  562. package/dist/tests/property-extractor.test.d.ts.map +1 -0
  563. package/dist/tests/property-extractor.test.js +24 -0
  564. package/dist/tests/property-extractor.test.js.map +1 -0
  565. package/dist/tests/public-tools.test.d.ts +2 -0
  566. package/dist/tests/public-tools.test.d.ts.map +1 -0
  567. package/dist/tests/public-tools.test.js +270 -0
  568. package/dist/tests/public-tools.test.js.map +1 -0
  569. package/dist/tests/reindex.test.d.ts +2 -0
  570. package/dist/tests/reindex.test.d.ts.map +1 -0
  571. package/dist/tests/reindex.test.js +58 -0
  572. package/dist/tests/reindex.test.js.map +1 -0
  573. package/dist/tests/shamir.test.d.ts +2 -0
  574. package/dist/tests/shamir.test.d.ts.map +1 -0
  575. package/dist/tests/shamir.test.js +57 -0
  576. package/dist/tests/shamir.test.js.map +1 -0
  577. package/dist/tests/source-registry.test.d.ts +2 -0
  578. package/dist/tests/source-registry.test.d.ts.map +1 -0
  579. package/dist/tests/source-registry.test.js +58 -0
  580. package/dist/tests/source-registry.test.js.map +1 -0
  581. package/dist/tests/types.test.d.ts +2 -0
  582. package/dist/tests/types.test.d.ts.map +1 -0
  583. package/dist/tests/types.test.js +26 -0
  584. package/dist/tests/types.test.js.map +1 -0
  585. package/dist/tests/vector.test.d.ts +2 -0
  586. package/dist/tests/vector.test.d.ts.map +1 -0
  587. package/dist/tests/vector.test.js +61 -0
  588. package/dist/tests/vector.test.js.map +1 -0
  589. package/dist/tests/wikilinks.test.d.ts +2 -0
  590. package/dist/tests/wikilinks.test.d.ts.map +1 -0
  591. package/dist/tests/wikilinks.test.js +20 -0
  592. package/dist/tests/wikilinks.test.js.map +1 -0
  593. package/dist/tools/index.d.ts +22 -0
  594. package/dist/tools/index.d.ts.map +1 -0
  595. package/dist/tools/index.js +38 -0
  596. package/dist/tools/index.js.map +1 -0
  597. package/dist/types.d.ts +134 -0
  598. package/dist/types.d.ts.map +1 -0
  599. package/dist/types.js +25 -0
  600. package/dist/types.js.map +1 -0
  601. package/dist/vector/store.d.ts +28 -0
  602. package/dist/vector/store.d.ts.map +1 -0
  603. package/dist/vector/store.js +132 -0
  604. package/dist/vector/store.js.map +1 -0
  605. package/dist/webapp/api/daily.d.ts +3 -0
  606. package/dist/webapp/api/daily.d.ts.map +1 -0
  607. package/dist/webapp/api/daily.js +44 -0
  608. package/dist/webapp/api/daily.js.map +1 -0
  609. package/dist/webapp/api/graph.d.ts +26 -0
  610. package/dist/webapp/api/graph.d.ts.map +1 -0
  611. package/dist/webapp/api/graph.js +80 -0
  612. package/dist/webapp/api/graph.js.map +1 -0
  613. package/dist/webapp/api/memories.d.ts +4 -0
  614. package/dist/webapp/api/memories.d.ts.map +1 -0
  615. package/dist/webapp/api/memories.js +70 -0
  616. package/dist/webapp/api/memories.js.map +1 -0
  617. package/dist/webapp/api/reindex.d.ts +3 -0
  618. package/dist/webapp/api/reindex.d.ts.map +1 -0
  619. package/dist/webapp/api/reindex.js +18 -0
  620. package/dist/webapp/api/reindex.js.map +1 -0
  621. package/dist/webapp/api/settings.d.ts +3 -0
  622. package/dist/webapp/api/settings.d.ts.map +1 -0
  623. package/dist/webapp/api/settings.js +24 -0
  624. package/dist/webapp/api/settings.js.map +1 -0
  625. package/dist/webapp/api/sources.d.ts +4 -0
  626. package/dist/webapp/api/sources.d.ts.map +1 -0
  627. package/dist/webapp/api/sources.js +45 -0
  628. package/dist/webapp/api/sources.js.map +1 -0
  629. package/dist/webapp/api/sync-status.d.ts +3 -0
  630. package/dist/webapp/api/sync-status.d.ts.map +1 -0
  631. package/dist/webapp/api/sync-status.js +43 -0
  632. package/dist/webapp/api/sync-status.js.map +1 -0
  633. package/dist/webapp/api/types.d.ts +3 -0
  634. package/dist/webapp/api/types.d.ts.map +1 -0
  635. package/dist/webapp/api/types.js +20 -0
  636. package/dist/webapp/api/types.js.map +1 -0
  637. package/dist/webapp/api/views.d.ts +25 -0
  638. package/dist/webapp/api/views.d.ts.map +1 -0
  639. package/dist/webapp/api/views.js +54 -0
  640. package/dist/webapp/api/views.js.map +1 -0
  641. package/dist/webapp/mcp-http.d.ts +2 -0
  642. package/dist/webapp/mcp-http.d.ts.map +1 -0
  643. package/dist/webapp/mcp-http.js +3 -0
  644. package/dist/webapp/mcp-http.js.map +1 -0
  645. package/dist/webapp/server.d.ts +2 -0
  646. package/dist/webapp/server.d.ts.map +1 -0
  647. package/dist/webapp/server.js +3 -0
  648. package/dist/webapp/server.js.map +1 -0
  649. package/dist/webapp/tests/api.test.d.ts +2 -0
  650. package/dist/webapp/tests/api.test.d.ts.map +1 -0
  651. package/dist/webapp/tests/api.test.js +125 -0
  652. package/dist/webapp/tests/api.test.js.map +1 -0
  653. package/dist/webapp/tests/mcp-http.test.d.ts +2 -0
  654. package/dist/webapp/tests/mcp-http.test.d.ts.map +1 -0
  655. package/dist/webapp/tests/mcp-http.test.js +47 -0
  656. package/dist/webapp/tests/mcp-http.test.js.map +1 -0
  657. package/dist/webapp/websocket.d.ts +2 -0
  658. package/dist/webapp/websocket.d.ts.map +1 -0
  659. package/dist/webapp/websocket.js +3 -0
  660. package/dist/webapp/websocket.js.map +1 -0
  661. package/package.json +128 -0
  662. package/src/private/README.md +49 -0
package/CLAUDE.md ADDED
@@ -0,0 +1,232 @@
1
+ # EngramMCP
2
+
3
+ > Local-first semantic memory layer for AI agents.
4
+
5
+ EngramMCP exposes a Model Context Protocol (MCP) server that lets any AI agent (Claude Code, Cursor, custom Claude/GPT runtimes) capture, search, and enrich memory across multiple typed sources (notes, conversations, Drive, Notion, YouTube, Obsidian, audio, plus user-defined custom types).
6
+
7
+ Forked from Argos. Local-first: vectors + content live on the user's machine; embeddings via local Ollama by default; no cloud required for Phase 1.
8
+
9
+ ---
10
+
11
+ ## Instructions for Claude Code
12
+
13
+ Tu es le stagiaire technique d'EngramMCP. Sois **proactif**, **force de proposition**, et **autonome**.
14
+
15
+ ### Comportement attendu
16
+
17
+ - **Lis le code existant** avant de modifier — comprends le pattern en place
18
+ - **Respecte les conventions** (voir ci-dessous)
19
+ - **Pense modularité** — chaque memory type est un MemoryModule indépendant
20
+ - **Sois concis** — pas de blabla, va droit au but, montre le code
21
+ - **Challenge les décisions** sous-optimales avec arguments
22
+ - **No mocks** pour les intégrations externes — tests E2E avec Ollama/LanceDB/SQLite/API réels
23
+
24
+ ### Quand tu travailles sur EngramMCP
25
+
26
+ 1. Lis toujours le code existant avant de modifier
27
+ 2. Respecte la convention ES modules avec extensions `.js` dans les imports
28
+ 3. Property extraction est **off par défaut** — l'agent appelant (toi) fournit `title`/`tags` directement
29
+ 4. Vector store dimension est hardcoded à 768 (nomic-embed-text). Voyage (1024)/OpenAI (1536) requiert un fix dans `src/vector/store.ts`
30
+ 5. Tool descriptions doivent être agent-friendly (mention WHEN to call, WHAT inputs help retrieval)
31
+ 6. **v0.2 surface**: 10 public tools only. Admin tools behind `--admin` flag. See SKILL.md for agent usage guide.
32
+
33
+ ---
34
+
35
+ ## Quick Reference
36
+
37
+ ### Commands
38
+
39
+ ```bash
40
+ npm run dev # tsx watch src/scripts/serve.ts
41
+ npm run build # tsc → dist/
42
+ npm run build:client # Vite → src/client/dist/
43
+ npm run build:all # client + server
44
+ npm start # node dist/scripts/serve.js
45
+ npm run reindex # re-embed all memories after provider change
46
+ npm run install:wizard # interactive first-time setup (tsx)
47
+ npm run pair # interactive pairing wizard (engram-mcp-pair)
48
+ npm run rebuild # rebuild SQLite+LanceDB from ops_log (engram-mcp rebuild)
49
+ npm test # vitest run
50
+ npm run lint # eslint src/
51
+ ```
52
+
53
+ ### Tech Stack
54
+
55
+ | Layer | Tech |
56
+ |---|---|
57
+ | Runtime | Node.js >= 22, TypeScript 5.7 strict, ESM |
58
+ | MCP | `@modelcontextprotocol/sdk@1.28` (stdio + StreamableHTTP) |
59
+ | Vector | LanceDB (`@lancedb/lancedb@0.27`) per-type tables |
60
+ | SQL | better-sqlite3 + FTS5 |
61
+ | Embeddings | OpenAI-compat dispatch → ollama / engram / voyage / openai / openai-compatible |
62
+ | Audio | nodejs-whisper (whisper.cpp) |
63
+ | YouTube | watch-page scrape + yt-dlp fallback |
64
+ | Web | Express 5, ws, React 19, Vite 5, Tailwind v4, react-query |
65
+ | Validation | Zod everywhere |
66
+ | IDs | ULID |
67
+
68
+ ### Key conventions
69
+
70
+ - **Module pattern**: `"type": "module"`, imports with `.js` extension
71
+ - **Config**: Zod schema in `src/config/schema.ts`, loaded from `~/.engram/config.json` or env (`ENGRAM_CONFIG_DIR`, `DATA_DIR`)
72
+ - **DB**: `getDb()` singleton, prepared statements only
73
+ - **Logging**: `createLogger(scope)` from `src/logger.ts`
74
+ - **Tool descriptions**: agent-facing — explain WHEN to use the tool and what title/tags improve retrieval
75
+ - **Tests**: real services (Ollama, LanceDB, Notion sandbox, etc.). No mocks. Real-API tests use ephemeral tmpdirs.
76
+
77
+ ---
78
+
79
+ ## Architecture (Phase 1)
80
+
81
+ ```
82
+ ┌─ stdio ─┐
83
+ agent runtime ──┤ ├──▶ MCP server (engram-mcp)
84
+ └─ HTTP ─┘ │
85
+
86
+ ┌─ ToolRouter ─┐
87
+ │ 10 tools │ (+18 admin with --admin flag)
88
+ └──────┬───────┘
89
+
90
+ ┌─ ModuleRegistry ─┐
91
+ │ notes │
92
+ │ conversations │
93
+ │ drive (OAuth) │
94
+ │ notion (OAuth) │
95
+ │ youtube │
96
+ │ audio (Whisper) │
97
+ │ obsidian │
98
+ │ <custom types> │
99
+ └────────┬─────────┘
100
+
101
+ ┌─ MemoryStore ─┐
102
+ │ insert │ ──▶ chunk + embed (Ollama)
103
+ │ search │ ──▶ LanceDB per-type tables
104
+ │ getById │ ──▶ SQLite + FTS5
105
+ │ delete │
106
+ │ findRelated │
107
+ │ setProperties│
108
+ └────────┬──────┘
109
+ │ events: memory.added/deleted/updated
110
+
111
+ WebSocket /ws ──▶ dashboard React UI
112
+ ```
113
+
114
+ Cloud bits (Phase 2 — Plan K): `engram-mcp pair` CLI activates cloud transit poller (node-cron,
115
+ 5 min), Bridge Relay WSS client, and E2E encrypted blob dispatch from the Engram cloud inbox.
116
+ Set ENGRAM_PASSPHRASE env var for the transit poller to start automatically at server boot.
117
+ Mobile app, billing, and Engram-hosted embeddings server are in separate Plans (I, J, M).
118
+
119
+ Phase 3 — Plan N (ops-log sync): Every local write (insert/delete/setProperties) is logged as a
120
+ signed, AES-256-GCM-encrypted op in `ops_log` (SQLite). A `ChannelClient` pushes pending ops to
121
+ the cloud `UserSyncChannel` Durable Object (engram-cloud) and receives ops from other devices.
122
+ The `ReplayApplier` decrypts, verifies ed25519 signatures, and applies ops with LWW + union
123
+ conflict resolution. `engram-mcp rebuild` drops SQLite+LanceDB and replays all ops from scratch.
124
+ Enable via `config.json: {"sync": {"enabled": true, "cloudBaseUrl": "..."}}` + ENGRAM_PASSPHRASE.
125
+ Full multi-PC sync requires Plan O cloud worker deployed (see RUNBOOK.md).
126
+
127
+ ---
128
+
129
+ ## Project Structure
130
+
131
+ ```
132
+ src/
133
+ ├── types.ts # MemoryItem schema (Zod) + interfaces
134
+ ├── logger.ts # createLogger
135
+ ├── index.ts # (stub — entry is src/scripts/serve.ts)
136
+ ├── config/{schema,index}.ts # Zod config + loader
137
+ ├── db/index.ts # SQLite init + 3 migrations
138
+ ├── embeddings/
139
+ │ ├── index.ts # dispatcher
140
+ │ └── providers/{ollama,engram,voyage,openai,openai-compat}.ts
141
+ ├── vector/store.ts # LanceDB per-type tables
142
+ ├── memory/
143
+ │ ├── core/{chunker,wikilinks,module-interface,module-registry,
144
+ │ │ store,source-registry,property-extractor,reindex}.ts
145
+ │ ├── modules/
146
+ │ │ ├── notes/ # add_note, search_notes
147
+ │ │ ├── conversations/ # remember_exchange, search_conversations
148
+ │ │ ├── drive/ # OAuth + watcher + ingest/list/watch tools
149
+ │ │ ├── notion/ # OAuth + watcher + ingest/list/watch tools
150
+ │ │ ├── audio/ # Whisper.cpp + add_audio_file/search_audio
151
+ │ │ ├── youtube/ # transcript fetcher + add_youtube_url/search
152
+ │ │ ├── obsidian/ # vault reader + fs.watch + tools
153
+ │ │ └── _custom/ # generic-module factory + create/list/delete
154
+ │ ├── public/tools.ts # 10 public tools: remember, recall, get, update,
155
+ │ │ # forget, relate, list_types, recent, ingest,
156
+ │ │ # suggest_properties
157
+ │ └── admin/tools.ts # ~18 admin tools behind --admin flag:
158
+ ├── core/ # LOW-LEVEL UTILITIES (canonical)
159
+ │ ├── logger.ts # createLogger (was src/logger.ts)
160
+ │ ├── db/index.ts # SQLite init + migrations (was src/db/index.ts)
161
+ │ └── server/
162
+ │ ├── mcp-handler.ts # buildEngramRuntime + startStdioMcpServer
163
+ │ ├── tool-router.ts # ToolRouter
164
+ │ ├── http.ts # Express bootstrap (was src/webapp/server.ts)
165
+ │ ├── mcp-http.ts # StreamableHTTP MCP transport
166
+ │ └── websocket.ts # WS broadcaster for memory.* events
167
+ ├── tools/ # Top-level tool registry (mirrors predmcp pattern)
168
+ │ └── index.ts # registerAllTools + dynamic private import
169
+ ├── private/ # GITIGNORED — premium extensions (hosted Engram only)
170
+ │ ├── index.ts # registerPrivateExtensions (no-op placeholder)
171
+ │ ├── README.md # Explains what goes here
172
+ │ ├── tools/ # Premium MCP tools
173
+ │ ├── algorithms/ # Advanced algorithm overrides
174
+ │ └── prompts/ # Tuned LLM prompts (IP)
175
+ ├── server/ # Engram-specific HTTP routes
176
+ │ ├── index.ts # Re-exports from core/server/http.ts
177
+ │ └── api/{memories,sources,types,views,daily,settings,reindex,sync-status,graph}.ts
178
+ ├── mcp-server/ # Re-export shims (→ core/server/)
179
+ │ ├── server.ts # shim → core/server/mcp-handler.ts
180
+ │ └── tool-router.ts # shim → core/server/tool-router.ts
181
+ ├── webapp/ # Re-export shims (→ core/server/)
182
+ │ ├── server.ts # shim → core/server/http.ts
183
+ │ ├── mcp-http.ts # shim → core/server/mcp-http.ts
184
+ │ ├── websocket.ts # shim → core/server/websocket.ts
185
+ │ └── api/ # original api handlers (not shimmed — used by tests)
186
+ ├── client/ # React/Vite/Tailwind dashboard
187
+ │ ├── vite.config.ts
188
+ │ ├── tsconfig.json (separate)
189
+ │ └── src/{App,main,api,ws,index.css}.{ts,tsx,css}
190
+ └── scripts/{serve,install,install-ollama,reindex}.ts
191
+ ```
192
+
193
+ ---
194
+
195
+ ## Database Schema
196
+
197
+ SQLite at `<dataDir>/engram.db` (WAL mode, FOREIGN KEYS ON):
198
+
199
+ | Table | Purpose |
200
+ |---|---|
201
+ | `memories` | id, type, source_id, content, content_hash, properties_json, wikilinks_json, related_ids_json, embedding_model, created_at |
202
+ | `memories_fts` | FTS5 virtual table on content/title/tags |
203
+ | `custom_types` | type_name, display_name, schema_json, created_at |
204
+ | `oauth_tokens` | provider, access_token, refresh_token, expires_at, extra_json |
205
+ | `module_state` | (module_id, key) → value_json |
206
+ | `watched_sources` | id, module_id, external_id, display_name, config_json, last_synced_at, last_modified_remote, last_error, enabled |
207
+ | `saved_views` | id, name, description, definition_json, pinned, created_at, updated_at |
208
+ | `settings` | key → value_json |
209
+
210
+ Vector tables: `memories_<type>` per memory type in LanceDB (id, source_id, chunk_index, content, created_at, field1-4, vector 768-d).
211
+
212
+ ---
213
+
214
+ ## Pricing (planned)
215
+
216
+ - **Free**: full local — Ollama embeddings, all modules, ~36 MCP tools
217
+ - **Pro $9/mo** (Phase 2): mobile app, cloud transit, share-by-email, Engram hosted embeddings, multi-PC encrypted sync, online dashboard
218
+ - **BYO premium embeddings** at any tier: Voyage / OpenAI / OAI-compatible
219
+
220
+ ---
221
+
222
+ ## Phase status
223
+
224
+ - [x] **Phase 1** — local MCP server with all memory types (DONE — see docs/superpowers/plans/)
225
+ - [ ] **Phase 2** — Mobile + cloud transit + billing + hosted Engram embeddings server
226
+ - [ ] **Phase 3** — Bidirectional multi-PC sync (ops-log + cloud saves) + recovery shards
227
+
228
+ ---
229
+
230
+ ## License
231
+
232
+ MIT
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Argos Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,222 @@
1
+ # EngramMCP
2
+
3
+ > Local-first semantic memory layer for AI agents.
4
+
5
+ EngramMCP is the memory your agents need — it ingests from your real sources (Notes, Conversations, Drive, Notion, YouTube, Obsidian, custom types) and exposes a standard MCP server for any agent runtime (Claude Code, Cursor, custom).
6
+
7
+ **Local-first**: vectors + content live on your machine. Embeddings via Ollama by default. No cloud required.
8
+
9
+ ## Install
10
+
11
+ ### macOS / Linux (recommended)
12
+
13
+ ```bash
14
+ curl -fsSL https://engram-mcp.com/install.sh | sh
15
+ ```
16
+
17
+ This one command: downloads the binary, verifies the checksum, installs Ollama if missing, runs the setup wizard, installs a background service (LaunchAgent on macOS, systemd on Linux), and updates `~/.claude/mcp.json` + `~/.cursor/mcp.json`.
18
+
19
+ ### macOS — Homebrew
20
+
21
+ ```bash
22
+ brew tap RavioleLabs/engram
23
+ brew install engram
24
+ brew services start engram # auto-start on login
25
+ ```
26
+
27
+ ### Windows (PowerShell)
28
+
29
+ ```powershell
30
+ iex (Invoke-WebRequest -Uri https://engram-mcp.com/install.ps1).Content
31
+ ```
32
+
33
+ Installs the binary, registers an NSSM Windows service, and updates `%USERPROFILE%\.claude\mcp.json`.
34
+
35
+ ### Windows — winget
36
+
37
+ ```powershell
38
+ winget install RavioleLabs.EngramMCP
39
+ ```
40
+
41
+ ### Linux — .deb (Debian / Ubuntu)
42
+
43
+ ```bash
44
+ curl -fsSL https://github.com/RavioleLabs/engram-mcp/releases/latest/download/engram-mcp_linux_amd64.deb \
45
+ -o /tmp/engram.deb && sudo dpkg -i /tmp/engram.deb
46
+ ```
47
+
48
+ ### Via AI agent (installer MCP server)
49
+
50
+ Add `installer.engram-mcp.com/mcp` as an HTTP MCP server to your agent runtime, then tell it:
51
+ *"Install EngramMCP on this machine."*
52
+ It calls `install_engram_mcp` and `verify_engram_installed` tools autonomously.
53
+
54
+ ```json
55
+ {
56
+ "mcpServers": {
57
+ "engram-installer": {
58
+ "url": "https://installer.engram-mcp.com/mcp",
59
+ "transport": "http"
60
+ }
61
+ }
62
+ }
63
+ ```
64
+
65
+ After install, run the setup wizard to configure Ollama and write `~/.engram/config.json`:
66
+
67
+ ```bash
68
+ engram-mcp install:wizard
69
+ ```
70
+
71
+ ## Run
72
+
73
+ ```bash
74
+ engram-mcp --no-http
75
+ ```
76
+
77
+ Starts the MCP stdio server (consumed by your agent runtime).
78
+ `--no-http` is the **recommended default** — no local web UI, minimal footprint.
79
+
80
+ ### Official dashboard
81
+
82
+ Visit **[engram-mcp.com](https://engram-mcp.com)** to browse your memories from any browser.
83
+ Sign up for a free account, pair your PC with `engram-mcp-pair`, and the online dashboard reads your local store via the Bridge Relay (E2E encrypted — the relay never sees your data).
84
+
85
+ ### Local dev UI (opt-in)
86
+
87
+ ```bash
88
+ engram-mcp
89
+ ```
90
+
91
+ Without `--no-http`, also starts:
92
+ - Local web UI: http://localhost:7777 (dev / admin tool)
93
+ - HTTP MCP transport: http://localhost:7777/mcp
94
+
95
+ ## Quick start for agents
96
+
97
+ EngramMCP v0.2 exposes **10 clean tools** — no noise, no duplicate search verbs.
98
+
99
+ | Tool | Purpose |
100
+ |---|---|
101
+ | `remember(content, title, tags, type?)` | Store anything worth keeping |
102
+ | `recall(query, types?, limit?)` | Semantic search across all memory |
103
+ | `get(id)` | Fetch full memory by id |
104
+ | `update(id, ...)` | Edit title/tags/sentiment |
105
+ | `forget(id)` | Delete a memory |
106
+ | `relate(id, limit?)` | Find connected memories |
107
+ | `list_types()` | Discover what types are stored |
108
+ | `recent(limit?, types?)` | Latest memories (use at conversation start) |
109
+ | `ingest(uri, type?)` | Auto-route file/URL to the right module |
110
+ | `suggest_properties(id)` | Instruction for the calling LLM to extract metadata |
111
+
112
+ See [SKILL.md](./SKILL.md) for the complete calling-agent guide (tagging strategy, conversation patterns, wikilinks, error handling).
113
+
114
+ Admin tools (OAuth, watchers, custom types) are available behind `engram-mcp --admin` or via the integrations page at [engram-mcp.com/dashboard/integrations](https://engram-mcp.com/dashboard/integrations).
115
+
116
+ ## What it does
117
+
118
+ - **Capture from agents** — `remember()` stores notes, conversations, or any content
119
+ - **Capture from sources** — `ingest()` auto-routes Drive, Notion, YouTube, Obsidian, audio files
120
+ - **Search** — `recall()` does parallel semantic fan-out across all types with recency boost
121
+ - **Bring your own types** — create custom memory types via admin `create_custom_type`
122
+ - **Delegated property extraction** — the calling LLM provides title/tags directly; `suggest_properties` returns content + extraction prompt for backfill
123
+
124
+ ## Embeddings providers
125
+
126
+ | Provider | Tier | Setup |
127
+ |---|---|---|
128
+ | `ollama` (default) | Free | Auto-installed by wizard |
129
+ | `engram` (hosted) | Pro | Paste API key |
130
+ | `voyage` | BYO | Sign up at voyageai.com |
131
+ | `openai` | BYO | Sign up at openai.com |
132
+ | `openai-compatible` | BYO | Any OAI-compatible endpoint |
133
+
134
+ Edit `~/.engram/config.json`:
135
+ ```json
136
+ {
137
+ "embeddings": {
138
+ "provider": "voyage",
139
+ "model": "voyage-3-large",
140
+ "apiKey": "pa-…",
141
+ "dimensions": 1024
142
+ }
143
+ }
144
+ ```
145
+
146
+ Then run `npm run reindex` (or click "Reindex" in the dashboard Settings) to re-embed existing memories against the new provider.
147
+
148
+ ## Setting up Google Drive / Notion
149
+
150
+ Connect Drive and Notion to ingest documents into your local memory store.
151
+ Your OAuth credentials are stored in `~/.engram/config.json` and **never sent to engram-mcp.com**.
152
+
153
+ ### 1 — Get OAuth credentials
154
+
155
+ **Google Drive**
156
+
157
+ 1. Open [Google Cloud Console → Credentials](https://console.cloud.google.com/apis/credentials)
158
+ 2. Create an **OAuth 2.0 Client ID**, type **Web application**
159
+ 3. Add authorized redirect URI: `http://localhost:7777/oauth/callback/drive`
160
+ 4. Copy Client ID and Client Secret
161
+
162
+ **Notion**
163
+
164
+ 1. Open [Notion → My Integrations](https://www.notion.so/my-integrations)
165
+ 2. Create a new integration, set redirect URI: `http://localhost:7777/oauth/callback/notion`
166
+ 3. Copy Client ID and Client Secret
167
+
168
+ ### 2 — Save credentials via the dashboard
169
+
170
+ Open [engram-mcp.com/dashboard/integrations](https://engram-mcp.com/dashboard/integrations) **on the device where `engram-mcp` is running**, paste your credentials, and click **Save credentials**.
171
+
172
+ ### 3 — Authorize access
173
+
174
+ Click **Authorize access** — a browser tab opens for the OAuth consent screen.
175
+ After you approve, tokens are saved locally in SQLite (`~/.engram/engram.db`).
176
+
177
+ ### Manual setup (config.json)
178
+
179
+ If you prefer, edit `~/.engram/config.json` directly:
180
+
181
+ ```json
182
+ {
183
+ "drive": {
184
+ "clientId": "YOUR_GOOGLE_CLIENT_ID",
185
+ "clientSecret": "YOUR_GOOGLE_CLIENT_SECRET",
186
+ "redirectPort": 7777
187
+ },
188
+ "notion": {
189
+ "clientId": "YOUR_NOTION_CLIENT_ID",
190
+ "clientSecret": "YOUR_NOTION_CLIENT_SECRET",
191
+ "redirectPort": 7777
192
+ }
193
+ }
194
+ ```
195
+
196
+ Then run `engram-mcp connect_drive` / `engram-mcp connect_notion` (or use the MCP `connect_drive` / `connect_notion` tools).
197
+
198
+ ---
199
+
200
+ ## Cloud account (Pro — Phase 2)
201
+
202
+ Connect your PC to your Engram cloud account:
203
+
204
+ ```bash
205
+ engram-mcp-pair
206
+ ```
207
+
208
+ The wizard opens a browser to engram-mcp.com, authenticates your account, and stores your JWT + API key locally. After pairing:
209
+
210
+ - **Cloud transit poller** runs every 5 minutes — voice notes, documents, and text sent from your mobile app are automatically ingested into your local memory store.
211
+ - **Bridge Relay** lets the engram-mcp.com online dashboard show a live view of your local memory store (proxied via WSS tunnel, no public IP needed).
212
+
213
+ Set `ENGRAM_PASSPHRASE` in your environment to activate the transit poller at server startup (the passphrase derives the master key used for E2E decryption — never stored):
214
+
215
+ ```bash
216
+ export ENGRAM_PASSPHRASE='your strong passphrase'
217
+ engram-mcp
218
+ ```
219
+
220
+ ## License
221
+
222
+ MIT