@namzu/cli 26.3.0 → 28.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/CHANGELOG.md +271 -0
  2. package/README.md +67 -46
  3. package/dist/bin.js +7 -0
  4. package/dist/bin.js.map +1 -1
  5. package/dist/checkpoints/store.d.ts +17 -4
  6. package/dist/checkpoints/store.d.ts.map +1 -1
  7. package/dist/checkpoints/store.js +20 -5
  8. package/dist/checkpoints/store.js.map +1 -1
  9. package/dist/cli.d.ts +2 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +124 -14
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/acp.d.ts +23 -1
  14. package/dist/commands/acp.d.ts.map +1 -1
  15. package/dist/commands/acp.js +41 -2
  16. package/dist/commands/acp.js.map +1 -1
  17. package/dist/commands/drain.d.ts +69 -2
  18. package/dist/commands/drain.d.ts.map +1 -1
  19. package/dist/commands/drain.js +216 -136
  20. package/dist/commands/drain.js.map +1 -1
  21. package/dist/commands/eval.js +1 -1
  22. package/dist/commands/eval.js.map +1 -1
  23. package/dist/commands/{run-flags.d.ts → exec-flags.d.ts} +36 -28
  24. package/dist/commands/exec-flags.d.ts.map +1 -0
  25. package/dist/commands/{run-flags.js → exec-flags.js} +35 -27
  26. package/dist/commands/exec-flags.js.map +1 -0
  27. package/dist/commands/exec-json.d.ts +75 -0
  28. package/dist/commands/exec-json.d.ts.map +1 -0
  29. package/dist/commands/exec-json.js +473 -0
  30. package/dist/commands/exec-json.js.map +1 -0
  31. package/dist/commands/exec.d.ts +42 -0
  32. package/dist/commands/exec.d.ts.map +1 -0
  33. package/dist/commands/exec.js +683 -0
  34. package/dist/commands/exec.js.map +1 -0
  35. package/dist/commands/host-queries.d.ts +12 -0
  36. package/dist/commands/host-queries.d.ts.map +1 -0
  37. package/dist/commands/host-queries.js +149 -0
  38. package/dist/commands/host-queries.js.map +1 -0
  39. package/dist/commands/prior-messages.js +1 -1
  40. package/dist/commands/prior-messages.js.map +1 -1
  41. package/dist/commands/provider-wait.d.ts +5 -5
  42. package/dist/commands/provider-wait.d.ts.map +1 -1
  43. package/dist/commands/provider-wait.js +2 -2
  44. package/dist/commands/registry.d.ts.map +1 -1
  45. package/dist/commands/registry.js +2 -0
  46. package/dist/commands/registry.js.map +1 -1
  47. package/dist/commands/resident-flags.d.ts +2 -2
  48. package/dist/commands/resident-flags.d.ts.map +1 -1
  49. package/dist/commands/resident-flags.js +4 -2
  50. package/dist/commands/resident-flags.js.map +1 -1
  51. package/dist/commands/resident-learning.js +1 -1
  52. package/dist/commands/resident-learning.js.map +1 -1
  53. package/dist/commands/resident.d.ts.map +1 -1
  54. package/dist/commands/resident.js +3 -2
  55. package/dist/commands/resident.js.map +1 -1
  56. package/dist/commands/serve.js +2 -2
  57. package/dist/commands/serve.js.map +1 -1
  58. package/dist/commands/skills.js +1 -1
  59. package/dist/commands/skills.js.map +1 -1
  60. package/dist/commands/state.js +8 -8
  61. package/dist/commands/state.js.map +1 -1
  62. package/dist/commands/stdin.d.ts +5 -5
  63. package/dist/commands/stdin.js +5 -5
  64. package/dist/commands/types.d.ts +2 -0
  65. package/dist/commands/types.d.ts.map +1 -1
  66. package/dist/config/load.d.ts +1 -1
  67. package/dist/config/load.d.ts.map +1 -1
  68. package/dist/config/load.js +36 -5
  69. package/dist/config/load.js.map +1 -1
  70. package/dist/config/schema.d.ts +59 -20
  71. package/dist/config/schema.d.ts.map +1 -1
  72. package/dist/config/schema.js.map +1 -1
  73. package/dist/config/tool-result-screens.js +1 -1
  74. package/dist/config/turn-guards.d.ts +23 -0
  75. package/dist/config/turn-guards.d.ts.map +1 -0
  76. package/dist/config/turn-guards.js +46 -0
  77. package/dist/config/turn-guards.js.map +1 -0
  78. package/dist/context/directories.d.ts +37 -0
  79. package/dist/context/directories.d.ts.map +1 -0
  80. package/dist/context/directories.js +69 -0
  81. package/dist/context/directories.js.map +1 -0
  82. package/dist/context/environment.d.ts +55 -0
  83. package/dist/context/environment.d.ts.map +1 -1
  84. package/dist/context/environment.js +96 -0
  85. package/dist/context/environment.js.map +1 -1
  86. package/dist/context/project-tracker.d.ts +3 -3
  87. package/dist/context/project-tracker.d.ts.map +1 -1
  88. package/dist/context/project-tracker.js +3 -3
  89. package/dist/context/project-tracker.js.map +1 -1
  90. package/dist/context/project.d.ts +2 -2
  91. package/dist/context/project.js +2 -2
  92. package/dist/context/sandbox.d.ts +22 -3
  93. package/dist/context/sandbox.d.ts.map +1 -1
  94. package/dist/context/sandbox.js +42 -4
  95. package/dist/context/sandbox.js.map +1 -1
  96. package/dist/doctor/checks/chain.d.ts +1 -1
  97. package/dist/doctor/checks/chain.js +7 -7
  98. package/dist/doctor/checks/chain.js.map +1 -1
  99. package/dist/doctor/checks/invariants.d.ts +2 -2
  100. package/dist/doctor/checks/invariants.js +5 -5
  101. package/dist/doctor/checks/invariants.js.map +1 -1
  102. package/dist/doctor/checks/logging.js +1 -1
  103. package/dist/doctor/checks/logging.js.map +1 -1
  104. package/dist/doctor/checks/sandbox.js +1 -1
  105. package/dist/doctor/checks/sandbox.js.map +1 -1
  106. package/dist/doctor/checks/session-export.d.ts +1 -1
  107. package/dist/doctor/checks/session-export.js +2 -2
  108. package/dist/doctor/checks/session-export.js.map +1 -1
  109. package/dist/doctor/checks/telemetry.d.ts +1 -1
  110. package/dist/doctor/checks/telemetry.js +1 -1
  111. package/dist/doctor/registry.js +2 -2
  112. package/dist/doctor/registry.js.map +1 -1
  113. package/dist/exit-codes.d.ts +2 -2
  114. package/dist/exit-codes.js +2 -2
  115. package/dist/integrations/mcp/servers.d.ts +1 -1
  116. package/dist/integrations/providers/access.d.ts +4 -1
  117. package/dist/integrations/providers/access.d.ts.map +1 -1
  118. package/dist/integrations/providers/access.js +6 -3
  119. package/dist/integrations/providers/access.js.map +1 -1
  120. package/dist/integrations/providers/chain-capabilities.d.ts +6 -6
  121. package/dist/integrations/providers/chain-capabilities.js +8 -8
  122. package/dist/integrations/providers/chain-capabilities.js.map +1 -1
  123. package/dist/integrations/providers/register.d.ts +1 -1
  124. package/dist/integrations/providers/register.js +1 -1
  125. package/dist/integrations/providers/registry.d.ts +1 -1
  126. package/dist/integrations/providers/zen-catalogue.d.ts +100 -0
  127. package/dist/integrations/providers/zen-catalogue.d.ts.map +1 -0
  128. package/dist/integrations/providers/zen-catalogue.js +196 -0
  129. package/dist/integrations/providers/zen-catalogue.js.map +1 -0
  130. package/dist/integrations/resident/inspection.d.ts +4 -1
  131. package/dist/integrations/resident/inspection.d.ts.map +1 -1
  132. package/dist/integrations/resident/inspection.js +53 -34
  133. package/dist/integrations/resident/inspection.js.map +1 -1
  134. package/dist/integrations/resident/learning-storage.d.ts +7 -2
  135. package/dist/integrations/resident/learning-storage.d.ts.map +1 -1
  136. package/dist/integrations/resident/learning-storage.js +12 -8
  137. package/dist/integrations/resident/learning-storage.js.map +1 -1
  138. package/dist/integrations/resident/runner-launch.d.ts +3 -3
  139. package/dist/integrations/resident/runner-launch.d.ts.map +1 -1
  140. package/dist/integrations/resident/runner-store.d.ts +1 -1
  141. package/dist/integrations/resident/runner-store.d.ts.map +1 -1
  142. package/dist/integrations/resident/runner-store.js +5 -2
  143. package/dist/integrations/resident/runner-store.js.map +1 -1
  144. package/dist/integrations/resident/runner-worker.js +23 -0
  145. package/dist/integrations/resident/runner-worker.js.map +1 -1
  146. package/dist/integrations/resident/session-log-reads.d.ts +37 -0
  147. package/dist/integrations/resident/session-log-reads.d.ts.map +1 -0
  148. package/dist/integrations/resident/session-log-reads.js +125 -0
  149. package/dist/integrations/resident/session-log-reads.js.map +1 -0
  150. package/dist/integrations/resident/session-step.d.ts +4 -2
  151. package/dist/integrations/resident/session-step.d.ts.map +1 -1
  152. package/dist/integrations/resident/session-step.js +16 -14
  153. package/dist/integrations/resident/session-step.js.map +1 -1
  154. package/dist/integrations/resident/storage.d.ts +23 -1
  155. package/dist/integrations/resident/storage.d.ts.map +1 -1
  156. package/dist/integrations/resident/storage.js +60 -17
  157. package/dist/integrations/resident/storage.js.map +1 -1
  158. package/dist/integrations/resident/tool-evidence.d.ts +4 -2
  159. package/dist/integrations/resident/tool-evidence.d.ts.map +1 -1
  160. package/dist/integrations/resident/tool-evidence.js +36 -30
  161. package/dist/integrations/resident/tool-evidence.js.map +1 -1
  162. package/dist/integrations/resident/verification.d.ts +2 -2
  163. package/dist/integrations/resident/verification.d.ts.map +1 -1
  164. package/dist/integrations/resident/verification.js +4 -4
  165. package/dist/integrations/resident/verification.js.map +1 -1
  166. package/dist/integrations/sessions/checkpoint-view.d.ts +13 -0
  167. package/dist/integrations/sessions/checkpoint-view.d.ts.map +1 -0
  168. package/dist/integrations/sessions/checkpoint-view.js +48 -0
  169. package/dist/integrations/sessions/checkpoint-view.js.map +1 -0
  170. package/dist/integrations/sessions/context-inventory.js +1 -1
  171. package/dist/integrations/sessions/context-inventory.js.map +1 -1
  172. package/dist/integrations/sessions/conversation-search.d.ts +16 -20
  173. package/dist/integrations/sessions/conversation-search.d.ts.map +1 -1
  174. package/dist/integrations/sessions/conversation-search.js +305 -731
  175. package/dist/integrations/sessions/conversation-search.js.map +1 -1
  176. package/dist/integrations/sessions/evidence-page-validation.d.ts +4 -4
  177. package/dist/integrations/sessions/evidence-page-validation.d.ts.map +1 -1
  178. package/dist/integrations/sessions/evidence-page-validation.js +1 -1
  179. package/dist/integrations/sessions/evidence-page-validation.js.map +1 -1
  180. package/dist/integrations/sessions/evidence-recall.d.ts +40 -2
  181. package/dist/integrations/sessions/evidence-recall.d.ts.map +1 -1
  182. package/dist/integrations/sessions/evidence-recall.js +41 -97
  183. package/dist/integrations/sessions/evidence-recall.js.map +1 -1
  184. package/dist/integrations/sessions/store.d.ts +153 -85
  185. package/dist/integrations/sessions/store.d.ts.map +1 -1
  186. package/dist/integrations/sessions/store.js +414 -484
  187. package/dist/integrations/sessions/store.js.map +1 -1
  188. package/dist/integrations/sessions/task-context.d.ts +15 -2
  189. package/dist/integrations/sessions/task-context.d.ts.map +1 -1
  190. package/dist/integrations/sessions/task-context.js +34 -11
  191. package/dist/integrations/sessions/task-context.js.map +1 -1
  192. package/dist/integrations/sessions/transcript-export.d.ts +13 -6
  193. package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
  194. package/dist/integrations/sessions/transcript-export.js +148 -263
  195. package/dist/integrations/sessions/transcript-export.js.map +1 -1
  196. package/dist/integrations/state/home.d.ts +4 -16
  197. package/dist/integrations/state/home.d.ts.map +1 -1
  198. package/dist/integrations/state/home.js +6 -42
  199. package/dist/integrations/state/home.js.map +1 -1
  200. package/dist/integrations/state/project.d.ts +6 -7
  201. package/dist/integrations/state/project.d.ts.map +1 -1
  202. package/dist/integrations/state/project.js +7 -9
  203. package/dist/integrations/state/project.js.map +1 -1
  204. package/dist/integrations/state/report.d.ts +27 -41
  205. package/dist/integrations/state/report.d.ts.map +1 -1
  206. package/dist/integrations/state/report.js +172 -464
  207. package/dist/integrations/state/report.js.map +1 -1
  208. package/dist/integrations/state/retention.d.ts +18 -0
  209. package/dist/integrations/state/retention.d.ts.map +1 -0
  210. package/dist/integrations/state/retention.js +18 -0
  211. package/dist/integrations/state/retention.js.map +1 -0
  212. package/dist/integrations/subagents/activity.d.ts +36 -31
  213. package/dist/integrations/subagents/activity.d.ts.map +1 -1
  214. package/dist/integrations/subagents/activity.js +27 -23
  215. package/dist/integrations/subagents/activity.js.map +1 -1
  216. package/dist/integrations/subagents/batches.d.ts +91 -0
  217. package/dist/integrations/subagents/batches.d.ts.map +1 -0
  218. package/dist/integrations/subagents/batches.js +172 -0
  219. package/dist/integrations/subagents/batches.js.map +1 -0
  220. package/dist/integrations/subagents/parent.d.ts +26 -11
  221. package/dist/integrations/subagents/parent.d.ts.map +1 -1
  222. package/dist/integrations/subagents/parent.js +13 -28
  223. package/dist/integrations/subagents/parent.js.map +1 -1
  224. package/dist/integrations/subagents/policy.d.ts +2 -2
  225. package/dist/integrations/subagents/policy.d.ts.map +1 -1
  226. package/dist/integrations/subagents/policy.js +2 -2
  227. package/dist/integrations/subagents/policy.js.map +1 -1
  228. package/dist/integrations/subagents/replay.d.ts +91 -26
  229. package/dist/integrations/subagents/replay.d.ts.map +1 -1
  230. package/dist/integrations/subagents/replay.js +216 -114
  231. package/dist/integrations/subagents/replay.js.map +1 -1
  232. package/dist/integrations/subagents/runtime.d.ts +50 -26
  233. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  234. package/dist/integrations/subagents/runtime.js +132 -126
  235. package/dist/integrations/subagents/runtime.js.map +1 -1
  236. package/dist/integrations/subagents/saved-agents.d.ts +57 -0
  237. package/dist/integrations/subagents/saved-agents.d.ts.map +1 -0
  238. package/dist/integrations/subagents/saved-agents.js +102 -0
  239. package/dist/integrations/subagents/saved-agents.js.map +1 -0
  240. package/dist/integrations/subagents/slash.d.ts +55 -0
  241. package/dist/integrations/subagents/slash.d.ts.map +1 -0
  242. package/dist/integrations/subagents/slash.js +45 -0
  243. package/dist/integrations/subagents/slash.js.map +1 -0
  244. package/dist/integrations/telemetry/session-export.d.ts +6 -6
  245. package/dist/integrations/telemetry/session-export.d.ts.map +1 -1
  246. package/dist/integrations/telemetry/session-export.js +2 -2
  247. package/dist/integrations/web/search.d.ts +1 -1
  248. package/dist/logging.d.ts +5 -5
  249. package/dist/logging.js +6 -6
  250. package/dist/memory/presentation.d.ts +11 -0
  251. package/dist/memory/presentation.d.ts.map +1 -1
  252. package/dist/memory/presentation.js +25 -0
  253. package/dist/memory/presentation.js.map +1 -1
  254. package/dist/memory/store.d.ts +13 -7
  255. package/dist/memory/store.d.ts.map +1 -1
  256. package/dist/memory/store.js +37 -11
  257. package/dist/memory/store.js.map +1 -1
  258. package/dist/memory/typed.d.ts +116 -0
  259. package/dist/memory/typed.d.ts.map +1 -0
  260. package/dist/memory/typed.js +336 -0
  261. package/dist/memory/typed.js.map +1 -0
  262. package/dist/permissions/checks.d.ts +1 -1
  263. package/dist/permissions/checks.js +1 -1
  264. package/dist/permissions/headless-trust.d.ts +4 -4
  265. package/dist/permissions/headless-trust.d.ts.map +1 -1
  266. package/dist/permissions/headless-trust.js +6 -6
  267. package/dist/permissions/headless-trust.js.map +1 -1
  268. package/dist/permissions/mode.d.ts +4 -4
  269. package/dist/permissions/mode.js +1 -1
  270. package/dist/permissions/rules.d.ts +1 -1
  271. package/dist/permissions/rules.js +1 -1
  272. package/dist/termination.d.ts +75 -0
  273. package/dist/termination.d.ts.map +1 -0
  274. package/dist/termination.js +143 -0
  275. package/dist/termination.js.map +1 -0
  276. package/dist/tui/AgentExplorer.d.ts +2 -2
  277. package/dist/tui/AgentExplorer.js +4 -4
  278. package/dist/tui/AgentExplorer.js.map +1 -1
  279. package/dist/tui/App.d.ts +9 -1
  280. package/dist/tui/App.d.ts.map +1 -1
  281. package/dist/tui/App.js +456 -307
  282. package/dist/tui/App.js.map +1 -1
  283. package/dist/tui/LiveActivity.d.ts +1 -1
  284. package/dist/tui/LiveActivity.d.ts.map +1 -1
  285. package/dist/tui/PermissionOverlay.d.ts +8 -0
  286. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  287. package/dist/tui/PermissionOverlay.js +25 -2
  288. package/dist/tui/PermissionOverlay.js.map +1 -1
  289. package/dist/tui/Picker.js +1 -1
  290. package/dist/tui/agent.d.ts +211 -135
  291. package/dist/tui/agent.d.ts.map +1 -1
  292. package/dist/tui/agent.js +535 -316
  293. package/dist/tui/agent.js.map +1 -1
  294. package/dist/tui/conversation-evidence-view.js +3 -3
  295. package/dist/tui/conversation-evidence-view.js.map +1 -1
  296. package/dist/tui/conversation-history.d.ts +4 -21
  297. package/dist/tui/conversation-history.d.ts.map +1 -1
  298. package/dist/tui/conversation-history.js +4 -28
  299. package/dist/tui/conversation-history.js.map +1 -1
  300. package/dist/tui/index.d.ts.map +1 -1
  301. package/dist/tui/index.js +27 -1
  302. package/dist/tui/index.js.map +1 -1
  303. package/dist/tui/log-pane.js +1 -1
  304. package/dist/tui/markdownParser.d.ts +1 -1
  305. package/dist/tui/markdownParser.js +1 -1
  306. package/dist/tui/permission-review.d.ts +16 -0
  307. package/dist/tui/permission-review.d.ts.map +1 -1
  308. package/dist/tui/permission-review.js +25 -2
  309. package/dist/tui/permission-review.js.map +1 -1
  310. package/dist/tui/slashCommands.d.ts +30 -41
  311. package/dist/tui/slashCommands.d.ts.map +1 -1
  312. package/dist/tui/slashCommands.js +75 -66
  313. package/dist/tui/slashCommands.js.map +1 -1
  314. package/dist/tui/status-panel-layout.js +1 -1
  315. package/dist/tui/status-panel-layout.js.map +1 -1
  316. package/dist/tui/{run-interruption.d.ts → turn-interruption.d.ts} +4 -4
  317. package/dist/tui/turn-interruption.d.ts.map +1 -0
  318. package/dist/tui/{run-interruption.js → turn-interruption.js} +20 -20
  319. package/dist/tui/turn-interruption.js.map +1 -0
  320. package/dist/tui/turn-limits-settings.d.ts +39 -0
  321. package/dist/tui/turn-limits-settings.d.ts.map +1 -0
  322. package/dist/tui/{run-limits-settings.js → turn-limits-settings.js} +18 -18
  323. package/dist/tui/turn-limits-settings.js.map +1 -0
  324. package/dist/tui/types.d.ts +3 -3
  325. package/dist/tui/types.d.ts.map +1 -1
  326. package/dist/user-commands/store.d.ts +4 -4
  327. package/dist/user-commands/store.js +5 -5
  328. package/dist/user-commands/store.js.map +1 -1
  329. package/package.json +6 -6
  330. package/dist/commands/run-flags.d.ts.map +0 -1
  331. package/dist/commands/run-flags.js.map +0 -1
  332. package/dist/commands/run-stream.d.ts +0 -65
  333. package/dist/commands/run-stream.d.ts.map +0 -1
  334. package/dist/commands/run-stream.js +0 -603
  335. package/dist/commands/run-stream.js.map +0 -1
  336. package/dist/commands/run.d.ts +0 -39
  337. package/dist/commands/run.d.ts.map +0 -1
  338. package/dist/commands/run.js +0 -533
  339. package/dist/commands/run.js.map +0 -1
  340. package/dist/config/run-limits.d.ts +0 -11
  341. package/dist/config/run-limits.d.ts.map +0 -1
  342. package/dist/config/run-limits.js +0 -64
  343. package/dist/config/run-limits.js.map +0 -1
  344. package/dist/integrations/sessions/compaction-evidence.d.ts +0 -5
  345. package/dist/integrations/sessions/compaction-evidence.d.ts.map +0 -1
  346. package/dist/integrations/sessions/compaction-evidence.js +0 -59
  347. package/dist/integrations/sessions/compaction-evidence.js.map +0 -1
  348. package/dist/integrations/sessions/database.d.ts +0 -5
  349. package/dist/integrations/sessions/database.d.ts.map +0 -1
  350. package/dist/integrations/sessions/database.js +0 -34
  351. package/dist/integrations/sessions/database.js.map +0 -1
  352. package/dist/integrations/sessions/paths.d.ts +0 -7
  353. package/dist/integrations/sessions/paths.d.ts.map +0 -1
  354. package/dist/integrations/sessions/paths.js +0 -14
  355. package/dist/integrations/sessions/paths.js.map +0 -1
  356. package/dist/integrations/sessions/run-discovery.d.ts +0 -24
  357. package/dist/integrations/sessions/run-discovery.d.ts.map +0 -1
  358. package/dist/integrations/sessions/run-discovery.js +0 -142
  359. package/dist/integrations/sessions/run-discovery.js.map +0 -1
  360. package/dist/integrations/sessions/turn-evidence.d.ts +0 -129
  361. package/dist/integrations/sessions/turn-evidence.d.ts.map +0 -1
  362. package/dist/integrations/sessions/turn-evidence.js +0 -517
  363. package/dist/integrations/sessions/turn-evidence.js.map +0 -1
  364. package/dist/integrations/subagents/history.d.ts +0 -26
  365. package/dist/integrations/subagents/history.d.ts.map +0 -1
  366. package/dist/integrations/subagents/history.js +0 -76
  367. package/dist/integrations/subagents/history.js.map +0 -1
  368. package/dist/integrations/subagents/runs.d.ts +0 -72
  369. package/dist/integrations/subagents/runs.d.ts.map +0 -1
  370. package/dist/integrations/subagents/runs.js +0 -155
  371. package/dist/integrations/subagents/runs.js.map +0 -1
  372. package/dist/tui/run-interruption.d.ts.map +0 -1
  373. package/dist/tui/run-interruption.js.map +0 -1
  374. package/dist/tui/run-limits-settings.d.ts +0 -39
  375. package/dist/tui/run-limits-settings.d.ts.map +0 -1
  376. package/dist/tui/run-limits-settings.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/memory/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EAIlB,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAC7C,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAkB1C,+FAA+F;AAC/F,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD,MAAM,CAYR;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAIjF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvF"}
1
+ {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/memory/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,OAAO,EACN,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EAIlB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAC7C,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAkB1C,+FAA+F;AAC/F,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD,MAAM,CAYR;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAIjF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvF;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnF;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACxC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,CAAC,EAAE,mBAAmB,GAC3B,MAAM,GAAG,IAAI,CAaf"}
@@ -48,4 +48,29 @@ export function renderMemorySaveResult(result, text) {
48
48
  }
49
49
  return `Remembered ${result.scope === 'user' ? 'for every project' : 'for this project'} (${result.path}): ${text}`;
50
50
  }
51
+ /** What `#note` and `/memory add` report after writing a typed memory. */
52
+ export function renderTypedNoteResult(result, text) {
53
+ if (result.duplicate) {
54
+ return `Already remembered as ${result.name ?? 'an existing memory'}${result.path ? ` (${result.path})` : ''}; nothing new was saved.`;
55
+ }
56
+ if (!result.saved)
57
+ return 'No memory added. Use /memory add <text>.';
58
+ return `Remembered for this project as a ${result.type} memory${result.path ? ` (${result.path})` : ''}: ${text}`;
59
+ }
60
+ /**
61
+ * The stored-memory part of `/memory`, or null when there is none: the index
62
+ * lines every turn carries, then what turns recorded on their own under its
63
+ * own label and count, since those never reach the prompt's index and would
64
+ * otherwise be invisible here.
65
+ */
66
+ export function renderStoredMemorySection(directory, index, derived) {
67
+ const sections = [];
68
+ if (index.text) {
69
+ sections.push(`Stored memories (${index.total}), in every turn's index\n${directory}\n\n${preview(index.text, directory)}`);
70
+ }
71
+ if (derived?.text) {
72
+ sections.push(`Recorded by turns (${derived.total}), not in the index; search_memory finds them\n${directory}\n\n${preview(derived.text, directory)}`);
73
+ }
74
+ return sections.length > 0 ? sections.join('\n\n') : null;
75
+ }
51
76
  //# sourceMappingURL=presentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../src/memory/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,wBAAwB,EAExB,cAAc,EACd,qBAAqB,EACrB,YAAY,GACZ,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAA;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAA;AAE1C,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY;IAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;IACzD,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,wBAAwB,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC5C,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,GAAG;YAAE,MAAK;QACxC,IAAI,IAAI,KAAK,wBAAwB,GAAG,CAAC;YAAE,GAAG,GAAG,OAAO,CAAA;QACxD,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACpC,kEAAkE;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;IACrC,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM;QAAE,GAAG,IAAI,CAAC,CAAA;IAC9C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,GAAG,GAAG,wCAAwC,IAAI,GAAG,CAAA;AACrG,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,kBAAkB,CACjC,OAAsB,EACtB,OAAyD;IAEzD,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,IAAmB,EAAE,IAAY,EAAQ,EAAE;QACtE,IAAI,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC,CAAA;IACD,IAAI,OAAO,CAAC,OAAO;QAAE,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/F,GAAG,CAAC,4BAA4B,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/E,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAA;IAClD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACzB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC,CAAC,0GAA0G,CAAA;AAC9G,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,OAAsB;IAC7D,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CACrC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,sBAAsB,IAAI,MAAM,MAAM,EAAE,CAC9D,CAAA;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA0B,EAAE,IAAY;IAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,oBAAoB,MAAM,CAAC,IAAI,4BAA4B,CAAA;IACxF,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC9B,OAAO,YAAY,MAAM,CAAC,IAAI,6FAA6F,wBAAwB,CAAC,cAAc,CAAC,OAAO,CAAC,oDAAoD,CAAA;IAChO,CAAC;IACD,OAAO,cAAc,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE,CAAA;AACpH,CAAC"}
1
+ {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../src/memory/presentation.ts"],"names":[],"mappings":"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"}
@@ -4,20 +4,24 @@
4
4
  * Two scopes, three files:
5
5
  * - `~/.namzu/USER.md` — who the operator is. User scope.
6
6
  * - `~/.namzu/MEMORY.md` — facts that hold in every project. User scope.
7
- * - `<project>/.namzu/MEMORY.md` — facts about this repository. Project scope,
8
- * and the default target of `#note` and `/memory <text>`: a note typed while
9
- * working in a repository is almost always about that repository, and a
10
- * memory that follows the operator into every other project is the rarer
11
- * thing, asked for with `--user`.
7
+ * - `<project>/.namzu/MEMORY.md` — facts about this repository, written by the
8
+ * operator. Project scope. It used to be where `#note` appended; those
9
+ * bullets stay. `/memory import-notes` copies them into stored memory
10
+ * (`importCuratedNotes`) without changing the file, and a launch only
11
+ * offers it (`migrateMemoryOnce`).
12
12
  *
13
13
  * Each section is capped before injection. A memory file grows for months;
14
14
  * an uncapped one would spend the context every turn on the part nobody
15
15
  * curated. The cap keeps the head, says how much it left out, and the fix is
16
16
  * to edit the file — which is the whole point of a curated memory.
17
17
  *
18
- * Separate from the kernel's memory store (`save_memory` / `search_memory`),
19
- * which holds structured records retrieved by tools or bounded automatic recall.
18
+ * Separate from stored memory (`memory/typed.ts`): typed Markdown files the
19
+ * kernel's memory tools search and update, whose generated index the prompt
20
+ * carries under its own heading. `#note` and `/memory add` write there now;
21
+ * `/memory --user add` still appends to the user file here, because stored
22
+ * memory belongs to one project.
20
23
  */
24
+ import { type MemoryLocation } from './io.js';
21
25
  export { MEMORY_FILE_MAX_BYTES } from './io.js';
22
26
  /** Characters of one section injected before the rest is left to the file. */
23
27
  export declare const MEMORY_SECTION_MAX_CHARS = 8000;
@@ -38,6 +42,8 @@ export interface MemoryContent {
38
42
  readonly project: string | null;
39
43
  readonly diagnostics?: readonly MemoryDiagnostic[];
40
44
  }
45
+ /** The project's curated file and the root it must resolve within. */
46
+ export declare function projectMemoryLocation(cwd: string): MemoryLocation;
41
47
  /** Read bounded, valid UTF-8 files; distinguish missing/empty files from refused content. */
42
48
  export declare function readMemory(home?: string, cwd?: string): MemoryContent;
43
49
  export declare function composeMemoryPrompt(content: MemoryContent): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAE/C,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAE7C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,CAAA;AAE5C,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAClD;AAOD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CA8BrE;AAaD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAezE;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,MAAM,CAEvF;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;CAClC;AAED,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAClC,kBAAkB,CAqBpB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,OAAO,EAAE,KAAK,cAAc,EAAuD,MAAM,SAAS,CAAA;AAElG,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAE/C,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAE7C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,CAAA;AAE5C,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAClD;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAEjE;AAOD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAkCrE;AAyBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAsBzE;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,MAAM,CAEvF;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;CAClC;AAED,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAClC,kBAAkB,CAqBpB"}
@@ -4,19 +4,22 @@
4
4
  * Two scopes, three files:
5
5
  * - `~/.namzu/USER.md` — who the operator is. User scope.
6
6
  * - `~/.namzu/MEMORY.md` — facts that hold in every project. User scope.
7
- * - `<project>/.namzu/MEMORY.md` — facts about this repository. Project scope,
8
- * and the default target of `#note` and `/memory <text>`: a note typed while
9
- * working in a repository is almost always about that repository, and a
10
- * memory that follows the operator into every other project is the rarer
11
- * thing, asked for with `--user`.
7
+ * - `<project>/.namzu/MEMORY.md` — facts about this repository, written by the
8
+ * operator. Project scope. It used to be where `#note` appended; those
9
+ * bullets stay. `/memory import-notes` copies them into stored memory
10
+ * (`importCuratedNotes`) without changing the file, and a launch only
11
+ * offers it (`migrateMemoryOnce`).
12
12
  *
13
13
  * Each section is capped before injection. A memory file grows for months;
14
14
  * an uncapped one would spend the context every turn on the part nobody
15
15
  * curated. The cap keeps the head, says how much it left out, and the fix is
16
16
  * to edit the file — which is the whole point of a curated memory.
17
17
  *
18
- * Separate from the kernel's memory store (`save_memory` / `search_memory`),
19
- * which holds structured records retrieved by tools or bounded automatic recall.
18
+ * Separate from stored memory (`memory/typed.ts`): typed Markdown files the
19
+ * kernel's memory tools search and update, whose generated index the prompt
20
+ * carries under its own heading. `#note` and `/memory add` write there now;
21
+ * `/memory --user add` still appends to the user file here, because stored
22
+ * memory belongs to one project.
20
23
  */
21
24
  import { realpathSync } from 'node:fs';
22
25
  import { join, resolve } from 'node:path';
@@ -52,6 +55,10 @@ export function projectMemoryFilePath(cwd) {
52
55
  return local;
53
56
  return join(root, '.namzu', 'MEMORY.md');
54
57
  }
58
+ /** The project's curated file and the root it must resolve within. */
59
+ export function projectMemoryLocation(cwd) {
60
+ return projectLocation(cwd);
61
+ }
55
62
  function projectLocation(cwd) {
56
63
  const directory = realpathSync(resolve(cwd));
57
64
  return { path: projectMemoryFilePath(directory), root: cliProjectRoot(directory) };
@@ -84,11 +91,26 @@ export function readMemory(home, cwd) {
84
91
  root: userRoot,
85
92
  path: join(userRoot, 'MEMORY.md'),
86
93
  }));
87
- const project = cwd
94
+ // Started in the home directory, the project's `.namzu/MEMORY.md` IS the
95
+ // user's `MEMORY.md` — same file, read twice, injected under two headings
96
+ // into every prompt. It is the user's file; it is read once, as that.
97
+ const project = cwd && !isUserMemoryFile(join(resolve(cwd), '.namzu', 'MEMORY.md'), userRoot)
88
98
  ? read(join(resolve(cwd), '.namzu', 'MEMORY.md'), () => projectLocation(cwd))
89
99
  : null;
90
100
  return { user, memory, project, ...(diagnostics.length > 0 ? { diagnostics } : {}) };
91
101
  }
102
+ /** Whether a project memory path names the user's own `MEMORY.md`, symlinks resolved. */
103
+ function isUserMemoryFile(projectPath, userRoot) {
104
+ const canonical = (path) => {
105
+ try {
106
+ return realpathSync(path);
107
+ }
108
+ catch {
109
+ return resolve(path);
110
+ }
111
+ };
112
+ return canonical(projectPath) === canonical(join(userRoot, 'MEMORY.md'));
113
+ }
92
114
  function capped(text, file) {
93
115
  if (text.length <= MEMORY_SECTION_MAX_CHARS)
94
116
  return text;
@@ -105,10 +127,14 @@ export function composeMemoryPrompt(content) {
105
127
  const sections = [];
106
128
  if (content.user)
107
129
  sections.push(`## About the user\n\n${capped(content.user, 'USER.md')}`);
108
- if (content.memory)
109
- sections.push(`## Durable memory\n\n${capped(content.memory, 'MEMORY.md')}`);
130
+ // "Curated", never "durable" or bare "memory": the stored-memory index sits
131
+ // beside these sections under its own heading, and the model must be able
132
+ // to tell operator-written text from records it can search and update.
133
+ if (content.memory) {
134
+ sections.push(`## Curated memory (all projects)\n\n${capped(content.memory, 'MEMORY.md')}`);
135
+ }
110
136
  if (content.project) {
111
- sections.push(`## Project memory\n\n${capped(content.project, '.namzu/MEMORY.md')}`);
137
+ sections.push(`## Curated memory (this project)\n\n${capped(content.project, '.namzu/MEMORY.md')}`);
112
138
  }
113
139
  if (sections.length === 0)
114
140
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Stored memory: the typed, one-file-per-memory store the kernel's memory
3
+ * tools read and write, as the CLI uses it.
4
+ *
5
+ * Four jobs live here. `saveTypedNote` is what `#note` and `/memory add`
6
+ * write through. `composeStoredMemoryPrompt` turns the store's generated index
7
+ * into the prompt section the model sees every turn. `migrateMemoryOnce`
8
+ * moves the JSON store into typed files, once, and offers the project's
9
+ * curated bullets; `importCuratedNotes` copies those when the operator asks,
10
+ * never editing the curated file.
11
+ *
12
+ * The CURATED files (`USER.md`, `MEMORY.md` in the application home and the
13
+ * project) stay what they were: operator-authored text read into every turn.
14
+ * The two are never given the same heading in the prompt.
15
+ */
16
+ import { type MarkdownMemoryStore, type MemoryType, type RenderedMemoryIndex } from '@namzu/sdk';
17
+ export interface TypedNoteResult {
18
+ /** False when the note was empty or an identical memory already exists. */
19
+ readonly saved: boolean;
20
+ readonly name?: string;
21
+ readonly type: MemoryType;
22
+ /** The memory file, or the existing duplicate's file. */
23
+ readonly path?: string;
24
+ /** Set when an active memory with this exact text already existed. */
25
+ readonly duplicate?: boolean;
26
+ }
27
+ /**
28
+ * Save an operator note as a typed memory, default type `project`. A note
29
+ * whose exact text an active memory already holds is not saved twice; the
30
+ * result names the one that holds it.
31
+ */
32
+ export declare function saveTypedNote(store: MarkdownMemoryStore, text: string, type?: MemoryType): Promise<TypedNoteResult>;
33
+ /**
34
+ * The prompt section for the stored-memory index, or null when the store
35
+ * holds no active memory. Named so it can never be mistaken for the curated
36
+ * sections beside it.
37
+ */
38
+ export declare function composeStoredMemoryPrompt(index: RenderedMemoryIndex): string | null;
39
+ /** What one launch's migration did, for the operator notice. */
40
+ export interface MemoryMigrationReport {
41
+ readonly importedRecords: number;
42
+ /** JSON records the Markdown store refused (too large, a NUL byte); kept in the retired files. */
43
+ readonly skippedRecords: readonly string[];
44
+ /**
45
+ * The project's curated file holds top-level bullets, offered once per
46
+ * file: nothing is copied until the operator runs `/memory import-notes`,
47
+ * and the file itself is never changed.
48
+ */
49
+ readonly notesOffer?: {
50
+ readonly path: string;
51
+ readonly count: number;
52
+ };
53
+ /** Things that did not happen and why; the migration is retried next launch. */
54
+ readonly problems: readonly string[];
55
+ }
56
+ /** What `/memory import-notes` did. The curated file is never changed. */
57
+ export interface CuratedNotesImport {
58
+ readonly path: string;
59
+ /** Top-level bullets the file holds, each counted once. */
60
+ readonly found: number;
61
+ /** Memories created by this turn. */
62
+ readonly copied: number;
63
+ /** Bullets already in stored memory, by an earlier import, a `#note`, or by hand. */
64
+ readonly alreadyStored: number;
65
+ }
66
+ /**
67
+ * The text of every top-level bullet (`- text`) in a curated file, each once,
68
+ * in order. No bullet is judged to be a note or not: the file is never
69
+ * changed, so copying one the operator wrote costs a memory they can archive,
70
+ * never a line of their file. A nested bullet belongs to its parent and is not
71
+ * taken; only a bullet's first line is.
72
+ */
73
+ export declare function curatedBullets(text: string): string[];
74
+ /**
75
+ * Move what the JSON store held into typed files, once and safely again, and
76
+ * say once per curated file whether it holds notes that could move.
77
+ *
78
+ * 1. A JSON store (`index.json` + `content/`) in `directory` is imported
79
+ * record by record with its ids, timestamps and status, then moved aside
80
+ * to `index.json.migrated` and `content.migrated`. A record the Markdown
81
+ * store refuses to write — over its size limit, or holding a NUL byte —
82
+ * is reported and stays in the retired files; stopping on it would leave
83
+ * `index.json` in place and the store refusing every operation for good.
84
+ * Any other failure leaves the JSON store where it is, to retry next launch.
85
+ * 2. The project's curated `MEMORY.md` is never changed. When it holds
86
+ * top-level bullets — some may be notes `#note` used to append — the
87
+ * report offers them once per file, since the checkout's file and a
88
+ * subdirectory's own `.namzu/MEMORY.md` are different files, and
89
+ * `/memory import-notes` copies them into typed memories when the
90
+ * operator asks. They stay curated, read into every turn as before, until
91
+ * the operator deletes them from the file.
92
+ */
93
+ export declare function migrateMemoryOnce(options: {
94
+ readonly store: MarkdownMemoryStore;
95
+ /** The store's directory, where a JSON store would have lived. */
96
+ readonly directory: string;
97
+ readonly cwd: string;
98
+ }): Promise<MemoryMigrationReport>;
99
+ /**
100
+ * Copy the project's curated bullets into typed memory files, because the
101
+ * operator asked (`/memory import-notes`). The curated file is read, never
102
+ * written: deleting a bullet from it is the operator's call. Idempotent: a
103
+ * bullet already stored — by an earlier or concurrent import, as a `#note`
104
+ * with the same text, or under its name with the same text — is not copied
105
+ * again.
106
+ */
107
+ export declare function importCuratedNotes(options: {
108
+ readonly store: MarkdownMemoryStore;
109
+ readonly directory: string;
110
+ readonly cwd: string;
111
+ }): Promise<CuratedNotesImport>;
112
+ /** Operator notices for a migration; empty when nothing moved, nothing is offered and nothing failed. */
113
+ export declare function describeMemoryMigration(report: MemoryMigrationReport, directory: string): string[];
114
+ /** The operator's report for `/memory import-notes`. */
115
+ export declare function describeCuratedNotesImport(result: CuratedNotesImport, directory: string): string;
116
+ //# sourceMappingURL=typed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/memory/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAEN,KAAK,mBAAmB,EAGxB,KAAK,UAAU,EACf,KAAK,mBAAmB,EAExB,MAAM,YAAY,CAAA;AAKnB,MAAM,WAAW,eAAe;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,yDAAyD;IACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC5B;AAcD;;;;GAIG;AACH,wBAAsB,aAAa,CAClC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,UAAsB,GAC1B,OAAO,CAAC,eAAe,CAAC,CA8B1B;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CASnF;AAED,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,kGAAkG;IAClG,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvE,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,qFAAqF;IACrF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC9B;AA8DD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQrD;AA2CD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAChD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;IACnC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAsEjC;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IACjD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8B9B;AAED,yGAAyG;AACzG,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,MAAM,GACf,MAAM,EAAE,CAgBV;AAED,wDAAwD;AACxD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAUhG"}