@chendpoc/pi-memory 0.1.13 → 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 (799) hide show
  1. package/README.md +66 -258
  2. package/UBIQUITOUS_LANGUAGE.md +81 -0
  3. package/dist/adapters/embed/factory.d.ts +7 -0
  4. package/dist/adapters/embed/factory.d.ts.map +1 -0
  5. package/dist/adapters/embed/factory.js +44 -0
  6. package/dist/adapters/embed/factory.js.map +1 -0
  7. package/dist/adapters/embed/hash.d.ts +3 -0
  8. package/dist/adapters/embed/hash.d.ts.map +1 -0
  9. package/dist/adapters/embed/hash.js +26 -0
  10. package/dist/adapters/embed/hash.js.map +1 -0
  11. package/dist/adapters/embed/normalize.d.ts +3 -0
  12. package/dist/adapters/embed/normalize.d.ts.map +1 -0
  13. package/dist/adapters/embed/normalize.js +15 -0
  14. package/dist/adapters/embed/normalize.js.map +1 -0
  15. package/dist/adapters/embed/ollama.d.ts +8 -0
  16. package/dist/adapters/embed/ollama.d.ts.map +1 -0
  17. package/dist/adapters/embed/ollama.js +31 -0
  18. package/dist/adapters/embed/ollama.js.map +1 -0
  19. package/dist/adapters/embed/openai.d.ts +8 -0
  20. package/dist/adapters/embed/openai.d.ts.map +1 -0
  21. package/dist/adapters/embed/openai.js +30 -0
  22. package/dist/adapters/embed/openai.js.map +1 -0
  23. package/dist/adapters/embed/types.d.ts +9 -0
  24. package/dist/adapters/embed/types.d.ts.map +1 -0
  25. package/dist/adapters/embed/types.js.map +1 -0
  26. package/dist/adapters/http.d.ts +13 -0
  27. package/dist/adapters/http.d.ts.map +1 -0
  28. package/dist/adapters/http.js +31 -0
  29. package/dist/adapters/http.js.map +1 -0
  30. package/dist/adapters/index.d.ts +4 -0
  31. package/dist/adapters/index.d.ts.map +1 -0
  32. package/dist/adapters/index.js +4 -0
  33. package/dist/adapters/index.js.map +1 -0
  34. package/dist/adapters/llm/extractText.d.ts +5 -0
  35. package/dist/adapters/llm/extractText.d.ts.map +1 -0
  36. package/dist/adapters/llm/extractText.js +7 -0
  37. package/dist/adapters/llm/extractText.js.map +1 -0
  38. package/dist/adapters/llm/factory.d.ts +11 -0
  39. package/dist/adapters/llm/factory.d.ts.map +1 -0
  40. package/dist/adapters/llm/factory.js +48 -0
  41. package/dist/adapters/llm/factory.js.map +1 -0
  42. package/dist/adapters/llm/index.d.ts +8 -0
  43. package/dist/adapters/llm/index.d.ts.map +1 -0
  44. package/dist/adapters/llm/index.js +7 -0
  45. package/dist/adapters/llm/index.js.map +1 -0
  46. package/dist/adapters/llm/modelSpec.d.ts +10 -0
  47. package/dist/adapters/llm/modelSpec.d.ts.map +1 -0
  48. package/dist/adapters/llm/modelSpec.js +21 -0
  49. package/dist/adapters/llm/modelSpec.js.map +1 -0
  50. package/dist/adapters/llm/ollama.d.ts +4 -0
  51. package/dist/adapters/llm/ollama.d.ts.map +1 -0
  52. package/dist/adapters/llm/ollama.js +32 -0
  53. package/dist/adapters/llm/ollama.js.map +1 -0
  54. package/dist/adapters/llm/openai-compat.d.ts +4 -0
  55. package/dist/adapters/llm/openai-compat.d.ts.map +1 -0
  56. package/dist/adapters/llm/openai-compat.js +36 -0
  57. package/dist/adapters/llm/openai-compat.js.map +1 -0
  58. package/dist/adapters/llm/pi-ai.d.ts +5 -0
  59. package/dist/adapters/llm/pi-ai.d.ts.map +1 -0
  60. package/dist/adapters/llm/pi-ai.js +60 -0
  61. package/dist/adapters/llm/pi-ai.js.map +1 -0
  62. package/dist/adapters/llm/standalone.d.ts +6 -0
  63. package/dist/adapters/llm/standalone.d.ts.map +1 -0
  64. package/dist/adapters/llm/standalone.js +44 -0
  65. package/dist/adapters/llm/standalone.js.map +1 -0
  66. package/dist/adapters/llm/types.d.ts +15 -0
  67. package/dist/adapters/llm/types.d.ts.map +1 -0
  68. package/dist/adapters/llm/types.js.map +1 -0
  69. package/dist/cli/init.d.ts +3 -0
  70. package/dist/cli/init.d.ts.map +1 -0
  71. package/dist/cli/init.js +13 -0
  72. package/dist/cli/init.js.map +1 -0
  73. package/dist/cli/jobs.d.ts +32 -0
  74. package/dist/cli/jobs.d.ts.map +1 -0
  75. package/dist/cli/jobs.js +100 -0
  76. package/dist/cli/jobs.js.map +1 -0
  77. package/dist/cli/log.d.ts +14 -0
  78. package/dist/cli/log.d.ts.map +1 -0
  79. package/dist/cli/log.js +32 -0
  80. package/dist/cli/log.js.map +1 -0
  81. package/dist/cli/parseArgs.d.ts +35 -0
  82. package/dist/cli/parseArgs.d.ts.map +1 -0
  83. package/dist/cli/parseArgs.js +127 -0
  84. package/dist/cli/parseArgs.js.map +1 -0
  85. package/dist/cli/status.d.ts +44 -0
  86. package/dist/cli/status.d.ts.map +1 -0
  87. package/dist/cli/status.js +238 -0
  88. package/dist/cli/status.js.map +1 -0
  89. package/dist/cli/theme.d.ts +14 -0
  90. package/dist/cli/theme.d.ts.map +1 -0
  91. package/dist/cli/theme.js +20 -0
  92. package/dist/cli/theme.js.map +1 -0
  93. package/dist/cli.js +70 -356
  94. package/dist/cli.js.map +1 -1
  95. package/dist/commands/index.d.ts +6 -0
  96. package/dist/commands/index.d.ts.map +1 -0
  97. package/dist/commands/index.js +14 -0
  98. package/dist/commands/index.js.map +1 -0
  99. package/dist/commands/parseMemoryStatusArgs.d.ts +3 -0
  100. package/dist/commands/parseMemoryStatusArgs.d.ts.map +1 -0
  101. package/dist/commands/parseMemoryStatusArgs.js +15 -0
  102. package/dist/commands/parseMemoryStatusArgs.js.map +1 -0
  103. package/dist/commands/parseRememberArgs.d.ts +10 -0
  104. package/dist/commands/parseRememberArgs.d.ts.map +1 -0
  105. package/dist/commands/parseRememberArgs.js +46 -0
  106. package/dist/commands/parseRememberArgs.js.map +1 -0
  107. package/dist/commands/remember.d.ts +8 -0
  108. package/dist/commands/remember.d.ts.map +1 -0
  109. package/dist/commands/remember.js +30 -0
  110. package/dist/commands/remember.js.map +1 -0
  111. package/dist/commands/status.d.ts +10 -0
  112. package/dist/commands/status.d.ts.map +1 -0
  113. package/dist/commands/status.js +81 -0
  114. package/dist/commands/status.js.map +1 -0
  115. package/dist/commands/types.d.ts +10 -0
  116. package/dist/commands/types.d.ts.map +1 -0
  117. package/dist/commands/types.js +2 -0
  118. package/dist/{consolidation → commands}/types.js.map +1 -1
  119. package/dist/compact/index.d.ts +5 -0
  120. package/dist/compact/index.d.ts.map +1 -0
  121. package/dist/compact/index.js +5 -0
  122. package/dist/compact/index.js.map +1 -0
  123. package/dist/compact/parseMemoryExport.d.ts +6 -0
  124. package/dist/compact/parseMemoryExport.d.ts.map +1 -0
  125. package/dist/compact/parseMemoryExport.js +62 -0
  126. package/dist/compact/parseMemoryExport.js.map +1 -0
  127. package/dist/compact/register.d.ts +10 -0
  128. package/dist/compact/register.d.ts.map +1 -0
  129. package/dist/compact/register.js +47 -0
  130. package/dist/compact/register.js.map +1 -0
  131. package/dist/compact/runSummary.d.ts +6 -0
  132. package/dist/compact/runSummary.d.ts.map +1 -0
  133. package/dist/compact/runSummary.js +29 -0
  134. package/dist/compact/runSummary.js.map +1 -0
  135. package/dist/compact/subagentDelta.d.ts +6 -0
  136. package/dist/compact/subagentDelta.d.ts.map +1 -0
  137. package/dist/compact/subagentDelta.js +13 -0
  138. package/dist/compact/subagentDelta.js.map +1 -0
  139. package/dist/compact/summaryPrompt.d.ts +3 -0
  140. package/dist/compact/summaryPrompt.d.ts.map +1 -0
  141. package/dist/compact/summaryPrompt.js +41 -0
  142. package/dist/compact/summaryPrompt.js.map +1 -0
  143. package/dist/config/agentDir.d.ts +11 -0
  144. package/dist/config/agentDir.d.ts.map +1 -0
  145. package/dist/config/agentDir.js +21 -0
  146. package/dist/config/agentDir.js.map +1 -0
  147. package/dist/config/chunking.d.ts +7 -0
  148. package/dist/config/chunking.d.ts.map +1 -0
  149. package/dist/config/chunking.js +20 -0
  150. package/dist/config/chunking.js.map +1 -0
  151. package/dist/config/env.d.ts +28 -0
  152. package/dist/config/env.d.ts.map +1 -0
  153. package/dist/config/env.js +43 -0
  154. package/dist/config/env.js.map +1 -0
  155. package/dist/config/index.d.ts +7 -0
  156. package/dist/config/index.d.ts.map +1 -0
  157. package/dist/config/index.js +7 -0
  158. package/dist/config/index.js.map +1 -0
  159. package/dist/config/loadEnv.d.ts +10 -0
  160. package/dist/config/loadEnv.d.ts.map +1 -0
  161. package/dist/config/loadEnv.js +25 -0
  162. package/dist/config/loadEnv.js.map +1 -0
  163. package/dist/config/preflightBudget.d.ts +9 -0
  164. package/dist/config/preflightBudget.d.ts.map +1 -0
  165. package/dist/config/preflightBudget.js +16 -0
  166. package/dist/config/preflightBudget.js.map +1 -0
  167. package/dist/config/retrieval.d.ts +10 -0
  168. package/dist/config/retrieval.d.ts.map +1 -0
  169. package/dist/config/retrieval.js +31 -0
  170. package/dist/config/retrieval.js.map +1 -0
  171. package/dist/consolidate/entryKey.d.ts +6 -0
  172. package/dist/consolidate/entryKey.d.ts.map +1 -0
  173. package/dist/consolidate/entryKey.js +5 -0
  174. package/dist/consolidate/entryKey.js.map +1 -0
  175. package/dist/consolidate/index.d.ts +5 -0
  176. package/dist/consolidate/index.d.ts.map +1 -0
  177. package/dist/consolidate/index.js +5 -0
  178. package/dist/consolidate/index.js.map +1 -0
  179. package/dist/consolidate/mergeEntries.d.ts +4 -0
  180. package/dist/consolidate/mergeEntries.d.ts.map +1 -0
  181. package/dist/consolidate/mergeEntries.js +17 -0
  182. package/dist/consolidate/mergeEntries.js.map +1 -0
  183. package/dist/consolidate/mergePrompt.d.ts +4 -0
  184. package/dist/consolidate/mergePrompt.d.ts.map +1 -0
  185. package/dist/consolidate/mergePrompt.js +40 -0
  186. package/dist/consolidate/mergePrompt.js.map +1 -0
  187. package/dist/consolidate/mergeWithLlm.d.ts +4 -0
  188. package/dist/consolidate/mergeWithLlm.d.ts.map +1 -0
  189. package/dist/consolidate/mergeWithLlm.js +27 -0
  190. package/dist/consolidate/mergeWithLlm.js.map +1 -0
  191. package/dist/consolidate/runJob.d.ts +29 -0
  192. package/dist/consolidate/runJob.d.ts.map +1 -0
  193. package/dist/consolidate/runJob.js +48 -0
  194. package/dist/consolidate/runJob.js.map +1 -0
  195. package/dist/consolidate/scheduler.d.ts +18 -0
  196. package/dist/consolidate/scheduler.d.ts.map +1 -0
  197. package/dist/consolidate/scheduler.js +32 -0
  198. package/dist/consolidate/scheduler.js.map +1 -0
  199. package/dist/constants/chunking.d.ts +7 -0
  200. package/dist/constants/chunking.d.ts.map +1 -0
  201. package/dist/constants/chunking.js +7 -0
  202. package/dist/constants/chunking.js.map +1 -0
  203. package/dist/constants/env.d.ts +44 -0
  204. package/dist/constants/env.d.ts.map +1 -0
  205. package/dist/constants/env.js +49 -0
  206. package/dist/constants/env.js.map +1 -0
  207. package/dist/constants/index.d.ts +8 -0
  208. package/dist/constants/index.d.ts.map +1 -0
  209. package/dist/constants/index.js +8 -0
  210. package/dist/constants/index.js.map +1 -0
  211. package/dist/constants/memory.d.ts +17 -0
  212. package/dist/constants/memory.d.ts.map +1 -0
  213. package/dist/constants/memory.js +16 -0
  214. package/dist/constants/memory.js.map +1 -0
  215. package/dist/constants/paths.d.ts +23 -0
  216. package/dist/constants/paths.d.ts.map +1 -0
  217. package/dist/constants/paths.js +23 -0
  218. package/dist/constants/paths.js.map +1 -0
  219. package/dist/constants/preflight.d.ts +10 -0
  220. package/dist/constants/preflight.d.ts.map +1 -0
  221. package/dist/constants/preflight.js +10 -0
  222. package/dist/constants/preflight.js.map +1 -0
  223. package/dist/constants/retrieval.d.ts +10 -0
  224. package/dist/constants/retrieval.d.ts.map +1 -0
  225. package/dist/constants/retrieval.js +10 -0
  226. package/dist/constants/retrieval.js.map +1 -0
  227. package/dist/constants/security.d.ts +5 -0
  228. package/dist/constants/security.d.ts.map +1 -0
  229. package/dist/constants/security.js +5 -0
  230. package/dist/constants/security.js.map +1 -0
  231. package/dist/constants/timing.d.ts +36 -0
  232. package/dist/constants/timing.d.ts.map +1 -0
  233. package/dist/constants/timing.js +36 -0
  234. package/dist/constants/timing.js.map +1 -0
  235. package/dist/index.d.ts +11 -29
  236. package/dist/index.d.ts.map +1 -1
  237. package/dist/index.js +11 -28
  238. package/dist/index.js.map +1 -1
  239. package/dist/init/workspace.d.ts +15 -0
  240. package/dist/init/workspace.d.ts.map +1 -0
  241. package/dist/init/workspace.js +32 -0
  242. package/dist/init/workspace.js.map +1 -0
  243. package/dist/ipc/jsonlFramer.d.ts +9 -0
  244. package/dist/ipc/jsonlFramer.d.ts.map +1 -0
  245. package/dist/ipc/jsonlFramer.js +26 -0
  246. package/dist/ipc/jsonlFramer.js.map +1 -0
  247. package/dist/pi-extension.d.ts +0 -2
  248. package/dist/pi-extension.d.ts.map +1 -1
  249. package/dist/pi-extension.js +161 -520
  250. package/dist/pi-extension.js.map +1 -1
  251. package/dist/preflight/episodic.d.ts +20 -0
  252. package/dist/preflight/episodic.d.ts.map +1 -0
  253. package/dist/preflight/episodic.js +109 -0
  254. package/dist/preflight/episodic.js.map +1 -0
  255. package/dist/preflight/queryCache.d.ts +15 -0
  256. package/dist/preflight/queryCache.d.ts.map +1 -0
  257. package/dist/preflight/queryCache.js +46 -0
  258. package/dist/preflight/queryCache.js.map +1 -0
  259. package/dist/preflight/queryIntent.d.ts +20 -0
  260. package/dist/preflight/queryIntent.d.ts.map +1 -0
  261. package/dist/preflight/queryIntent.js +75 -0
  262. package/dist/preflight/queryIntent.js.map +1 -0
  263. package/dist/preflight/render.d.ts +8 -33
  264. package/dist/preflight/render.d.ts.map +1 -1
  265. package/dist/preflight/render.js +29 -126
  266. package/dist/preflight/render.js.map +1 -1
  267. package/dist/preflight/session.d.ts +3 -0
  268. package/dist/preflight/session.d.ts.map +1 -0
  269. package/dist/preflight/session.js +6 -0
  270. package/dist/preflight/session.js.map +1 -0
  271. package/dist/preflight/strip.d.ts +0 -8
  272. package/dist/preflight/strip.d.ts.map +1 -1
  273. package/dist/preflight/strip.js +2 -11
  274. package/dist/preflight/strip.js.map +1 -1
  275. package/dist/shutdown/enqueue.d.ts +12 -0
  276. package/dist/shutdown/enqueue.d.ts.map +1 -0
  277. package/dist/shutdown/enqueue.js +14 -0
  278. package/dist/shutdown/enqueue.js.map +1 -0
  279. package/dist/shutdown/extractPrompt.d.ts +4 -0
  280. package/dist/shutdown/extractPrompt.d.ts.map +1 -0
  281. package/dist/shutdown/extractPrompt.js +29 -0
  282. package/dist/shutdown/extractPrompt.js.map +1 -0
  283. package/dist/shutdown/processed.d.ts +9 -0
  284. package/dist/shutdown/processed.d.ts.map +1 -0
  285. package/dist/shutdown/processed.js +28 -0
  286. package/dist/shutdown/processed.js.map +1 -0
  287. package/dist/shutdown/readQueue.d.ts +4 -0
  288. package/dist/shutdown/readQueue.d.ts.map +1 -0
  289. package/dist/shutdown/readQueue.js +26 -0
  290. package/dist/shutdown/readQueue.js.map +1 -0
  291. package/dist/shutdown/runDrainJob.d.ts +26 -0
  292. package/dist/shutdown/runDrainJob.d.ts.map +1 -0
  293. package/dist/shutdown/runDrainJob.js +143 -0
  294. package/dist/shutdown/runDrainJob.js.map +1 -0
  295. package/dist/shutdown/sessionReader.d.ts +6 -0
  296. package/dist/shutdown/sessionReader.d.ts.map +1 -0
  297. package/dist/shutdown/sessionReader.js +44 -0
  298. package/dist/shutdown/sessionReader.js.map +1 -0
  299. package/dist/sidecar/client.d.ts +17 -16
  300. package/dist/sidecar/client.d.ts.map +1 -1
  301. package/dist/sidecar/client.js +64 -100
  302. package/dist/sidecar/client.js.map +1 -1
  303. package/dist/sidecar/paths.d.ts +8 -0
  304. package/dist/sidecar/paths.d.ts.map +1 -0
  305. package/dist/sidecar/paths.js +23 -0
  306. package/dist/sidecar/paths.js.map +1 -0
  307. package/dist/sidecar/protocol.d.ts +54 -0
  308. package/dist/sidecar/protocol.d.ts.map +1 -0
  309. package/dist/sidecar/protocol.js +4 -0
  310. package/dist/sidecar/protocol.js.map +1 -0
  311. package/dist/sidecar/reindexBridge.d.ts +13 -0
  312. package/dist/sidecar/reindexBridge.d.ts.map +1 -0
  313. package/dist/sidecar/reindexBridge.js +37 -0
  314. package/dist/sidecar/reindexBridge.js.map +1 -0
  315. package/dist/sidecar/server/process.d.ts +2 -0
  316. package/dist/sidecar/server/process.d.ts.map +1 -0
  317. package/dist/sidecar/server/process.js +22 -0
  318. package/dist/sidecar/server/process.js.map +1 -0
  319. package/dist/sidecar/server/query.d.ts +8 -0
  320. package/dist/sidecar/server/query.d.ts.map +1 -0
  321. package/dist/sidecar/server/query.js +7 -0
  322. package/dist/sidecar/server/query.js.map +1 -0
  323. package/dist/sidecar/server/reindex.d.ts +8 -0
  324. package/dist/sidecar/server/reindex.d.ts.map +1 -0
  325. package/dist/sidecar/server/reindex.js +12 -0
  326. package/dist/sidecar/server/reindex.js.map +1 -0
  327. package/dist/sidecar/server/server.d.ts +11 -0
  328. package/dist/sidecar/server/server.d.ts.map +1 -0
  329. package/dist/sidecar/server/server.js +76 -0
  330. package/dist/sidecar/server/server.js.map +1 -0
  331. package/dist/sidecar/server/stats.d.ts +8 -0
  332. package/dist/sidecar/server/stats.d.ts.map +1 -0
  333. package/dist/sidecar/server/stats.js +18 -0
  334. package/dist/sidecar/server/stats.js.map +1 -0
  335. package/dist/sidecar/server/vec/embedder.d.ts +2 -0
  336. package/dist/sidecar/server/vec/embedder.d.ts.map +1 -0
  337. package/dist/sidecar/server/vec/embedder.js +2 -0
  338. package/dist/sidecar/server/vec/embedder.js.map +1 -0
  339. package/dist/sidecar/server/vec/mmr.d.ts +13 -0
  340. package/dist/sidecar/server/vec/mmr.d.ts.map +1 -0
  341. package/dist/sidecar/server/vec/mmr.js +36 -0
  342. package/dist/sidecar/server/vec/mmr.js.map +1 -0
  343. package/dist/sidecar/server/vec/store.d.ts +30 -0
  344. package/dist/sidecar/server/vec/store.d.ts.map +1 -0
  345. package/dist/sidecar/server/vec/store.js +179 -0
  346. package/dist/sidecar/server/vec/store.js.map +1 -0
  347. package/dist/sidecar/sidecarManager.d.ts +10 -0
  348. package/dist/sidecar/sidecarManager.d.ts.map +1 -0
  349. package/dist/sidecar/sidecarManager.js +111 -0
  350. package/dist/sidecar/sidecarManager.js.map +1 -0
  351. package/dist/sidecar/utils.d.ts +3 -0
  352. package/dist/sidecar/utils.d.ts.map +1 -0
  353. package/dist/sidecar/utils.js +27 -0
  354. package/dist/sidecar/utils.js.map +1 -0
  355. package/dist/store/backend.d.ts +12 -0
  356. package/dist/store/backend.d.ts.map +1 -0
  357. package/dist/store/backend.js +47 -0
  358. package/dist/store/backend.js.map +1 -0
  359. package/dist/store/index.d.ts +6 -0
  360. package/dist/store/index.d.ts.map +1 -0
  361. package/dist/store/index.js +6 -0
  362. package/dist/store/index.js.map +1 -0
  363. package/dist/store/indexChunks.d.ts +9 -0
  364. package/dist/store/indexChunks.d.ts.map +1 -0
  365. package/dist/store/indexChunks.js +78 -0
  366. package/dist/store/indexChunks.js.map +1 -0
  367. package/dist/store/markdown/format.d.ts +5 -0
  368. package/dist/store/markdown/format.d.ts.map +1 -0
  369. package/dist/store/markdown/format.js +14 -0
  370. package/dist/store/markdown/format.js.map +1 -0
  371. package/dist/store/markdown/parse.d.ts +5 -0
  372. package/dist/store/markdown/parse.d.ts.map +1 -0
  373. package/dist/store/markdown/parse.js +57 -0
  374. package/dist/store/markdown/parse.js.map +1 -0
  375. package/dist/store/markdown/template.d.ts +3 -0
  376. package/dist/store/markdown/template.d.ts.map +1 -0
  377. package/dist/store/markdown/template.js +22 -0
  378. package/dist/store/markdown/template.js.map +1 -0
  379. package/dist/store/memoryStore.d.ts +69 -0
  380. package/dist/store/memoryStore.d.ts.map +1 -0
  381. package/dist/store/memoryStore.js +421 -0
  382. package/dist/store/memoryStore.js.map +1 -0
  383. package/dist/store/paths.d.ts +10 -0
  384. package/dist/store/paths.d.ts.map +1 -0
  385. package/dist/store/paths.js +19 -0
  386. package/dist/store/paths.js.map +1 -0
  387. package/dist/store/types.d.ts +38 -0
  388. package/dist/store/types.d.ts.map +1 -0
  389. package/dist/store/types.js +3 -0
  390. package/dist/store/types.js.map +1 -0
  391. package/dist/ui/memoryStatusWidget.d.ts +20 -0
  392. package/dist/ui/memoryStatusWidget.d.ts.map +1 -0
  393. package/dist/ui/memoryStatusWidget.js +51 -0
  394. package/dist/ui/memoryStatusWidget.js.map +1 -0
  395. package/dist/utils/debugLog.d.ts +4 -0
  396. package/dist/utils/debugLog.d.ts.map +1 -0
  397. package/dist/utils/debugLog.js +14 -0
  398. package/dist/utils/debugLog.js.map +1 -0
  399. package/dist/utils/fs.d.ts +26 -0
  400. package/dist/utils/fs.d.ts.map +1 -0
  401. package/dist/utils/fs.js +101 -0
  402. package/dist/utils/fs.js.map +1 -0
  403. package/dist/utils/index.d.ts +8 -0
  404. package/dist/utils/index.d.ts.map +1 -0
  405. package/dist/utils/index.js +8 -0
  406. package/dist/utils/index.js.map +1 -0
  407. package/dist/utils/paths.d.ts +22 -0
  408. package/dist/utils/paths.d.ts.map +1 -0
  409. package/dist/utils/paths.js +51 -0
  410. package/dist/utils/paths.js.map +1 -0
  411. package/dist/utils/platform.d.ts +7 -0
  412. package/dist/utils/platform.d.ts.map +1 -0
  413. package/dist/utils/platform.js +18 -0
  414. package/dist/utils/platform.js.map +1 -0
  415. package/dist/utils/scheduler.d.ts +33 -0
  416. package/dist/utils/scheduler.d.ts.map +1 -0
  417. package/dist/utils/scheduler.js +63 -0
  418. package/dist/utils/scheduler.js.map +1 -0
  419. package/dist/utils/socket.d.ts +7 -0
  420. package/dist/utils/socket.d.ts.map +1 -0
  421. package/dist/utils/socket.js +35 -0
  422. package/dist/utils/socket.js.map +1 -0
  423. package/dist/utils/time.d.ts +22 -0
  424. package/dist/utils/time.d.ts.map +1 -0
  425. package/dist/utils/time.js +42 -0
  426. package/dist/utils/time.js.map +1 -0
  427. package/package.json +28 -10
  428. package/scripts/init-memory-workspace.mjs +62 -0
  429. package/scripts/path-utils.mjs +12 -0
  430. package/scripts/platform-fs.mjs +65 -0
  431. package/scripts/postinstall.mjs +17 -0
  432. package/src/adapters/embed/factory.ts +50 -0
  433. package/src/adapters/embed/hash.ts +29 -0
  434. package/src/adapters/embed/normalize.ts +13 -0
  435. package/src/adapters/embed/ollama.ts +49 -0
  436. package/src/adapters/embed/openai.ts +46 -0
  437. package/src/adapters/embed/types.ts +9 -0
  438. package/src/adapters/http.ts +42 -0
  439. package/src/adapters/index.ts +16 -0
  440. package/src/adapters/llm/extractText.ts +6 -0
  441. package/src/adapters/llm/factory.ts +60 -0
  442. package/src/adapters/llm/index.ts +7 -0
  443. package/src/adapters/llm/modelSpec.ts +39 -0
  444. package/src/adapters/llm/ollama.ts +42 -0
  445. package/src/adapters/llm/openai-compat.ts +46 -0
  446. package/src/adapters/llm/pi-ai.ts +75 -0
  447. package/src/adapters/llm/standalone.ts +60 -0
  448. package/src/adapters/llm/types.ts +16 -0
  449. package/src/cli/init.ts +18 -0
  450. package/src/cli/jobs.ts +144 -0
  451. package/src/cli/log.ts +46 -0
  452. package/src/cli/parseArgs.ts +175 -0
  453. package/src/cli/status.ts +323 -0
  454. package/src/cli/theme.ts +26 -0
  455. package/src/cli.ts +80 -374
  456. package/src/commands/index.ts +20 -0
  457. package/src/commands/parseMemoryStatusArgs.ts +11 -0
  458. package/src/commands/parseRememberArgs.ts +55 -0
  459. package/src/commands/remember.ts +43 -0
  460. package/src/commands/status.ts +112 -0
  461. package/src/commands/types.ts +12 -0
  462. package/src/compact/index.ts +4 -0
  463. package/src/compact/parseMemoryExport.ts +71 -0
  464. package/src/compact/register.ts +57 -0
  465. package/src/compact/runSummary.ts +42 -0
  466. package/src/compact/subagentDelta.ts +22 -0
  467. package/src/compact/summaryPrompt.ts +45 -0
  468. package/src/config/agentDir.ts +24 -0
  469. package/src/config/chunking.ts +36 -0
  470. package/src/config/env.ts +97 -0
  471. package/src/config/index.ts +6 -0
  472. package/src/config/loadEnv.ts +26 -0
  473. package/src/config/preflightBudget.ts +33 -0
  474. package/src/config/retrieval.ts +50 -0
  475. package/src/consolidate/entryKey.ts +4 -0
  476. package/src/consolidate/index.ts +4 -0
  477. package/src/consolidate/mergeEntries.ts +22 -0
  478. package/src/consolidate/mergePrompt.ts +46 -0
  479. package/src/consolidate/mergeWithLlm.ts +39 -0
  480. package/src/consolidate/runJob.ts +81 -0
  481. package/src/consolidate/scheduler.ts +54 -0
  482. package/src/constants/chunking.ts +8 -0
  483. package/src/constants/env.ts +56 -0
  484. package/src/constants/index.ts +7 -0
  485. package/src/constants/memory.ts +22 -0
  486. package/src/constants/paths.ts +26 -0
  487. package/src/constants/preflight.ts +13 -0
  488. package/src/constants/retrieval.ts +10 -0
  489. package/src/constants/security.ts +5 -0
  490. package/src/constants/timing.ts +46 -0
  491. package/src/index.ts +11 -247
  492. package/src/init/workspace.ts +44 -0
  493. package/src/ipc/jsonlFramer.ts +29 -0
  494. package/src/pi-extension.ts +177 -606
  495. package/src/preflight/episodic.ts +159 -0
  496. package/src/preflight/queryCache.ts +59 -0
  497. package/src/preflight/queryIntent.ts +92 -0
  498. package/src/preflight/render.ts +34 -180
  499. package/src/preflight/session.ts +7 -0
  500. package/src/preflight/strip.ts +4 -11
  501. package/src/shutdown/enqueue.ts +29 -0
  502. package/src/shutdown/extractPrompt.ts +27 -0
  503. package/src/shutdown/processed.ts +45 -0
  504. package/src/shutdown/readQueue.ts +26 -0
  505. package/src/shutdown/runDrainJob.ts +202 -0
  506. package/src/shutdown/sessionReader.ts +61 -0
  507. package/src/sidecar/client.ts +98 -150
  508. package/src/sidecar/paths.ts +31 -0
  509. package/src/sidecar/protocol.ts +38 -0
  510. package/src/sidecar/reindexBridge.ts +52 -0
  511. package/src/sidecar/server/process.ts +27 -0
  512. package/src/sidecar/server/query.ts +16 -0
  513. package/src/sidecar/server/reindex.ts +21 -0
  514. package/src/sidecar/server/server.ts +105 -0
  515. package/src/sidecar/server/stats.ts +23 -0
  516. package/src/sidecar/server/vec/embedder.ts +1 -0
  517. package/src/sidecar/server/vec/mmr.ts +55 -0
  518. package/src/sidecar/server/vec/store.ts +232 -0
  519. package/src/sidecar/sidecarManager.ts +134 -0
  520. package/src/sidecar/utils.ts +28 -0
  521. package/src/store/backend.ts +66 -0
  522. package/src/store/index.ts +5 -0
  523. package/src/store/indexChunks.ts +89 -0
  524. package/src/store/markdown/format.ts +16 -0
  525. package/src/store/markdown/parse.ts +63 -0
  526. package/src/store/markdown/template.ts +24 -0
  527. package/src/store/memoryStore.ts +518 -0
  528. package/src/store/paths.ts +33 -0
  529. package/src/store/proper-lockfile.d.ts +3 -0
  530. package/src/store/types.ts +46 -0
  531. package/src/ui/memoryStatusWidget.ts +80 -0
  532. package/src/utils/debugLog.ts +22 -0
  533. package/src/utils/fs.ts +115 -0
  534. package/src/utils/index.ts +68 -0
  535. package/src/utils/paths.ts +67 -0
  536. package/src/utils/platform.ts +20 -0
  537. package/src/utils/scheduler.ts +98 -0
  538. package/src/utils/socket.ts +33 -0
  539. package/src/utils/time.ts +51 -0
  540. package/templates/MEMORY.md.example +22 -0
  541. package/dist/adapters/ollamaClient.d.ts +0 -11
  542. package/dist/adapters/ollamaClient.d.ts.map +0 -1
  543. package/dist/adapters/ollamaClient.js +0 -122
  544. package/dist/adapters/ollamaClient.js.map +0 -1
  545. package/dist/adapters/openaiCompatClient.d.ts +0 -11
  546. package/dist/adapters/openaiCompatClient.d.ts.map +0 -1
  547. package/dist/adapters/openaiCompatClient.js +0 -118
  548. package/dist/adapters/openaiCompatClient.js.map +0 -1
  549. package/dist/adapters/piComplete.d.ts +0 -17
  550. package/dist/adapters/piComplete.d.ts.map +0 -1
  551. package/dist/adapters/piComplete.js +0 -169
  552. package/dist/adapters/piComplete.js.map +0 -1
  553. package/dist/bundle/install.d.ts +0 -34
  554. package/dist/bundle/install.d.ts.map +0 -1
  555. package/dist/bundle/install.js +0 -183
  556. package/dist/bundle/install.js.map +0 -1
  557. package/dist/cache/memoryCaches.d.ts +0 -32
  558. package/dist/cache/memoryCaches.d.ts.map +0 -1
  559. package/dist/cache/memoryCaches.js +0 -59
  560. package/dist/cache/memoryCaches.js.map +0 -1
  561. package/dist/config.d.ts +0 -55
  562. package/dist/config.d.ts.map +0 -1
  563. package/dist/config.js +0 -85
  564. package/dist/config.js.map +0 -1
  565. package/dist/consolidation/enqueue.d.ts +0 -33
  566. package/dist/consolidation/enqueue.d.ts.map +0 -1
  567. package/dist/consolidation/enqueue.js +0 -145
  568. package/dist/consolidation/enqueue.js.map +0 -1
  569. package/dist/consolidation/index.d.ts +0 -19
  570. package/dist/consolidation/index.d.ts.map +0 -1
  571. package/dist/consolidation/index.js +0 -15
  572. package/dist/consolidation/index.js.map +0 -1
  573. package/dist/consolidation/lock.d.ts +0 -5
  574. package/dist/consolidation/lock.d.ts.map +0 -1
  575. package/dist/consolidation/lock.js +0 -33
  576. package/dist/consolidation/lock.js.map +0 -1
  577. package/dist/consolidation/log.d.ts +0 -8
  578. package/dist/consolidation/log.d.ts.map +0 -1
  579. package/dist/consolidation/log.js +0 -32
  580. package/dist/consolidation/log.js.map +0 -1
  581. package/dist/consolidation/memoryIndex.d.ts +0 -18
  582. package/dist/consolidation/memoryIndex.d.ts.map +0 -1
  583. package/dist/consolidation/memoryIndex.js +0 -100
  584. package/dist/consolidation/memoryIndex.js.map +0 -1
  585. package/dist/consolidation/phase2/runPhase2.d.ts +0 -23
  586. package/dist/consolidation/phase2/runPhase2.d.ts.map +0 -1
  587. package/dist/consolidation/phase2/runPhase2.js +0 -196
  588. package/dist/consolidation/phase2/runPhase2.js.map +0 -1
  589. package/dist/consolidation/scheduler/launchd.d.ts +0 -5
  590. package/dist/consolidation/scheduler/launchd.d.ts.map +0 -1
  591. package/dist/consolidation/scheduler/launchd.js +0 -54
  592. package/dist/consolidation/scheduler/launchd.js.map +0 -1
  593. package/dist/consolidation/scheduler/runConsolidate.d.ts +0 -26
  594. package/dist/consolidation/scheduler/runConsolidate.d.ts.map +0 -1
  595. package/dist/consolidation/scheduler/runConsolidate.js +0 -83
  596. package/dist/consolidation/scheduler/runConsolidate.js.map +0 -1
  597. package/dist/consolidation/scheduler/setupSchedule.d.ts +0 -3
  598. package/dist/consolidation/scheduler/setupSchedule.d.ts.map +0 -1
  599. package/dist/consolidation/scheduler/setupSchedule.js +0 -79
  600. package/dist/consolidation/scheduler/setupSchedule.js.map +0 -1
  601. package/dist/consolidation/scheduler/systemd.d.ts +0 -9
  602. package/dist/consolidation/scheduler/systemd.d.ts.map +0 -1
  603. package/dist/consolidation/scheduler/systemd.js +0 -57
  604. package/dist/consolidation/scheduler/systemd.js.map +0 -1
  605. package/dist/consolidation/scheduler/types.d.ts +0 -24
  606. package/dist/consolidation/scheduler/types.d.ts.map +0 -1
  607. package/dist/consolidation/scheduler/types.js.map +0 -1
  608. package/dist/consolidation/scope.d.ts +0 -12
  609. package/dist/consolidation/scope.d.ts.map +0 -1
  610. package/dist/consolidation/scope.js +0 -51
  611. package/dist/consolidation/scope.js.map +0 -1
  612. package/dist/consolidation/stage1/deltaExtract.d.ts +0 -3
  613. package/dist/consolidation/stage1/deltaExtract.d.ts.map +0 -1
  614. package/dist/consolidation/stage1/deltaExtract.js +0 -19
  615. package/dist/consolidation/stage1/deltaExtract.js.map +0 -1
  616. package/dist/consolidation/stage1/drainQueue.d.ts +0 -21
  617. package/dist/consolidation/stage1/drainQueue.d.ts.map +0 -1
  618. package/dist/consolidation/stage1/drainQueue.js +0 -113
  619. package/dist/consolidation/stage1/drainQueue.js.map +0 -1
  620. package/dist/consolidation/stage1/extractSession.d.ts +0 -6
  621. package/dist/consolidation/stage1/extractSession.d.ts.map +0 -1
  622. package/dist/consolidation/stage1/extractSession.js +0 -47
  623. package/dist/consolidation/stage1/extractSession.js.map +0 -1
  624. package/dist/consolidation/stage1/store.d.ts +0 -45
  625. package/dist/consolidation/stage1/store.d.ts.map +0 -1
  626. package/dist/consolidation/stage1/store.js +0 -297
  627. package/dist/consolidation/stage1/store.js.map +0 -1
  628. package/dist/consolidation/types.d.ts +0 -49
  629. package/dist/consolidation/types.d.ts.map +0 -1
  630. package/dist/errclass.d.ts +0 -7
  631. package/dist/errclass.d.ts.map +0 -1
  632. package/dist/errclass.js +0 -32
  633. package/dist/errclass.js.map +0 -1
  634. package/dist/extension.d.ts +0 -24
  635. package/dist/extension.d.ts.map +0 -1
  636. package/dist/extension.js +0 -7
  637. package/dist/extension.js.map +0 -1
  638. package/dist/fallback/index.d.ts +0 -11
  639. package/dist/fallback/index.d.ts.map +0 -1
  640. package/dist/fallback/index.js +0 -16
  641. package/dist/fallback/index.js.map +0 -1
  642. package/dist/fallback/llmRerank.d.ts +0 -19
  643. package/dist/fallback/llmRerank.d.ts.map +0 -1
  644. package/dist/fallback/llmRerank.js +0 -68
  645. package/dist/fallback/llmRerank.js.map +0 -1
  646. package/dist/fallback/memoryMd.d.ts +0 -6
  647. package/dist/fallback/memoryMd.d.ts.map +0 -1
  648. package/dist/fallback/memoryMd.js +0 -35
  649. package/dist/fallback/memoryMd.js.map +0 -1
  650. package/dist/fallback/sessionIndex.d.ts +0 -35
  651. package/dist/fallback/sessionIndex.d.ts.map +0 -1
  652. package/dist/fallback/sessionIndex.js +0 -239
  653. package/dist/fallback/sessionIndex.js.map +0 -1
  654. package/dist/fallback/sessionSearch.d.ts +0 -18
  655. package/dist/fallback/sessionSearch.d.ts.map +0 -1
  656. package/dist/fallback/sessionSearch.js +0 -234
  657. package/dist/fallback/sessionSearch.js.map +0 -1
  658. package/dist/local/graphQuery.d.ts +0 -31
  659. package/dist/local/graphQuery.d.ts.map +0 -1
  660. package/dist/local/graphQuery.js +0 -195
  661. package/dist/local/graphQuery.js.map +0 -1
  662. package/dist/paths.d.ts +0 -7
  663. package/dist/paths.d.ts.map +0 -1
  664. package/dist/paths.js +0 -26
  665. package/dist/paths.js.map +0 -1
  666. package/dist/preflight/detectIntents.d.ts +0 -102
  667. package/dist/preflight/detectIntents.d.ts.map +0 -1
  668. package/dist/preflight/detectIntents.js +0 -631
  669. package/dist/preflight/detectIntents.js.map +0 -1
  670. package/dist/preflight/hook.d.ts +0 -76
  671. package/dist/preflight/hook.d.ts.map +0 -1
  672. package/dist/preflight/hook.js +0 -122
  673. package/dist/preflight/hook.js.map +0 -1
  674. package/dist/service.d.ts +0 -72
  675. package/dist/service.d.ts.map +0 -1
  676. package/dist/service.js +0 -257
  677. package/dist/service.js.map +0 -1
  678. package/dist/session/activeBranch.d.ts +0 -17
  679. package/dist/session/activeBranch.d.ts.map +0 -1
  680. package/dist/session/activeBranch.js +0 -251
  681. package/dist/session/activeBranch.js.map +0 -1
  682. package/dist/settings.d.ts +0 -41
  683. package/dist/settings.d.ts.map +0 -1
  684. package/dist/settings.js +0 -85
  685. package/dist/settings.js.map +0 -1
  686. package/dist/sidecar/bundle.d.ts +0 -19
  687. package/dist/sidecar/bundle.d.ts.map +0 -1
  688. package/dist/sidecar/bundle.js +0 -39
  689. package/dist/sidecar/bundle.js.map +0 -1
  690. package/dist/sidecar/process.d.ts +0 -14
  691. package/dist/sidecar/process.d.ts.map +0 -1
  692. package/dist/sidecar/process.js +0 -138
  693. package/dist/sidecar/process.js.map +0 -1
  694. package/dist/tools/memoryAppend.d.ts +0 -47
  695. package/dist/tools/memoryAppend.d.ts.map +0 -1
  696. package/dist/tools/memoryAppend.js +0 -138
  697. package/dist/tools/memoryAppend.js.map +0 -1
  698. package/dist/tools/memoryRecall.d.ts +0 -113
  699. package/dist/tools/memoryRecall.d.ts.map +0 -1
  700. package/dist/tools/memoryRecall.js +0 -351
  701. package/dist/tools/memoryRecall.js.map +0 -1
  702. package/dist/trainer/bundleBuilder.d.ts +0 -30
  703. package/dist/trainer/bundleBuilder.d.ts.map +0 -1
  704. package/dist/trainer/bundleBuilder.js +0 -106
  705. package/dist/trainer/bundleBuilder.js.map +0 -1
  706. package/dist/trainer/bundleLoader.d.ts +0 -12
  707. package/dist/trainer/bundleLoader.d.ts.map +0 -1
  708. package/dist/trainer/bundleLoader.js +0 -59
  709. package/dist/trainer/bundleLoader.js.map +0 -1
  710. package/dist/trainer/deltaMerge.d.ts +0 -38
  711. package/dist/trainer/deltaMerge.d.ts.map +0 -1
  712. package/dist/trainer/deltaMerge.js +0 -183
  713. package/dist/trainer/deltaMerge.js.map +0 -1
  714. package/dist/trainer/entityResolver.d.ts +0 -27
  715. package/dist/trainer/entityResolver.d.ts.map +0 -1
  716. package/dist/trainer/entityResolver.js +0 -92
  717. package/dist/trainer/entityResolver.js.map +0 -1
  718. package/dist/trainer/extractFacts.d.ts +0 -67
  719. package/dist/trainer/extractFacts.d.ts.map +0 -1
  720. package/dist/trainer/extractFacts.js +0 -213
  721. package/dist/trainer/extractFacts.js.map +0 -1
  722. package/dist/trainer/index.d.ts +0 -54
  723. package/dist/trainer/index.d.ts.map +0 -1
  724. package/dist/trainer/index.js +0 -82
  725. package/dist/trainer/index.js.map +0 -1
  726. package/dist/trainer/llmExtractor.d.ts +0 -16
  727. package/dist/trainer/llmExtractor.d.ts.map +0 -1
  728. package/dist/trainer/llmExtractor.js +0 -146
  729. package/dist/trainer/llmExtractor.js.map +0 -1
  730. package/dist/trainer/marker.d.ts +0 -10
  731. package/dist/trainer/marker.d.ts.map +0 -1
  732. package/dist/trainer/marker.js +0 -28
  733. package/dist/trainer/marker.js.map +0 -1
  734. package/dist/trainer/scheduler.d.ts +0 -33
  735. package/dist/trainer/scheduler.d.ts.map +0 -1
  736. package/dist/trainer/scheduler.js +0 -73
  737. package/dist/trainer/scheduler.js.map +0 -1
  738. package/dist/trainer/sessionLoader.d.ts +0 -26
  739. package/dist/trainer/sessionLoader.d.ts.map +0 -1
  740. package/dist/trainer/sessionLoader.js +0 -145
  741. package/dist/trainer/sessionLoader.js.map +0 -1
  742. package/dist/types.d.ts +0 -135
  743. package/dist/types.d.ts.map +0 -1
  744. package/dist/types.js +0 -8
  745. package/dist/types.js.map +0 -1
  746. package/src/adapters/ollamaClient.ts +0 -179
  747. package/src/adapters/openaiCompatClient.ts +0 -155
  748. package/src/adapters/piComplete.ts +0 -233
  749. package/src/bundle/install.ts +0 -206
  750. package/src/cache/memoryCaches.ts +0 -72
  751. package/src/config.ts +0 -180
  752. package/src/consolidation/enqueue.ts +0 -205
  753. package/src/consolidation/index.ts +0 -90
  754. package/src/consolidation/lock.ts +0 -41
  755. package/src/consolidation/log.ts +0 -43
  756. package/src/consolidation/memoryIndex.ts +0 -127
  757. package/src/consolidation/phase2/runPhase2.ts +0 -255
  758. package/src/consolidation/scheduler/launchd.ts +0 -62
  759. package/src/consolidation/scheduler/runConsolidate.ts +0 -115
  760. package/src/consolidation/scheduler/setupSchedule.ts +0 -106
  761. package/src/consolidation/scheduler/systemd.ts +0 -78
  762. package/src/consolidation/scheduler/types.ts +0 -27
  763. package/src/consolidation/scope.ts +0 -58
  764. package/src/consolidation/stage1/deltaExtract.ts +0 -29
  765. package/src/consolidation/stage1/drainQueue.ts +0 -143
  766. package/src/consolidation/stage1/extractSession.ts +0 -58
  767. package/src/consolidation/stage1/store.ts +0 -411
  768. package/src/consolidation/types.ts +0 -52
  769. package/src/errclass.ts +0 -37
  770. package/src/extension.ts +0 -23
  771. package/src/fallback/index.ts +0 -24
  772. package/src/fallback/llmRerank.ts +0 -97
  773. package/src/fallback/memoryMd.ts +0 -36
  774. package/src/fallback/sessionIndex.ts +0 -290
  775. package/src/fallback/sessionSearch.ts +0 -261
  776. package/src/local/graphQuery.ts +0 -252
  777. package/src/paths.ts +0 -28
  778. package/src/preflight/detectIntents.ts +0 -660
  779. package/src/preflight/hook.ts +0 -213
  780. package/src/service.ts +0 -306
  781. package/src/session/activeBranch.ts +0 -294
  782. package/src/settings.ts +0 -161
  783. package/src/sidecar/bundle.ts +0 -52
  784. package/src/sidecar/process.ts +0 -160
  785. package/src/tools/memoryAppend.ts +0 -166
  786. package/src/tools/memoryRecall.ts +0 -388
  787. package/src/trainer/bundleBuilder.ts +0 -192
  788. package/src/trainer/bundleLoader.ts +0 -105
  789. package/src/trainer/deltaMerge.ts +0 -221
  790. package/src/trainer/entityResolver.ts +0 -140
  791. package/src/trainer/extractFacts.ts +0 -312
  792. package/src/trainer/index.ts +0 -147
  793. package/src/trainer/llmExtractor.ts +0 -206
  794. package/src/trainer/marker.ts +0 -30
  795. package/src/trainer/scheduler.ts +0 -107
  796. package/src/trainer/sessionLoader.ts +0 -176
  797. package/src/types.ts +0 -168
  798. /package/dist/{consolidation/scheduler → adapters/embed}/types.js +0 -0
  799. /package/dist/{consolidation → adapters/llm}/types.js +0 -0
package/README.md CHANGED
@@ -1,296 +1,104 @@
1
- # @chendpoc/pi-memory
1
+ # pi-memory
2
2
 
3
- [![npm](https://img.shields.io/npm/v/@chendpoc/pi-memory)](https://www.npmjs.com/package/@chendpoc/pi-memory)
3
+ Cross-session episodic memory for the [Pi coding agent](https://pi.dev): **MEMORY.md** as ground truth, a JSONL Sidecar for vector retrieval, and Preflight injection before each user turn.
4
4
 
5
- Local long-term memory for [Pi](https://pi.dev) coding agent. It closes the Write → Consolidate → Retrieve loop so past sessions, preferences, projects, and decisions can re-enter future conversations automatically.
6
-
7
- **No external binaries required** --- pure TypeScript, runs entirely inside Pi.
8
-
9
- ## Features
10
-
11
- - **Implicit memory preflight** --- automatically detects memory-relevant questions (Chinese/English/Japanese) and injects `<private_memory>` context before each LLM call
12
- - **`memory_recall` tool** --- LLM can explicitly query the knowledge graph by entity/relationship
13
- - **`memory_append` tool** --- queues explicit user memories into stage1 so Phase2 can merge them safely
14
- - **Offline consolidation** --- `session_shutdown` only enqueues metadata; `pi-memory consolidate` drains queue, trains graph, and updates memory files
15
- - **MEMORY.md index** --- session-level cap injection plus scoped project memory files
16
- - **Local trainer** --- extracts entities, relations, and events from Pi session history (regex or LLM-powered)
17
- - **FTS5 search** --- SQLite full-text index for keyword fallback
18
- - **LLM rerank** --- reranks keyword search results using `deepseek-v4-flash` for relevance scoring
19
- - **Session dedup** --- content-hash deduplication in both trainer and indexer
20
- - **Zero config** --- works out of the box with `pi install`
21
-
22
- ## Install
23
-
24
- ```bash
25
- pi install npm:@chendpoc/pi-memory
26
- ```
27
-
28
- Or for local development:
29
-
30
- ```json
31
- {
32
- "packages": ["./extensions/pi-memory"]
33
- }
34
- ```
35
-
36
- Pi reads `package.json` > `pi.extensions` and auto-loads the extension via [jiti](https://github.com/unjs/jiti) (TypeScript, no build step needed).
37
-
38
- ## Quick Start
39
-
40
- ```bash
41
- # 1. Install the package
42
- pi install npm:@chendpoc/pi-memory
5
+ ## Architecture
43
6
 
44
- # 2. Train a memory bundle from your session history
45
- npx pi-memory train --full
7
+ | Layer | Role |
8
+ |-------|------|
9
+ | **Ground Truth** | `MEMORY.md` + `auto-*.md` overflow files |
10
+ | **Vector Index** | `memory.vec.sqlite` (derived; cosine scan + MMR; default top-3, min relevance 0.4) |
11
+ | **Sidecar** | Separate Node process over UDS JSONL (`query`, `reindex`, `ping`) |
12
+ | **Preflight** | QueryIntent → Sidecar → Fallback to MEMORY.md → silent empty inject |
46
13
 
47
- # 3. Run first consolidation and install the daily scheduler
48
- npx pi-memory consolidate
49
- npx pi-memory setup-schedule
14
+ ### Write paths
50
15
 
51
- # 4. Restart Pi --- memory is now active
52
- # Try asking: "What projects have I worked on?"
53
- ```
16
+ 1. **`/remember`** sync user-authored append
17
+ 2. **Compaction** dual-purpose summary `appendFromCompaction` (Compact Delta for subagents)
18
+ 3. **Consolidate** — OR trigger (overflow ≥12 / 7 days / daily 03:00 cron)
54
19
 
55
- After training, Pi will:
56
- - Show `status: ready, mode: local_graph` when you type `/memory`
57
- - Show queue/index details when you type `/memory --verbose`
58
- - Automatically inject past context when you ask relationship questions
59
- - Let the LLM call `memory_recall` for explicit lookups
20
+ **Diagnostics:** **`/memory-status`** in session, or **`pi-memory status`** on the CLI.
60
21
 
61
- ## How It Works
22
+ **Shutdown Queue** `session_shutdown` appends metadata to `.memory_shutdown_queue.jsonl`; **`pi-memory maintenance`** (or `drain-shutdown-queue`) ingests missed facts offline.
62
23
 
63
- ```
64
- Pi session files (.jsonl)
65
- | session_shutdown
66
- v
67
- pending_sessions queue (memories.sqlite)
68
- | daily / manual consolidate
69
- v
70
- stage1 outputs + graph train
71
- |
72
- v
73
- MEMORY.md / project memory + graph.json + sessions.db
74
- |
75
- v
76
- memory_recall tool / implicit preflight injection / MEMORY.md cap
77
- ```
24
+ ### Data directory
78
25
 
79
- ### Query Backends
26
+ All memory artifacts share one root directory (the **memory agent dir**):
80
27
 
81
- The service automatically selects the best available backend:
28
+ | File | Purpose |
29
+ |------|---------|
30
+ | `MEMORY.md` | Ground truth |
31
+ | `auto-*.md` | Overflow entries |
32
+ | `memory.vec.sqlite` | Vector index (derived) |
33
+ | `memory.sock` | Sidecar UDS |
82
34
 
83
- | Priority | Backend | Requires |
84
- |----------|---------|----------|
85
- | 1 | **LocalGraphQuerier** (in-process) | bundle only |
86
- | 2 | **FTS5 + keyword fallback** | `better-sqlite3` (optional) |
35
+ Resolution order (extension and CLI):
87
36
 
88
- The default backend is LocalGraphQuerier --- pure TypeScript, no external dependencies.
37
+ 1. `--agent-dir` / `PI_MEMORY_AGENT_DIR` explicit override
38
+ 2. Default — `~/.pi/pi-memory-data` (no env required)
89
39
 
90
- ## Commands
40
+ ### MEMORY.md format
91
41
 
92
- | Command | Description |
93
- |---------|-------------|
94
- | `/memory` | Show service status, query mode, and bundle info |
95
- | `/memory --verbose` | Show consolidation queue, memory index usage, and recent job logs |
42
+ Canonical scaffold (`templates/MEMORY.md.example`):
96
43
 
97
- ## CLI
44
+ - Title `# Memory` + HTML comment describing entry format
45
+ - Four sections: **Preferences**, **Conventions**, **Findings**, **Todos**
46
+ - Entries: `- [user] note <!-- id:... user ts:... -->` (via `/remember`) or `- note <!-- id:... ts:... -->`
47
+ - 150-line cap; overflow spills to `auto-*.md`
98
48
 
99
- ```bash
100
- # Train a bundle from session history
101
- npx pi-memory train --full # full rebuild
102
- npx pi-memory train # incremental (only new sessions)
103
- npx pi-memory train --extractor llm # use LLM for deeper extraction
104
- npx pi-memory train --extractor llm --model deepseek/deepseek-v4-flash
105
-
106
- # Query the knowledge graph
107
- npx pi-memory query '{"mode":"direct_relation","anchor_mentions":["Alice"]}'
108
-
109
- # Service diagnostics
110
- npx pi-memory health
111
- npx pi-memory status
112
- npx pi-memory memory-status
113
-
114
- # Offline consolidation
115
- npx pi-memory consolidate
116
- npx pi-memory consolidate --dry-run
117
- npx pi-memory consolidate --phase1-only
118
- npx pi-memory consolidate --phase2-only
119
-
120
- # OS scheduler
121
- npx pi-memory setup-schedule
122
- npx pi-memory setup-schedule --hour 4
123
- npx pi-memory setup-schedule --status
124
- npx pi-memory setup-schedule --remove
125
-
126
- # Manage bundles
127
- npx pi-memory install-bundle ./path/to/bundle
128
-
129
- # Rebuild FTS5 search index
130
- npx pi-memory index
131
-
132
- # Continuous training (watch mode)
133
- npx pi-memory train --watch
134
- ```
49
+ **Initialization** (never overwrites a non-empty file):
135
50
 
136
- `train --watch` is kept for compatibility. The long-term memory path is `pi-memory consolidate` plus the OS scheduler.
51
+ 1. `pnpm install` `postinstall` seeds `MEMORY.md` in the memory agent dir
52
+ 2. First Pi session → `MemoryStore.ensureInitialized()` on `session_start`
53
+ 3. Manual: `pi-memory init`
137
54
 
138
- ## Flags
55
+ ## Setup
139
56
 
140
- | Flag | Description | Default |
141
- |------|-------------|---------|
142
- | `--memory-helper-model` | LLM model for intent detection and rerank | `deepseek/deepseek-v4-flash` |
57
+ 1. Install dependencies and build:
143
58
 
144
59
  ```bash
145
- pi --memory-helper-model deepseek/deepseek-v4-flash
146
- ```
147
-
148
- ## Data Layout
149
-
150
- ```
151
- ~/.pi/
152
- ├── memory/
153
- │ ├── current/ # active bundle (symlink)
154
- │ │ ├── manifest.json
155
- │ │ └── graph.json # entities, edges, events
156
- │ ├── bundles/ # historical bundles
157
- │ ├── sessions.db # FTS5 search index
158
- │ ├── memories.sqlite # pending queue + stage1 outputs
159
- │ ├── workspace/ # raw memories + rollout summaries
160
- │ ├── projects/<hash>/ # project-scoped MEMORY.md files
161
- │ ├── consolidation.log # structured consolidation logs
162
- │ └── .train_marker # incremental training timestamp
163
- ├── agent/sessions/ # Pi session files (.jsonl)
164
- └── MEMORY.md # global memory index
165
- ```
166
-
167
- ## Programmatic API
168
-
169
- ```typescript
170
- import {
171
- MemoryService,
172
- defaultMemoryConfig,
173
- trainBundle,
174
- LocalGraphQuerier,
175
- createLLMFactExtractor,
176
- createStandaloneLLMClient,
177
- rerankWithLLM,
178
- } from "@chendpoc/pi-memory";
179
-
180
- // --- Query the graph directly ---
181
- const querier = new LocalGraphQuerier("/Users/you/.pi/memory");
182
- querier.load();
183
- const result = querier.query({
184
- mode: "direct_relation",
185
- anchor_mentions: ["Alice"],
186
- });
187
-
188
- // --- Train a bundle ---
189
- const result = await trainBundle({
190
- sessionsDir: "~/.pi/agent/sessions",
191
- bundleRoot: "~/.pi/memory",
192
- full: true,
193
- });
194
-
195
- // --- Train with LLM extraction ---
196
- const client = createStandaloneLLMClient("deepseek/deepseek-v4-flash");
197
- const extractor = createLLMFactExtractor({ client, batchSize: 10 });
198
- await trainBundle({ extractOpts: { llmExtractor: extractor } });
199
-
200
- // --- Use as Pi extension ---
201
- import piMemory from "@chendpoc/pi-memory/extension";
202
- export default piMemory;
60
+ pnpm install
61
+ pnpm build
203
62
  ```
204
63
 
205
- ## Architecture
206
-
207
- | Module | Purpose |
208
- |--------|---------|
209
- | `src/pi-extension.ts` | Pi ExtensionAPI entry point |
210
- | `src/local/graphQuery.ts` | In-process graph query engine |
211
- | `src/adapters/piComplete.ts` | LLM adapter via `@earendil-works/pi-ai/compat` |
212
- | `src/service.ts` | Service lifecycle and query routing |
213
- | `src/consolidation/` | Queue, stage1, Phase2, scheduler, memory index, scope |
214
- | `src/trainer/` | Session loader, fact extraction, entity resolution, bundle builder |
215
- | `src/fallback/` | FTS5 index, keyword search, LLM rerank |
216
- | `src/preflight/` | Intent detection, private memory render/inject/strip |
217
- | `src/tools/` | `memory_recall` and `memory_append` tool definitions |
218
-
219
- ## Implicit Preflight
64
+ 2. Enable as a Pi extension (see `package.json` → `pi.extensions`).
220
65
 
221
- On every LLM call, the `context` event:
66
+ 3. Optional: copy [`.env.example`](./.env.example) to `~/.pi/agent/pi-memory.env` and configure embedder / helper LLM.
222
67
 
223
- 1. Detects memory-relevant intents via regex (Chinese/English/Japanese relationship patterns)
224
- 2. Optionally calls a helper LLM (`compile_memory_intents` forced tool_use)
225
- 3. Queries the graph for matching entities/relations and greps scoped MEMORY.md in parallel
226
- 4. Injects the session memory index and dynamic recall into `<private_memory>` blocks (deep copy, not persisted to session)
227
- 5. Results are cached per agent loop to avoid redundant queries during multi-tool turns
68
+ ## Environment
228
69
 
229
- ## Peer Dependencies
70
+ | Variable | Purpose |
71
+ |----------|---------|
72
+ | `PI_MEMORY_AGENT_DIR` | Memory data root (see [Data directory](#data-directory)) |
73
+ | `PI_MEMORY_EMBEDDER` | `hash` (default, offline) \| `ollama` \| `openai` |
74
+ | `PI_MEMORY_HELPER_MODEL` | Helper LLM for QueryIntent + consolidate |
75
+ | `PI_MEMORY_PREFLIGHT_BUDGET_MS` | Preflight shared budget (default 800ms: ~240 intent + ~560 sidecar) |
76
+ | `PI_MEMORY_REINDEX_DEBOUNCE_MS` | Debounced reindex after writes |
77
+ | `PI_MEMORY_DEBUG` | `1` enables debug stderr logs (preflight timings) |
230
78
 
231
- These are provided by the Pi host and should not be bundled:
79
+ See [`.env.example`](./.env.example) for full list.
232
80
 
233
- - `@earendil-works/pi-agent-core`
234
- - `@earendil-works/pi-ai`
235
- - `@earendil-works/pi-coding-agent`
236
- - `typebox`
237
-
238
- ## Optional Dependencies
239
-
240
- - `better-sqlite3` --- enables FTS5 session search index (graceful degradation if absent)
241
-
242
- ## Releasing
243
-
244
- This repo uses [Changesets](https://github.com/changesets/changesets) for semver bumps and `CHANGELOG.md`, and a **tag-triggered** workflow for GitHub Releases (and optional npm publish).
245
-
246
- 1. After a feature/fix PR, add a changeset: `pnpm changeset`
247
- 2. Merge to `main` — GitHub Actions opens a **Version Packages** PR (bumps version + updates `CHANGELOG.md`)
248
- 3. Merge that PR, then tag and push:
81
+ ## CLI
249
82
 
250
83
  ```bash
251
- git pull origin main
252
- git tag v0.1.13
253
- git push origin v0.1.13
84
+ pi-memory init
85
+ pi-memory status
86
+ pi-memory maintenance --cron --verbose
87
+ pi-memory consolidate --force --verbose
88
+ pi-memory drain-shutdown-queue --verbose
254
89
  ```
255
90
 
256
- 4. The **Tag Release** workflow (`tag-release.yml`) runs on `v*` tags: creates a GitHub Release from `CHANGELOG.md`, then publishes to npm via [OIDC trusted publishing](https://docs.npmjs.com/trusted-publishers/) (no long-lived `NPM_TOKEN`).
91
+ `maintenance` runs **consolidate drain-shutdown-queue** in one cron window (recommended for OS schedulers).
92
+ `status` prints MEMORY.md, sidecar, and vector index diagnostics (colored on TTY stderr).
93
+ Set `PI_MEMORY_DEBUG=1` for preflight timing logs during agent sessions.
257
94
 
258
- ### npm trusted publishing (recommended)
95
+ Templates: [`templates/`](./templates/) (launchd, crontab, schtasks).
259
96
 
260
- npm now recommends **Trusted Publishing** over Granular "bypass 2FA" tokens for CI. GitHub Actions proves its identity with a short-lived OIDC credential; no stored token, no OTP (`EOTP`).
97
+ ## Docs
261
98
 
262
- **One-time setup on npmjs.com** (package must exist first see below):
263
-
264
- 1. Open `https://www.npmjs.com/package/@chendpoc/pi-memory/access` (after first publish)
265
- 2. **Trusted Publisher** → GitHub Actions
266
- 3. Set exactly:
267
- - Organization or user: `chendpoc`
268
- - Repository: `pi-memory`
269
- - Workflow filename: `tag-release.yml`
270
- - Environment: *(leave blank unless you add a GitHub Environment)*
271
-
272
- **First publish:** npm requires the package to exist before you can configure trusted publishing. Either:
273
-
274
- - Publish once locally with `npm login` + `npm publish --access public`, or
275
- - Use [setup-npm-trusted-publish](https://github.com/azu/setup-npm-trusted-publish) to create a placeholder, configure OIDC, then publish real versions from CI.
276
-
277
- The workflow already sets `id-token: write` and uses Node 24 (npm ≥ 11.5.1). Provenance is automatic with trusted publishing.
278
-
279
- **Re-run without deleting a tag:** GitHub → Actions → **Tag Release** → **Run workflow**
280
-
281
- - `tag`: `v0.1.13`
282
- - `skip_github_release`: ✅ (release already exists)
283
- - `publish_npm`: ✅
284
-
285
- ## Development
286
-
287
- ```bash
288
- pnpm install
289
- pnpm build
290
- pnpm test
291
- pnpm typecheck
292
- pnpm changeset # before opening a release PR
293
- ```
99
+ - [sidecar-local-memory-design.md](./sidecar-local-memory-design.md)full design
100
+ - [kocoro-memory-pi-agent-guide.md](./kocoro-memory-pi-agent-guide.md) — Kocoro → Pi translation
101
+ - [UBIQUITOUS_LANGUAGE.md](./UBIQUITOUS_LANGUAGE.md) domain glossary
294
102
 
295
103
  ## License
296
104
 
@@ -0,0 +1,81 @@
1
+ # Ubiquitous Language
2
+
3
+ > pi-memory 扩展的领域术语表。实现与文档以本表 canonical 名称为准。
4
+
5
+ ## Storage
6
+
7
+ | Term | Definition | Aliases to avoid |
8
+ | ---- | ---------- | ---------------- |
9
+ | **Ground Truth** | The durable cross-session fact store: `MEMORY.md` plus overflow `auto-*.md` files. | memory.db, chat backup |
10
+ | **Vector Index** | A derived SQLite file (`memory.vec.sqlite`) holding embeddings for episodic retrieval. | memory.db, sqlite-vec ANN |
11
+ | **Memory Entry** | One bullet fact in Ground Truth under Preferences, Conventions, Findings, or Todos. | note, fact, bullet |
12
+ | **Overflow File** | An `auto-*.md` spill file created when `MEMORY.md` exceeds the line cap. | auto file, spill |
13
+
14
+ ## Read path
15
+
16
+ | Term | Definition | Aliases to avoid |
17
+ | ---- | ---------- | ---------------- |
18
+ | **Preflight** | Best-effort retrieval and injection before the main model sees each user message. | memory recall, pre-fetch |
19
+ | **QueryIntent** | Structured retrieval hints (what/who/where or raw_query) extracted by a helper LLM. | search intent |
20
+ | **Memory Cap** | Session-scoped static summary of Ground Truth injected without episodic query. | turnMemoryIndex, static cap |
21
+ | **Episodic Preflight** | QueryIntent → Sidecar query → optional Fallback for query-dependent recall. | full preflight |
22
+ | **Fallback** | Silent read of Ground Truth when Sidecar returns nothing or errors. | md fallback |
23
+ | **Private Memory** | The `<private_memory>` block prefixed to in-flight user messages only. | injected context |
24
+
25
+ ## Write path
26
+
27
+ | Term | Definition | Aliases to avoid |
28
+ | ---- | ---------- | ---------------- |
29
+ | **Memory Export** | The cross-session facts section inside a dual-purpose compact summary. | memoryQueue, export block |
30
+ | **Compact Delta** | New Memory Export facts filtered against existing Ground Truth before append (subagent). | Stage1, shutdown extract |
31
+ | **Dual-Purpose Summary** | One LLM compact output with Session Context and Memory Export sections. | compact summary |
32
+ | **Consolidate** | Periodic LLM merge/dedupe of Ground Truth; not a source of new facts. | GC, merge |
33
+ | **Shutdown Queue** | Append-only JSONL file (`.memory_shutdown_queue.jsonl`) of session metadata on shutdown; drained by `pi-memory maintenance`. | session enqueue pipeline |
34
+
35
+ ## Infrastructure
36
+
37
+ | Term | Definition | Aliases to avoid |
38
+ | ---- | ---------- | ---------------- |
39
+ | **Sidecar** | Separate Node process for embed, vector scan, MMR, and reindex over UDS. | tlm, daemon |
40
+ | **JSONL Framing** | One JSON object per line over UDS IPC. | NDJSON, ndjson |
41
+ | **Index Generation** | Monotonic counter bumped on reindex; invalidates query cache. | indexGeneration |
42
+ | **onSyncToSidecar** | Callback fired after Ground Truth writes to schedule debounced reindex. | onDirty |
43
+ | **onConsolidateCheck** | Callback fired after writes to schedule debounced consolidate evaluation. | onDirty |
44
+
45
+ ## Session types
46
+
47
+ | Term | Definition | Aliases to avoid |
48
+ | ---- | ---------- | ---------------- |
49
+ | **Root Session** | A top-level Pi agent session without a parent session header. | main session |
50
+ | **Subagent Session** | A forked session whose header includes `parentSession` or `parent_session`. | child session, fork |
51
+
52
+ ## Relationships
53
+
54
+ - **Ground Truth** is the source; the **Vector Index** is derived and may lag.
55
+ - **Preflight** reads **Ground Truth** via **Sidecar** first, then **Fallback**.
56
+ - **Root Session** runs **Episodic Preflight** plus **Memory Cap** each turn; **Subagent Session** runs **Memory Cap** only.
57
+ - **Memory Export** from compaction flows through **Compact Delta** for **Subagent Session**, then **appendIfAbsent**.
58
+ - **Shutdown Queue** records metadata only; it does not write **Ground Truth**.
59
+ - **Consolidate** rewrites **Ground Truth** and triggers **onSyncToSidecar**.
60
+
61
+ ## Example dialogue
62
+
63
+ > **Dev:** "When a **Subagent Session** compacts, do we run **Episodic Preflight** on its turns?"
64
+ >
65
+ > **Domain expert:** "No. Subagents get **Memory Cap** at **session_start** and skip **Episodic Preflight**. New durable facts still arrive via **Memory Export**, but **Compact Delta** filters out anything already in parent **Ground Truth**."
66
+ >
67
+ > **Dev:** "What happens on **session_shutdown**?"
68
+ >
69
+ > **Domain expert:** "We append one line to the **Shutdown Queue**—session file, parent path, reason. No LLM on shutdown. **`pi-memory maintenance`** drains the queue offline (after consolidate), reusing **Compact Delta** rules for subagents."
70
+ >
71
+ > **Dev:** "If **Sidecar** is down, does **Preflight** fail?"
72
+ >
73
+ > **Domain expert:** "It **Fallback**s to **Ground Truth** or **Private Memory** stays empty. The user never sees an error."
74
+
75
+ ## Flagged ambiguities
76
+
77
+ - **memory.db** was used for the vector file — canonical name is **Vector Index** file `memory.vec.sqlite`.
78
+ - **sqlite-vec** implied ANN search — MVP uses **better-sqlite3 + full-table cosine scan**; ANN is future work.
79
+ - **NDJSON / ndjson** — canonical term is **JSONL Framing** (one JSON object per line).
80
+ - **memoryQueue / onDirty / Stage1** — replaced by **appendFromCompaction**, **onSyncToSidecar**, and **Compact Delta**.
81
+ - **MVP chunking**:**1 Memory Entry = 1+ vector chunks**;超过 `PI_MEMORY_CHUNK_MAX_CHARS`(默认 512)按段落/句界拆分,`chunk_id = entry.id` 或 `entry.id#N`;embed 文本带 `[Section]` 前缀。Ground Truth 仍为 1 bullet = 1 entry。
@@ -0,0 +1,7 @@
1
+ import type { Embedder } from "./types.js";
2
+ export declare function createEmbedder(env?: import("../../config/env.js").PiMemoryEnv): Embedder;
3
+ export declare function getEmbedder(): Embedder;
4
+ /** @internal test hook */
5
+ export declare function resetEmbedderForTests(): void;
6
+ export type { Embedder } from "./types.js";
7
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/adapters/embed/factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,wBAAgB,cAAc,CAAC,GAAG,4CAAoB,GAAG,QAAQ,CA4BhE;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAGtC;AAED,0BAA0B;AAC1B,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { DEFAULT_HASH_EMBED_DIM } from "../../constants/env.js";
2
+ import { readPiMemoryEnv, resolveEmbedDim } from "../../config/env.js";
3
+ import { createHashEmbedder } from "./hash.js";
4
+ import { createOllamaEmbedder } from "./ollama.js";
5
+ import { createOpenAiEmbedder } from "./openai.js";
6
+ let cachedEmbedder;
7
+ export function createEmbedder(env = readPiMemoryEnv()) {
8
+ switch (env.embedder) {
9
+ case "openai": {
10
+ if (!env.openaiApiKey) {
11
+ throw new Error("PI_MEMORY_EMBEDDER=openai requires PI_MEMORY_OPENAI_API_KEY or OPENAI_API_KEY");
12
+ }
13
+ const dim = resolveEmbedDim(env.openaiEmbedModel, env.embedDimOverride);
14
+ return createOpenAiEmbedder({
15
+ apiKey: env.openaiApiKey,
16
+ model: env.openaiEmbedModel,
17
+ dim,
18
+ timeoutMs: env.httpTimeoutMs,
19
+ });
20
+ }
21
+ case "ollama": {
22
+ const dim = resolveEmbedDim(env.ollamaEmbedModel, env.embedDimOverride);
23
+ return createOllamaEmbedder({
24
+ baseUrl: env.ollamaBaseUrl,
25
+ model: env.ollamaEmbedModel,
26
+ dim,
27
+ timeoutMs: env.httpTimeoutMs,
28
+ });
29
+ }
30
+ default: {
31
+ const dim = env.embedDimOverride ?? DEFAULT_HASH_EMBED_DIM;
32
+ return createHashEmbedder(dim);
33
+ }
34
+ }
35
+ }
36
+ export function getEmbedder() {
37
+ cachedEmbedder ??= createEmbedder();
38
+ return cachedEmbedder;
39
+ }
40
+ /** @internal test hook */
41
+ export function resetEmbedderForTests() {
42
+ cachedEmbedder = undefined;
43
+ }
44
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/adapters/embed/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,IAAI,cAAoC,CAAC;AAEzC,MAAM,UAAU,cAAc,CAAC,GAAG,GAAG,eAAe,EAAE;IACpD,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;YACnG,CAAC;YACD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxE,OAAO,oBAAoB,CAAC;gBAC1B,MAAM,EAAE,GAAG,CAAC,YAAY;gBACxB,KAAK,EAAE,GAAG,CAAC,gBAAgB;gBAC3B,GAAG;gBACH,SAAS,EAAE,GAAG,CAAC,aAAa;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxE,OAAO,oBAAoB,CAAC;gBAC1B,OAAO,EAAE,GAAG,CAAC,aAAa;gBAC1B,KAAK,EAAE,GAAG,CAAC,gBAAgB;gBAC3B,GAAG;gBACH,SAAS,EAAE,GAAG,CAAC,aAAa;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,GAAG,GAAG,GAAG,CAAC,gBAAgB,IAAI,sBAAsB,CAAC;YAC3D,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,cAAc,KAAK,cAAc,EAAE,CAAC;IACpC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,qBAAqB;IACnC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Embedder } from "./types.js";
2
+ export declare function createHashEmbedder(dim: number): Embedder;
3
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/adapters/embed/hash.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAuBxD"}
@@ -0,0 +1,26 @@
1
+ import { createHash } from "node:crypto";
2
+ import { normalizeEmbedding } from "./normalize.js";
3
+ export function createHashEmbedder(dim) {
4
+ const embedSync = (text) => {
5
+ const vec = new Float32Array(dim);
6
+ const digest = createHash("sha256").update(text).digest();
7
+ for (let i = 0; i < dim; i++) {
8
+ const byte = digest[i % digest.length];
9
+ const sign = digest[(i + 7) % digest.length] & 1 ? 1 : -1;
10
+ vec[i] = sign * (byte / 255);
11
+ }
12
+ return normalizeEmbedding(vec);
13
+ };
14
+ return {
15
+ provider: "hash",
16
+ model: "hash/dev",
17
+ dim,
18
+ async embed(text) {
19
+ return embedSync(text);
20
+ },
21
+ async embedBatch(texts) {
22
+ return texts.map(embedSync);
23
+ },
24
+ };
25
+ }
26
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/adapters/embed/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,SAAS,GAAG,CAAC,IAAY,EAAgB,EAAE;QAC/C,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAE,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,UAAU;QACjB,GAAG;QACH,KAAK,CAAC,KAAK,CAAC,IAAI;YACd,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function normalizeEmbedding(vec: Float32Array): Float32Array;
2
+ export declare function assertEmbeddingDim(embedding: Float32Array, expectedDim: number, label: string): void;
3
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/adapters/embed/normalize.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAMlE;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIpG"}
@@ -0,0 +1,15 @@
1
+ export function normalizeEmbedding(vec) {
2
+ let norm = 0;
3
+ for (let i = 0; i < vec.length; i++)
4
+ norm += vec[i] * vec[i];
5
+ norm = Math.sqrt(norm) || 1;
6
+ for (let i = 0; i < vec.length; i++)
7
+ vec[i] /= norm;
8
+ return vec;
9
+ }
10
+ export function assertEmbeddingDim(embedding, expectedDim, label) {
11
+ if (embedding.length !== expectedDim) {
12
+ throw new Error(`${label} dimension mismatch: expected ${expectedDim}, got ${embedding.length}`);
13
+ }
14
+ }
15
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/adapters/embed/normalize.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,GAAiB;IAClD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,IAAI,GAAG,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IAC/D,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAuB,EAAE,WAAmB,EAAE,KAAa;IAC5F,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,WAAW,SAAS,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACnG,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Embedder } from "./types.js";
2
+ export declare function createOllamaEmbedder(opts: {
3
+ baseUrl: string;
4
+ model: string;
5
+ dim: number;
6
+ timeoutMs: number;
7
+ }): Embedder;
8
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/adapters/embed/ollama.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAW3C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,QAAQ,CA8BX"}
@@ -0,0 +1,31 @@
1
+ import { postJson } from "../http.js";
2
+ import { assertEmbeddingDim, normalizeEmbedding } from "./normalize.js";
3
+ function joinUrl(baseUrl, path) {
4
+ return `${baseUrl.replace(/\/+$/, "")}${path}`;
5
+ }
6
+ export function createOllamaEmbedder(opts) {
7
+ const url = joinUrl(opts.baseUrl, "/api/embed");
8
+ const embedRemote = async (texts) => {
9
+ const json = await postJson(url, { model: opts.model, input: texts.length === 1 ? texts[0] : texts }, { timeoutMs: opts.timeoutMs });
10
+ return json.embeddings.map((row, index) => {
11
+ const embedding = normalizeEmbedding(new Float32Array(row));
12
+ assertEmbeddingDim(embedding, opts.dim, `Ollama ${opts.model} row ${index}`);
13
+ return embedding;
14
+ });
15
+ };
16
+ return {
17
+ provider: "ollama",
18
+ model: opts.model,
19
+ dim: opts.dim,
20
+ async embed(text) {
21
+ const [embedding] = await embedRemote([text]);
22
+ return embedding;
23
+ },
24
+ async embedBatch(texts) {
25
+ if (texts.length === 0)
26
+ return [];
27
+ return embedRemote(texts);
28
+ },
29
+ };
30
+ }
31
+ //# sourceMappingURL=ollama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/adapters/embed/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAQxE,SAAS,OAAO,CAAC,OAAe,EAAE,IAAY;IAC5C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAKpC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,KAAK,EAAE,KAAe,EAA2B,EAAE;QACrE,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,GAAG,EACH,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EACnE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAC9B,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,IAAI,CAAC,KAAK,QAAQ,KAAK,EAAE,CAAC,CAAC;YAC7E,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,CAAC,KAAK,CAAC,IAAI;YACd,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,OAAO,SAAU,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAClC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Embedder } from "./types.js";
2
+ export declare function createOpenAiEmbedder(opts: {
3
+ apiKey: string;
4
+ model: string;
5
+ dim: number;
6
+ timeoutMs: number;
7
+ }): Embedder;
8
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/adapters/embed/openai.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,QAAQ,CAgCX"}