@chendpoc/pi-memory 0.2.2 → 0.2.3

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 (559) hide show
  1. package/README.md +4 -2
  2. package/dist/adapters/embed/factory.d.ts +0 -1
  3. package/dist/adapters/embed/factory.js +0 -1
  4. package/dist/adapters/embed/hash.d.ts +0 -1
  5. package/dist/adapters/embed/hash.js +0 -1
  6. package/dist/adapters/embed/normalize.d.ts +0 -1
  7. package/dist/adapters/embed/normalize.js +0 -1
  8. package/dist/adapters/embed/ollama.d.ts +0 -1
  9. package/dist/adapters/embed/ollama.js +0 -1
  10. package/dist/adapters/embed/openai.d.ts +0 -1
  11. package/dist/adapters/embed/openai.js +0 -1
  12. package/dist/adapters/embed/types.d.ts +0 -1
  13. package/dist/adapters/embed/types.js +0 -1
  14. package/dist/adapters/http.d.ts +0 -1
  15. package/dist/adapters/http.js +0 -1
  16. package/dist/adapters/index.d.ts +0 -1
  17. package/dist/adapters/index.js +0 -1
  18. package/dist/adapters/llm/extractText.d.ts +0 -1
  19. package/dist/adapters/llm/extractText.js +0 -1
  20. package/dist/adapters/llm/factory.d.ts +0 -1
  21. package/dist/adapters/llm/factory.js +0 -1
  22. package/dist/adapters/llm/index.d.ts +0 -1
  23. package/dist/adapters/llm/index.js +0 -1
  24. package/dist/adapters/llm/modelSpec.d.ts +0 -1
  25. package/dist/adapters/llm/modelSpec.js +0 -1
  26. package/dist/adapters/llm/ollama.d.ts +0 -1
  27. package/dist/adapters/llm/ollama.js +0 -1
  28. package/dist/adapters/llm/openai-compat.d.ts +0 -1
  29. package/dist/adapters/llm/openai-compat.js +0 -1
  30. package/dist/adapters/llm/pi-ai.d.ts +0 -1
  31. package/dist/adapters/llm/pi-ai.js +0 -1
  32. package/dist/adapters/llm/standalone.d.ts +0 -1
  33. package/dist/adapters/llm/standalone.js +0 -1
  34. package/dist/adapters/llm/types.d.ts +0 -1
  35. package/dist/adapters/llm/types.js +0 -1
  36. package/dist/cli/init.d.ts +0 -1
  37. package/dist/cli/init.js +0 -1
  38. package/dist/cli/jobs.d.ts +0 -1
  39. package/dist/cli/jobs.js +0 -1
  40. package/dist/cli/log.d.ts +0 -1
  41. package/dist/cli/log.js +0 -1
  42. package/dist/cli/parseArgs.d.ts +0 -1
  43. package/dist/cli/parseArgs.js +0 -1
  44. package/dist/cli/status.d.ts +0 -1
  45. package/dist/cli/status.js +0 -1
  46. package/dist/cli/theme.d.ts +0 -1
  47. package/dist/cli/theme.js +0 -1
  48. package/dist/cli.d.ts +0 -1
  49. package/dist/cli.js +0 -1
  50. package/dist/commands/index.d.ts +0 -1
  51. package/dist/commands/index.js +0 -1
  52. package/dist/commands/parseMemoryStatusArgs.d.ts +0 -1
  53. package/dist/commands/parseMemoryStatusArgs.js +0 -1
  54. package/dist/commands/parseRememberArgs.d.ts +0 -1
  55. package/dist/commands/parseRememberArgs.js +0 -1
  56. package/dist/commands/remember.d.ts +0 -1
  57. package/dist/commands/remember.js +0 -1
  58. package/dist/commands/status.d.ts +0 -1
  59. package/dist/commands/status.js +0 -1
  60. package/dist/commands/types.d.ts +0 -1
  61. package/dist/commands/types.js +0 -1
  62. package/dist/compact/index.d.ts +0 -1
  63. package/dist/compact/index.js +0 -1
  64. package/dist/compact/parseMemoryExport.d.ts +0 -1
  65. package/dist/compact/parseMemoryExport.js +0 -1
  66. package/dist/compact/register.d.ts +0 -1
  67. package/dist/compact/register.js +0 -1
  68. package/dist/compact/runSummary.d.ts +0 -1
  69. package/dist/compact/runSummary.js +0 -1
  70. package/dist/compact/subagentDelta.d.ts +0 -1
  71. package/dist/compact/subagentDelta.js +0 -1
  72. package/dist/compact/summaryPrompt.d.ts +0 -1
  73. package/dist/compact/summaryPrompt.js +0 -1
  74. package/dist/config/agentDir.d.ts +0 -1
  75. package/dist/config/agentDir.js +0 -1
  76. package/dist/config/chunking.d.ts +0 -1
  77. package/dist/config/chunking.js +0 -1
  78. package/dist/config/env.d.ts +0 -1
  79. package/dist/config/env.js +0 -1
  80. package/dist/config/index.d.ts +0 -1
  81. package/dist/config/index.js +0 -1
  82. package/dist/config/loadEnv.d.ts +0 -1
  83. package/dist/config/loadEnv.js +0 -1
  84. package/dist/config/preflight.d.ts +0 -1
  85. package/dist/config/preflight.js +0 -1
  86. package/dist/config/preflightBudget.d.ts +0 -1
  87. package/dist/config/preflightBudget.js +0 -1
  88. package/dist/config/retrieval.d.ts +0 -1
  89. package/dist/config/retrieval.js +0 -1
  90. package/dist/consolidate/entryKey.d.ts +0 -1
  91. package/dist/consolidate/entryKey.js +0 -1
  92. package/dist/consolidate/index.d.ts +0 -1
  93. package/dist/consolidate/index.js +0 -1
  94. package/dist/consolidate/mergeEntries.d.ts +0 -1
  95. package/dist/consolidate/mergeEntries.js +0 -1
  96. package/dist/consolidate/mergePrompt.d.ts +0 -1
  97. package/dist/consolidate/mergePrompt.js +0 -1
  98. package/dist/consolidate/mergeWithLlm.d.ts +0 -1
  99. package/dist/consolidate/mergeWithLlm.js +0 -1
  100. package/dist/consolidate/runJob.d.ts +0 -1
  101. package/dist/consolidate/runJob.js +0 -1
  102. package/dist/consolidate/scheduler.d.ts +0 -1
  103. package/dist/consolidate/scheduler.js +0 -1
  104. package/dist/constants/chunking.d.ts +0 -1
  105. package/dist/constants/chunking.js +0 -1
  106. package/dist/constants/env.d.ts +0 -1
  107. package/dist/constants/env.js +0 -1
  108. package/dist/constants/index.d.ts +0 -1
  109. package/dist/constants/index.js +0 -1
  110. package/dist/constants/memory.d.ts +0 -1
  111. package/dist/constants/memory.js +0 -1
  112. package/dist/constants/paths.d.ts +0 -1
  113. package/dist/constants/paths.js +0 -1
  114. package/dist/constants/preflight.d.ts +0 -1
  115. package/dist/constants/preflight.js +0 -1
  116. package/dist/constants/retrieval.d.ts +0 -1
  117. package/dist/constants/retrieval.js +0 -1
  118. package/dist/constants/security.d.ts +0 -1
  119. package/dist/constants/security.js +0 -1
  120. package/dist/constants/timing.d.ts +0 -1
  121. package/dist/constants/timing.js +0 -1
  122. package/dist/index.d.ts +0 -1
  123. package/dist/index.js +0 -1
  124. package/dist/init/workspace.d.ts +0 -1
  125. package/dist/init/workspace.js +0 -1
  126. package/dist/ipc/jsonlFramer.d.ts +0 -1
  127. package/dist/ipc/jsonlFramer.js +0 -1
  128. package/dist/pi-extension.d.ts +0 -1
  129. package/dist/pi-extension.js +0 -1
  130. package/dist/preflight/episodic.d.ts +0 -1
  131. package/dist/preflight/episodic.js +0 -1
  132. package/dist/preflight/intentCache.d.ts +0 -1
  133. package/dist/preflight/intentCache.js +0 -1
  134. package/dist/preflight/queryCache.d.ts +0 -1
  135. package/dist/preflight/queryCache.js +0 -1
  136. package/dist/preflight/queryIntent.d.ts +0 -1
  137. package/dist/preflight/queryIntent.js +0 -1
  138. package/dist/preflight/render.d.ts +0 -1
  139. package/dist/preflight/render.js +0 -1
  140. package/dist/preflight/session.d.ts +0 -1
  141. package/dist/preflight/session.js +0 -1
  142. package/dist/preflight/strip.d.ts +0 -1
  143. package/dist/preflight/strip.js +0 -1
  144. package/dist/shutdown/enqueue.d.ts +0 -1
  145. package/dist/shutdown/enqueue.js +0 -1
  146. package/dist/shutdown/extractPrompt.d.ts +0 -1
  147. package/dist/shutdown/extractPrompt.js +0 -1
  148. package/dist/shutdown/processed.d.ts +0 -1
  149. package/dist/shutdown/processed.js +0 -1
  150. package/dist/shutdown/readQueue.d.ts +0 -1
  151. package/dist/shutdown/readQueue.js +0 -1
  152. package/dist/shutdown/runDrainJob.d.ts +0 -1
  153. package/dist/shutdown/runDrainJob.js +0 -1
  154. package/dist/shutdown/sessionReader.d.ts +0 -1
  155. package/dist/shutdown/sessionReader.js +0 -1
  156. package/dist/sidecar/client.d.ts +0 -1
  157. package/dist/sidecar/client.js +0 -1
  158. package/dist/sidecar/paths.d.ts +0 -1
  159. package/dist/sidecar/paths.js +0 -1
  160. package/dist/sidecar/protocol.d.ts +0 -1
  161. package/dist/sidecar/protocol.js +0 -1
  162. package/dist/sidecar/reindexBridge.d.ts +0 -1
  163. package/dist/sidecar/reindexBridge.js +0 -1
  164. package/dist/sidecar/server/process.d.ts +0 -1
  165. package/dist/sidecar/server/process.js +0 -1
  166. package/dist/sidecar/server/query.d.ts +0 -1
  167. package/dist/sidecar/server/query.js +0 -1
  168. package/dist/sidecar/server/reindex.d.ts +0 -1
  169. package/dist/sidecar/server/reindex.js +0 -1
  170. package/dist/sidecar/server/server.d.ts +0 -1
  171. package/dist/sidecar/server/server.js +0 -1
  172. package/dist/sidecar/server/stats.d.ts +0 -1
  173. package/dist/sidecar/server/stats.js +0 -1
  174. package/dist/sidecar/server/vec/embedder.d.ts +0 -1
  175. package/dist/sidecar/server/vec/embedder.js +0 -1
  176. package/dist/sidecar/server/vec/mmr.d.ts +0 -1
  177. package/dist/sidecar/server/vec/mmr.js +0 -1
  178. package/dist/sidecar/server/vec/store.d.ts +0 -1
  179. package/dist/sidecar/server/vec/store.js +0 -1
  180. package/dist/sidecar/sidecarManager.d.ts +0 -1
  181. package/dist/sidecar/sidecarManager.js +0 -1
  182. package/dist/sidecar/utils.d.ts +0 -1
  183. package/dist/sidecar/utils.js +0 -1
  184. package/dist/sidecar/warmup.d.ts +0 -1
  185. package/dist/sidecar/warmup.js +0 -1
  186. package/dist/store/backend.d.ts +0 -1
  187. package/dist/store/backend.js +0 -1
  188. package/dist/store/index.d.ts +0 -1
  189. package/dist/store/index.js +0 -1
  190. package/dist/store/indexChunks.d.ts +0 -1
  191. package/dist/store/indexChunks.js +0 -1
  192. package/dist/store/markdown/format.d.ts +0 -1
  193. package/dist/store/markdown/format.js +0 -1
  194. package/dist/store/markdown/parse.d.ts +0 -1
  195. package/dist/store/markdown/parse.js +0 -1
  196. package/dist/store/markdown/template.d.ts +0 -1
  197. package/dist/store/markdown/template.js +0 -1
  198. package/dist/store/memoryStore.d.ts +0 -1
  199. package/dist/store/memoryStore.js +0 -1
  200. package/dist/store/paths.d.ts +0 -1
  201. package/dist/store/paths.js +0 -1
  202. package/dist/store/types.d.ts +0 -1
  203. package/dist/store/types.js +0 -1
  204. package/dist/ui/memoryStatusWidget.d.ts +0 -1
  205. package/dist/ui/memoryStatusWidget.js +0 -1
  206. package/dist/utils/debugLog.d.ts +0 -1
  207. package/dist/utils/debugLog.js +0 -1
  208. package/dist/utils/fs.d.ts +0 -1
  209. package/dist/utils/fs.js +0 -1
  210. package/dist/utils/index.d.ts +0 -1
  211. package/dist/utils/index.js +0 -1
  212. package/dist/utils/paths.d.ts +0 -1
  213. package/dist/utils/paths.js +0 -1
  214. package/dist/utils/platform.d.ts +0 -1
  215. package/dist/utils/platform.js +0 -1
  216. package/dist/utils/scheduler.d.ts +0 -1
  217. package/dist/utils/scheduler.js +0 -1
  218. package/dist/utils/socket.d.ts +0 -1
  219. package/dist/utils/socket.js +0 -1
  220. package/dist/utils/time.d.ts +0 -1
  221. package/dist/utils/time.js +0 -1
  222. package/package.json +6 -11
  223. package/scripts/prepare.mjs +24 -0
  224. package/UBIQUITOUS_LANGUAGE.md +0 -81
  225. package/assets/pi-memory-logo.png +0 -0
  226. package/dist/adapters/embed/factory.d.ts.map +0 -1
  227. package/dist/adapters/embed/factory.js.map +0 -1
  228. package/dist/adapters/embed/hash.d.ts.map +0 -1
  229. package/dist/adapters/embed/hash.js.map +0 -1
  230. package/dist/adapters/embed/normalize.d.ts.map +0 -1
  231. package/dist/adapters/embed/normalize.js.map +0 -1
  232. package/dist/adapters/embed/ollama.d.ts.map +0 -1
  233. package/dist/adapters/embed/ollama.js.map +0 -1
  234. package/dist/adapters/embed/openai.d.ts.map +0 -1
  235. package/dist/adapters/embed/openai.js.map +0 -1
  236. package/dist/adapters/embed/types.d.ts.map +0 -1
  237. package/dist/adapters/embed/types.js.map +0 -1
  238. package/dist/adapters/http.d.ts.map +0 -1
  239. package/dist/adapters/http.js.map +0 -1
  240. package/dist/adapters/index.d.ts.map +0 -1
  241. package/dist/adapters/index.js.map +0 -1
  242. package/dist/adapters/llm/extractText.d.ts.map +0 -1
  243. package/dist/adapters/llm/extractText.js.map +0 -1
  244. package/dist/adapters/llm/factory.d.ts.map +0 -1
  245. package/dist/adapters/llm/factory.js.map +0 -1
  246. package/dist/adapters/llm/index.d.ts.map +0 -1
  247. package/dist/adapters/llm/index.js.map +0 -1
  248. package/dist/adapters/llm/modelSpec.d.ts.map +0 -1
  249. package/dist/adapters/llm/modelSpec.js.map +0 -1
  250. package/dist/adapters/llm/ollama.d.ts.map +0 -1
  251. package/dist/adapters/llm/ollama.js.map +0 -1
  252. package/dist/adapters/llm/openai-compat.d.ts.map +0 -1
  253. package/dist/adapters/llm/openai-compat.js.map +0 -1
  254. package/dist/adapters/llm/pi-ai.d.ts.map +0 -1
  255. package/dist/adapters/llm/pi-ai.js.map +0 -1
  256. package/dist/adapters/llm/standalone.d.ts.map +0 -1
  257. package/dist/adapters/llm/standalone.js.map +0 -1
  258. package/dist/adapters/llm/types.d.ts.map +0 -1
  259. package/dist/adapters/llm/types.js.map +0 -1
  260. package/dist/cli/init.d.ts.map +0 -1
  261. package/dist/cli/init.js.map +0 -1
  262. package/dist/cli/jobs.d.ts.map +0 -1
  263. package/dist/cli/jobs.js.map +0 -1
  264. package/dist/cli/log.d.ts.map +0 -1
  265. package/dist/cli/log.js.map +0 -1
  266. package/dist/cli/parseArgs.d.ts.map +0 -1
  267. package/dist/cli/parseArgs.js.map +0 -1
  268. package/dist/cli/status.d.ts.map +0 -1
  269. package/dist/cli/status.js.map +0 -1
  270. package/dist/cli/theme.d.ts.map +0 -1
  271. package/dist/cli/theme.js.map +0 -1
  272. package/dist/cli.d.ts.map +0 -1
  273. package/dist/cli.js.map +0 -1
  274. package/dist/commands/index.d.ts.map +0 -1
  275. package/dist/commands/index.js.map +0 -1
  276. package/dist/commands/parseMemoryStatusArgs.d.ts.map +0 -1
  277. package/dist/commands/parseMemoryStatusArgs.js.map +0 -1
  278. package/dist/commands/parseRememberArgs.d.ts.map +0 -1
  279. package/dist/commands/parseRememberArgs.js.map +0 -1
  280. package/dist/commands/remember.d.ts.map +0 -1
  281. package/dist/commands/remember.js.map +0 -1
  282. package/dist/commands/status.d.ts.map +0 -1
  283. package/dist/commands/status.js.map +0 -1
  284. package/dist/commands/types.d.ts.map +0 -1
  285. package/dist/commands/types.js.map +0 -1
  286. package/dist/compact/index.d.ts.map +0 -1
  287. package/dist/compact/index.js.map +0 -1
  288. package/dist/compact/parseMemoryExport.d.ts.map +0 -1
  289. package/dist/compact/parseMemoryExport.js.map +0 -1
  290. package/dist/compact/register.d.ts.map +0 -1
  291. package/dist/compact/register.js.map +0 -1
  292. package/dist/compact/runSummary.d.ts.map +0 -1
  293. package/dist/compact/runSummary.js.map +0 -1
  294. package/dist/compact/subagentDelta.d.ts.map +0 -1
  295. package/dist/compact/subagentDelta.js.map +0 -1
  296. package/dist/compact/summaryPrompt.d.ts.map +0 -1
  297. package/dist/compact/summaryPrompt.js.map +0 -1
  298. package/dist/config/agentDir.d.ts.map +0 -1
  299. package/dist/config/agentDir.js.map +0 -1
  300. package/dist/config/chunking.d.ts.map +0 -1
  301. package/dist/config/chunking.js.map +0 -1
  302. package/dist/config/env.d.ts.map +0 -1
  303. package/dist/config/env.js.map +0 -1
  304. package/dist/config/index.d.ts.map +0 -1
  305. package/dist/config/index.js.map +0 -1
  306. package/dist/config/loadEnv.d.ts.map +0 -1
  307. package/dist/config/loadEnv.js.map +0 -1
  308. package/dist/config/preflight.d.ts.map +0 -1
  309. package/dist/config/preflight.js.map +0 -1
  310. package/dist/config/preflightBudget.d.ts.map +0 -1
  311. package/dist/config/preflightBudget.js.map +0 -1
  312. package/dist/config/retrieval.d.ts.map +0 -1
  313. package/dist/config/retrieval.js.map +0 -1
  314. package/dist/consolidate/entryKey.d.ts.map +0 -1
  315. package/dist/consolidate/entryKey.js.map +0 -1
  316. package/dist/consolidate/index.d.ts.map +0 -1
  317. package/dist/consolidate/index.js.map +0 -1
  318. package/dist/consolidate/mergeEntries.d.ts.map +0 -1
  319. package/dist/consolidate/mergeEntries.js.map +0 -1
  320. package/dist/consolidate/mergePrompt.d.ts.map +0 -1
  321. package/dist/consolidate/mergePrompt.js.map +0 -1
  322. package/dist/consolidate/mergeWithLlm.d.ts.map +0 -1
  323. package/dist/consolidate/mergeWithLlm.js.map +0 -1
  324. package/dist/consolidate/runJob.d.ts.map +0 -1
  325. package/dist/consolidate/runJob.js.map +0 -1
  326. package/dist/consolidate/scheduler.d.ts.map +0 -1
  327. package/dist/consolidate/scheduler.js.map +0 -1
  328. package/dist/constants/chunking.d.ts.map +0 -1
  329. package/dist/constants/chunking.js.map +0 -1
  330. package/dist/constants/env.d.ts.map +0 -1
  331. package/dist/constants/env.js.map +0 -1
  332. package/dist/constants/index.d.ts.map +0 -1
  333. package/dist/constants/index.js.map +0 -1
  334. package/dist/constants/memory.d.ts.map +0 -1
  335. package/dist/constants/memory.js.map +0 -1
  336. package/dist/constants/paths.d.ts.map +0 -1
  337. package/dist/constants/paths.js.map +0 -1
  338. package/dist/constants/preflight.d.ts.map +0 -1
  339. package/dist/constants/preflight.js.map +0 -1
  340. package/dist/constants/retrieval.d.ts.map +0 -1
  341. package/dist/constants/retrieval.js.map +0 -1
  342. package/dist/constants/security.d.ts.map +0 -1
  343. package/dist/constants/security.js.map +0 -1
  344. package/dist/constants/timing.d.ts.map +0 -1
  345. package/dist/constants/timing.js.map +0 -1
  346. package/dist/index.d.ts.map +0 -1
  347. package/dist/index.js.map +0 -1
  348. package/dist/init/workspace.d.ts.map +0 -1
  349. package/dist/init/workspace.js.map +0 -1
  350. package/dist/ipc/jsonlFramer.d.ts.map +0 -1
  351. package/dist/ipc/jsonlFramer.js.map +0 -1
  352. package/dist/pi-extension.d.ts.map +0 -1
  353. package/dist/pi-extension.js.map +0 -1
  354. package/dist/preflight/episodic.d.ts.map +0 -1
  355. package/dist/preflight/episodic.js.map +0 -1
  356. package/dist/preflight/intentCache.d.ts.map +0 -1
  357. package/dist/preflight/intentCache.js.map +0 -1
  358. package/dist/preflight/queryCache.d.ts.map +0 -1
  359. package/dist/preflight/queryCache.js.map +0 -1
  360. package/dist/preflight/queryIntent.d.ts.map +0 -1
  361. package/dist/preflight/queryIntent.js.map +0 -1
  362. package/dist/preflight/render.d.ts.map +0 -1
  363. package/dist/preflight/render.js.map +0 -1
  364. package/dist/preflight/session.d.ts.map +0 -1
  365. package/dist/preflight/session.js.map +0 -1
  366. package/dist/preflight/strip.d.ts.map +0 -1
  367. package/dist/preflight/strip.js.map +0 -1
  368. package/dist/shutdown/enqueue.d.ts.map +0 -1
  369. package/dist/shutdown/enqueue.js.map +0 -1
  370. package/dist/shutdown/extractPrompt.d.ts.map +0 -1
  371. package/dist/shutdown/extractPrompt.js.map +0 -1
  372. package/dist/shutdown/processed.d.ts.map +0 -1
  373. package/dist/shutdown/processed.js.map +0 -1
  374. package/dist/shutdown/readQueue.d.ts.map +0 -1
  375. package/dist/shutdown/readQueue.js.map +0 -1
  376. package/dist/shutdown/runDrainJob.d.ts.map +0 -1
  377. package/dist/shutdown/runDrainJob.js.map +0 -1
  378. package/dist/shutdown/sessionReader.d.ts.map +0 -1
  379. package/dist/shutdown/sessionReader.js.map +0 -1
  380. package/dist/sidecar/client.d.ts.map +0 -1
  381. package/dist/sidecar/client.js.map +0 -1
  382. package/dist/sidecar/paths.d.ts.map +0 -1
  383. package/dist/sidecar/paths.js.map +0 -1
  384. package/dist/sidecar/protocol.d.ts.map +0 -1
  385. package/dist/sidecar/protocol.js.map +0 -1
  386. package/dist/sidecar/reindexBridge.d.ts.map +0 -1
  387. package/dist/sidecar/reindexBridge.js.map +0 -1
  388. package/dist/sidecar/server/process.d.ts.map +0 -1
  389. package/dist/sidecar/server/process.js.map +0 -1
  390. package/dist/sidecar/server/query.d.ts.map +0 -1
  391. package/dist/sidecar/server/query.js.map +0 -1
  392. package/dist/sidecar/server/reindex.d.ts.map +0 -1
  393. package/dist/sidecar/server/reindex.js.map +0 -1
  394. package/dist/sidecar/server/server.d.ts.map +0 -1
  395. package/dist/sidecar/server/server.js.map +0 -1
  396. package/dist/sidecar/server/stats.d.ts.map +0 -1
  397. package/dist/sidecar/server/stats.js.map +0 -1
  398. package/dist/sidecar/server/vec/embedder.d.ts.map +0 -1
  399. package/dist/sidecar/server/vec/embedder.js.map +0 -1
  400. package/dist/sidecar/server/vec/mmr.d.ts.map +0 -1
  401. package/dist/sidecar/server/vec/mmr.js.map +0 -1
  402. package/dist/sidecar/server/vec/store.d.ts.map +0 -1
  403. package/dist/sidecar/server/vec/store.js.map +0 -1
  404. package/dist/sidecar/sidecarManager.d.ts.map +0 -1
  405. package/dist/sidecar/sidecarManager.js.map +0 -1
  406. package/dist/sidecar/utils.d.ts.map +0 -1
  407. package/dist/sidecar/utils.js.map +0 -1
  408. package/dist/sidecar/warmup.d.ts.map +0 -1
  409. package/dist/sidecar/warmup.js.map +0 -1
  410. package/dist/store/backend.d.ts.map +0 -1
  411. package/dist/store/backend.js.map +0 -1
  412. package/dist/store/index.d.ts.map +0 -1
  413. package/dist/store/index.js.map +0 -1
  414. package/dist/store/indexChunks.d.ts.map +0 -1
  415. package/dist/store/indexChunks.js.map +0 -1
  416. package/dist/store/markdown/format.d.ts.map +0 -1
  417. package/dist/store/markdown/format.js.map +0 -1
  418. package/dist/store/markdown/parse.d.ts.map +0 -1
  419. package/dist/store/markdown/parse.js.map +0 -1
  420. package/dist/store/markdown/template.d.ts.map +0 -1
  421. package/dist/store/markdown/template.js.map +0 -1
  422. package/dist/store/memoryStore.d.ts.map +0 -1
  423. package/dist/store/memoryStore.js.map +0 -1
  424. package/dist/store/paths.d.ts.map +0 -1
  425. package/dist/store/paths.js.map +0 -1
  426. package/dist/store/types.d.ts.map +0 -1
  427. package/dist/store/types.js.map +0 -1
  428. package/dist/ui/memoryStatusWidget.d.ts.map +0 -1
  429. package/dist/ui/memoryStatusWidget.js.map +0 -1
  430. package/dist/utils/debugLog.d.ts.map +0 -1
  431. package/dist/utils/debugLog.js.map +0 -1
  432. package/dist/utils/fs.d.ts.map +0 -1
  433. package/dist/utils/fs.js.map +0 -1
  434. package/dist/utils/index.d.ts.map +0 -1
  435. package/dist/utils/index.js.map +0 -1
  436. package/dist/utils/paths.d.ts.map +0 -1
  437. package/dist/utils/paths.js.map +0 -1
  438. package/dist/utils/platform.d.ts.map +0 -1
  439. package/dist/utils/platform.js.map +0 -1
  440. package/dist/utils/scheduler.d.ts.map +0 -1
  441. package/dist/utils/scheduler.js.map +0 -1
  442. package/dist/utils/socket.d.ts.map +0 -1
  443. package/dist/utils/socket.js.map +0 -1
  444. package/dist/utils/time.d.ts.map +0 -1
  445. package/dist/utils/time.js.map +0 -1
  446. package/doc/README-zh.md +0 -394
  447. package/doc/ROADMAP-zh.md +0 -52
  448. package/doc/ROADMAP.md +0 -52
  449. package/src/adapters/embed/factory.ts +0 -50
  450. package/src/adapters/embed/hash.ts +0 -29
  451. package/src/adapters/embed/normalize.ts +0 -13
  452. package/src/adapters/embed/ollama.ts +0 -49
  453. package/src/adapters/embed/openai.ts +0 -46
  454. package/src/adapters/embed/types.ts +0 -9
  455. package/src/adapters/http.ts +0 -42
  456. package/src/adapters/index.ts +0 -16
  457. package/src/adapters/llm/extractText.ts +0 -6
  458. package/src/adapters/llm/factory.ts +0 -60
  459. package/src/adapters/llm/index.ts +0 -7
  460. package/src/adapters/llm/modelSpec.ts +0 -39
  461. package/src/adapters/llm/ollama.ts +0 -42
  462. package/src/adapters/llm/openai-compat.ts +0 -46
  463. package/src/adapters/llm/pi-ai.ts +0 -75
  464. package/src/adapters/llm/standalone.ts +0 -60
  465. package/src/adapters/llm/types.ts +0 -16
  466. package/src/cli/init.ts +0 -18
  467. package/src/cli/jobs.ts +0 -144
  468. package/src/cli/log.ts +0 -46
  469. package/src/cli/parseArgs.ts +0 -175
  470. package/src/cli/status.ts +0 -323
  471. package/src/cli/theme.ts +0 -26
  472. package/src/cli.ts +0 -105
  473. package/src/commands/index.ts +0 -20
  474. package/src/commands/parseMemoryStatusArgs.ts +0 -11
  475. package/src/commands/parseRememberArgs.ts +0 -55
  476. package/src/commands/remember.ts +0 -43
  477. package/src/commands/status.ts +0 -112
  478. package/src/commands/types.ts +0 -12
  479. package/src/compact/index.ts +0 -4
  480. package/src/compact/parseMemoryExport.ts +0 -71
  481. package/src/compact/register.ts +0 -57
  482. package/src/compact/runSummary.ts +0 -42
  483. package/src/compact/subagentDelta.ts +0 -22
  484. package/src/compact/summaryPrompt.ts +0 -45
  485. package/src/config/agentDir.ts +0 -24
  486. package/src/config/chunking.ts +0 -36
  487. package/src/config/env.ts +0 -97
  488. package/src/config/index.ts +0 -7
  489. package/src/config/loadEnv.ts +0 -26
  490. package/src/config/preflight.ts +0 -34
  491. package/src/config/preflightBudget.ts +0 -33
  492. package/src/config/retrieval.ts +0 -50
  493. package/src/consolidate/entryKey.ts +0 -4
  494. package/src/consolidate/index.ts +0 -4
  495. package/src/consolidate/mergeEntries.ts +0 -22
  496. package/src/consolidate/mergePrompt.ts +0 -46
  497. package/src/consolidate/mergeWithLlm.ts +0 -39
  498. package/src/consolidate/runJob.ts +0 -81
  499. package/src/consolidate/scheduler.ts +0 -54
  500. package/src/constants/chunking.ts +0 -8
  501. package/src/constants/env.ts +0 -59
  502. package/src/constants/index.ts +0 -7
  503. package/src/constants/memory.ts +0 -22
  504. package/src/constants/paths.ts +0 -26
  505. package/src/constants/preflight.ts +0 -22
  506. package/src/constants/retrieval.ts +0 -10
  507. package/src/constants/security.ts +0 -5
  508. package/src/constants/timing.ts +0 -48
  509. package/src/index.ts +0 -11
  510. package/src/init/workspace.ts +0 -44
  511. package/src/ipc/jsonlFramer.ts +0 -29
  512. package/src/pi-extension.ts +0 -294
  513. package/src/preflight/episodic.ts +0 -183
  514. package/src/preflight/intentCache.ts +0 -44
  515. package/src/preflight/queryCache.ts +0 -59
  516. package/src/preflight/queryIntent.ts +0 -126
  517. package/src/preflight/render.ts +0 -71
  518. package/src/preflight/session.ts +0 -7
  519. package/src/preflight/strip.ts +0 -43
  520. package/src/shutdown/enqueue.ts +0 -29
  521. package/src/shutdown/extractPrompt.ts +0 -27
  522. package/src/shutdown/processed.ts +0 -45
  523. package/src/shutdown/readQueue.ts +0 -26
  524. package/src/shutdown/runDrainJob.ts +0 -202
  525. package/src/shutdown/sessionReader.ts +0 -61
  526. package/src/sidecar/client.ts +0 -114
  527. package/src/sidecar/paths.ts +0 -31
  528. package/src/sidecar/protocol.ts +0 -38
  529. package/src/sidecar/reindexBridge.ts +0 -52
  530. package/src/sidecar/server/process.ts +0 -27
  531. package/src/sidecar/server/query.ts +0 -16
  532. package/src/sidecar/server/reindex.ts +0 -21
  533. package/src/sidecar/server/server.ts +0 -105
  534. package/src/sidecar/server/stats.ts +0 -23
  535. package/src/sidecar/server/vec/embedder.ts +0 -1
  536. package/src/sidecar/server/vec/mmr.ts +0 -55
  537. package/src/sidecar/server/vec/store.ts +0 -232
  538. package/src/sidecar/sidecarManager.ts +0 -134
  539. package/src/sidecar/utils.ts +0 -28
  540. package/src/sidecar/warmup.ts +0 -50
  541. package/src/store/backend.ts +0 -66
  542. package/src/store/index.ts +0 -5
  543. package/src/store/indexChunks.ts +0 -89
  544. package/src/store/markdown/format.ts +0 -16
  545. package/src/store/markdown/parse.ts +0 -63
  546. package/src/store/markdown/template.ts +0 -24
  547. package/src/store/memoryStore.ts +0 -518
  548. package/src/store/paths.ts +0 -33
  549. package/src/store/proper-lockfile.d.ts +0 -3
  550. package/src/store/types.ts +0 -46
  551. package/src/ui/memoryStatusWidget.ts +0 -80
  552. package/src/utils/debugLog.ts +0 -22
  553. package/src/utils/fs.ts +0 -115
  554. package/src/utils/index.ts +0 -68
  555. package/src/utils/paths.ts +0 -67
  556. package/src/utils/platform.ts +0 -20
  557. package/src/utils/scheduler.ts +0 -98
  558. package/src/utils/socket.ts +0 -33
  559. package/src/utils/time.ts +0 -51
package/doc/README-zh.md DELETED
@@ -1,394 +0,0 @@
1
- <p align="center">
2
- <img src="../assets/pi-memory-logo.png" alt="pi-memory logo" width="720" />
3
- </p>
4
-
5
- # @chendpoc/pi-memory
6
-
7
- <p align="center">
8
- <a href="../README.md">English</a> |
9
- <a href="README-zh.md">简体中文</a>
10
- </p>
11
-
12
- Pi coding agent 的跨 session 情景记忆扩展。
13
-
14
- `pi-memory` 给 Pi 增加一层本地、可审计的跨 session 记忆。它把长期事实保存在 **`MEMORY.md` 这个 Ground Truth** 里,把 `memory.vec.sqlite` 作为派生向量索引,并在主模型回答前通过 Preflight 注入相关的私有上下文。
15
-
16
- ## 🧠 这个 Package 做什么
17
-
18
- Pi 已经有长 session compaction,它解决的是“当前对话太长了怎么办”;但它不解决“新开 session 后忘记用户偏好、项目约定、历史决策和未完成 TODO”的问题。
19
-
20
- `pi-memory` 补的是这条链路:
21
-
22
- ```text
23
- 长期事实 -> MEMORY.md -> 派生向量索引 -> 每轮 Preflight 召回
24
- ```
25
-
26
- 它提供:
27
-
28
- - ✍️ 通过 `/remember` 写入显式记忆。
29
- - 🔁 从 Pi compaction 自动导出长期事实。
30
- - 📥 用 Shutdown Queue 补捞短 session 或漏处理 session。
31
- - 🔦 在主模型运行前做每轮私有记忆召回。
32
- - 📄 用 Markdown 保存人类可编辑的事实,向量搜索只是可重建索引。
33
- - 🔌 通过本地 UDS sidecar 做向量召回和 reindex,不打开 HTTP 端口。
34
- - ⏳ daemon 友好的维护路径:shutdown 只追加元数据,consolidate 和 queue drain 可以离线执行。
35
-
36
- ## 📦 安装与启用
37
-
38
- 要求:
39
-
40
- - Node.js `>=24 <25`
41
- - pnpm
42
- - Pi 提供的 extension runtime packages
43
-
44
- 通过 Pi 安装:
45
-
46
- ```bash
47
- pi install npm:@chendpoc/pi-memory
48
- ```
49
-
50
- 从本仓库本地开发:
51
-
52
- ```bash
53
- pnpm install
54
- pnpm build
55
- pnpm typecheck
56
- pnpm test
57
- ```
58
-
59
- 通过 Pi 的 extension 加载机制启用。本包声明:
60
-
61
- ```json
62
- {
63
- "pi": {
64
- "extensions": ["./src/pi-extension.ts"]
65
- }
66
- }
67
- ```
68
-
69
- ### 🌱 记忆工作区(自动初始化)
70
-
71
- **大多数用户不需要手动运行 `pi-memory init`。** 同一套 bootstrap(`initializeMemoryWorkspace`)会自动执行,且**不会覆盖非空的 `MEMORY.md`**:
72
-
73
- | 时机 | 行为 |
74
- | --- | --- |
75
- | **`pnpm install`** | `postinstall` 执行 `pi-memory init`(或 pre-build 回退脚本) |
76
- | **首次 Pi session** | `session_start` → `MemoryStore.ensureInitialized()` |
77
- | **手动(可选)** | `pi-memory init` |
78
-
79
- 仅在以下情况需要显式运行 `pi-memory init`:
80
-
81
- - 安装**之后**才设置 **`PI_MEMORY_AGENT_DIR`**(postinstall 可能已按默认路径初始化)。
82
- - 安装脚本被跳过(`--ignore-scripts` 或企业策略)。
83
- - 想在打开 Pi 之前先 bootstrap,或配合 `pi-memory status` 做排查。
84
-
85
- ```bash
86
- pi-memory init # 可选;见上文
87
- ```
88
-
89
- ## ✨ 为什么选择 `pi-memory`
90
-
91
- ### 🔄 Agent 使用前后差异
92
-
93
- | 场景 | 未使用 `pi-memory` | 使用 `pi-memory` 后 |
94
- | --- | --- | --- |
95
- | 新 session 问“继续上次计划” | Agent 只能追问上下文,或基于当前仓库猜测。 | Preflight 召回匹配的 `MEMORY.md` 事实并注入私有参考上下文。 |
96
- | 用户说“记住这个 repo 用 Vitest” | 事实可能只留在当前 session 摘要里。 | `/remember` 写入 `[user]` 条目,consolidate 必须保留。 |
97
- | 长 session 触发压缩 | Compaction 只帮助当前 session 续聊,不必然产生跨 session 事实。 | 一次 dual-purpose summary 同时保留当前上下文并导出长期事实。 |
98
- | 启动 subagent | 可能重复父 session 的召回和记忆写入。 | Subagent 只拿 Memory Cap,只写新增 Compact Delta。 |
99
- | 向量 sidecar 不可用 | 如果是硬依赖,会直接影响对话。 | Preflight 静默回退到 Markdown 或空注入,主模型照常运行。 |
100
- | 记忆持续增长 | 文件容易变成无边界流水账。 | `MEMORY.md` 150 行上限,`auto-*.md` 溢出,consolidate 合并去重。 |
101
-
102
- ### 🌟 核心优势
103
-
104
- - 📓 **Markdown Ground Truth**:`MEMORY.md` 和 `auto-*.md` 可以直接打开、审查、编辑、grep、复制或纳入版本控制。
105
- - 🏗️ **索引不是隐藏事实源**:`memory.vec.sqlite` 可以删除,并从 Markdown 重新构建。
106
- - 🔎 **Preflight 召回**:记忆在主模型回答前注入,而不是依赖模型主动调用搜索工具。
107
- - ⏱️ **热路径有预算**:默认 Preflight 预算是 **800ms**,QueryIntent、sidecar query 和 fallback 都有边界。
108
- - 🔒 **用户显式记忆受保护**:`/remember` 写入 `[user]` 条目,consolidate 不能删除或改写。
109
- - 🔗 **UDS,不走 HTTP**:agent 通过 `node:net` Unix domain socket + JSONL frame 和 sidecar 通信,不需要本地 HTTP server,也没有额外端口暴露。
110
- - 🏭 **Sidecar 进程隔离**:embedding、向量扫描、MMR、stats 和 reindex 在独立 spawn 的 Node 进程中运行;写入仍由 `MemoryStore` 负责。
111
- - 💤 **daemon-safe 写入路径**:`session_shutdown` 只追加元数据;更重的 consolidate 和 shutdown-queue drain 交给 `pi-memory maintenance` 或后台调度。
112
- - 👥 **Subagent 策略**:root session 跑 Memory Cap + Episodic Preflight;subagent 默认只拿 Memory Cap。
113
- - ☂️ **优雅降级**:sidecar 召回为空、超时或不可用时,当前 turn 仍然继续。
114
-
115
- ### ⚙️ Runtime 选择
116
-
117
- | 选择 | 为什么重要 |
118
- | --- | --- |
119
- | `MEMORY.md` 作为 Ground Truth | 长期记忆保持可审查、可编辑,而不是变成不透明数据库状态。 |
120
- | 基于 `node:net` 的 UDS JSONL | IPC 只在本机发生,避免 HTTP 端口,同时保持简单的 request/response frame。 |
121
- | spawn 独立 sidecar 进程 | 向量 query/reindex 与 Pi extension 进程隔离;失败时可降级到 Markdown fallback。 |
122
- | 离线 `maintenance` job | consolidate 和 shutdown-queue drain 可以在交互 turn 之外执行。 |
123
- | 有预算的 Preflight | QueryIntent、sidecar query、cache 和 fallback 都在明确延迟边界内运行。 |
124
-
125
- ### ⚖️ 对比
126
-
127
- `pi-memory` 不试图成为所有 memory 系统的集合。它的价值是一个 Pi-native 闭环:Markdown ground truth、Preflight 注入、sidecar 检索、compaction export 和离线 maintenance。
128
-
129
- | 系统 | 优势 | 与 `@chendpoc/pi-memory` 的差异 |
130
- | --- | --- | --- |
131
- | Cursor Rules / OpenCode `AGENTS.md` | 静态项目指令,注入行为可预测。 | 主要是用户手写规则,没有自动长期事实提取,也没有每轮 Episodic Preflight。 |
132
- | Claude Code Auto Memory | Agent 可以写本地记忆文件。 | 也是文件记忆,但没有 sidecar 向量召回,也没有 Pi compact/shutdown 集成。 |
133
- | `pi-hermes-memory` | 功能丰富,有 FTS5、失败记忆、纠正学习、安全扫描。 | 自动化更重;但没有 `<private_memory>` Preflight 闭环,也没有 sidecar 派生向量索引。 |
134
- | OpenClaw memory-core | 成熟的文件+索引设计,有 dreaming、混合搜索、本地 embedding。 | OpenClaw 是更大的 memory 平台;`pi-memory` 更窄,聚焦 Pi extension。 |
135
- | Mem0 / Zep | 托管 memory API,有混合搜索、图和时序建模。 | 检索基础设施更强,但更偏外部服务/数据库,不以 Markdown 事实源为第一原则。 |
136
- | Letta | 上下文工程,git-backed memory repo 和 sleep-time compute。 | 自主记忆管理更强,但心智模型比 Pi extension lifecycle 更重。 |
137
- | Cognee | 知识引擎,图/向量/关系存储和多种检索模式。 | 更适合知识图谱;对轻量编码 agent 偏好/约定来说偏重。 |
138
-
139
- 其他系统更强的地方:
140
-
141
- - `pi-hermes-memory`:失败记忆、纠正检测、工具怪癖、安全扫描。
142
- - OpenClaw:dreaming 阶段、memory wiki、FTS/vector 混合搜索、本地 embedding provider。
143
- - Zep/Cognee:时序图推理和多跳图检索。
144
- - Mem0:托管多租户 memory API。
145
- - Letta:自主 context repository 和 sleep-time memory work。
146
-
147
- ## ⚙️ 工作方式
148
-
149
- ### 🏗️ 架构
150
-
151
- ```text
152
- Pi 扩展进程
153
- |- session_start
154
- | |- 初始化 MEMORY.md
155
- | |- 启动/warm sidecar
156
- | |- 重建派生向量索引
157
- | `- 预加载 Memory Cap
158
- |
159
- |- before_agent_start / context
160
- | `- Preflight recall -> <private_memory> 注入
161
- |
162
- |- /remember
163
- | `- 追加 [user] Memory Entry
164
- |
165
- |- session_before_compact / session_compact
166
- | `- dual-purpose summary -> Memory Export ingest
167
- |
168
- |- session_shutdown
169
- | `- 只追加 shutdown 元数据
170
- |
171
- `- consolidate scheduler
172
- `- 合并/去重 -> 重写 Ground Truth -> reindex
173
-
174
- 通过 UDS JSONL 通信的 Sidecar 进程(`node:net`,不走 HTTP 端口)
175
- |- ping
176
- |- stats
177
- |- query: embed -> cosine scan -> MMR
178
- `- reindex: upsert chunks into memory.vec.sqlite
179
- ```
180
-
181
- ### 🔎 读取路径
182
-
183
- Root session:
184
-
185
- ```text
186
- 来自 Ground Truth 的 Memory Cap
187
- + 当前用户消息的 Episodic Preflight
188
- -> 合并为 <private_memory>
189
- ```
190
-
191
- Subagent session:
192
-
193
- ```text
194
- 只使用 Memory Cap
195
- -> 默认不跑 episodic QueryIntent / sidecar query
196
- ```
197
-
198
- 回退链:
199
-
200
- ```text
201
- Sidecar 结果
202
- -> 空结果、错误或超时:回退到 MEMORY.md
203
- -> 仍为空:不注入
204
- ```
205
-
206
- ### ✍️ 写入路径
207
-
208
- | 路径 | 触发 | LLM? | 是否阻塞 | 目的 |
209
- | --- | --- | --- | --- | --- |
210
- | `/remember` | 用户命令 | 否 | 是 | 显式长期记忆 |
211
- | Compaction | `session_before_compact` + `session_compact` | 一次摘要调用 | 摘要阻塞,入库后台执行 | 当前 session 续聊 + 导出长期事实 |
212
- | Shutdown Queue | `session_shutdown` + `pi-memory maintenance` | 仅离线且无 compaction summary 时 | shutdown 时不阻塞 | 补捞短 session 或漏处理事实 |
213
- | Consolidate | overflow >= 12、7 天或每日 cron | 可选 | 离线或后台 | 去重、合并、清理过期 TODO |
214
-
215
- ## 💾 数据和 MEMORY.md 格式
216
-
217
- 所有产物都放在同一个 memory agent directory 下。
218
-
219
- 解析顺序:
220
-
221
- 1. `--agent-dir` CLI flag
222
- 2. `PI_MEMORY_AGENT_DIR`
223
- 3. 默认 `~/.pi/pi-memory-data`
224
-
225
- | 文件 | 作用 |
226
- | --- | --- |
227
- | `MEMORY.md` | 事实源文件 |
228
- | `auto-*.md` | 150 行上限后的溢出文件 |
229
- | `.memory_gc` | 上次 consolidate 时间 |
230
- | `.memory_compactions.json` | compaction 幂等状态 |
231
- | `.memory_shutdown_queue.jsonl` | append-only shutdown 元数据 |
232
- | `.memory_shutdown_processed.json` | drain 幂等状态 |
233
- | `memory.vec.sqlite` | 派生向量索引 |
234
- | `memory.sock` | Sidecar UDS socket |
235
-
236
- 标准模板:[`templates/MEMORY.md.example`](../templates/MEMORY.md.example)
237
-
238
- ```markdown
239
- # Memory
240
-
241
- ## Preferences
242
-
243
- ## Conventions
244
-
245
- ## Findings
246
-
247
- ## Todos
248
- ```
249
-
250
- 每条记忆是一个 Markdown bullet:
251
-
252
- ```markdown
253
- - [user] Prefer pnpm over npm <!-- id:abc123 user ts:2026-07-04T09:00:00.000+08:00 -->
254
- - Project tests use Vitest <!-- id:def456 ts:2026-07-04T09:05:00.000+08:00 -->
255
- ```
256
-
257
- 规则:
258
-
259
- - `/remember` 写入 `[user]` 条目。
260
- - Consolidate 不能删除或改写 `[user]` 条目。
261
- - `MEMORY.md` 上限为 150 行。
262
- - 溢出条目写入 `auto-*.md`,并在 `MEMORY.md` 留指针。
263
- - 向量 chunk 从条目派生;默认超过 `PI_MEMORY_CHUNK_MAX_CHARS=512` 的长条目会拆分。
264
-
265
- ## 🎛️ 配置
266
-
267
- 可选 env 文件按以下顺序加载:
268
-
269
- 1. `PI_MEMORY_ENV_FILE`
270
- 2. 项目 `.env`
271
- 3. 项目 `.env.local`
272
- 4. `~/.pi/agent/pi-memory.env`
273
-
274
- 常用变量:
275
-
276
- | 变量 | 默认 | 用途 |
277
- | --- | --- | --- |
278
- | `PI_MEMORY_AGENT_DIR` | `~/.pi/pi-memory-data` | 记忆数据根目录 |
279
- | `PI_MEMORY_EMBEDDER` | `hash` | 支持 `hash`、`ollama`、`openai` |
280
- | `PI_MEMORY_HELPER_MODEL` | `deepseek/deepseek-v4-flash` | QueryIntent 和 consolidate 使用的辅助模型 |
281
- | `PI_MEMORY_PREFLIGHT_BUDGET_MS` | `800` | Preflight 共享预算,限制在 250-1500ms |
282
- | `PI_MEMORY_INTENT_RETRIES` | `0` | 首次尝试后的 helper LLM 重试次数 |
283
- | `PI_MEMORY_WARM_SIDECAR` | `1` | 在 `session_start` warm sidecar |
284
- | `PI_MEMORY_INTENT_CACHE` | `1` | session 级 QueryIntent 缓存 |
285
- | `PI_MEMORY_REINDEX_DEBOUNCE_MS` | `500` | 写入后的 sidecar reindex debounce |
286
- | `PI_MEMORY_TOP_K` | `3` | 向量召回条数 |
287
- | `PI_MEMORY_MMR_LAMBDA` | `0.8` | MMR 相关性与多样性权重 |
288
- | `PI_MEMORY_MIN_RELEVANCE` | `0.4` | 最小 cosine similarity |
289
- | `PI_MEMORY_CHUNK_MAX_CHARS` | `512` | 索引长条目拆分阈值;`0` 表示关闭 |
290
- | `PI_MEMORY_DEBUG` | 未设置 | `1` 打印 debug timing logs |
291
-
292
- 完整列表见 [`.env.example`](../.env.example)。
293
-
294
- ### 🛰️ Embedding Provider
295
-
296
- | Embedder | 适用场景 | 说明 |
297
- | --- | --- | --- |
298
- | `hash` | 零配置本地开发 | 离线、确定性、语义质量较低 |
299
- | `ollama` | 本地语义 embedding | 使用 `PI_MEMORY_OLLAMA_BASE_URL` 和 `PI_MEMORY_OLLAMA_EMBED_MODEL` |
300
- | `openai` | 更高质量云端 embedding | 需要 `PI_MEMORY_OPENAI_API_KEY` 或 `OPENAI_API_KEY` |
301
-
302
- Vector Index 会保存 embedding provider、model 和 dimension 元数据。配置变化时会清空旧 chunks 并重建。
303
-
304
- ## ⌨️ 命令
305
-
306
- Pi 内部:
307
-
308
- ```text
309
- /remember [section] <content>
310
- /memory-status [refresh|expand|collapse|hide]
311
- ```
312
-
313
- CLI:
314
-
315
- ```bash
316
- pi-memory status
317
- pi-memory maintenance --cron --verbose
318
- pi-memory consolidate --force --verbose
319
- pi-memory drain-shutdown-queue --verbose
320
- pi-memory init # 可选 — 安装后 + 首次 session 通常已自动完成
321
- ```
322
-
323
- `maintenance` 是推荐的调度入口:
324
-
325
- ```text
326
- consolidate -> drain-shutdown-queue
327
- ```
328
-
329
- 调度模板:
330
-
331
- - [`templates/com.pi.memory.consolidate.plist.example`](../templates/com.pi.memory.consolidate.plist.example)
332
- - [`templates/crontab.example`](../templates/crontab.example)
333
- - [`templates/consolidate.cmd.example`](../templates/consolidate.cmd.example)
334
- - [`templates/schtasks.example.txt`](../templates/schtasks.example.txt)
335
-
336
- ## 🩺 诊断
337
-
338
- 使用 `/memory-status` 或 `pi-memory status` 检查:
339
-
340
- - memory agent 目录
341
- - `MEMORY.md` 行数
342
- - 条目数
343
- - overflow 文件数
344
- - 上次 consolidate 时间
345
- - sidecar socket 状态
346
- - vector index generation 和 chunk 数
347
- - 当前配置的 embedder
348
- - 索引 embedder 是否与当前配置不一致
349
-
350
- 设置 `PI_MEMORY_DEBUG=1` 可打印 Preflight timing 日志:
351
-
352
- ```json
353
- {
354
- "phase": "preflight",
355
- "event": "recall",
356
- "intent_ms": 0,
357
- "intent_skipped": true,
358
- "intent_cache_hit": false,
359
- "sidecar_ms": 42,
360
- "cache_hit": true,
361
- "total_ms": 45,
362
- "fallback": false,
363
- "results": 3
364
- }
365
- ```
366
-
367
- ## 🚫 非目标
368
-
369
- - 不替代 Pi compaction。
370
- - 不替代 session search;历史对话搜索应使用专门的 session-search 扩展。
371
- - 不在本包内维护图数据库。
372
- - 不让 sidecar 成为事实源。
373
- - 不把完整聊天记录当作 memory 存储。
374
- - 不给每轮用户消息增加多秒级 reflection。
375
-
376
- ## 🛠️ 开发
377
-
378
- ```bash
379
- pnpm typecheck
380
- pnpm test
381
- pnpm build
382
- ```
383
-
384
- sidecar IPC 测试会打开 Unix domain socket。如果在受限沙盒中因为 `listen EPERM` 失败,请在正常本地 shell 中运行。
385
-
386
- ## 📚 文档
387
-
388
- - [English README](../README.md)
389
- - [路线图](./ROADMAP-zh.md)
390
- - [UBIQUITOUS_LANGUAGE.md](../UBIQUITOUS_LANGUAGE.md) - 领域术语表
391
-
392
- ## 📜 许可证
393
-
394
- MIT
package/doc/ROADMAP-zh.md DELETED
@@ -1,52 +0,0 @@
1
- # @chendpoc/pi-memory 路线图
2
-
3
- <p align="center">
4
- <a href="ROADMAP.md">English</a> |
5
- <a href="ROADMAP-zh.md">简体中文</a>
6
- </p>
7
-
8
- 本文档记录 `@chendpoc/pi-memory` 的产品方向。README 保持聚焦,只讲定位、安装和当前架构。
9
-
10
- ## 当前基础
11
-
12
- - 带 overflow 的 `MEMORY.md` Ground Truth。
13
- - `/remember` 和 `/memory-status`。
14
- - 基于 UDS JSONL 的 Sidecar。
15
- - `memory.vec.sqlite` 向量索引。
16
- - QueryIntent + raw-query fallback。
17
- - 800ms 共享 Preflight 预算。
18
- - sidecar warm、intent cache、query cache。
19
- - dual-purpose compaction summary。
20
- - Shutdown Queue + `maintenance`。
21
- - Consolidate + reindex。
22
- - Subagent Memory Cap + Compact Delta。
23
-
24
- ## P0:信任与安全
25
-
26
- - 记忆写入前做 secret/token redaction。
27
- - 对 LLM 生成的 Memory Export 增加 prompt-injection 防护。
28
- - 针对用户明确纠正做 correction detector。
29
- - 为跳过写入和 fallback 原因提供更好的诊断。
30
-
31
- ## P1:召回质量
32
-
33
- - 对 `MEMORY.md` 条目做 lexical + vector 混合召回。
34
- - 为常见 coding-agent 问题建立 recall eval fixtures。
35
- - debug metrics 拆分 intent、embed、scan、MMR、render。
36
- - 延迟预算允许时,在 MMR 后增加可选 reranker。
37
- - 改进 Ollama 之外的本地 embedding provider。
38
-
39
- ## P2:记忆生命周期
40
-
41
- - 增加 failure 和 tool-quirk 类别。
42
- - 晋升前提供人类可审查的 memory draft 或 diary。
43
- - 基于使用信号的晋升和裁剪。
44
- - rewrite 前提供更安全的 consolidate preview。
45
- - 显式处理 stale fact,而不是只做简单 TODO 清理。
46
-
47
- ## P3:产品表面
48
-
49
- - 更好的 TUI status panel。
50
- - memory edit/review 命令。
51
- - 不同 Pi 安装之间的 import/export。
52
- - 常见 Pi 配置的文档 recipes。
package/doc/ROADMAP.md DELETED
@@ -1,52 +0,0 @@
1
- # @chendpoc/pi-memory Roadmap
2
-
3
- <p align="center">
4
- <a href="ROADMAP.md">English</a> |
5
- <a href="ROADMAP-zh.md">简体中文</a>
6
- </p>
7
-
8
- This roadmap tracks product direction for `@chendpoc/pi-memory`. The README stays focused on positioning, installation, and the current architecture.
9
-
10
- ## Current Foundation
11
-
12
- - `MEMORY.md` Ground Truth with overflow.
13
- - `/remember` and `/memory-status`.
14
- - Sidecar over UDS JSONL.
15
- - `memory.vec.sqlite` vector index.
16
- - QueryIntent with raw-query fallback.
17
- - 800ms shared Preflight budget.
18
- - Warm sidecar, intent cache, query cache.
19
- - Dual-purpose compaction summary.
20
- - Shutdown Queue + `maintenance`.
21
- - Consolidate + reindex.
22
- - Subagent Memory Cap + Compact Delta.
23
-
24
- ## P0: Trust And Safety
25
-
26
- - Secret and token redaction before memory writes.
27
- - Prompt-injection guardrails for LLM-generated Memory Export.
28
- - Correction detector for explicit user corrections.
29
- - Better diagnostics for skipped writes and fallback reasons.
30
-
31
- ## P1: Recall Quality
32
-
33
- - Hybrid lexical + vector recall for `MEMORY.md` entries.
34
- - Recall eval fixtures for common coding-agent questions.
35
- - Debug metrics split by intent, embed, scan, MMR, render.
36
- - Optional reranker after MMR when latency budget allows.
37
- - Local embedding provider improvements beyond Ollama.
38
-
39
- ## P2: Memory Lifecycle
40
-
41
- - Failure and tool-quirk categories.
42
- - Human-reviewable memory draft or diary before promotion.
43
- - Usage-weighted promotion and pruning.
44
- - Safer consolidate previews before rewrite.
45
- - Explicit stale fact handling instead of simple TODO pruning.
46
-
47
- ## P3: Product Surface
48
-
49
- - Better TUI status panel.
50
- - Memory edit/review commands.
51
- - Import/export between Pi installations.
52
- - Documentation recipes for common Pi setups.
@@ -1,50 +0,0 @@
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
- import type { Embedder } from "./types.js";
7
-
8
- let cachedEmbedder: Embedder | undefined;
9
-
10
- export function createEmbedder(env = readPiMemoryEnv()): Embedder {
11
- switch (env.embedder) {
12
- case "openai": {
13
- if (!env.openaiApiKey) {
14
- throw new Error("PI_MEMORY_EMBEDDER=openai requires PI_MEMORY_OPENAI_API_KEY or OPENAI_API_KEY");
15
- }
16
- const dim = resolveEmbedDim(env.openaiEmbedModel, env.embedDimOverride);
17
- return createOpenAiEmbedder({
18
- apiKey: env.openaiApiKey,
19
- model: env.openaiEmbedModel,
20
- dim,
21
- timeoutMs: env.httpTimeoutMs,
22
- });
23
- }
24
- case "ollama": {
25
- const dim = resolveEmbedDim(env.ollamaEmbedModel, env.embedDimOverride);
26
- return createOllamaEmbedder({
27
- baseUrl: env.ollamaBaseUrl,
28
- model: env.ollamaEmbedModel,
29
- dim,
30
- timeoutMs: env.httpTimeoutMs,
31
- });
32
- }
33
- default: {
34
- const dim = env.embedDimOverride ?? DEFAULT_HASH_EMBED_DIM;
35
- return createHashEmbedder(dim);
36
- }
37
- }
38
- }
39
-
40
- export function getEmbedder(): Embedder {
41
- cachedEmbedder ??= createEmbedder();
42
- return cachedEmbedder;
43
- }
44
-
45
- /** @internal test hook */
46
- export function resetEmbedderForTests(): void {
47
- cachedEmbedder = undefined;
48
- }
49
-
50
- export type { Embedder } from "./types.js";
@@ -1,29 +0,0 @@
1
- import { createHash } from "node:crypto";
2
-
3
- import type { Embedder } from "./types.js";
4
- import { normalizeEmbedding } from "./normalize.js";
5
-
6
- export function createHashEmbedder(dim: number): Embedder {
7
- const embedSync = (text: string): Float32Array => {
8
- const vec = new Float32Array(dim);
9
- const digest = createHash("sha256").update(text).digest();
10
- for (let i = 0; i < dim; i++) {
11
- const byte = digest[i % digest.length]!;
12
- const sign = digest[(i + 7) % digest.length]! & 1 ? 1 : -1;
13
- vec[i] = sign * (byte / 255);
14
- }
15
- return normalizeEmbedding(vec);
16
- };
17
-
18
- return {
19
- provider: "hash",
20
- model: "hash/dev",
21
- dim,
22
- async embed(text) {
23
- return embedSync(text);
24
- },
25
- async embedBatch(texts) {
26
- return texts.map(embedSync);
27
- },
28
- };
29
- }
@@ -1,13 +0,0 @@
1
- export function normalizeEmbedding(vec: Float32Array): Float32Array {
2
- let norm = 0;
3
- for (let i = 0; i < vec.length; i++) norm += vec[i]! * vec[i]!;
4
- norm = Math.sqrt(norm) || 1;
5
- for (let i = 0; i < vec.length; i++) vec[i]! /= norm;
6
- return vec;
7
- }
8
-
9
- export function assertEmbeddingDim(embedding: Float32Array, expectedDim: number, label: string): void {
10
- if (embedding.length !== expectedDim) {
11
- throw new Error(`${label} dimension mismatch: expected ${expectedDim}, got ${embedding.length}`);
12
- }
13
- }
@@ -1,49 +0,0 @@
1
- import { postJson } from "../http.js";
2
- import { assertEmbeddingDim, normalizeEmbedding } from "./normalize.js";
3
- import type { Embedder } from "./types.js";
4
-
5
- type OllamaEmbedResponse = {
6
- model: string;
7
- embeddings: number[][];
8
- };
9
-
10
- function joinUrl(baseUrl: string, path: string): string {
11
- return `${baseUrl.replace(/\/+$/, "")}${path}`;
12
- }
13
-
14
- export function createOllamaEmbedder(opts: {
15
- baseUrl: string;
16
- model: string;
17
- dim: number;
18
- timeoutMs: number;
19
- }): Embedder {
20
- const url = joinUrl(opts.baseUrl, "/api/embed");
21
-
22
- const embedRemote = async (texts: string[]): Promise<Float32Array[]> => {
23
- const json = await postJson<OllamaEmbedResponse>(
24
- url,
25
- { model: opts.model, input: texts.length === 1 ? texts[0] : texts },
26
- { timeoutMs: opts.timeoutMs },
27
- );
28
-
29
- return json.embeddings.map((row, index) => {
30
- const embedding = normalizeEmbedding(new Float32Array(row));
31
- assertEmbeddingDim(embedding, opts.dim, `Ollama ${opts.model} row ${index}`);
32
- return embedding;
33
- });
34
- };
35
-
36
- return {
37
- provider: "ollama",
38
- model: opts.model,
39
- dim: opts.dim,
40
- async embed(text) {
41
- const [embedding] = await embedRemote([text]);
42
- return embedding!;
43
- },
44
- async embedBatch(texts) {
45
- if (texts.length === 0) return [];
46
- return embedRemote(texts);
47
- },
48
- };
49
- }
@@ -1,46 +0,0 @@
1
- import { postJson } from "../http.js";
2
- import { assertEmbeddingDim, normalizeEmbedding } from "./normalize.js";
3
- import type { Embedder } from "./types.js";
4
-
5
- type OpenAiEmbedResponse = {
6
- data: Array<{ embedding: number[]; index: number }>;
7
- };
8
-
9
- export function createOpenAiEmbedder(opts: {
10
- apiKey: string;
11
- model: string;
12
- dim: number;
13
- timeoutMs: number;
14
- }): Embedder {
15
- const embedRemote = async (texts: string[]): Promise<Float32Array[]> => {
16
- const json = await postJson<OpenAiEmbedResponse>(
17
- "https://api.openai.com/v1/embeddings",
18
- { model: opts.model, input: texts },
19
- {
20
- headers: { Authorization: `Bearer ${opts.apiKey}` },
21
- timeoutMs: opts.timeoutMs,
22
- },
23
- );
24
-
25
- return json.data
26
- .sort((a, b) => a.index - b.index)
27
- .map((row) => {
28
- const embedding = normalizeEmbedding(new Float32Array(row.embedding));
29
- assertEmbeddingDim(embedding, opts.dim, `OpenAI ${opts.model}`);
30
- return embedding;
31
- });
32
- };
33
-
34
- return {
35
- provider: "openai",
36
- model: opts.model,
37
- dim: opts.dim,
38
- async embed(text) {
39
- const [embedding] = await embedRemote([text]);
40
- return embedding!;
41
- },
42
- async embedBatch(texts) {
43
- return embedRemote(texts);
44
- },
45
- };
46
- }