@chendpoc/pi-memory 0.1.13 → 0.2.1

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 (817) hide show
  1. package/README.md +284 -216
  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 +8 -0
  156. package/dist/config/index.d.ts.map +1 -0
  157. package/dist/config/index.js +8 -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/preflight.d.ts +8 -0
  164. package/dist/config/preflight.d.ts.map +1 -0
  165. package/dist/config/preflight.js +22 -0
  166. package/dist/config/preflight.js.map +1 -0
  167. package/dist/config/preflightBudget.d.ts +9 -0
  168. package/dist/config/preflightBudget.d.ts.map +1 -0
  169. package/dist/config/preflightBudget.js +16 -0
  170. package/dist/config/preflightBudget.js.map +1 -0
  171. package/dist/config/retrieval.d.ts +10 -0
  172. package/dist/config/retrieval.d.ts.map +1 -0
  173. package/dist/config/retrieval.js +31 -0
  174. package/dist/config/retrieval.js.map +1 -0
  175. package/dist/consolidate/entryKey.d.ts +6 -0
  176. package/dist/consolidate/entryKey.d.ts.map +1 -0
  177. package/dist/consolidate/entryKey.js +5 -0
  178. package/dist/consolidate/entryKey.js.map +1 -0
  179. package/dist/consolidate/index.d.ts +5 -0
  180. package/dist/consolidate/index.d.ts.map +1 -0
  181. package/dist/consolidate/index.js +5 -0
  182. package/dist/consolidate/index.js.map +1 -0
  183. package/dist/consolidate/mergeEntries.d.ts +4 -0
  184. package/dist/consolidate/mergeEntries.d.ts.map +1 -0
  185. package/dist/consolidate/mergeEntries.js +17 -0
  186. package/dist/consolidate/mergeEntries.js.map +1 -0
  187. package/dist/consolidate/mergePrompt.d.ts +4 -0
  188. package/dist/consolidate/mergePrompt.d.ts.map +1 -0
  189. package/dist/consolidate/mergePrompt.js +40 -0
  190. package/dist/consolidate/mergePrompt.js.map +1 -0
  191. package/dist/consolidate/mergeWithLlm.d.ts +4 -0
  192. package/dist/consolidate/mergeWithLlm.d.ts.map +1 -0
  193. package/dist/consolidate/mergeWithLlm.js +27 -0
  194. package/dist/consolidate/mergeWithLlm.js.map +1 -0
  195. package/dist/consolidate/runJob.d.ts +29 -0
  196. package/dist/consolidate/runJob.d.ts.map +1 -0
  197. package/dist/consolidate/runJob.js +48 -0
  198. package/dist/consolidate/runJob.js.map +1 -0
  199. package/dist/consolidate/scheduler.d.ts +18 -0
  200. package/dist/consolidate/scheduler.d.ts.map +1 -0
  201. package/dist/consolidate/scheduler.js +32 -0
  202. package/dist/consolidate/scheduler.js.map +1 -0
  203. package/dist/constants/chunking.d.ts +7 -0
  204. package/dist/constants/chunking.d.ts.map +1 -0
  205. package/dist/constants/chunking.js +7 -0
  206. package/dist/constants/chunking.js.map +1 -0
  207. package/dist/constants/env.d.ts +47 -0
  208. package/dist/constants/env.d.ts.map +1 -0
  209. package/dist/constants/env.js +52 -0
  210. package/dist/constants/env.js.map +1 -0
  211. package/dist/constants/index.d.ts +8 -0
  212. package/dist/constants/index.d.ts.map +1 -0
  213. package/dist/constants/index.js +8 -0
  214. package/dist/constants/index.js.map +1 -0
  215. package/dist/constants/memory.d.ts +17 -0
  216. package/dist/constants/memory.d.ts.map +1 -0
  217. package/dist/constants/memory.js +16 -0
  218. package/dist/constants/memory.js.map +1 -0
  219. package/dist/constants/paths.d.ts +23 -0
  220. package/dist/constants/paths.d.ts.map +1 -0
  221. package/dist/constants/paths.js +23 -0
  222. package/dist/constants/paths.js.map +1 -0
  223. package/dist/constants/preflight.d.ts +17 -0
  224. package/dist/constants/preflight.d.ts.map +1 -0
  225. package/dist/constants/preflight.js +17 -0
  226. package/dist/constants/preflight.js.map +1 -0
  227. package/dist/constants/retrieval.d.ts +10 -0
  228. package/dist/constants/retrieval.d.ts.map +1 -0
  229. package/dist/constants/retrieval.js +10 -0
  230. package/dist/constants/retrieval.js.map +1 -0
  231. package/dist/constants/security.d.ts +5 -0
  232. package/dist/constants/security.d.ts.map +1 -0
  233. package/dist/constants/security.js +5 -0
  234. package/dist/constants/security.js.map +1 -0
  235. package/dist/constants/timing.d.ts +38 -0
  236. package/dist/constants/timing.d.ts.map +1 -0
  237. package/dist/constants/timing.js +38 -0
  238. package/dist/constants/timing.js.map +1 -0
  239. package/dist/index.d.ts +11 -29
  240. package/dist/index.d.ts.map +1 -1
  241. package/dist/index.js +11 -28
  242. package/dist/index.js.map +1 -1
  243. package/dist/init/workspace.d.ts +15 -0
  244. package/dist/init/workspace.d.ts.map +1 -0
  245. package/dist/init/workspace.js +32 -0
  246. package/dist/init/workspace.js.map +1 -0
  247. package/dist/ipc/jsonlFramer.d.ts +9 -0
  248. package/dist/ipc/jsonlFramer.d.ts.map +1 -0
  249. package/dist/ipc/jsonlFramer.js +26 -0
  250. package/dist/ipc/jsonlFramer.js.map +1 -0
  251. package/dist/pi-extension.d.ts +0 -2
  252. package/dist/pi-extension.d.ts.map +1 -1
  253. package/dist/pi-extension.js +175 -515
  254. package/dist/pi-extension.js.map +1 -1
  255. package/dist/preflight/episodic.d.ts +26 -0
  256. package/dist/preflight/episodic.d.ts.map +1 -0
  257. package/dist/preflight/episodic.js +125 -0
  258. package/dist/preflight/episodic.js.map +1 -0
  259. package/dist/preflight/intentCache.d.ts +13 -0
  260. package/dist/preflight/intentCache.d.ts.map +1 -0
  261. package/dist/preflight/intentCache.js +37 -0
  262. package/dist/preflight/intentCache.js.map +1 -0
  263. package/dist/preflight/queryCache.d.ts +15 -0
  264. package/dist/preflight/queryCache.d.ts.map +1 -0
  265. package/dist/preflight/queryCache.js +46 -0
  266. package/dist/preflight/queryCache.js.map +1 -0
  267. package/dist/preflight/queryIntent.d.ts +29 -0
  268. package/dist/preflight/queryIntent.d.ts.map +1 -0
  269. package/dist/preflight/queryIntent.js +91 -0
  270. package/dist/preflight/queryIntent.js.map +1 -0
  271. package/dist/preflight/render.d.ts +8 -33
  272. package/dist/preflight/render.d.ts.map +1 -1
  273. package/dist/preflight/render.js +29 -126
  274. package/dist/preflight/render.js.map +1 -1
  275. package/dist/preflight/session.d.ts +3 -0
  276. package/dist/preflight/session.d.ts.map +1 -0
  277. package/dist/preflight/session.js +6 -0
  278. package/dist/preflight/session.js.map +1 -0
  279. package/dist/preflight/strip.d.ts +0 -8
  280. package/dist/preflight/strip.d.ts.map +1 -1
  281. package/dist/preflight/strip.js +2 -11
  282. package/dist/preflight/strip.js.map +1 -1
  283. package/dist/shutdown/enqueue.d.ts +12 -0
  284. package/dist/shutdown/enqueue.d.ts.map +1 -0
  285. package/dist/shutdown/enqueue.js +14 -0
  286. package/dist/shutdown/enqueue.js.map +1 -0
  287. package/dist/shutdown/extractPrompt.d.ts +4 -0
  288. package/dist/shutdown/extractPrompt.d.ts.map +1 -0
  289. package/dist/shutdown/extractPrompt.js +29 -0
  290. package/dist/shutdown/extractPrompt.js.map +1 -0
  291. package/dist/shutdown/processed.d.ts +9 -0
  292. package/dist/shutdown/processed.d.ts.map +1 -0
  293. package/dist/shutdown/processed.js +28 -0
  294. package/dist/shutdown/processed.js.map +1 -0
  295. package/dist/shutdown/readQueue.d.ts +4 -0
  296. package/dist/shutdown/readQueue.d.ts.map +1 -0
  297. package/dist/shutdown/readQueue.js +26 -0
  298. package/dist/shutdown/readQueue.js.map +1 -0
  299. package/dist/shutdown/runDrainJob.d.ts +26 -0
  300. package/dist/shutdown/runDrainJob.d.ts.map +1 -0
  301. package/dist/shutdown/runDrainJob.js +143 -0
  302. package/dist/shutdown/runDrainJob.js.map +1 -0
  303. package/dist/shutdown/sessionReader.d.ts +6 -0
  304. package/dist/shutdown/sessionReader.d.ts.map +1 -0
  305. package/dist/shutdown/sessionReader.js +44 -0
  306. package/dist/shutdown/sessionReader.js.map +1 -0
  307. package/dist/sidecar/client.d.ts +17 -16
  308. package/dist/sidecar/client.d.ts.map +1 -1
  309. package/dist/sidecar/client.js +64 -100
  310. package/dist/sidecar/client.js.map +1 -1
  311. package/dist/sidecar/paths.d.ts +8 -0
  312. package/dist/sidecar/paths.d.ts.map +1 -0
  313. package/dist/sidecar/paths.js +23 -0
  314. package/dist/sidecar/paths.js.map +1 -0
  315. package/dist/sidecar/protocol.d.ts +54 -0
  316. package/dist/sidecar/protocol.d.ts.map +1 -0
  317. package/dist/sidecar/protocol.js +4 -0
  318. package/dist/sidecar/protocol.js.map +1 -0
  319. package/dist/sidecar/reindexBridge.d.ts +13 -0
  320. package/dist/sidecar/reindexBridge.d.ts.map +1 -0
  321. package/dist/sidecar/reindexBridge.js +37 -0
  322. package/dist/sidecar/reindexBridge.js.map +1 -0
  323. package/dist/sidecar/server/process.d.ts +2 -0
  324. package/dist/sidecar/server/process.d.ts.map +1 -0
  325. package/dist/sidecar/server/process.js +22 -0
  326. package/dist/sidecar/server/process.js.map +1 -0
  327. package/dist/sidecar/server/query.d.ts +8 -0
  328. package/dist/sidecar/server/query.d.ts.map +1 -0
  329. package/dist/sidecar/server/query.js +7 -0
  330. package/dist/sidecar/server/query.js.map +1 -0
  331. package/dist/sidecar/server/reindex.d.ts +8 -0
  332. package/dist/sidecar/server/reindex.d.ts.map +1 -0
  333. package/dist/sidecar/server/reindex.js +12 -0
  334. package/dist/sidecar/server/reindex.js.map +1 -0
  335. package/dist/sidecar/server/server.d.ts +11 -0
  336. package/dist/sidecar/server/server.d.ts.map +1 -0
  337. package/dist/sidecar/server/server.js +76 -0
  338. package/dist/sidecar/server/server.js.map +1 -0
  339. package/dist/sidecar/server/stats.d.ts +8 -0
  340. package/dist/sidecar/server/stats.d.ts.map +1 -0
  341. package/dist/sidecar/server/stats.js +18 -0
  342. package/dist/sidecar/server/stats.js.map +1 -0
  343. package/dist/sidecar/server/vec/embedder.d.ts +2 -0
  344. package/dist/sidecar/server/vec/embedder.d.ts.map +1 -0
  345. package/dist/sidecar/server/vec/embedder.js +2 -0
  346. package/dist/sidecar/server/vec/embedder.js.map +1 -0
  347. package/dist/sidecar/server/vec/mmr.d.ts +13 -0
  348. package/dist/sidecar/server/vec/mmr.d.ts.map +1 -0
  349. package/dist/sidecar/server/vec/mmr.js +36 -0
  350. package/dist/sidecar/server/vec/mmr.js.map +1 -0
  351. package/dist/sidecar/server/vec/store.d.ts +30 -0
  352. package/dist/sidecar/server/vec/store.d.ts.map +1 -0
  353. package/dist/sidecar/server/vec/store.js +179 -0
  354. package/dist/sidecar/server/vec/store.js.map +1 -0
  355. package/dist/sidecar/sidecarManager.d.ts +10 -0
  356. package/dist/sidecar/sidecarManager.d.ts.map +1 -0
  357. package/dist/sidecar/sidecarManager.js +111 -0
  358. package/dist/sidecar/sidecarManager.js.map +1 -0
  359. package/dist/sidecar/utils.d.ts +3 -0
  360. package/dist/sidecar/utils.d.ts.map +1 -0
  361. package/dist/sidecar/utils.js +27 -0
  362. package/dist/sidecar/utils.js.map +1 -0
  363. package/dist/sidecar/warmup.d.ts +6 -0
  364. package/dist/sidecar/warmup.d.ts.map +1 -0
  365. package/dist/sidecar/warmup.js +39 -0
  366. package/dist/sidecar/warmup.js.map +1 -0
  367. package/dist/store/backend.d.ts +12 -0
  368. package/dist/store/backend.d.ts.map +1 -0
  369. package/dist/store/backend.js +47 -0
  370. package/dist/store/backend.js.map +1 -0
  371. package/dist/store/index.d.ts +6 -0
  372. package/dist/store/index.d.ts.map +1 -0
  373. package/dist/store/index.js +6 -0
  374. package/dist/store/index.js.map +1 -0
  375. package/dist/store/indexChunks.d.ts +9 -0
  376. package/dist/store/indexChunks.d.ts.map +1 -0
  377. package/dist/store/indexChunks.js +78 -0
  378. package/dist/store/indexChunks.js.map +1 -0
  379. package/dist/store/markdown/format.d.ts +5 -0
  380. package/dist/store/markdown/format.d.ts.map +1 -0
  381. package/dist/store/markdown/format.js +14 -0
  382. package/dist/store/markdown/format.js.map +1 -0
  383. package/dist/store/markdown/parse.d.ts +5 -0
  384. package/dist/store/markdown/parse.d.ts.map +1 -0
  385. package/dist/store/markdown/parse.js +57 -0
  386. package/dist/store/markdown/parse.js.map +1 -0
  387. package/dist/store/markdown/template.d.ts +3 -0
  388. package/dist/store/markdown/template.d.ts.map +1 -0
  389. package/dist/store/markdown/template.js +22 -0
  390. package/dist/store/markdown/template.js.map +1 -0
  391. package/dist/store/memoryStore.d.ts +69 -0
  392. package/dist/store/memoryStore.d.ts.map +1 -0
  393. package/dist/store/memoryStore.js +421 -0
  394. package/dist/store/memoryStore.js.map +1 -0
  395. package/dist/store/paths.d.ts +10 -0
  396. package/dist/store/paths.d.ts.map +1 -0
  397. package/dist/store/paths.js +19 -0
  398. package/dist/store/paths.js.map +1 -0
  399. package/dist/store/types.d.ts +38 -0
  400. package/dist/store/types.d.ts.map +1 -0
  401. package/dist/store/types.js +3 -0
  402. package/dist/store/types.js.map +1 -0
  403. package/dist/ui/memoryStatusWidget.d.ts +20 -0
  404. package/dist/ui/memoryStatusWidget.d.ts.map +1 -0
  405. package/dist/ui/memoryStatusWidget.js +51 -0
  406. package/dist/ui/memoryStatusWidget.js.map +1 -0
  407. package/dist/utils/debugLog.d.ts +4 -0
  408. package/dist/utils/debugLog.d.ts.map +1 -0
  409. package/dist/utils/debugLog.js +14 -0
  410. package/dist/utils/debugLog.js.map +1 -0
  411. package/dist/utils/fs.d.ts +26 -0
  412. package/dist/utils/fs.d.ts.map +1 -0
  413. package/dist/utils/fs.js +101 -0
  414. package/dist/utils/fs.js.map +1 -0
  415. package/dist/utils/index.d.ts +8 -0
  416. package/dist/utils/index.d.ts.map +1 -0
  417. package/dist/utils/index.js +8 -0
  418. package/dist/utils/index.js.map +1 -0
  419. package/dist/utils/paths.d.ts +22 -0
  420. package/dist/utils/paths.d.ts.map +1 -0
  421. package/dist/utils/paths.js +51 -0
  422. package/dist/utils/paths.js.map +1 -0
  423. package/dist/utils/platform.d.ts +7 -0
  424. package/dist/utils/platform.d.ts.map +1 -0
  425. package/dist/utils/platform.js +18 -0
  426. package/dist/utils/platform.js.map +1 -0
  427. package/dist/utils/scheduler.d.ts +33 -0
  428. package/dist/utils/scheduler.d.ts.map +1 -0
  429. package/dist/utils/scheduler.js +63 -0
  430. package/dist/utils/scheduler.js.map +1 -0
  431. package/dist/utils/socket.d.ts +7 -0
  432. package/dist/utils/socket.d.ts.map +1 -0
  433. package/dist/utils/socket.js +35 -0
  434. package/dist/utils/socket.js.map +1 -0
  435. package/dist/utils/time.d.ts +22 -0
  436. package/dist/utils/time.d.ts.map +1 -0
  437. package/dist/utils/time.js +42 -0
  438. package/dist/utils/time.js.map +1 -0
  439. package/doc/README-zh.md +365 -0
  440. package/doc/ROADMAP-zh.md +52 -0
  441. package/doc/ROADMAP.md +52 -0
  442. package/package.json +31 -10
  443. package/scripts/init-memory-workspace.mjs +62 -0
  444. package/scripts/path-utils.mjs +12 -0
  445. package/scripts/platform-fs.mjs +65 -0
  446. package/scripts/postinstall.mjs +17 -0
  447. package/src/adapters/embed/factory.ts +50 -0
  448. package/src/adapters/embed/hash.ts +29 -0
  449. package/src/adapters/embed/normalize.ts +13 -0
  450. package/src/adapters/embed/ollama.ts +49 -0
  451. package/src/adapters/embed/openai.ts +46 -0
  452. package/src/adapters/embed/types.ts +9 -0
  453. package/src/adapters/http.ts +42 -0
  454. package/src/adapters/index.ts +16 -0
  455. package/src/adapters/llm/extractText.ts +6 -0
  456. package/src/adapters/llm/factory.ts +60 -0
  457. package/src/adapters/llm/index.ts +7 -0
  458. package/src/adapters/llm/modelSpec.ts +39 -0
  459. package/src/adapters/llm/ollama.ts +42 -0
  460. package/src/adapters/llm/openai-compat.ts +46 -0
  461. package/src/adapters/llm/pi-ai.ts +75 -0
  462. package/src/adapters/llm/standalone.ts +60 -0
  463. package/src/adapters/llm/types.ts +16 -0
  464. package/src/cli/init.ts +18 -0
  465. package/src/cli/jobs.ts +144 -0
  466. package/src/cli/log.ts +46 -0
  467. package/src/cli/parseArgs.ts +175 -0
  468. package/src/cli/status.ts +323 -0
  469. package/src/cli/theme.ts +26 -0
  470. package/src/cli.ts +80 -374
  471. package/src/commands/index.ts +20 -0
  472. package/src/commands/parseMemoryStatusArgs.ts +11 -0
  473. package/src/commands/parseRememberArgs.ts +55 -0
  474. package/src/commands/remember.ts +43 -0
  475. package/src/commands/status.ts +112 -0
  476. package/src/commands/types.ts +12 -0
  477. package/src/compact/index.ts +4 -0
  478. package/src/compact/parseMemoryExport.ts +71 -0
  479. package/src/compact/register.ts +57 -0
  480. package/src/compact/runSummary.ts +42 -0
  481. package/src/compact/subagentDelta.ts +22 -0
  482. package/src/compact/summaryPrompt.ts +45 -0
  483. package/src/config/agentDir.ts +24 -0
  484. package/src/config/chunking.ts +36 -0
  485. package/src/config/env.ts +97 -0
  486. package/src/config/index.ts +7 -0
  487. package/src/config/loadEnv.ts +26 -0
  488. package/src/config/preflight.ts +34 -0
  489. package/src/config/preflightBudget.ts +33 -0
  490. package/src/config/retrieval.ts +50 -0
  491. package/src/consolidate/entryKey.ts +4 -0
  492. package/src/consolidate/index.ts +4 -0
  493. package/src/consolidate/mergeEntries.ts +22 -0
  494. package/src/consolidate/mergePrompt.ts +46 -0
  495. package/src/consolidate/mergeWithLlm.ts +39 -0
  496. package/src/consolidate/runJob.ts +81 -0
  497. package/src/consolidate/scheduler.ts +54 -0
  498. package/src/constants/chunking.ts +8 -0
  499. package/src/constants/env.ts +59 -0
  500. package/src/constants/index.ts +7 -0
  501. package/src/constants/memory.ts +22 -0
  502. package/src/constants/paths.ts +26 -0
  503. package/src/constants/preflight.ts +22 -0
  504. package/src/constants/retrieval.ts +10 -0
  505. package/src/constants/security.ts +5 -0
  506. package/src/constants/timing.ts +48 -0
  507. package/src/index.ts +11 -247
  508. package/src/init/workspace.ts +44 -0
  509. package/src/ipc/jsonlFramer.ts +29 -0
  510. package/src/pi-extension.ts +196 -605
  511. package/src/preflight/episodic.ts +183 -0
  512. package/src/preflight/intentCache.ts +44 -0
  513. package/src/preflight/queryCache.ts +59 -0
  514. package/src/preflight/queryIntent.ts +126 -0
  515. package/src/preflight/render.ts +34 -180
  516. package/src/preflight/session.ts +7 -0
  517. package/src/preflight/strip.ts +4 -11
  518. package/src/shutdown/enqueue.ts +29 -0
  519. package/src/shutdown/extractPrompt.ts +27 -0
  520. package/src/shutdown/processed.ts +45 -0
  521. package/src/shutdown/readQueue.ts +26 -0
  522. package/src/shutdown/runDrainJob.ts +202 -0
  523. package/src/shutdown/sessionReader.ts +61 -0
  524. package/src/sidecar/client.ts +98 -150
  525. package/src/sidecar/paths.ts +31 -0
  526. package/src/sidecar/protocol.ts +38 -0
  527. package/src/sidecar/reindexBridge.ts +52 -0
  528. package/src/sidecar/server/process.ts +27 -0
  529. package/src/sidecar/server/query.ts +16 -0
  530. package/src/sidecar/server/reindex.ts +21 -0
  531. package/src/sidecar/server/server.ts +105 -0
  532. package/src/sidecar/server/stats.ts +23 -0
  533. package/src/sidecar/server/vec/embedder.ts +1 -0
  534. package/src/sidecar/server/vec/mmr.ts +55 -0
  535. package/src/sidecar/server/vec/store.ts +232 -0
  536. package/src/sidecar/sidecarManager.ts +134 -0
  537. package/src/sidecar/utils.ts +28 -0
  538. package/src/sidecar/warmup.ts +50 -0
  539. package/src/store/backend.ts +66 -0
  540. package/src/store/index.ts +5 -0
  541. package/src/store/indexChunks.ts +89 -0
  542. package/src/store/markdown/format.ts +16 -0
  543. package/src/store/markdown/parse.ts +63 -0
  544. package/src/store/markdown/template.ts +24 -0
  545. package/src/store/memoryStore.ts +518 -0
  546. package/src/store/paths.ts +33 -0
  547. package/src/store/proper-lockfile.d.ts +3 -0
  548. package/src/store/types.ts +46 -0
  549. package/src/ui/memoryStatusWidget.ts +80 -0
  550. package/src/utils/debugLog.ts +22 -0
  551. package/src/utils/fs.ts +115 -0
  552. package/src/utils/index.ts +68 -0
  553. package/src/utils/paths.ts +67 -0
  554. package/src/utils/platform.ts +20 -0
  555. package/src/utils/scheduler.ts +98 -0
  556. package/src/utils/socket.ts +33 -0
  557. package/src/utils/time.ts +51 -0
  558. package/templates/MEMORY.md.example +22 -0
  559. package/dist/adapters/ollamaClient.d.ts +0 -11
  560. package/dist/adapters/ollamaClient.d.ts.map +0 -1
  561. package/dist/adapters/ollamaClient.js +0 -122
  562. package/dist/adapters/ollamaClient.js.map +0 -1
  563. package/dist/adapters/openaiCompatClient.d.ts +0 -11
  564. package/dist/adapters/openaiCompatClient.d.ts.map +0 -1
  565. package/dist/adapters/openaiCompatClient.js +0 -118
  566. package/dist/adapters/openaiCompatClient.js.map +0 -1
  567. package/dist/adapters/piComplete.d.ts +0 -17
  568. package/dist/adapters/piComplete.d.ts.map +0 -1
  569. package/dist/adapters/piComplete.js +0 -169
  570. package/dist/adapters/piComplete.js.map +0 -1
  571. package/dist/bundle/install.d.ts +0 -34
  572. package/dist/bundle/install.d.ts.map +0 -1
  573. package/dist/bundle/install.js +0 -183
  574. package/dist/bundle/install.js.map +0 -1
  575. package/dist/cache/memoryCaches.d.ts +0 -32
  576. package/dist/cache/memoryCaches.d.ts.map +0 -1
  577. package/dist/cache/memoryCaches.js +0 -59
  578. package/dist/cache/memoryCaches.js.map +0 -1
  579. package/dist/config.d.ts +0 -55
  580. package/dist/config.d.ts.map +0 -1
  581. package/dist/config.js +0 -85
  582. package/dist/config.js.map +0 -1
  583. package/dist/consolidation/enqueue.d.ts +0 -33
  584. package/dist/consolidation/enqueue.d.ts.map +0 -1
  585. package/dist/consolidation/enqueue.js +0 -145
  586. package/dist/consolidation/enqueue.js.map +0 -1
  587. package/dist/consolidation/index.d.ts +0 -19
  588. package/dist/consolidation/index.d.ts.map +0 -1
  589. package/dist/consolidation/index.js +0 -15
  590. package/dist/consolidation/index.js.map +0 -1
  591. package/dist/consolidation/lock.d.ts +0 -5
  592. package/dist/consolidation/lock.d.ts.map +0 -1
  593. package/dist/consolidation/lock.js +0 -33
  594. package/dist/consolidation/lock.js.map +0 -1
  595. package/dist/consolidation/log.d.ts +0 -8
  596. package/dist/consolidation/log.d.ts.map +0 -1
  597. package/dist/consolidation/log.js +0 -32
  598. package/dist/consolidation/log.js.map +0 -1
  599. package/dist/consolidation/memoryIndex.d.ts +0 -18
  600. package/dist/consolidation/memoryIndex.d.ts.map +0 -1
  601. package/dist/consolidation/memoryIndex.js +0 -100
  602. package/dist/consolidation/memoryIndex.js.map +0 -1
  603. package/dist/consolidation/phase2/runPhase2.d.ts +0 -23
  604. package/dist/consolidation/phase2/runPhase2.d.ts.map +0 -1
  605. package/dist/consolidation/phase2/runPhase2.js +0 -196
  606. package/dist/consolidation/phase2/runPhase2.js.map +0 -1
  607. package/dist/consolidation/scheduler/launchd.d.ts +0 -5
  608. package/dist/consolidation/scheduler/launchd.d.ts.map +0 -1
  609. package/dist/consolidation/scheduler/launchd.js +0 -54
  610. package/dist/consolidation/scheduler/launchd.js.map +0 -1
  611. package/dist/consolidation/scheduler/runConsolidate.d.ts +0 -26
  612. package/dist/consolidation/scheduler/runConsolidate.d.ts.map +0 -1
  613. package/dist/consolidation/scheduler/runConsolidate.js +0 -83
  614. package/dist/consolidation/scheduler/runConsolidate.js.map +0 -1
  615. package/dist/consolidation/scheduler/setupSchedule.d.ts +0 -3
  616. package/dist/consolidation/scheduler/setupSchedule.d.ts.map +0 -1
  617. package/dist/consolidation/scheduler/setupSchedule.js +0 -79
  618. package/dist/consolidation/scheduler/setupSchedule.js.map +0 -1
  619. package/dist/consolidation/scheduler/systemd.d.ts +0 -9
  620. package/dist/consolidation/scheduler/systemd.d.ts.map +0 -1
  621. package/dist/consolidation/scheduler/systemd.js +0 -57
  622. package/dist/consolidation/scheduler/systemd.js.map +0 -1
  623. package/dist/consolidation/scheduler/types.d.ts +0 -24
  624. package/dist/consolidation/scheduler/types.d.ts.map +0 -1
  625. package/dist/consolidation/scheduler/types.js.map +0 -1
  626. package/dist/consolidation/scope.d.ts +0 -12
  627. package/dist/consolidation/scope.d.ts.map +0 -1
  628. package/dist/consolidation/scope.js +0 -51
  629. package/dist/consolidation/scope.js.map +0 -1
  630. package/dist/consolidation/stage1/deltaExtract.d.ts +0 -3
  631. package/dist/consolidation/stage1/deltaExtract.d.ts.map +0 -1
  632. package/dist/consolidation/stage1/deltaExtract.js +0 -19
  633. package/dist/consolidation/stage1/deltaExtract.js.map +0 -1
  634. package/dist/consolidation/stage1/drainQueue.d.ts +0 -21
  635. package/dist/consolidation/stage1/drainQueue.d.ts.map +0 -1
  636. package/dist/consolidation/stage1/drainQueue.js +0 -113
  637. package/dist/consolidation/stage1/drainQueue.js.map +0 -1
  638. package/dist/consolidation/stage1/extractSession.d.ts +0 -6
  639. package/dist/consolidation/stage1/extractSession.d.ts.map +0 -1
  640. package/dist/consolidation/stage1/extractSession.js +0 -47
  641. package/dist/consolidation/stage1/extractSession.js.map +0 -1
  642. package/dist/consolidation/stage1/store.d.ts +0 -45
  643. package/dist/consolidation/stage1/store.d.ts.map +0 -1
  644. package/dist/consolidation/stage1/store.js +0 -297
  645. package/dist/consolidation/stage1/store.js.map +0 -1
  646. package/dist/consolidation/types.d.ts +0 -49
  647. package/dist/consolidation/types.d.ts.map +0 -1
  648. package/dist/errclass.d.ts +0 -7
  649. package/dist/errclass.d.ts.map +0 -1
  650. package/dist/errclass.js +0 -32
  651. package/dist/errclass.js.map +0 -1
  652. package/dist/extension.d.ts +0 -24
  653. package/dist/extension.d.ts.map +0 -1
  654. package/dist/extension.js +0 -7
  655. package/dist/extension.js.map +0 -1
  656. package/dist/fallback/index.d.ts +0 -11
  657. package/dist/fallback/index.d.ts.map +0 -1
  658. package/dist/fallback/index.js +0 -16
  659. package/dist/fallback/index.js.map +0 -1
  660. package/dist/fallback/llmRerank.d.ts +0 -19
  661. package/dist/fallback/llmRerank.d.ts.map +0 -1
  662. package/dist/fallback/llmRerank.js +0 -68
  663. package/dist/fallback/llmRerank.js.map +0 -1
  664. package/dist/fallback/memoryMd.d.ts +0 -6
  665. package/dist/fallback/memoryMd.d.ts.map +0 -1
  666. package/dist/fallback/memoryMd.js +0 -35
  667. package/dist/fallback/memoryMd.js.map +0 -1
  668. package/dist/fallback/sessionIndex.d.ts +0 -35
  669. package/dist/fallback/sessionIndex.d.ts.map +0 -1
  670. package/dist/fallback/sessionIndex.js +0 -239
  671. package/dist/fallback/sessionIndex.js.map +0 -1
  672. package/dist/fallback/sessionSearch.d.ts +0 -18
  673. package/dist/fallback/sessionSearch.d.ts.map +0 -1
  674. package/dist/fallback/sessionSearch.js +0 -234
  675. package/dist/fallback/sessionSearch.js.map +0 -1
  676. package/dist/local/graphQuery.d.ts +0 -31
  677. package/dist/local/graphQuery.d.ts.map +0 -1
  678. package/dist/local/graphQuery.js +0 -195
  679. package/dist/local/graphQuery.js.map +0 -1
  680. package/dist/paths.d.ts +0 -7
  681. package/dist/paths.d.ts.map +0 -1
  682. package/dist/paths.js +0 -26
  683. package/dist/paths.js.map +0 -1
  684. package/dist/preflight/detectIntents.d.ts +0 -102
  685. package/dist/preflight/detectIntents.d.ts.map +0 -1
  686. package/dist/preflight/detectIntents.js +0 -631
  687. package/dist/preflight/detectIntents.js.map +0 -1
  688. package/dist/preflight/hook.d.ts +0 -76
  689. package/dist/preflight/hook.d.ts.map +0 -1
  690. package/dist/preflight/hook.js +0 -122
  691. package/dist/preflight/hook.js.map +0 -1
  692. package/dist/service.d.ts +0 -72
  693. package/dist/service.d.ts.map +0 -1
  694. package/dist/service.js +0 -257
  695. package/dist/service.js.map +0 -1
  696. package/dist/session/activeBranch.d.ts +0 -17
  697. package/dist/session/activeBranch.d.ts.map +0 -1
  698. package/dist/session/activeBranch.js +0 -251
  699. package/dist/session/activeBranch.js.map +0 -1
  700. package/dist/settings.d.ts +0 -41
  701. package/dist/settings.d.ts.map +0 -1
  702. package/dist/settings.js +0 -85
  703. package/dist/settings.js.map +0 -1
  704. package/dist/sidecar/bundle.d.ts +0 -19
  705. package/dist/sidecar/bundle.d.ts.map +0 -1
  706. package/dist/sidecar/bundle.js +0 -39
  707. package/dist/sidecar/bundle.js.map +0 -1
  708. package/dist/sidecar/process.d.ts +0 -14
  709. package/dist/sidecar/process.d.ts.map +0 -1
  710. package/dist/sidecar/process.js +0 -138
  711. package/dist/sidecar/process.js.map +0 -1
  712. package/dist/tools/memoryAppend.d.ts +0 -47
  713. package/dist/tools/memoryAppend.d.ts.map +0 -1
  714. package/dist/tools/memoryAppend.js +0 -138
  715. package/dist/tools/memoryAppend.js.map +0 -1
  716. package/dist/tools/memoryRecall.d.ts +0 -113
  717. package/dist/tools/memoryRecall.d.ts.map +0 -1
  718. package/dist/tools/memoryRecall.js +0 -351
  719. package/dist/tools/memoryRecall.js.map +0 -1
  720. package/dist/trainer/bundleBuilder.d.ts +0 -30
  721. package/dist/trainer/bundleBuilder.d.ts.map +0 -1
  722. package/dist/trainer/bundleBuilder.js +0 -106
  723. package/dist/trainer/bundleBuilder.js.map +0 -1
  724. package/dist/trainer/bundleLoader.d.ts +0 -12
  725. package/dist/trainer/bundleLoader.d.ts.map +0 -1
  726. package/dist/trainer/bundleLoader.js +0 -59
  727. package/dist/trainer/bundleLoader.js.map +0 -1
  728. package/dist/trainer/deltaMerge.d.ts +0 -38
  729. package/dist/trainer/deltaMerge.d.ts.map +0 -1
  730. package/dist/trainer/deltaMerge.js +0 -183
  731. package/dist/trainer/deltaMerge.js.map +0 -1
  732. package/dist/trainer/entityResolver.d.ts +0 -27
  733. package/dist/trainer/entityResolver.d.ts.map +0 -1
  734. package/dist/trainer/entityResolver.js +0 -92
  735. package/dist/trainer/entityResolver.js.map +0 -1
  736. package/dist/trainer/extractFacts.d.ts +0 -67
  737. package/dist/trainer/extractFacts.d.ts.map +0 -1
  738. package/dist/trainer/extractFacts.js +0 -213
  739. package/dist/trainer/extractFacts.js.map +0 -1
  740. package/dist/trainer/index.d.ts +0 -54
  741. package/dist/trainer/index.d.ts.map +0 -1
  742. package/dist/trainer/index.js +0 -82
  743. package/dist/trainer/index.js.map +0 -1
  744. package/dist/trainer/llmExtractor.d.ts +0 -16
  745. package/dist/trainer/llmExtractor.d.ts.map +0 -1
  746. package/dist/trainer/llmExtractor.js +0 -146
  747. package/dist/trainer/llmExtractor.js.map +0 -1
  748. package/dist/trainer/marker.d.ts +0 -10
  749. package/dist/trainer/marker.d.ts.map +0 -1
  750. package/dist/trainer/marker.js +0 -28
  751. package/dist/trainer/marker.js.map +0 -1
  752. package/dist/trainer/scheduler.d.ts +0 -33
  753. package/dist/trainer/scheduler.d.ts.map +0 -1
  754. package/dist/trainer/scheduler.js +0 -73
  755. package/dist/trainer/scheduler.js.map +0 -1
  756. package/dist/trainer/sessionLoader.d.ts +0 -26
  757. package/dist/trainer/sessionLoader.d.ts.map +0 -1
  758. package/dist/trainer/sessionLoader.js +0 -145
  759. package/dist/trainer/sessionLoader.js.map +0 -1
  760. package/dist/types.d.ts +0 -135
  761. package/dist/types.d.ts.map +0 -1
  762. package/dist/types.js +0 -8
  763. package/dist/types.js.map +0 -1
  764. package/src/adapters/ollamaClient.ts +0 -179
  765. package/src/adapters/openaiCompatClient.ts +0 -155
  766. package/src/adapters/piComplete.ts +0 -233
  767. package/src/bundle/install.ts +0 -206
  768. package/src/cache/memoryCaches.ts +0 -72
  769. package/src/config.ts +0 -180
  770. package/src/consolidation/enqueue.ts +0 -205
  771. package/src/consolidation/index.ts +0 -90
  772. package/src/consolidation/lock.ts +0 -41
  773. package/src/consolidation/log.ts +0 -43
  774. package/src/consolidation/memoryIndex.ts +0 -127
  775. package/src/consolidation/phase2/runPhase2.ts +0 -255
  776. package/src/consolidation/scheduler/launchd.ts +0 -62
  777. package/src/consolidation/scheduler/runConsolidate.ts +0 -115
  778. package/src/consolidation/scheduler/setupSchedule.ts +0 -106
  779. package/src/consolidation/scheduler/systemd.ts +0 -78
  780. package/src/consolidation/scheduler/types.ts +0 -27
  781. package/src/consolidation/scope.ts +0 -58
  782. package/src/consolidation/stage1/deltaExtract.ts +0 -29
  783. package/src/consolidation/stage1/drainQueue.ts +0 -143
  784. package/src/consolidation/stage1/extractSession.ts +0 -58
  785. package/src/consolidation/stage1/store.ts +0 -411
  786. package/src/consolidation/types.ts +0 -52
  787. package/src/errclass.ts +0 -37
  788. package/src/extension.ts +0 -23
  789. package/src/fallback/index.ts +0 -24
  790. package/src/fallback/llmRerank.ts +0 -97
  791. package/src/fallback/memoryMd.ts +0 -36
  792. package/src/fallback/sessionIndex.ts +0 -290
  793. package/src/fallback/sessionSearch.ts +0 -261
  794. package/src/local/graphQuery.ts +0 -252
  795. package/src/paths.ts +0 -28
  796. package/src/preflight/detectIntents.ts +0 -660
  797. package/src/preflight/hook.ts +0 -213
  798. package/src/service.ts +0 -306
  799. package/src/session/activeBranch.ts +0 -294
  800. package/src/settings.ts +0 -161
  801. package/src/sidecar/bundle.ts +0 -52
  802. package/src/sidecar/process.ts +0 -160
  803. package/src/tools/memoryAppend.ts +0 -166
  804. package/src/tools/memoryRecall.ts +0 -388
  805. package/src/trainer/bundleBuilder.ts +0 -192
  806. package/src/trainer/bundleLoader.ts +0 -105
  807. package/src/trainer/deltaMerge.ts +0 -221
  808. package/src/trainer/entityResolver.ts +0 -140
  809. package/src/trainer/extractFacts.ts +0 -312
  810. package/src/trainer/index.ts +0 -147
  811. package/src/trainer/llmExtractor.ts +0 -206
  812. package/src/trainer/marker.ts +0 -30
  813. package/src/trainer/scheduler.ts +0 -107
  814. package/src/trainer/sessionLoader.ts +0 -176
  815. package/src/types.ts +0 -168
  816. /package/dist/{consolidation/scheduler → adapters/embed}/types.js +0 -0
  817. /package/dist/{consolidation → adapters/llm}/types.js +0 -0
package/README.md CHANGED
@@ -1,297 +1,365 @@
1
1
  # @chendpoc/pi-memory
2
2
 
3
- [![npm](https://img.shields.io/npm/v/@chendpoc/pi-memory)](https://www.npmjs.com/package/@chendpoc/pi-memory)
3
+ <p align="center">
4
+ <a href="README.md">English</a> |
5
+ <a href="doc/README-zh.md">简体中文</a>
6
+ </p>
4
7
 
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.
8
+ Cross-session episodic memory for the [Pi coding agent](https://pi.dev).
6
9
 
7
- **No external binaries required** --- pure TypeScript, runs entirely inside Pi.
10
+ `pi-memory` gives Pi a local, auditable memory layer across sessions. It keeps durable facts in **`MEMORY.md` as the source of truth**, derives a vector index in `memory.vec.sqlite`, and injects relevant private context through Preflight before the main model answers.
8
11
 
9
- ## Features
12
+ ## What It Does
10
13
 
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`
14
+ Pi already has compaction for long sessions. That solves "this conversation is too long"; it does not solve "a new session forgot my preferences, project conventions, prior decisions, and unresolved todos."
21
15
 
22
- ## Install
16
+ `pi-memory` fills that gap:
17
+
18
+ ```text
19
+ durable facts -> MEMORY.md -> derived vector index -> per-turn Preflight recall
20
+ ```
21
+
22
+ It provides:
23
+
24
+ - **Explicit memory** through `/remember`.
25
+ - **Automatic durable fact export** from Pi compaction.
26
+ - **Shutdown queue recovery** for short or missed sessions.
27
+ - **Per-turn private recall** before the main model runs.
28
+ - **Human-editable storage** in Markdown, with vector search as a rebuildable index.
29
+ - **Offline maintenance** for consolidation, dedupe, overflow handling, and queue draining.
30
+
31
+ ## Installation
32
+
33
+ Requirements:
34
+
35
+ - Node.js `>=24 <25`
36
+ - pnpm
37
+ - Pi extension runtime packages supplied by Pi
38
+
39
+ Install as a package in the Pi extension environment:
23
40
 
24
41
  ```bash
25
- pi install npm:@chendpoc/pi-memory
42
+ pnpm add @chendpoc/pi-memory
43
+ ```
44
+
45
+ For local development from this repository:
46
+
47
+ ```bash
48
+ pnpm install
49
+ pnpm build
50
+ pnpm typecheck
51
+ pnpm test
26
52
  ```
27
53
 
28
- Or for local development:
54
+ Enable the extension through Pi's extension loading mechanism. This package declares:
29
55
 
30
56
  ```json
31
57
  {
32
- "packages": ["./extensions/pi-memory"]
58
+ "pi": {
59
+ "extensions": ["./src/pi-extension.ts"]
60
+ }
33
61
  }
34
62
  ```
35
63
 
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
64
+ Initialize memory explicitly when needed:
39
65
 
40
66
  ```bash
41
- # 1. Install the package
42
- pi install npm:@chendpoc/pi-memory
67
+ pi-memory init
68
+ ```
43
69
 
44
- # 2. Train a memory bundle from your session history
45
- npx pi-memory train --full
70
+ Initialization never overwrites a non-empty `MEMORY.md`.
46
71
 
47
- # 3. Run first consolidation and install the daily scheduler
48
- npx pi-memory consolidate
49
- npx pi-memory setup-schedule
72
+ ## Why Choose `pi-memory`
50
73
 
51
- # 4. Restart Pi --- memory is now active
52
- # Try asking: "What projects have I worked on?"
53
- ```
74
+ ### Agent Before / After
75
+
76
+ | Situation | Without `pi-memory` | With `pi-memory` |
77
+ | --- | --- | --- |
78
+ | New session asks "continue the plan from last time" | Agent has to ask for context or guess from the current repo. | Preflight recalls matching `MEMORY.md` facts and injects private reference context. |
79
+ | User says "remember that this repo uses Vitest" | The fact may stay only in the current session summary. | `/remember` writes a `[user]` entry that consolidate must preserve. |
80
+ | Long session compacts | Compaction helps continue that session but does not create durable cross-session facts. | One dual-purpose compact summary keeps session context and exports durable facts. |
81
+ | Subagent is spawned | It may over-recall or duplicate the parent session's memory writes. | Subagents get Memory Cap only and write Compact Delta facts. |
82
+ | Vector sidecar is down | A hard dependency would break the turn. | Preflight silently falls back to Markdown or injects nothing; the model still runs. |
83
+ | Memory grows | A file can become noisy and unbounded. | 150-line `MEMORY.md` cap, `auto-*.md` overflow, consolidate merge/dedupe. |
84
+
85
+ ### Key Advantages
86
+
87
+ - **Markdown Ground Truth**: `MEMORY.md` and `auto-*.md` can be opened, reviewed, edited, grepped, copied, or versioned.
88
+ - **Derived index, not hidden state**: `memory.vec.sqlite` can be deleted and rebuilt from Markdown.
89
+ - **Preflight recall**: Memory is injected before the main model answers instead of hoping the model calls a search tool.
90
+ - **Hot-path budget**: Default Preflight budget is **800ms**, with QueryIntent, sidecar query, and fallback all bounded.
91
+ - **Protected user notes**: `/remember` writes `[user]` entries that consolidate must not remove or rewrite.
92
+ - **Sidecar isolation**: embedding, vector scan, MMR, stats, and reindex run outside the extension process, while writes stay owned by `MemoryStore`.
93
+ - **Subagent policy**: root sessions get Memory Cap + Episodic Preflight; subagents get Memory Cap only by default.
94
+ - **Graceful fallback**: if sidecar recall is empty, timed out, or unavailable, the turn still runs.
95
+
96
+ ### Comparison
54
97
 
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
98
+ `pi-memory` is not trying to be every memory system. The value is a specific Pi-native loop: Markdown ground truth, Preflight injection, sidecar retrieval, compaction export, and offline maintenance.
99
+
100
+ | System | Strength | Difference From `@chendpoc/pi-memory` |
101
+ | --- | --- | --- |
102
+ | Cursor Rules / OpenCode `AGENTS.md` | Static project instructions, predictable injection. | Mostly user-authored rules; no automatic durable fact extraction or per-turn episodic Preflight. |
103
+ | Claude Code Auto Memory | Agent can write local memory files. | File-based memory, but no sidecar vector recall or Pi compact/shutdown integration. |
104
+ | `pi-hermes-memory` | Rich Pi package with FTS5, failure memory, correction learning, security scanning. | More automated and feature-heavy; no `<private_memory>` Preflight loop or sidecar-derived vector index. |
105
+ | OpenClaw memory-core | Mature file + index design, dreaming, hybrid search, local embeddings. | Broader memory platform; `pi-memory` is narrower and Pi-extension focused. |
106
+ | Mem0 / Zep | Managed memory APIs with hybrid search, graph, temporal modeling. | Stronger retrieval infrastructure, but external service/database oriented and not Markdown-ground-truth first. |
107
+ | Letta | Context engineering with git-backed memory repos and sleep-time compute. | Powerful for autonomous memory management; heavier mental model than Pi's extension lifecycle. |
108
+ | Cognee | Knowledge engine with graph/vector/relational stores and many retrieval modes. | Better for knowledge graphs; overkill for lightweight coding-agent preferences and conventions. |
109
+
110
+ Where other systems are stronger:
111
+
112
+ - `pi-hermes-memory`: failure memory, correction detector, tool quirks, secret scanning.
113
+ - OpenClaw: dreaming stages, memory wiki, hybrid FTS/vector search, local embedding providers.
114
+ - Zep/Cognee: temporal graph reasoning and multi-hop graph retrieval.
115
+ - Mem0: hosted multi-tenant memory API.
116
+ - Letta: autonomous context repositories and sleep-time memory work.
60
117
 
61
118
  ## How It Works
62
119
 
120
+ ### Architecture
121
+
122
+ ```text
123
+ Pi extension process
124
+ |- session_start
125
+ | |- initialize MEMORY.md
126
+ | |- start/warm sidecar
127
+ | |- reindex derived vector index
128
+ | `- preload Memory Cap
129
+ |
130
+ |- before_agent_start / context
131
+ | `- Preflight recall -> <private_memory> injection
132
+ |
133
+ |- /remember
134
+ | `- append [user] Memory Entry
135
+ |
136
+ |- session_before_compact / session_compact
137
+ | `- dual-purpose summary -> Memory Export ingest
138
+ |
139
+ |- session_shutdown
140
+ | `- append shutdown metadata only
141
+ |
142
+ `- consolidate scheduler
143
+ `- merge/dedupe -> rewrite Ground Truth -> reindex
144
+
145
+ Sidecar process over UDS JSONL
146
+ |- ping
147
+ |- stats
148
+ |- query: embed -> cosine scan -> MMR
149
+ `- reindex: upsert chunks into memory.vec.sqlite
63
150
  ```
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
151
+
152
+ ### Read Path
153
+
154
+ Root session:
155
+
156
+ ```text
157
+ Memory Cap from Ground Truth
158
+ + Episodic Preflight for the current user message
159
+ -> merged <private_memory>
77
160
  ```
78
161
 
79
- ### Query Backends
162
+ Subagent session:
80
163
 
81
- The service automatically selects the best available backend:
164
+ ```text
165
+ Memory Cap only
166
+ -> no episodic QueryIntent / sidecar query by default
167
+ ```
82
168
 
83
- | Priority | Backend | Requires |
84
- |----------|---------|----------|
85
- | 1 | **LocalGraphQuerier** (in-process) | bundle only |
86
- | 2 | **FTS5 + keyword fallback** | `better-sqlite3` (optional) |
169
+ Fallback chain:
87
170
 
88
- The default backend is LocalGraphQuerier --- pure TypeScript, no external dependencies.
171
+ ```text
172
+ Sidecar results
173
+ -> if empty/error/timeout: MEMORY.md fallback
174
+ -> if empty: no injection
175
+ ```
89
176
 
90
- ## Commands
177
+ ### Write Paths
91
178
 
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 |
179
+ | Path | Trigger | LLM? | Blocking? | Purpose |
180
+ | --- | --- | --- | --- | --- |
181
+ | `/remember` | User command | No | Yes | Explicit durable note |
182
+ | Compaction | `session_before_compact` + `session_compact` | One summary call | Summary blocks; ingest is background | Continue current session and export durable facts |
183
+ | Shutdown Queue | `session_shutdown` + `pi-memory maintenance` | Only offline, when no compaction summary exists | No during shutdown | Recover facts from short or missed sessions |
184
+ | Consolidate | overflow >= 12, 7 days, or daily cron | Optional | Offline/background | Dedupe, merge, prune obsolete todos |
96
185
 
97
- ## CLI
186
+ ## Data And Memory Format
98
187
 
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
- ```
188
+ All artifacts live under one memory agent directory.
135
189
 
136
- `train --watch` is kept for compatibility. The long-term memory path is `pi-memory consolidate` plus the OS scheduler.
190
+ Resolution order:
137
191
 
138
- ## Flags
192
+ 1. `--agent-dir` CLI flag
193
+ 2. `PI_MEMORY_AGENT_DIR`
194
+ 3. default `~/.pi/pi-memory-data`
139
195
 
140
- | Flag | Description | Default |
141
- |------|-------------|---------|
142
- | `--memory-helper-model` | LLM model for intent detection and rerank | `deepseek/deepseek-v4-flash` |
196
+ | File | Role |
197
+ | --- | --- |
198
+ | `MEMORY.md` | Ground Truth file |
199
+ | `auto-*.md` | Overflow files after the 150-line cap |
200
+ | `.memory_gc` | Last consolidate timestamp |
201
+ | `.memory_compactions.json` | Compaction idempotency state |
202
+ | `.memory_shutdown_queue.jsonl` | Append-only shutdown metadata |
203
+ | `.memory_shutdown_processed.json` | Drain idempotency state |
204
+ | `memory.vec.sqlite` | Derived Vector Index |
205
+ | `memory.sock` | Sidecar Unix domain socket |
143
206
 
144
- ```bash
145
- pi --memory-helper-model deepseek/deepseek-v4-flash
146
- ```
207
+ Canonical scaffold: [`templates/MEMORY.md.example`](./templates/MEMORY.md.example)
147
208
 
148
- ## Data Layout
209
+ ```markdown
210
+ # Memory
149
211
 
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
212
+ ## Preferences
213
+
214
+ ## Conventions
215
+
216
+ ## Findings
217
+
218
+ ## Todos
165
219
  ```
166
220
 
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;
221
+ Entries are single Markdown bullets:
222
+
223
+ ```markdown
224
+ - [user] Prefer pnpm over npm <!-- id:abc123 user ts:2026-07-04T09:00:00.000+08:00 -->
225
+ - Project tests use Vitest <!-- id:def456 ts:2026-07-04T09:05:00.000+08:00 -->
203
226
  ```
204
227
 
205
- ## Architecture
228
+ Rules:
206
229
 
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 |
230
+ - `/remember` writes `[user]` entries.
231
+ - Consolidate must not remove or rewrite `[user]` entries.
232
+ - `MEMORY.md` is capped at 150 lines.
233
+ - Overflow entries spill to `auto-*.md`, with a pointer in `MEMORY.md`.
234
+ - Vector chunks are derived from entries; by default long entries split beyond `PI_MEMORY_CHUNK_MAX_CHARS=512`.
218
235
 
219
- ## Implicit Preflight
236
+ ## Configuration
220
237
 
221
- On every LLM call, the `context` event:
238
+ Optional env file locations are loaded in this order:
222
239
 
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
240
+ 1. `PI_MEMORY_ENV_FILE`
241
+ 2. project `.env`
242
+ 3. project `.env.local`
243
+ 4. `~/.pi/agent/pi-memory.env`
228
244
 
229
- ## Peer Dependencies
245
+ Common variables:
230
246
 
231
- These are provided by the Pi host and should not be bundled:
247
+ | Variable | Default | Purpose |
248
+ | --- | --- | --- |
249
+ | `PI_MEMORY_AGENT_DIR` | `~/.pi/pi-memory-data` | Memory data root |
250
+ | `PI_MEMORY_EMBEDDER` | `hash` | `hash`, `ollama`, or `openai` |
251
+ | `PI_MEMORY_HELPER_MODEL` | `deepseek/deepseek-v4-flash` | Helper model spec for QueryIntent and consolidate |
252
+ | `PI_MEMORY_PREFLIGHT_BUDGET_MS` | `800` | Shared Preflight budget, clamped to 250-1500ms |
253
+ | `PI_MEMORY_INTENT_RETRIES` | `0` | Helper LLM retries after the first attempt |
254
+ | `PI_MEMORY_WARM_SIDECAR` | `1` | Warm sidecar at `session_start` |
255
+ | `PI_MEMORY_INTENT_CACHE` | `1` | Cache QueryIntent per session |
256
+ | `PI_MEMORY_REINDEX_DEBOUNCE_MS` | `500` | Debounce sidecar reindex after writes |
257
+ | `PI_MEMORY_TOP_K` | `3` | Vector recall result count |
258
+ | `PI_MEMORY_MMR_LAMBDA` | `0.8` | MMR relevance/diversity balance |
259
+ | `PI_MEMORY_MIN_RELEVANCE` | `0.4` | Minimum cosine similarity |
260
+ | `PI_MEMORY_CHUNK_MAX_CHARS` | `512` | Split long entries for indexing; `0` disables |
261
+ | `PI_MEMORY_DEBUG` | unset | `1` prints debug timing logs |
232
262
 
233
- - `@earendil-works/pi-agent-core`
234
- - `@earendil-works/pi-ai`
235
- - `@earendil-works/pi-coding-agent`
236
- - `typebox`
263
+ See [`.env.example`](./.env.example) for the full list.
237
264
 
238
- ## Optional Dependencies
265
+ ### Embedders
239
266
 
240
- - `better-sqlite3` --- enables FTS5 session search index (graceful degradation if absent)
267
+ | Embedder | Use When | Notes |
268
+ | --- | --- | --- |
269
+ | `hash` | Zero-config local development | Offline, deterministic, lower semantic quality |
270
+ | `ollama` | Local semantic embeddings | Uses `PI_MEMORY_OLLAMA_BASE_URL` and `PI_MEMORY_OLLAMA_EMBED_MODEL` |
271
+ | `openai` | Higher-quality cloud embeddings | Requires `PI_MEMORY_OPENAI_API_KEY` or `OPENAI_API_KEY` |
241
272
 
242
- ## Releasing
273
+ The Vector Index stores embedding provider, model, and dimension metadata. When they change, old chunks are cleared and rebuilt.
243
274
 
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).
275
+ ## Commands
276
+
277
+ Inside Pi:
278
+
279
+ ```text
280
+ /remember [section] <content>
281
+ /memory-status [refresh|expand|collapse|hide]
282
+ ```
245
283
 
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:
284
+ CLI:
249
285
 
250
286
  ```bash
251
- git pull origin main
252
- git tag v0.1.13
253
- git push origin v0.1.13
287
+ pi-memory init
288
+ pi-memory status
289
+ pi-memory maintenance --cron --verbose
290
+ pi-memory consolidate --force --verbose
291
+ pi-memory drain-shutdown-queue --verbose
254
292
  ```
255
293
 
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`).
294
+ `maintenance` is the recommended scheduler entrypoint:
257
295
 
258
- ### npm trusted publishing (recommended)
296
+ ```text
297
+ consolidate -> drain-shutdown-queue
298
+ ```
259
299
 
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`).
300
+ Scheduler templates:
261
301
 
262
- **One-time setup on npmjs.com** (package must exist first — see below):
302
+ - [`templates/com.pi.memory.consolidate.plist.example`](./templates/com.pi.memory.consolidate.plist.example)
303
+ - [`templates/crontab.example`](./templates/crontab.example)
304
+ - [`templates/consolidate.cmd.example`](./templates/consolidate.cmd.example)
305
+ - [`templates/schtasks.example.txt`](./templates/schtasks.example.txt)
263
306
 
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)*
307
+ ## Diagnostics
271
308
 
272
- **First publish:** npm requires the package to exist before you can configure trusted publishing. Either:
309
+ Use `/memory-status` or `pi-memory status` to inspect:
273
310
 
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.
311
+ - memory agent directory
312
+ - `MEMORY.md` line count
313
+ - entry count
314
+ - overflow count
315
+ - last consolidate timestamp
316
+ - sidecar socket status
317
+ - vector index generation and chunk count
318
+ - configured embedder
319
+ - index embedder mismatch
276
320
 
277
- The workflow already sets `id-token: write` and uses Node 24 (npm ≥ 11.5.1). Provenance is automatic with trusted publishing.
321
+ Use `PI_MEMORY_DEBUG=1` to log Preflight timings:
278
322
 
279
- **Re-run without deleting a tag:** GitHub → Actions → **Tag Release** → **Run workflow**
323
+ ```json
324
+ {
325
+ "phase": "preflight",
326
+ "event": "recall",
327
+ "intent_ms": 0,
328
+ "intent_skipped": true,
329
+ "intent_cache_hit": false,
330
+ "sidecar_ms": 42,
331
+ "cache_hit": true,
332
+ "total_ms": 45,
333
+ "fallback": false,
334
+ "results": 3
335
+ }
336
+ ```
337
+
338
+ ## Non-Goals
280
339
 
281
- - `tag`: `v0.1.13`
282
- - `skip_github_release`: (release already exists)
283
- - `publish_npm`:
340
+ - Replacing Pi compaction.
341
+ - Replacing session search; use a dedicated session-search extension for old conversations.
342
+ - Maintaining a graph database inside this package.
343
+ - Making the sidecar authoritative.
344
+ - Storing full chat transcripts as memory.
345
+ - Adding multi-second reflection to every user turn.
284
346
 
285
347
  ## Development
286
348
 
287
349
  ```bash
288
- pnpm install
289
- pnpm build
290
- pnpm test
291
350
  pnpm typecheck
292
- pnpm changeset # before opening a release PR
351
+ pnpm test
352
+ pnpm build
293
353
  ```
294
354
 
355
+ The sidecar IPC test opens a Unix domain socket. If it fails with `listen EPERM` inside a restricted sandbox, run the test in a normal local shell.
356
+
357
+ ## Docs
358
+
359
+ - [Chinese README](./doc/README-zh.md)
360
+ - [Roadmap](./doc/ROADMAP.md)
361
+ - [UBIQUITOUS_LANGUAGE.md](./UBIQUITOUS_LANGUAGE.md) - domain glossary
362
+
295
363
  ## License
296
364
 
297
365
  MIT
@@ -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。