@namzu/cli 26.3.0 → 27.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 (321) hide show
  1. package/CHANGELOG.md +214 -0
  2. package/README.md +49 -34
  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.js +2 -2
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/acp.d.ts +23 -1
  12. package/dist/commands/acp.d.ts.map +1 -1
  13. package/dist/commands/acp.js +41 -2
  14. package/dist/commands/acp.js.map +1 -1
  15. package/dist/commands/drain.d.ts +69 -2
  16. package/dist/commands/drain.d.ts.map +1 -1
  17. package/dist/commands/drain.js +214 -134
  18. package/dist/commands/drain.js.map +1 -1
  19. package/dist/commands/eval.js +1 -1
  20. package/dist/commands/eval.js.map +1 -1
  21. package/dist/commands/provider-wait.d.ts +5 -5
  22. package/dist/commands/provider-wait.d.ts.map +1 -1
  23. package/dist/commands/provider-wait.js +2 -2
  24. package/dist/commands/resident.d.ts.map +1 -1
  25. package/dist/commands/resident.js +2 -1
  26. package/dist/commands/resident.js.map +1 -1
  27. package/dist/commands/run-flags.d.ts +7 -7
  28. package/dist/commands/run-flags.js +4 -4
  29. package/dist/commands/run-stream.d.ts +16 -12
  30. package/dist/commands/run-stream.d.ts.map +1 -1
  31. package/dist/commands/run-stream.js +142 -98
  32. package/dist/commands/run-stream.js.map +1 -1
  33. package/dist/commands/run.d.ts +6 -4
  34. package/dist/commands/run.d.ts.map +1 -1
  35. package/dist/commands/run.js +129 -45
  36. package/dist/commands/run.js.map +1 -1
  37. package/dist/commands/serve.js +2 -2
  38. package/dist/commands/serve.js.map +1 -1
  39. package/dist/commands/state.js +8 -8
  40. package/dist/commands/state.js.map +1 -1
  41. package/dist/config/load.d.ts +1 -1
  42. package/dist/config/load.d.ts.map +1 -1
  43. package/dist/config/load.js +17 -5
  44. package/dist/config/load.js.map +1 -1
  45. package/dist/config/run-limits.d.ts +20 -8
  46. package/dist/config/run-limits.d.ts.map +1 -1
  47. package/dist/config/run-limits.js +28 -46
  48. package/dist/config/run-limits.js.map +1 -1
  49. package/dist/config/schema.d.ts +44 -19
  50. package/dist/config/schema.d.ts.map +1 -1
  51. package/dist/config/schema.js.map +1 -1
  52. package/dist/config/tool-result-screens.js +1 -1
  53. package/dist/context/directories.d.ts +37 -0
  54. package/dist/context/directories.d.ts.map +1 -0
  55. package/dist/context/directories.js +69 -0
  56. package/dist/context/directories.js.map +1 -0
  57. package/dist/context/environment.d.ts +55 -0
  58. package/dist/context/environment.d.ts.map +1 -1
  59. package/dist/context/environment.js +96 -0
  60. package/dist/context/environment.js.map +1 -1
  61. package/dist/context/project-tracker.d.ts +3 -3
  62. package/dist/context/project-tracker.d.ts.map +1 -1
  63. package/dist/context/project-tracker.js +3 -3
  64. package/dist/context/project-tracker.js.map +1 -1
  65. package/dist/context/project.d.ts +1 -1
  66. package/dist/context/project.js +1 -1
  67. package/dist/context/sandbox.d.ts +22 -3
  68. package/dist/context/sandbox.d.ts.map +1 -1
  69. package/dist/context/sandbox.js +42 -4
  70. package/dist/context/sandbox.js.map +1 -1
  71. package/dist/doctor/checks/chain.d.ts +1 -1
  72. package/dist/doctor/checks/chain.js +5 -5
  73. package/dist/doctor/checks/chain.js.map +1 -1
  74. package/dist/doctor/checks/invariants.d.ts +2 -2
  75. package/dist/doctor/checks/invariants.js +5 -5
  76. package/dist/doctor/checks/invariants.js.map +1 -1
  77. package/dist/doctor/checks/logging.js +1 -1
  78. package/dist/doctor/checks/logging.js.map +1 -1
  79. package/dist/doctor/checks/sandbox.js +1 -1
  80. package/dist/doctor/checks/sandbox.js.map +1 -1
  81. package/dist/doctor/checks/session-export.d.ts +1 -1
  82. package/dist/doctor/checks/session-export.js +2 -2
  83. package/dist/doctor/checks/session-export.js.map +1 -1
  84. package/dist/doctor/checks/telemetry.d.ts +1 -1
  85. package/dist/doctor/checks/telemetry.js +1 -1
  86. package/dist/doctor/registry.js +2 -2
  87. package/dist/doctor/registry.js.map +1 -1
  88. package/dist/exit-codes.d.ts +2 -2
  89. package/dist/exit-codes.js +2 -2
  90. package/dist/integrations/mcp/servers.d.ts +1 -1
  91. package/dist/integrations/providers/chain-capabilities.d.ts +6 -6
  92. package/dist/integrations/providers/chain-capabilities.js +8 -8
  93. package/dist/integrations/providers/chain-capabilities.js.map +1 -1
  94. package/dist/integrations/providers/register.d.ts +1 -1
  95. package/dist/integrations/providers/register.js +1 -1
  96. package/dist/integrations/providers/registry.d.ts +1 -1
  97. package/dist/integrations/resident/inspection.d.ts +4 -1
  98. package/dist/integrations/resident/inspection.d.ts.map +1 -1
  99. package/dist/integrations/resident/inspection.js +53 -34
  100. package/dist/integrations/resident/inspection.js.map +1 -1
  101. package/dist/integrations/resident/learning-storage.d.ts +7 -2
  102. package/dist/integrations/resident/learning-storage.d.ts.map +1 -1
  103. package/dist/integrations/resident/learning-storage.js +12 -8
  104. package/dist/integrations/resident/learning-storage.js.map +1 -1
  105. package/dist/integrations/resident/runner-store.d.ts +1 -1
  106. package/dist/integrations/resident/runner-store.d.ts.map +1 -1
  107. package/dist/integrations/resident/runner-store.js +5 -2
  108. package/dist/integrations/resident/runner-store.js.map +1 -1
  109. package/dist/integrations/resident/runner-worker.js +1 -0
  110. package/dist/integrations/resident/runner-worker.js.map +1 -1
  111. package/dist/integrations/resident/session-log-reads.d.ts +37 -0
  112. package/dist/integrations/resident/session-log-reads.d.ts.map +1 -0
  113. package/dist/integrations/resident/session-log-reads.js +125 -0
  114. package/dist/integrations/resident/session-log-reads.js.map +1 -0
  115. package/dist/integrations/resident/session-step.d.ts +2 -0
  116. package/dist/integrations/resident/session-step.d.ts.map +1 -1
  117. package/dist/integrations/resident/session-step.js +15 -13
  118. package/dist/integrations/resident/session-step.js.map +1 -1
  119. package/dist/integrations/resident/storage.d.ts +23 -1
  120. package/dist/integrations/resident/storage.d.ts.map +1 -1
  121. package/dist/integrations/resident/storage.js +60 -17
  122. package/dist/integrations/resident/storage.js.map +1 -1
  123. package/dist/integrations/resident/tool-evidence.d.ts +4 -2
  124. package/dist/integrations/resident/tool-evidence.d.ts.map +1 -1
  125. package/dist/integrations/resident/tool-evidence.js +36 -30
  126. package/dist/integrations/resident/tool-evidence.js.map +1 -1
  127. package/dist/integrations/resident/verification.d.ts +2 -2
  128. package/dist/integrations/resident/verification.d.ts.map +1 -1
  129. package/dist/integrations/resident/verification.js +4 -4
  130. package/dist/integrations/resident/verification.js.map +1 -1
  131. package/dist/integrations/sessions/checkpoint-view.d.ts +13 -0
  132. package/dist/integrations/sessions/checkpoint-view.d.ts.map +1 -0
  133. package/dist/integrations/sessions/checkpoint-view.js +48 -0
  134. package/dist/integrations/sessions/checkpoint-view.js.map +1 -0
  135. package/dist/integrations/sessions/context-inventory.js +1 -1
  136. package/dist/integrations/sessions/context-inventory.js.map +1 -1
  137. package/dist/integrations/sessions/conversation-search.d.ts +16 -20
  138. package/dist/integrations/sessions/conversation-search.d.ts.map +1 -1
  139. package/dist/integrations/sessions/conversation-search.js +305 -731
  140. package/dist/integrations/sessions/conversation-search.js.map +1 -1
  141. package/dist/integrations/sessions/evidence-page-validation.d.ts +4 -4
  142. package/dist/integrations/sessions/evidence-page-validation.d.ts.map +1 -1
  143. package/dist/integrations/sessions/evidence-page-validation.js +1 -1
  144. package/dist/integrations/sessions/evidence-page-validation.js.map +1 -1
  145. package/dist/integrations/sessions/evidence-recall.d.ts +40 -2
  146. package/dist/integrations/sessions/evidence-recall.d.ts.map +1 -1
  147. package/dist/integrations/sessions/evidence-recall.js +41 -97
  148. package/dist/integrations/sessions/evidence-recall.js.map +1 -1
  149. package/dist/integrations/sessions/store.d.ts +153 -85
  150. package/dist/integrations/sessions/store.d.ts.map +1 -1
  151. package/dist/integrations/sessions/store.js +414 -484
  152. package/dist/integrations/sessions/store.js.map +1 -1
  153. package/dist/integrations/sessions/task-context.d.ts +15 -2
  154. package/dist/integrations/sessions/task-context.d.ts.map +1 -1
  155. package/dist/integrations/sessions/task-context.js +34 -11
  156. package/dist/integrations/sessions/task-context.js.map +1 -1
  157. package/dist/integrations/sessions/transcript-export.d.ts +13 -6
  158. package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
  159. package/dist/integrations/sessions/transcript-export.js +148 -263
  160. package/dist/integrations/sessions/transcript-export.js.map +1 -1
  161. package/dist/integrations/state/home.d.ts +4 -16
  162. package/dist/integrations/state/home.d.ts.map +1 -1
  163. package/dist/integrations/state/home.js +6 -42
  164. package/dist/integrations/state/home.js.map +1 -1
  165. package/dist/integrations/state/project.d.ts +6 -7
  166. package/dist/integrations/state/project.d.ts.map +1 -1
  167. package/dist/integrations/state/project.js +7 -9
  168. package/dist/integrations/state/project.js.map +1 -1
  169. package/dist/integrations/state/report.d.ts +27 -41
  170. package/dist/integrations/state/report.d.ts.map +1 -1
  171. package/dist/integrations/state/report.js +172 -464
  172. package/dist/integrations/state/report.js.map +1 -1
  173. package/dist/integrations/state/retention.d.ts +18 -0
  174. package/dist/integrations/state/retention.d.ts.map +1 -0
  175. package/dist/integrations/state/retention.js +18 -0
  176. package/dist/integrations/state/retention.js.map +1 -0
  177. package/dist/integrations/subagents/activity.d.ts +36 -31
  178. package/dist/integrations/subagents/activity.d.ts.map +1 -1
  179. package/dist/integrations/subagents/activity.js +27 -23
  180. package/dist/integrations/subagents/activity.js.map +1 -1
  181. package/dist/integrations/subagents/batches.d.ts +91 -0
  182. package/dist/integrations/subagents/batches.d.ts.map +1 -0
  183. package/dist/integrations/subagents/batches.js +172 -0
  184. package/dist/integrations/subagents/batches.js.map +1 -0
  185. package/dist/integrations/subagents/parent.d.ts +26 -11
  186. package/dist/integrations/subagents/parent.d.ts.map +1 -1
  187. package/dist/integrations/subagents/parent.js +13 -28
  188. package/dist/integrations/subagents/parent.js.map +1 -1
  189. package/dist/integrations/subagents/policy.d.ts +2 -2
  190. package/dist/integrations/subagents/policy.d.ts.map +1 -1
  191. package/dist/integrations/subagents/policy.js +2 -2
  192. package/dist/integrations/subagents/policy.js.map +1 -1
  193. package/dist/integrations/subagents/replay.d.ts +91 -26
  194. package/dist/integrations/subagents/replay.d.ts.map +1 -1
  195. package/dist/integrations/subagents/replay.js +216 -114
  196. package/dist/integrations/subagents/replay.js.map +1 -1
  197. package/dist/integrations/subagents/runtime.d.ts +50 -26
  198. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  199. package/dist/integrations/subagents/runtime.js +132 -126
  200. package/dist/integrations/subagents/runtime.js.map +1 -1
  201. package/dist/integrations/subagents/saved-agents.d.ts +57 -0
  202. package/dist/integrations/subagents/saved-agents.d.ts.map +1 -0
  203. package/dist/integrations/subagents/saved-agents.js +102 -0
  204. package/dist/integrations/subagents/saved-agents.js.map +1 -0
  205. package/dist/integrations/subagents/slash.d.ts +55 -0
  206. package/dist/integrations/subagents/slash.d.ts.map +1 -0
  207. package/dist/integrations/subagents/slash.js +45 -0
  208. package/dist/integrations/subagents/slash.js.map +1 -0
  209. package/dist/integrations/telemetry/session-export.d.ts +6 -6
  210. package/dist/integrations/telemetry/session-export.d.ts.map +1 -1
  211. package/dist/integrations/telemetry/session-export.js +2 -2
  212. package/dist/memory/presentation.d.ts +11 -0
  213. package/dist/memory/presentation.d.ts.map +1 -1
  214. package/dist/memory/presentation.js +25 -0
  215. package/dist/memory/presentation.js.map +1 -1
  216. package/dist/memory/store.d.ts +13 -7
  217. package/dist/memory/store.d.ts.map +1 -1
  218. package/dist/memory/store.js +37 -11
  219. package/dist/memory/store.js.map +1 -1
  220. package/dist/memory/typed.d.ts +116 -0
  221. package/dist/memory/typed.d.ts.map +1 -0
  222. package/dist/memory/typed.js +336 -0
  223. package/dist/memory/typed.js.map +1 -0
  224. package/dist/permissions/checks.d.ts +1 -1
  225. package/dist/permissions/checks.js +1 -1
  226. package/dist/permissions/headless-trust.d.ts +2 -2
  227. package/dist/permissions/headless-trust.d.ts.map +1 -1
  228. package/dist/permissions/headless-trust.js +3 -3
  229. package/dist/permissions/headless-trust.js.map +1 -1
  230. package/dist/permissions/mode.d.ts +4 -4
  231. package/dist/permissions/mode.js +1 -1
  232. package/dist/permissions/rules.d.ts +1 -1
  233. package/dist/permissions/rules.js +1 -1
  234. package/dist/termination.d.ts +75 -0
  235. package/dist/termination.d.ts.map +1 -0
  236. package/dist/termination.js +143 -0
  237. package/dist/termination.js.map +1 -0
  238. package/dist/tui/AgentExplorer.d.ts +2 -2
  239. package/dist/tui/AgentExplorer.js +4 -4
  240. package/dist/tui/AgentExplorer.js.map +1 -1
  241. package/dist/tui/App.d.ts +9 -1
  242. package/dist/tui/App.d.ts.map +1 -1
  243. package/dist/tui/App.js +452 -303
  244. package/dist/tui/App.js.map +1 -1
  245. package/dist/tui/LiveActivity.d.ts +1 -1
  246. package/dist/tui/LiveActivity.d.ts.map +1 -1
  247. package/dist/tui/PermissionOverlay.d.ts +8 -0
  248. package/dist/tui/PermissionOverlay.d.ts.map +1 -1
  249. package/dist/tui/PermissionOverlay.js +25 -2
  250. package/dist/tui/PermissionOverlay.js.map +1 -1
  251. package/dist/tui/Picker.js +1 -1
  252. package/dist/tui/agent.d.ts +208 -132
  253. package/dist/tui/agent.d.ts.map +1 -1
  254. package/dist/tui/agent.js +523 -313
  255. package/dist/tui/agent.js.map +1 -1
  256. package/dist/tui/conversation-evidence-view.js +3 -3
  257. package/dist/tui/conversation-evidence-view.js.map +1 -1
  258. package/dist/tui/conversation-history.d.ts +4 -21
  259. package/dist/tui/conversation-history.d.ts.map +1 -1
  260. package/dist/tui/conversation-history.js +4 -28
  261. package/dist/tui/conversation-history.js.map +1 -1
  262. package/dist/tui/index.d.ts.map +1 -1
  263. package/dist/tui/index.js +27 -1
  264. package/dist/tui/index.js.map +1 -1
  265. package/dist/tui/log-pane.js +1 -1
  266. package/dist/tui/markdownParser.d.ts +1 -1
  267. package/dist/tui/markdownParser.js +1 -1
  268. package/dist/tui/permission-review.d.ts +16 -0
  269. package/dist/tui/permission-review.d.ts.map +1 -1
  270. package/dist/tui/permission-review.js +25 -2
  271. package/dist/tui/permission-review.js.map +1 -1
  272. package/dist/tui/slashCommands.d.ts +29 -40
  273. package/dist/tui/slashCommands.d.ts.map +1 -1
  274. package/dist/tui/slashCommands.js +70 -61
  275. package/dist/tui/slashCommands.js.map +1 -1
  276. package/dist/tui/{run-interruption.d.ts → turn-interruption.d.ts} +4 -4
  277. package/dist/tui/turn-interruption.d.ts.map +1 -0
  278. package/dist/tui/{run-interruption.js → turn-interruption.js} +20 -20
  279. package/dist/tui/turn-interruption.js.map +1 -0
  280. package/dist/tui/turn-limits-settings.d.ts +39 -0
  281. package/dist/tui/turn-limits-settings.d.ts.map +1 -0
  282. package/dist/tui/{run-limits-settings.js → turn-limits-settings.js} +18 -18
  283. package/dist/tui/turn-limits-settings.js.map +1 -0
  284. package/dist/tui/types.d.ts +3 -3
  285. package/dist/tui/types.d.ts.map +1 -1
  286. package/dist/user-commands/store.d.ts +1 -1
  287. package/dist/user-commands/store.js +1 -1
  288. package/package.json +7 -7
  289. package/dist/integrations/sessions/compaction-evidence.d.ts +0 -5
  290. package/dist/integrations/sessions/compaction-evidence.d.ts.map +0 -1
  291. package/dist/integrations/sessions/compaction-evidence.js +0 -59
  292. package/dist/integrations/sessions/compaction-evidence.js.map +0 -1
  293. package/dist/integrations/sessions/database.d.ts +0 -5
  294. package/dist/integrations/sessions/database.d.ts.map +0 -1
  295. package/dist/integrations/sessions/database.js +0 -34
  296. package/dist/integrations/sessions/database.js.map +0 -1
  297. package/dist/integrations/sessions/paths.d.ts +0 -7
  298. package/dist/integrations/sessions/paths.d.ts.map +0 -1
  299. package/dist/integrations/sessions/paths.js +0 -14
  300. package/dist/integrations/sessions/paths.js.map +0 -1
  301. package/dist/integrations/sessions/run-discovery.d.ts +0 -24
  302. package/dist/integrations/sessions/run-discovery.d.ts.map +0 -1
  303. package/dist/integrations/sessions/run-discovery.js +0 -142
  304. package/dist/integrations/sessions/run-discovery.js.map +0 -1
  305. package/dist/integrations/sessions/turn-evidence.d.ts +0 -129
  306. package/dist/integrations/sessions/turn-evidence.d.ts.map +0 -1
  307. package/dist/integrations/sessions/turn-evidence.js +0 -517
  308. package/dist/integrations/sessions/turn-evidence.js.map +0 -1
  309. package/dist/integrations/subagents/history.d.ts +0 -26
  310. package/dist/integrations/subagents/history.d.ts.map +0 -1
  311. package/dist/integrations/subagents/history.js +0 -76
  312. package/dist/integrations/subagents/history.js.map +0 -1
  313. package/dist/integrations/subagents/runs.d.ts +0 -72
  314. package/dist/integrations/subagents/runs.d.ts.map +0 -1
  315. package/dist/integrations/subagents/runs.js +0 -155
  316. package/dist/integrations/subagents/runs.js.map +0 -1
  317. package/dist/tui/run-interruption.d.ts.map +0 -1
  318. package/dist/tui/run-interruption.js.map +0 -1
  319. package/dist/tui/run-limits-settings.d.ts +0 -39
  320. package/dist/tui/run-limits-settings.d.ts.map +0 -1
  321. package/dist/tui/run-limits-settings.js.map +0 -1
@@ -1,26 +1,53 @@
1
- import { type Message, type ProjectId, type SessionGoalStore, type SessionId, type SessionStore, type TenantId, type TopicId, type UserMessage } from '@namzu/sdk';
2
- import { DiskConversationEvidence } from './turn-evidence.js';
1
+ /**
2
+ * Conversation persistence for the CLI, built on the SDK's session log.
3
+ *
4
+ * Every conversation is one session: an append-only, hash-chained JSONL file
5
+ * at `$NAMZU_HOME/projects/<slug>/<session-id>.jsonl`. The log is the source
6
+ * of truth. The rebuildable index at `$NAMZU_HOME/index.sqlite` answers the
7
+ * questions a list needs (which sessions this project has, which one a
8
+ * desktop key names) and is refreshed from the log after every write here.
9
+ *
10
+ * The CLI writes only the records that happen outside a turn: the
11
+ * `session_started` that creates a conversation, `session_updated` for its
12
+ * title, archive flag and caller-side names, and the `compaction` record that
13
+ * seeds a fork with the history it copied. Messages and turns are appended by
14
+ * the kernel's turn recorder while `query()` runs, under the session lease.
15
+ *
16
+ * This is what powers `/resume`: list recent sessions, fold a chosen
17
+ * session's messages, and keep chatting in it. The project is the canonical
18
+ * checkout root, so every directory of one checkout shares its history.
19
+ */
20
+ import { DiskSessionLog, type Message, type ProjectId, type Session, type SessionGoalStore, type SessionId, type SessionIndex, type SessionLog, SessionPaths, type SessionRecord, type SessionStartedRecord, type TenantId, type TopicId, type UserMessage } from '@namzu/sdk';
21
+ /**
22
+ * The part of the kernel's `SessionStore` contract the CLI still reads: one
23
+ * session by id, scoped to the tenant. Derived from the session's log, so it
24
+ * can never disagree with it. The goal store takes this for its ownership
25
+ * check.
26
+ */
27
+ export interface CliSessionCatalog {
28
+ getSession(sessionId: SessionId, tenantId: TenantId): Promise<Session | null>;
29
+ }
3
30
  export interface CliSessions {
4
- readonly store: Required<SessionStore>;
5
- /** Durable completion goal owned by each conversation Session. */
6
- readonly goals: SessionGoalStore;
31
+ /** Absolute `NAMZU_HOME`. */
32
+ readonly root: string;
33
+ /** The project's layout under `root`. */
34
+ readonly paths: SessionPaths;
35
+ /** The project's directory name under `projects/`. */
36
+ readonly slug: string;
37
+ /** The canonical checkout root the project stands for. */
38
+ readonly projectRoot: string;
7
39
  readonly projectId: ProjectId;
8
40
  readonly topicId: TopicId;
9
41
  readonly tenantId: TenantId;
10
- /** Absolute application home used by the CLI path builder. */
11
- readonly root: string;
12
- /** Shared application state root; individual capabilities apply their own ownership keys. */
13
- readonly projectStateRoot: string;
14
- /** Shared CLI sidecars; workspace-specific bindings include their Project key. */
15
- readonly controlRoot: string;
16
- /**
17
- * CLI-only turn/run correlation. Optional for embedded test doubles and
18
- * pre-feature hosts; {@link openSessions} always supplies it.
19
- */
20
- readonly turnEvidence?: DiskConversationEvidence;
42
+ /** The rebuildable index over every session log under `root`. */
43
+ readonly index: SessionIndex;
44
+ /** Sessions by id, read from their logs. */
45
+ readonly store: CliSessionCatalog;
46
+ /** Durable completion goal owned by each conversation Session. */
47
+ readonly goals: SessionGoalStore;
21
48
  }
22
49
  /** Persisted conversation ownership and history; no goal or UI sidecars are needed for retrieval. */
23
- export type ConversationContext = Pick<CliSessions, 'store' | 'projectId' | 'topicId' | 'tenantId' | 'root'>;
50
+ export type ConversationContext = Pick<CliSessions, 'root' | 'paths' | 'slug' | 'projectId' | 'topicId' | 'tenantId' | 'store' | 'index'>;
24
51
  export interface RecentConversation {
25
52
  readonly id: SessionId;
26
53
  readonly title: string;
@@ -38,101 +65,138 @@ export interface RecentConversation {
38
65
  readonly count: number;
39
66
  readonly preview?: string;
40
67
  }
41
- /**
42
- * Open (or initialize) the working directory's CLI project. Returns the handle
43
- * used by the other helpers. Invalid identity or binding metadata refuses.
44
- */
45
68
  export interface OpenSessionsOptions {
46
- /** Exact central hierarchy root; test/embedding seam. */
69
+ /** Exact `NAMZU_HOME`; test/embedding seam. */
47
70
  readonly stateRoot?: string;
48
71
  /** OS-home and environment seams used by the application-home resolver. */
49
72
  readonly home?: string;
50
73
  readonly env?: NodeJS.ProcessEnv;
74
+ /** Index backend; `auto` (the default) uses SQLite when `node:sqlite` loads. */
75
+ readonly indexBackend?: 'auto' | 'sqlite' | 'scan';
51
76
  }
52
77
  /**
53
- * Select the existing central Project for this directory, or share the nearest
54
- * checkout's Project. A checkout is bounded by a `.git` file or directory, so
55
- * worktrees and nested repositories keep distinct state. Tool cwd is unchanged.
78
+ * Open (or initialize) the working directory's project: `projects/<slug>/`
79
+ * with its `project.json`, the installation's tenant, and the index.
80
+ *
81
+ * The project is the nearest checkout root (a `.git` file or directory), so
82
+ * worktrees and nested repositories keep distinct history while every
83
+ * directory of one checkout shares it. Tool cwd is unchanged.
56
84
  */
57
85
  export declare function openSessions(cwd: string, options?: OpenSessionsOptions): Promise<CliSessions>;
86
+ /** Release the index's database handle. Idempotent. */
87
+ export declare function closeSessions(s: Pick<CliSessions, 'index'>): void;
88
+ /** The file a root conversation's log lives in. */
89
+ export declare function conversationLogPath(s: Pick<CliSessions, 'paths'>, sessionId: SessionId): string;
90
+ /** A writer handle on one conversation's log. */
91
+ export declare function openConversationLog(s: Pick<CliSessions, 'paths'>, sessionId: SessionId): DiskSessionLog;
92
+ /** Bring the index's row for one conversation up to date with its log. */
93
+ export declare function refreshIndex(s: Pick<CliSessions, 'paths' | 'slug' | 'index'>, sessionId: SessionId): Promise<void>;
94
+ /** What one conversation's log says about it, outside its messages. */
95
+ export interface ConversationFacts {
96
+ readonly sessionId: SessionId;
97
+ readonly started: SessionStartedRecord;
98
+ /** The latest `session_updated.title`; empty or absent means derived. */
99
+ readonly title?: string;
100
+ readonly named: boolean;
101
+ readonly archived: boolean;
102
+ readonly createdAt: string;
103
+ readonly updatedAt: string;
104
+ /** The session's open turn, if any, and whether it is parked. */
105
+ readonly activeTurn?: {
106
+ readonly turnId: string;
107
+ readonly paused: boolean;
108
+ };
109
+ readonly records: readonly SessionRecord[];
110
+ }
58
111
  /**
59
- * Resolve (creating if needed) the namzu conversation bound to an embedder's
60
- * session key. The mapping persists so a later turn / a history load with the
61
- * same key reuses the same conversation. Falls back to a fresh conversation if
62
- * the mapped id was wiped.
112
+ * Read one conversation's log, or `null` when there is none.
113
+ *
114
+ * Strict by default: a log whose chain is broken is not something to resume
115
+ * or fork. A list passes `tolerant` and reads what precedes the break.
63
116
  */
64
- export declare function resolveConversation(s: CliSessions, key: string): Promise<SessionId>;
65
- /** Read an external-session binding without creating or widening its scope. */
66
- export declare function findMappedConversation(s: CliSessions, key: string): Promise<SessionId | null>;
117
+ export declare function readConversationFacts(s: Pick<CliSessions, 'paths'>, sessionId: SessionId, mode?: 'strict' | 'tolerant'): Promise<ConversationFacts | null>;
118
+ export interface StartConversationOptions {
119
+ /** The id to create the conversation under; minted when absent. */
120
+ readonly id?: SessionId;
121
+ /** A caller-side name for the conversation (a desktop host's session key). */
122
+ readonly origin?: SessionStartedRecord['origin'];
123
+ }
67
124
  /**
68
125
  * Start a fresh conversation; returns its session id.
69
126
  *
70
- * The workspace gate runs HERE rather than being assumed from the caller,
71
- * because this is a store call and a store deliberately holds no view of
72
- * workspace status — the SDK's own note says a direct store caller bypasses
73
- * the invariant, and this was such a caller.
74
- *
75
- * `openSessions` reuses the central root-path binding across launches. Its
76
- * Project may have been closed since it was created, so session creation
77
- * checks that Project's current status again.
127
+ * Writes the log's first record, `session_started`, naming the project, the
128
+ * tenant and the CLI topic. An id that already has a log is refused: two
129
+ * conversations never share one.
78
130
  */
79
- export declare function startConversation(s: CliSessions, id?: SessionId): Promise<SessionId>;
131
+ export declare function startConversation(s: Pick<CliSessions, 'paths' | 'slug' | 'index' | 'projectId' | 'topicId' | 'tenantId' | 'projectRoot'>, idOrOptions?: SessionId | StartConversationOptions): Promise<SessionId>;
80
132
  /**
81
- * Sequential admission gate for a turn or conversation mutation.
82
- *
83
- * This establishes the state observed immediately before the operation. It is
84
- * deliberately not described as a cross-process transaction: Project archive
85
- * and Session mutation live in separate store records, so serializing an
86
- * archive racing a live turn requires a durable lease shared by both paths.
87
- * What this gate does guarantee is that a target already closed, archived or
88
- * outside the current Project never silently reaches the requested operation.
133
+ * Give a session log its `session_started` if it has none yet, so a turn can
134
+ * begin in it. A log that already starts is left alone. Used where a session
135
+ * is brought into existence by its first turn rather than by
136
+ * {@link startConversation}: a headless scope, an in-memory log.
89
137
  */
90
- export declare function requireWritableConversation(s: ConversationContext, sessionId: SessionId, op?: string): Promise<void>;
138
+ export declare function ensureSessionStarted(log: SessionLog, session: {
139
+ readonly projectId: ProjectId;
140
+ readonly tenantId: TenantId;
141
+ readonly topicId: TopicId;
142
+ readonly cwd: string;
143
+ readonly agent: {
144
+ readonly id: string;
145
+ readonly name: string;
146
+ };
147
+ readonly origin?: SessionStartedRecord['origin'];
148
+ }): Promise<void>;
91
149
  /**
92
- * Turn the active conversation into a read-only tombstone.
93
- *
94
- * The caller owns the live-turn barrier; this function owns store scope and a
95
- * versioned publication. History remains readable, while `/resume`, later
96
- * appends and forks reject through {@link requireWritableConversation}.
150
+ * Resolve (creating if needed) the conversation bound to an embedder's
151
+ * session key. The binding is the conversation's own `session_started.origin`,
152
+ * so a later turn or history load with the same key reuses it, and an index
153
+ * rebuild finds it again.
97
154
  */
98
- export declare function archiveConversation(s: CliSessions, sessionId: SessionId): Promise<void>;
99
- /** Append messages (in order) to a conversation. */
100
- export declare function appendMessages(s: CliSessions, sessionId: SessionId, messages: readonly Message[]): Promise<void>;
155
+ export declare function resolveConversation(s: CliSessions, key: string): Promise<SessionId>;
156
+ /** Read an external-session binding without creating or widening its scope. */
157
+ export declare function findMappedConversation(s: CliSessions, key: string): Promise<SessionId | null>;
101
158
  /**
102
- * Replace the durable conversation view with a compacted history.
103
- *
104
- * The store writes this as one replacement record inside its append-only log,
105
- * so a crash cannot expose the first half of a compacted conversation. Before
106
- * replacing, pin the derived title without calling it a chosen name: the
107
- * opening user message may be among the turns compacted away, and `/resume`
108
- * must neither rename nor quote the conversation as a side effect of making
109
- * it smaller.
159
+ * Sequential admission gate for a turn or conversation mutation: the target
160
+ * exists in this project and is not archived. It is not a cross-process
161
+ * transaction; the session lease is what serialises writers.
110
162
  */
111
- export declare function replaceConversation(s: CliSessions, sessionId: SessionId, messages: readonly Message[]): Promise<void>;
112
- /** Load a conversation's full message history. */
113
- export declare function loadConversation(s: CliSessions, sessionId: SessionId): Promise<Message[]>;
163
+ export declare function requireWritableConversation(s: ConversationContext, sessionId: SessionId, op?: string): Promise<void>;
164
+ /**
165
+ * Turn the conversation into a read-only tombstone with `session_updated
166
+ * {archived: true}`. History remains readable, while `/resume`, later turns
167
+ * and forks reject through {@link requireWritableConversation}.
168
+ */
169
+ export declare function archiveConversation(s: CliSessions, sessionId: SessionId): Promise<void>;
170
+ /** Load a conversation's folded message history. */
171
+ export declare function loadConversation(s: ConversationContext, sessionId: SessionId): Promise<Message[]>;
114
172
  /**
115
173
  * Load one conversation for a new model turn.
116
174
  *
117
175
  * Reading an archived conversation remains legitimate — `history` and export
118
176
  * are inspection surfaces — but resuming it would turn a tombstone back into a
119
- * live writer without a restore operation. The Project gate is separate for
120
- * the same reason: closing a workspace must not make its history disappear,
121
- * while it must stop a later turn from starting there.
177
+ * live writer without a restore operation.
122
178
  */
123
- export declare function loadResumableConversation(s: CliSessions, sessionId: string): Promise<Message[]>;
179
+ export declare function loadResumableConversation(s: ConversationContext, sessionId: string): Promise<Message[]>;
180
+ /** The open turn of a conversation, if it has one: `paused` when it is parked. */
181
+ export declare function activeConversationTurn(s: ConversationContext, sessionId: SessionId): Promise<ConversationFacts['activeTurn'] | undefined>;
124
182
  /** Recent non-empty conversations, newest first — for the `/resume` list. */
125
183
  export declare function listRecent(s: CliSessions, limit?: number): Promise<RecentConversation[]>;
126
184
  /** The name a person gave this conversation, or `undefined`. */
127
- export declare function titleOf(s: CliSessions, sessionId: SessionId): string | undefined;
185
+ export declare function titleOf(s: ConversationContext, sessionId: SessionId): Promise<string | undefined>;
128
186
  /**
129
187
  * Name a conversation, or with an empty name, take the name away.
130
188
  *
131
- * Removing rather than storing `''` is what keeps "named" a real distinction:
132
- * an empty string is not a name, and leaving one behind would make `/resume`
133
- * show a blank row that reads as a conversation with nothing in it.
189
+ * Recorded as `session_updated{title, titleSource: 'named'}`; clearing records
190
+ * an empty derived title, so the list derives one from the first message
191
+ * again rather than showing a blank row.
192
+ */
193
+ export declare function setTitle(s: CliSessions, sessionId: SessionId, title: string): Promise<void>;
194
+ /**
195
+ * Seed a conversation that has no turns yet with a history, as one
196
+ * `compaction` record outside any turn: the fold starts from its summary, so
197
+ * the new conversation's context is exactly `messages`. Used by forks.
134
198
  */
135
- export declare function setTitle(s: CliSessions, sessionId: SessionId, title: string): void;
199
+ export declare function seedConversationHistory(s: Pick<CliSessions, 'paths' | 'slug' | 'index'>, sessionId: SessionId, messages: readonly Message[], strategy?: string): Promise<void>;
136
200
  /**
137
201
  * Continue in a copy, leaving the original where it is.
138
202
  *
@@ -142,11 +206,9 @@ export declare function setTitle(s: CliSessions, sessionId: SessionId, title: st
142
206
  *
143
207
  * **The fork is always named, and that is the load-bearing part.** Both
144
208
  * conversations start with the same first message, so both DERIVE the same
145
- * title — and `/resume` would show two rows a person cannot tell apart, which
146
- * is a worse outcome than not being able to fork at all. The name is taken
147
- * from the source's own, so a fork of a fork stays readable, and it is
148
- * numbered against the names already in use so a second fork does not collide
149
- * with the first.
209
+ * title — and `/resume` would show two rows a person cannot tell apart. The
210
+ * name is taken from the source's own, so a fork of a fork stays readable, and
211
+ * it is numbered against the names already in use.
150
212
  */
151
213
  export declare function forkConversation(s: CliSessions, sourceId: SessionId): Promise<{
152
214
  id: SessionId;
@@ -171,8 +233,7 @@ export interface ForkBeforeUserResult {
171
233
  * a boundary the operator did not select.
172
234
  *
173
235
  * An empty prefix is valid. Editing the first prompt creates an empty branch
174
- * and restores that prompt to the composer; refusing it would make the most
175
- * common first-turn correction the one prompt this feature cannot edit.
236
+ * and restores that prompt to the composer.
176
237
  */
177
238
  export declare function forkConversationBeforeUser(s: CliSessions, sourceId: SessionId, userOrdinal: number, expected: UserMessage): Promise<ForkBeforeUserResult>;
178
239
  /**
@@ -183,4 +244,11 @@ export declare function forkConversationBeforeUser(s: CliSessions, sourceId: Ses
183
244
  * never held one.
184
245
  */
185
246
  export declare function nextForkName(taken: Record<string, string>, source: string): string;
247
+ export declare function conversationTitle(messages: readonly Message[]): string;
248
+ /** The project directory name, for messages that point a person at it. */
249
+ export declare function projectLabel(s: Pick<CliSessions, 'projectRoot'>): string;
250
+ /** Where a conversation's per-session files live (`<session-id>/`). */
251
+ export declare function conversationDir(s: Pick<CliSessions, 'paths'>, sessionId: SessionId): string;
252
+ /** The project's directory under `NAMZU_HOME` (`projects/<slug>/`). */
253
+ export declare function projectDir(s: Pick<CliSessions, 'root' | 'slug'>): string;
186
254
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/integrations/sessions/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/integrations/sessions/store.ts"],"names":[],"mappings":"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"}