@dsh-cc/tui 0.5.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 (363) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +144 -0
  3. package/lib/bash-history.d.ts +31 -0
  4. package/lib/bash-history.d.ts.map +1 -0
  5. package/lib/bash-history.js +94 -0
  6. package/lib/bash-history.js.map +1 -0
  7. package/lib/compact-fold.d.ts +35 -0
  8. package/lib/compact-fold.d.ts.map +1 -0
  9. package/lib/compact-fold.js +60 -0
  10. package/lib/compact-fold.js.map +1 -0
  11. package/lib/components/arg-completers.d.ts +22 -0
  12. package/lib/components/arg-completers.d.ts.map +1 -0
  13. package/lib/components/arg-completers.js +75 -0
  14. package/lib/components/arg-completers.js.map +1 -0
  15. package/lib/components/code-theme.d.ts +25 -0
  16. package/lib/components/code-theme.d.ts.map +1 -0
  17. package/lib/components/code-theme.js +137 -0
  18. package/lib/components/code-theme.js.map +1 -0
  19. package/lib/components/completion.d.ts +50 -0
  20. package/lib/components/completion.d.ts.map +1 -0
  21. package/lib/components/completion.js +279 -0
  22. package/lib/components/completion.js.map +1 -0
  23. package/lib/components/diff-card.d.ts +29 -0
  24. package/lib/components/diff-card.d.ts.map +1 -0
  25. package/lib/components/diff-card.js +175 -0
  26. package/lib/components/diff-card.js.map +1 -0
  27. package/lib/components/diff-hunks.d.ts +44 -0
  28. package/lib/components/diff-hunks.d.ts.map +1 -0
  29. package/lib/components/diff-hunks.js +188 -0
  30. package/lib/components/diff-hunks.js.map +1 -0
  31. package/lib/components/editor-history.d.ts +23 -0
  32. package/lib/components/editor-history.d.ts.map +1 -0
  33. package/lib/components/editor-history.js +29 -0
  34. package/lib/components/editor-history.js.map +1 -0
  35. package/lib/components/markdown-theme.d.ts +11 -0
  36. package/lib/components/markdown-theme.d.ts.map +1 -0
  37. package/lib/components/markdown-theme.js +29 -0
  38. package/lib/components/markdown-theme.js.map +1 -0
  39. package/lib/components/masked-input.d.ts +24 -0
  40. package/lib/components/masked-input.d.ts.map +1 -0
  41. package/lib/components/masked-input.js +168 -0
  42. package/lib/components/masked-input.js.map +1 -0
  43. package/lib/components/overlay-host.d.ts +31 -0
  44. package/lib/components/overlay-host.d.ts.map +1 -0
  45. package/lib/components/overlay-host.js +128 -0
  46. package/lib/components/overlay-host.js.map +1 -0
  47. package/lib/components/overlays.d.ts +94 -0
  48. package/lib/components/overlays.d.ts.map +1 -0
  49. package/lib/components/overlays.js +450 -0
  50. package/lib/components/overlays.js.map +1 -0
  51. package/lib/components/provider-box.d.ts +23 -0
  52. package/lib/components/provider-box.d.ts.map +1 -0
  53. package/lib/components/provider-box.js +164 -0
  54. package/lib/components/provider-box.js.map +1 -0
  55. package/lib/components/read-group.d.ts +51 -0
  56. package/lib/components/read-group.d.ts.map +1 -0
  57. package/lib/components/read-group.js +105 -0
  58. package/lib/components/read-group.js.map +1 -0
  59. package/lib/components/root-bash.d.ts +36 -0
  60. package/lib/components/root-bash.d.ts.map +1 -0
  61. package/lib/components/root-bash.js +112 -0
  62. package/lib/components/root-bash.js.map +1 -0
  63. package/lib/components/root-types.d.ts +42 -0
  64. package/lib/components/root-types.d.ts.map +1 -0
  65. package/lib/components/root-types.js +8 -0
  66. package/lib/components/root-types.js.map +1 -0
  67. package/lib/components/root-utils.d.ts +22 -0
  68. package/lib/components/root-utils.d.ts.map +1 -0
  69. package/lib/components/root-utils.js +45 -0
  70. package/lib/components/root-utils.js.map +1 -0
  71. package/lib/components/root.d.ts +25 -0
  72. package/lib/components/root.d.ts.map +1 -0
  73. package/lib/components/root.js +357 -0
  74. package/lib/components/root.js.map +1 -0
  75. package/lib/components/theme.d.ts +61 -0
  76. package/lib/components/theme.d.ts.map +1 -0
  77. package/lib/components/theme.js +99 -0
  78. package/lib/components/theme.js.map +1 -0
  79. package/lib/components/transcript.d.ts +43 -0
  80. package/lib/components/transcript.d.ts.map +1 -0
  81. package/lib/components/transcript.js +203 -0
  82. package/lib/components/transcript.js.map +1 -0
  83. package/lib/components/working-line.d.ts +35 -0
  84. package/lib/components/working-line.d.ts.map +1 -0
  85. package/lib/components/working-line.js +66 -0
  86. package/lib/components/working-line.js.map +1 -0
  87. package/lib/effort-catalog.d.ts +27 -0
  88. package/lib/effort-catalog.d.ts.map +1 -0
  89. package/lib/effort-catalog.js +36 -0
  90. package/lib/effort-catalog.js.map +1 -0
  91. package/lib/export-markdown.d.ts +18 -0
  92. package/lib/export-markdown.d.ts.map +1 -0
  93. package/lib/export-markdown.js +124 -0
  94. package/lib/export-markdown.js.map +1 -0
  95. package/lib/harness/approval-preview.d.ts +33 -0
  96. package/lib/harness/approval-preview.d.ts.map +1 -0
  97. package/lib/harness/approval-preview.js +179 -0
  98. package/lib/harness/approval-preview.js.map +1 -0
  99. package/lib/harness/boot-banner.d.ts +14 -0
  100. package/lib/harness/boot-banner.d.ts.map +1 -0
  101. package/lib/harness/boot-banner.js +89 -0
  102. package/lib/harness/boot-banner.js.map +1 -0
  103. package/lib/harness/driver-agent.d.ts +78 -0
  104. package/lib/harness/driver-agent.d.ts.map +1 -0
  105. package/lib/harness/driver-agent.js +314 -0
  106. package/lib/harness/driver-agent.js.map +1 -0
  107. package/lib/harness/driver-agents.d.ts +20 -0
  108. package/lib/harness/driver-agents.d.ts.map +1 -0
  109. package/lib/harness/driver-agents.js +123 -0
  110. package/lib/harness/driver-agents.js.map +1 -0
  111. package/lib/harness/driver-approvals.d.ts +38 -0
  112. package/lib/harness/driver-approvals.d.ts.map +1 -0
  113. package/lib/harness/driver-approvals.js +277 -0
  114. package/lib/harness/driver-approvals.js.map +1 -0
  115. package/lib/harness/driver-bash.d.ts +15 -0
  116. package/lib/harness/driver-bash.d.ts.map +1 -0
  117. package/lib/harness/driver-bash.js +73 -0
  118. package/lib/harness/driver-bash.js.map +1 -0
  119. package/lib/harness/driver-catalog.d.ts +84 -0
  120. package/lib/harness/driver-catalog.d.ts.map +1 -0
  121. package/lib/harness/driver-catalog.js +256 -0
  122. package/lib/harness/driver-catalog.js.map +1 -0
  123. package/lib/harness/driver-ctx.d.ts +462 -0
  124. package/lib/harness/driver-ctx.d.ts.map +1 -0
  125. package/lib/harness/driver-ctx.js +11 -0
  126. package/lib/harness/driver-ctx.js.map +1 -0
  127. package/lib/harness/driver-hud.d.ts +31 -0
  128. package/lib/harness/driver-hud.d.ts.map +1 -0
  129. package/lib/harness/driver-hud.js +204 -0
  130. package/lib/harness/driver-hud.js.map +1 -0
  131. package/lib/harness/driver-live.d.ts +36 -0
  132. package/lib/harness/driver-live.d.ts.map +1 -0
  133. package/lib/harness/driver-live.js +44 -0
  134. package/lib/harness/driver-live.js.map +1 -0
  135. package/lib/harness/driver-modal.d.ts +52 -0
  136. package/lib/harness/driver-modal.d.ts.map +1 -0
  137. package/lib/harness/driver-modal.js +78 -0
  138. package/lib/harness/driver-modal.js.map +1 -0
  139. package/lib/harness/driver-mode.d.ts +35 -0
  140. package/lib/harness/driver-mode.d.ts.map +1 -0
  141. package/lib/harness/driver-mode.js +84 -0
  142. package/lib/harness/driver-mode.js.map +1 -0
  143. package/lib/harness/driver-pickers.d.ts +48 -0
  144. package/lib/harness/driver-pickers.d.ts.map +1 -0
  145. package/lib/harness/driver-pickers.js +249 -0
  146. package/lib/harness/driver-pickers.js.map +1 -0
  147. package/lib/harness/driver-promote.d.ts +29 -0
  148. package/lib/harness/driver-promote.d.ts.map +1 -0
  149. package/lib/harness/driver-promote.js +36 -0
  150. package/lib/harness/driver-promote.js.map +1 -0
  151. package/lib/harness/driver-queue.d.ts +19 -0
  152. package/lib/harness/driver-queue.d.ts.map +1 -0
  153. package/lib/harness/driver-queue.js +281 -0
  154. package/lib/harness/driver-queue.js.map +1 -0
  155. package/lib/harness/driver-run-local.d.ts +32 -0
  156. package/lib/harness/driver-run-local.d.ts.map +1 -0
  157. package/lib/harness/driver-run-local.js +366 -0
  158. package/lib/harness/driver-run-local.js.map +1 -0
  159. package/lib/harness/driver-sessions.d.ts +28 -0
  160. package/lib/harness/driver-sessions.d.ts.map +1 -0
  161. package/lib/harness/driver-sessions.js +386 -0
  162. package/lib/harness/driver-sessions.js.map +1 -0
  163. package/lib/harness/driver.d.ts +22 -0
  164. package/lib/harness/driver.d.ts.map +1 -0
  165. package/lib/harness/driver.js +459 -0
  166. package/lib/harness/driver.js.map +1 -0
  167. package/lib/harness/preset.d.ts +32 -0
  168. package/lib/harness/preset.d.ts.map +1 -0
  169. package/lib/harness/preset.js +34 -0
  170. package/lib/harness/preset.js.map +1 -0
  171. package/lib/harness/session-list.d.ts +65 -0
  172. package/lib/harness/session-list.d.ts.map +1 -0
  173. package/lib/harness/session-list.js +91 -0
  174. package/lib/harness/session-list.js.map +1 -0
  175. package/lib/harness/shell-output.d.ts +44 -0
  176. package/lib/harness/shell-output.d.ts.map +1 -0
  177. package/lib/harness/shell-output.js +90 -0
  178. package/lib/harness/shell-output.js.map +1 -0
  179. package/lib/harness/statusline-cc-transcript.d.ts +51 -0
  180. package/lib/harness/statusline-cc-transcript.d.ts.map +1 -0
  181. package/lib/harness/statusline-cc-transcript.js +191 -0
  182. package/lib/harness/statusline-cc-transcript.js.map +1 -0
  183. package/lib/harness/statusline-command.d.ts +54 -0
  184. package/lib/harness/statusline-command.d.ts.map +1 -0
  185. package/lib/harness/statusline-command.js +161 -0
  186. package/lib/harness/statusline-command.js.map +1 -0
  187. package/lib/harness/statusline-payload.d.ts +79 -0
  188. package/lib/harness/statusline-payload.d.ts.map +1 -0
  189. package/lib/harness/statusline-payload.js +93 -0
  190. package/lib/harness/statusline-payload.js.map +1 -0
  191. package/lib/harness/statusline-settings.d.ts +47 -0
  192. package/lib/harness/statusline-settings.d.ts.map +1 -0
  193. package/lib/harness/statusline-settings.js +57 -0
  194. package/lib/harness/statusline-settings.js.map +1 -0
  195. package/lib/harness/statusline-wiring.d.ts +45 -0
  196. package/lib/harness/statusline-wiring.d.ts.map +1 -0
  197. package/lib/harness/statusline-wiring.js +247 -0
  198. package/lib/harness/statusline-wiring.js.map +1 -0
  199. package/lib/harness/usage-view.d.ts +84 -0
  200. package/lib/harness/usage-view.d.ts.map +1 -0
  201. package/lib/harness/usage-view.js +199 -0
  202. package/lib/harness/usage-view.js.map +1 -0
  203. package/lib/harness/worktree-exit.d.ts +105 -0
  204. package/lib/harness/worktree-exit.d.ts.map +1 -0
  205. package/lib/harness/worktree-exit.js +168 -0
  206. package/lib/harness/worktree-exit.js.map +1 -0
  207. package/lib/history.d.ts +50 -0
  208. package/lib/history.d.ts.map +1 -0
  209. package/lib/history.js +139 -0
  210. package/lib/history.js.map +1 -0
  211. package/lib/index.d.ts +63 -0
  212. package/lib/index.d.ts.map +1 -0
  213. package/lib/index.js +54 -0
  214. package/lib/index.js.map +1 -0
  215. package/lib/input.d.ts +158 -0
  216. package/lib/input.d.ts.map +1 -0
  217. package/lib/input.js +400 -0
  218. package/lib/input.js.map +1 -0
  219. package/lib/invariant.d.ts +14 -0
  220. package/lib/invariant.d.ts.map +1 -0
  221. package/lib/invariant.js +20 -0
  222. package/lib/invariant.js.map +1 -0
  223. package/lib/mode-cycle.d.ts +22 -0
  224. package/lib/mode-cycle.d.ts.map +1 -0
  225. package/lib/mode-cycle.js +32 -0
  226. package/lib/mode-cycle.js.map +1 -0
  227. package/lib/model-catalog.d.ts +22 -0
  228. package/lib/model-catalog.d.ts.map +1 -0
  229. package/lib/model-catalog.js +45 -0
  230. package/lib/model-catalog.js.map +1 -0
  231. package/lib/packaged-preset.d.ts +32 -0
  232. package/lib/packaged-preset.d.ts.map +1 -0
  233. package/lib/packaged-preset.js +94 -0
  234. package/lib/packaged-preset.js.map +1 -0
  235. package/lib/plugin.d.ts +11 -0
  236. package/lib/plugin.d.ts.map +1 -0
  237. package/lib/plugin.js +88 -0
  238. package/lib/plugin.js.map +1 -0
  239. package/lib/profile.d.ts +4 -0
  240. package/lib/profile.d.ts.map +1 -0
  241. package/lib/profile.js +7 -0
  242. package/lib/profile.js.map +1 -0
  243. package/lib/project-sessions.d.ts +29 -0
  244. package/lib/project-sessions.d.ts.map +1 -0
  245. package/lib/project-sessions.js +60 -0
  246. package/lib/project-sessions.js.map +1 -0
  247. package/lib/project.d.ts +75 -0
  248. package/lib/project.d.ts.map +1 -0
  249. package/lib/project.js +196 -0
  250. package/lib/project.js.map +1 -0
  251. package/lib/provider-actions.d.ts +37 -0
  252. package/lib/provider-actions.d.ts.map +1 -0
  253. package/lib/provider-actions.js +417 -0
  254. package/lib/provider-actions.js.map +1 -0
  255. package/lib/provider-command.d.ts +109 -0
  256. package/lib/provider-command.d.ts.map +1 -0
  257. package/lib/provider-command.js +220 -0
  258. package/lib/provider-command.js.map +1 -0
  259. package/lib/provider-detail.d.ts +15 -0
  260. package/lib/provider-detail.d.ts.map +1 -0
  261. package/lib/provider-detail.js +201 -0
  262. package/lib/provider-detail.js.map +1 -0
  263. package/lib/provider-flow.d.ts +191 -0
  264. package/lib/provider-flow.d.ts.map +1 -0
  265. package/lib/provider-flow.js +192 -0
  266. package/lib/provider-flow.js.map +1 -0
  267. package/lib/provider-presets.d.ts +32 -0
  268. package/lib/provider-presets.d.ts.map +1 -0
  269. package/lib/provider-presets.js +105 -0
  270. package/lib/provider-presets.js.map +1 -0
  271. package/lib/provider-read.d.ts +63 -0
  272. package/lib/provider-read.d.ts.map +1 -0
  273. package/lib/provider-read.js +115 -0
  274. package/lib/provider-read.js.map +1 -0
  275. package/lib/provider-settings.d.ts +30 -0
  276. package/lib/provider-settings.d.ts.map +1 -0
  277. package/lib/provider-settings.js +65 -0
  278. package/lib/provider-settings.js.map +1 -0
  279. package/lib/resume-target.d.ts +59 -0
  280. package/lib/resume-target.d.ts.map +1 -0
  281. package/lib/resume-target.js +143 -0
  282. package/lib/resume-target.js.map +1 -0
  283. package/lib/slash.d.ts +44 -0
  284. package/lib/slash.d.ts.map +1 -0
  285. package/lib/slash.js +81 -0
  286. package/lib/slash.js.map +1 -0
  287. package/lib/state/driver-types.d.ts +505 -0
  288. package/lib/state/driver-types.d.ts.map +1 -0
  289. package/lib/state/driver-types.js +8 -0
  290. package/lib/state/driver-types.js.map +1 -0
  291. package/lib/state/driver-usage-types.d.ts +59 -0
  292. package/lib/state/driver-usage-types.d.ts.map +1 -0
  293. package/lib/state/driver-usage-types.js +8 -0
  294. package/lib/state/driver-usage-types.js.map +1 -0
  295. package/lib/statusline.d.ts +63 -0
  296. package/lib/statusline.d.ts.map +1 -0
  297. package/lib/statusline.js +97 -0
  298. package/lib/statusline.js.map +1 -0
  299. package/lib/store/pickers.d.ts +34 -0
  300. package/lib/store/pickers.d.ts.map +1 -0
  301. package/lib/store/pickers.js +111 -0
  302. package/lib/store/pickers.js.map +1 -0
  303. package/lib/store/provider-panel.d.ts +107 -0
  304. package/lib/store/provider-panel.d.ts.map +1 -0
  305. package/lib/store/provider-panel.js +151 -0
  306. package/lib/store/provider-panel.js.map +1 -0
  307. package/lib/store/question.d.ts +21 -0
  308. package/lib/store/question.d.ts.map +1 -0
  309. package/lib/store/question.js +59 -0
  310. package/lib/store/question.js.map +1 -0
  311. package/lib/store/queue.d.ts +27 -0
  312. package/lib/store/queue.d.ts.map +1 -0
  313. package/lib/store/queue.js +34 -0
  314. package/lib/store/queue.js.map +1 -0
  315. package/lib/store/session.d.ts +73 -0
  316. package/lib/store/session.d.ts.map +1 -0
  317. package/lib/store/session.js +172 -0
  318. package/lib/store/session.js.map +1 -0
  319. package/lib/store/subagents.d.ts +16 -0
  320. package/lib/store/subagents.d.ts.map +1 -0
  321. package/lib/store/subagents.js +44 -0
  322. package/lib/store/subagents.js.map +1 -0
  323. package/lib/store/todos.d.ts +35 -0
  324. package/lib/store/todos.d.ts.map +1 -0
  325. package/lib/store/todos.js +68 -0
  326. package/lib/store/todos.js.map +1 -0
  327. package/lib/store/usage.d.ts +15 -0
  328. package/lib/store/usage.d.ts.map +1 -0
  329. package/lib/store/usage.js +27 -0
  330. package/lib/store/usage.js.map +1 -0
  331. package/lib/store/views.d.ts +419 -0
  332. package/lib/store/views.d.ts.map +1 -0
  333. package/lib/store/views.js +3 -0
  334. package/lib/store/views.js.map +1 -0
  335. package/lib/store.d.ts +19 -0
  336. package/lib/store.d.ts.map +1 -0
  337. package/lib/store.js +10 -0
  338. package/lib/store.js.map +1 -0
  339. package/lib/terminal/lease.d.ts +33 -0
  340. package/lib/terminal/lease.d.ts.map +1 -0
  341. package/lib/terminal/lease.js +99 -0
  342. package/lib/terminal/lease.js.map +1 -0
  343. package/lib/tool-card.d.ts +75 -0
  344. package/lib/tool-card.d.ts.map +1 -0
  345. package/lib/tool-card.js +109 -0
  346. package/lib/tool-card.js.map +1 -0
  347. package/lib/tool-verbs.d.ts +12 -0
  348. package/lib/tool-verbs.d.ts.map +1 -0
  349. package/lib/tool-verbs.js +29 -0
  350. package/lib/tool-verbs.js.map +1 -0
  351. package/lib/transcript.d.ts +40 -0
  352. package/lib/transcript.d.ts.map +1 -0
  353. package/lib/transcript.js +413 -0
  354. package/lib/transcript.js.map +1 -0
  355. package/lib/working-line.d.ts +44 -0
  356. package/lib/working-line.d.ts.map +1 -0
  357. package/lib/working-line.js +56 -0
  358. package/lib/working-line.js.map +1 -0
  359. package/package.json +72 -0
  360. package/presets/cc/.dsh-cc-managed.json +5 -0
  361. package/presets/cc/agent.cordis.yml +524 -0
  362. package/presets/cc/preset.yml +3 -0
  363. package/scripts/stage-preset.mjs +26 -0
@@ -0,0 +1,462 @@
1
+ /**
2
+ * Driver cluster context: structural interface(s) that free-function
3
+ * collaborators (harness/driver-*.ts) use instead of importing the createDriver
4
+ * factory (which would be a cycle). This file is a type-only leaf — every new
5
+ * cluster that migrates out of driver.ts grows a `*.Ctx` here.
6
+ *
7
+ * All TS-only; erased at runtime.
8
+ * @module @dsh-cc/tui/harness/driver-ctx
9
+ */
10
+ import type { TuiState, UsageView } from '../store.ts';
11
+ import type { DriverConfig, SessionProjectionsLike, ShellExecutorLike } from '../state/driver-types.ts';
12
+ import type { Agent, AgentHandle, AgentSetup, ModelSelectionRef } from '@deepseek-ai/dsh-agent';
13
+ import type { Context } from '@deepseek-ai/cordis';
14
+ import type { SessionId } from '@deepseek-ai/dsh-session';
15
+ import type { CatalogEntry } from '../model-catalog.ts';
16
+ import type { ModalEntry } from './driver-modal.ts';
17
+ import type { StatusLineSectionHandle } from './statusline-wiring.ts';
18
+ import type { SessionEventLike, ToolPresenters } from '../transcript.ts';
19
+ /**
20
+ * The slice of createDriver's closed-over state that `!` shell-command
21
+ * execution needs. `state()` returns the CURRENT view-model value — createDriver
22
+ * rebinds `state` on every emit, so collaborators must read it through a getter
23
+ * rather than capturing a stale snapshot.
24
+ */
25
+ export interface DriverBashCtx {
26
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
27
+ emit(next: TuiState): void;
28
+ /** Read the current view-model value (fresh, not a snapshot). */
29
+ state(): TuiState;
30
+ /** Working directory for fallback `/bin/sh -c` runs. */
31
+ cwd: string;
32
+ /** Shell executor when mounted; undefined degrades to a direct child run. */
33
+ shell: ShellExecutorLike | undefined;
34
+ /** Record a command in bash-mode history (dedup + cap + persist). */
35
+ appendBashHistory(command: string): void;
36
+ }
37
+ /**
38
+ * Structural face of the permission-rules service the mode section reads:
39
+ * the merged rule set (for rule preview/derivation) and the durable mode
40
+ * write. Mirrors the service's public surface without importing its package.
41
+ */
42
+ export type PermissionRulesLike = {
43
+ readonly ruleSet: {
44
+ readonly allow: readonly unknown[];
45
+ readonly deny: readonly unknown[];
46
+ readonly ask: readonly unknown[];
47
+ readonly bypassImmune: readonly unknown[];
48
+ };
49
+ setMode(agent: Agent, mode: string): void;
50
+ };
51
+ /**
52
+ * The slice of createDriver's closed-over state that the modal pipeline
53
+ * (approvals + questions sharing one FIFO) needs. `state()` returns the CURRENT
54
+ * view-model value — createDriver rebinds `state` on every emit, so the modal
55
+ * collaborator must read it through a getter rather than a stale snapshot.
56
+ */
57
+ export interface DriverModalCtx {
58
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
59
+ emit(next: TuiState): void;
60
+ /** Read the current view-model value (fresh, not a snapshot). */
61
+ state(): TuiState;
62
+ }
63
+ /**
64
+ * The slice of createDriver's closed-over state that the plan/mode writepath
65
+ * needs (driver-mode.ts). `state()` returns the CURRENT view-model value —
66
+ * createDriver rebinds `state` on every emit, so the collaborator must read it
67
+ * through a getter rather than a stale snapshot.
68
+ */
69
+ export interface DriverModeCtx {
70
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
71
+ emit(next: TuiState): void;
72
+ /** Read the current view-model value (fresh, not a snapshot). */
73
+ state(): TuiState;
74
+ /** The rebindable agent holder (switchSession replaces it in place). */
75
+ current: {
76
+ agent: Agent;
77
+ };
78
+ /** Plan-unit projector, when mounted. */
79
+ projections: {
80
+ stateOf(session: unknown, unit: string): unknown;
81
+ } | undefined;
82
+ /** Surface a transient notice line. */
83
+ showNotice(text: string): void;
84
+ /** Run a bare /plan channel command. Late-bound (defined after this ctx). */
85
+ runHarness(line: string): Promise<{
86
+ kind: string;
87
+ text?: string;
88
+ } | undefined | null>;
89
+ /** Returns the mounted permission-rules engine's setMode seam, if any. */
90
+ getRules(): PermissionRulesSeam | undefined;
91
+ /** Fold the current plan/permission mode (live, not a snapshot). */
92
+ liveMode(agent: Agent, fallback?: string): string;
93
+ }
94
+ /** Duck-typed surface for the permission-rules engine's mode writepath. */
95
+ export interface PermissionRulesSeam {
96
+ setMode(agent: Agent, mode: string): void;
97
+ }
98
+ /**
99
+ * The slice of createDriver's closed-over state that the statusline HUD /
100
+ * sessionProjections feed needs (driver-hud.ts). `state()` returns the CURRENT
101
+ * view-model value — createDriver rebinds `state` on every emit, so the
102
+ * collaborator must read it through a getter rather than a stale snapshot.
103
+ * `current` and `selection` are passed by reference (createDriver rebinds them
104
+ * in place across switchSession), so the section always reads the live values.
105
+ */
106
+ export interface DriverHudCtx {
107
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
108
+ emit(next: TuiState): void;
109
+ /** Read the current view-model value (fresh, not a snapshot). */
110
+ state(): TuiState;
111
+ /** Host context for the sessionProjections service lookup. */
112
+ ctx: Context;
113
+ /** Working directory (process cwd, fallback for the branch probe). */
114
+ cwd: string;
115
+ /** The rebindable agent holder (switchSession replaces it in place). */
116
+ current: {
117
+ agent: Agent;
118
+ };
119
+ /** Model selection ref; statusline reads reasoningEffort/model from it. */
120
+ selection: ModelSelectionRef;
121
+ /** Best-effort git-branch probe for the statusline footer. */
122
+ branchProbe: (dir: string) => Promise<string | undefined>;
123
+ /**
124
+ * Custom statusLine wiring (statusline-wiring.ts), when created by the
125
+ * driver. `override()` returns the configured command's line while active,
126
+ * or undefined so the built-in HUD stays in charge.
127
+ */
128
+ statusline?: StatusLineSectionHandle;
129
+ }
130
+ /**
131
+ * The slice of createDriver's closed-over state that the slash-command
132
+ * catalog + subagent lifecycle section needs (driver-catalog.ts). `state()`
133
+ * returns the CURRENT view-model value — createDriver rebinds `state` on every
134
+ * emit, so the collaborator must read it through a getter rather than a stale
135
+ * snapshot. `current` is the rebindable agent holder (list() reads the live
136
+ * agent).
137
+ */
138
+ export interface DriverCatalogCtx {
139
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
140
+ emit(next: TuiState): void;
141
+ /** Read the current view-model value (fresh, not a snapshot). */
142
+ state(): TuiState;
143
+ /** The rebindable agent holder (switchSession replaces it in place). */
144
+ current: {
145
+ agent: Agent;
146
+ };
147
+ /** Host context for the commands/skills service lookups + event subscriptions. */
148
+ ctx: Context;
149
+ }
150
+ /**
151
+ * The slice of createDriver's closed-over state that the approval + user
152
+ * question pipeline needs (driver-approvals.ts). The section owns the modal
153
+ * FIFO (via createModalQueue) so approvals and questions share one queue.
154
+ * `state()` returns the CURRENT view-model value — createDriver rebinds
155
+ * `state` on every emit, so the collaborator must read it through a getter
156
+ * rather than a stale snapshot.
157
+ */
158
+ export interface DriverApprovalsCtx {
159
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
160
+ emit(next: TuiState): void;
161
+ /** Read the current view-model value (fresh, not a snapshot). */
162
+ state(): TuiState;
163
+ /** Host context: settings/userQuestions lookup + approval/request hook. */
164
+ ctx: Context;
165
+ /** The rebindable agent holder (approval listener reads the live id). */
166
+ current: {
167
+ agent: Agent;
168
+ };
169
+ /** Surface a transient notice line (rule-persist outcomes and failures). */
170
+ showNotice(text: string): void;
171
+ }
172
+ /**
173
+ * The slice of createDriver's closed-over state that the model/effort/
174
+ * permission pickers need (driver-pickers.ts). `state()` returns the CURRENT
175
+ * view-model value — createDriver rebinds `state` on every emit, so the
176
+ * section must read it through a getter rather than a stale snapshot.
177
+ * `selection` is passed by reference so writes land on createDriver's live
178
+ * ref across switchSession. resolveEfforts / stalePair / loadCatalog stay in
179
+ * createDriver and arrive on the ctx (they read `llm` off the host ctx).
180
+ */
181
+ export interface DriverPickersCtx {
182
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
183
+ emit(next: TuiState): void;
184
+ /** Read the current view-model value (fresh, not a snapshot). */
185
+ state(): TuiState;
186
+ /** Model selection ref; the section reads current and rewrites it in place. */
187
+ selection: ModelSelectionRef;
188
+ /** The rebindable agent holder (openPermissionPicker reads the live agent). */
189
+ current: {
190
+ agent: Agent;
191
+ };
192
+ /** Fold the live plan/permission mode for the picker's focus row. */
193
+ liveMode(agent: Agent, fallback?: string): string;
194
+ /** Resolve a model's advertisement list (never a fabricated list). */
195
+ resolveEfforts(provider: string, model: string): Promise<readonly {
196
+ id: string;
197
+ name: string;
198
+ }[] | undefined>;
199
+ /** Stale-pair guard: refuse a detached write when the selection moved. */
200
+ stalePair(captured: {
201
+ provider: string;
202
+ model: string;
203
+ }): boolean;
204
+ /** Build the full model catalog for the `/model` picker. */
205
+ loadCatalog(): Promise<CatalogEntry[]>;
206
+ /** Run a bare /plan-/permissions channel command. Late-bound (after ini). */
207
+ runHarness(line: string): Promise<{
208
+ kind: string;
209
+ text?: string;
210
+ } | undefined | null>;
211
+ }
212
+ /**
213
+ * The slice of createDriver's closed-over state that the session switcher /
214
+ * /resume section needs (driver-sessions.ts). `state()` returns the CURRENT
215
+ * view-model value — createDriver rebinds `state` on every emit, so the
216
+ * collaborator must read it through a getter rather than a stale snapshot.
217
+ * `current` and `selection` are passed by reference (createDriver rebinds them
218
+ * in place across switchSession), and the section writes both in place.
219
+ */
220
+ export interface DriverSessionsCtx {
221
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
222
+ emit(next: TuiState): void;
223
+ /** Read the current view-model value (fresh, not a snapshot). */
224
+ state(): TuiState;
225
+ /** Host context for sessionPersistence/sessionQuery service lookup + agents.resume. */
226
+ ctx: Context;
227
+ /** Create a brand-new agent handle for a minted session id (local /clear). */
228
+ createHandle(id: SessionId, extras: {
229
+ cwd: string;
230
+ agentOptions?: {
231
+ provider: string;
232
+ model: string;
233
+ };
234
+ }): Promise<AgentHandle>;
235
+ /** Re-apply a captured permission mode on the NEW agent after bind. */
236
+ reapplyMode(mode: string): Promise<void>;
237
+ /** Working directory (fallback when the live header cwd is absent). */
238
+ cwd: string;
239
+ /** The rebindable agent holder (switchSession disposes old, binds new). */
240
+ current: {
241
+ handle: AgentHandle;
242
+ agent: Agent;
243
+ };
244
+ /** Model selection ref; switchSession reseeds it after the rebind. */
245
+ selection: ModelSelectionRef;
246
+ /** Fold the live plan/permission mode for the new session. */
247
+ liveMode(agent: Agent, fallback?: string): string;
248
+ /** Reset-and-reseed the model selection from the new agent's options. */
249
+ seedDefaultModel(reset?: boolean): Promise<void>;
250
+ /** Fold the new session's history into a fresh TuiState. */
251
+ foldHistory(): TuiState;
252
+ /** Re-seed the statusline HUD / todos / branch for the new session. */
253
+ seedHud(): void;
254
+ seedTodos(): void;
255
+ refreshBranch(): void;
256
+ /** Persist the resume marker for a session id (idempotent). */
257
+ writeResumeTarget(id: string): void;
258
+ /** Set the `markedContent` flag (createDriver owns the binding). */
259
+ setMarkedContent(value: boolean): void;
260
+ /**
261
+ * Rebind prompt/bash history onto the project of the switched session's
262
+ * cwd (reloads both from disk). No-op for same-project switches and when
263
+ * an explicit historyDir pins the bucket.
264
+ */
265
+ rebindHistory(sessionCwd: string | undefined): void;
266
+ /**
267
+ * Pin a session id in the sidecar index of the project that owns
268
+ * `sessionCwd` (falling back to the process cwd), so the /resume picker's
269
+ * project scope has an exact membership record. Best-effort.
270
+ */
271
+ recordProjectSession(sessionId: string, sessionCwd: string | undefined): void;
272
+ /** Drain the shared approval/question FIFO (returns parked entries). */
273
+ spliceAll(): ModalEntry[];
274
+ /**
275
+ * Rebuild the slash-command catalog for the (new) live agent: commands
276
+ * synchronously, skills via a fresh snapshot. Called after a successful
277
+ * session switch — `list()`/`snapshot()` are agent- and cwd-scoped and no
278
+ * change event fires on a switch.
279
+ */
280
+ refreshCatalog(): void;
281
+ /** The agent setup closure (wraps presetSetup + installModelSelection). */
282
+ withSelection: AgentSetup;
283
+ /** Explicit provider/model override, or undefined when unset. */
284
+ agentOptions: {
285
+ provider: string;
286
+ model: string;
287
+ } | undefined;
288
+ }
289
+ /**
290
+ * The slice of createDriver's closed-over state that the `/export-md`, `/copy`,
291
+ * runLocal (local slash-command) and runHarness (host command) pipeline needs
292
+ * (driver-run-local.ts). `state()` returns the CURRENT view-model value —
293
+ * createDriver rebinds `state` on every emit, so the collaborator must read it
294
+ * through a getter rather than a stale snapshot. `current`, `selection`, and
295
+ * `config` are passed by reference; `markedContent` is read through a getter
296
+ * because createDriver owns the live `let` binding.
297
+ */
298
+ export interface DriverRunLocalCtx {
299
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
300
+ emit(next: TuiState): void;
301
+ /** Read the current view-model value (fresh, not a snapshot). */
302
+ state(): TuiState;
303
+ /** Host context for the commands service lookup. */
304
+ ctx: Context;
305
+ /** Working directory (resolution base for export paths). */
306
+ cwd: string;
307
+ /** Driver configuration (exportDir, copyWrite, cwd, ...). */
308
+ config: DriverConfig;
309
+ /** The rebindable agent holder (exports/cost/usage read the live agent). */
310
+ current: {
311
+ handle: AgentHandle;
312
+ agent: Agent;
313
+ };
314
+ /** Model selection ref; /effort and /model read and rewrite it in place. */
315
+ selection: ModelSelectionRef;
316
+ /** Session projections feed for /cost and /usage (may be unmounted). */
317
+ projections: SessionProjectionsLike | undefined;
318
+ /** Apply a usage-panel patch (HUD section's live-projections update fn). */
319
+ applyUsage(patch: UsageView | undefined): void;
320
+ /** Surface a transient notice line. */
321
+ showNotice(text: string): void;
322
+ /** /resume with an explicit id; the switch engine lives in driver-sessions. */
323
+ switchSession(id: string): Promise<void>;
324
+ /** Bind a freshly created empty session (local /clear, /new, /reset). */
325
+ startFreshSession(): Promise<void>;
326
+ /** Open the /resume overlay (session switcher picker). */
327
+ openSessionSwitcher(): Promise<void>;
328
+ /** Open the model picker. */
329
+ openModelPicker(): Promise<void>;
330
+ /** Validate + apply a provider/model switch (never blocks on the switch). */
331
+ applyModelSwitch(provider: string, model: string): Promise<void>;
332
+ /** Open the effort picker. */
333
+ openEffortPicker(): Promise<void>;
334
+ /** Build the full model catalog for the /model path. */
335
+ loadCatalog(): Promise<CatalogEntry[]>;
336
+ /** Resolve a model's advertised reasoning-effort levels (or undefined). */
337
+ resolveEfforts(provider: string, model: string): Promise<readonly {
338
+ id: string;
339
+ name: string;
340
+ }[] | undefined>;
341
+ /** Persist the resume marker (idempotent) — after first real content. */
342
+ persistResumeTarget(): void;
343
+ /** Whether real content has been produced this boot (drives /quit resume). */
344
+ getMarkedContent(): boolean;
345
+ /**
346
+ * Set the `markedContent` flag (createDriver owns the binding). The
347
+ * worktree remove path sets it `false` so dispose() does not re-persist a
348
+ * resume marker pointing into the just-deleted worktree.
349
+ */
350
+ setMarkedContent(marked: boolean): void;
351
+ /** Await the boot default-model seed before /effort reads the selection. */
352
+ waitForModel(): Promise<void>;
353
+ }
354
+ /**
355
+ * The slice of createDriver's closed-over state that the queue/outbox +
356
+ * submit/interrupt pipeline needs (driver-queue.ts). `state()` returns the
357
+ * CURRENT view-model value — createDriver rebinds `state` on every emit, so the
358
+ * queue collaborator must read it through a getter rather than a stale snapshot.
359
+ */
360
+ export interface DriverQueueCtx {
361
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
362
+ emit(next: TuiState): void;
363
+ /** Read the current view-model value (fresh, not a snapshot). */
364
+ state(): TuiState;
365
+ /** The rebindable agent holder (switchSession replaces it in place). */
366
+ current: {
367
+ agent: Agent;
368
+ };
369
+ /** Host context for the optional ccPlugins service lookup. */
370
+ ctx: Context;
371
+ /** Dispatch a local slash command (run-local section). */
372
+ runLocal(name: string, rawInput: string): Promise<void>;
373
+ /** Dispatch a harness slash command (run-local section, late-bound). */
374
+ runHarness(line: string): Promise<{
375
+ kind: string;
376
+ text?: string;
377
+ } | undefined | null>;
378
+ /** Open the /permissions overlay picker (pickers section). */
379
+ openPermissionPicker(): void;
380
+ /** Surface a transient notice line (e.g. an empty slash command). */
381
+ showNotice(text: string): void;
382
+ /** Run a `!` bash-mode line (driver-bash section). */
383
+ runShellCommand(raw: string): Promise<void>;
384
+ /** Read the current composer prompt history (oldest→newest). */
385
+ getHistory(): string[];
386
+ /** Replace the composer prompt history after a submit persist. */
387
+ setHistory(next: string[]): void;
388
+ /** Directory backing prompt-history persistence (for saveHistory). */
389
+ historyDir: string | undefined;
390
+ /** Persist the resume marker (idempotent) — after first real content. */
391
+ persistResumeTarget(): void;
392
+ /** Mark/clear the session as having real content (drives /quit resume). */
393
+ setMarkedContent(value: boolean): void;
394
+ /**
395
+ * Await the boot default-model seed before dispatch/enqueue (W4): a turn
396
+ * must never run with an unresolved selection. Resolves even on seed
397
+ * failure (warned, never deadlocks submit).
398
+ */
399
+ waitForModel(): Promise<void>;
400
+ }
401
+ /**
402
+ * The slice of createDriver's closed-over state that the agent-model/history
403
+ * cluster needs: resolveEfforts, seedDefaultModel, persistResumeTarget, the
404
+ * prompt/bash histories, tool presenters, foldHistory, and loadCatalog all
405
+ * read `ctx`/`current`/`selection` off `rt` instead of createDriver's locals.
406
+ * The section returns handles createDriver threads into the other sections.
407
+ */
408
+ export interface DriverAgentCtx {
409
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
410
+ emit(next: TuiState): void;
411
+ /** Read the current view-model value (fresh, not a snapshot). */
412
+ state(): TuiState;
413
+ /** Host context for llm/shell/tools service lookup. */
414
+ ctx: Context;
415
+ /** The rebindable agent holder (re-read live at fire time). */
416
+ current: {
417
+ handle: AgentHandle;
418
+ agent: Agent;
419
+ };
420
+ /** Model selection ref; seeded by agent options / deployment default. */
421
+ selection: ModelSelectionRef;
422
+ /** Explicit provider/model override, or undefined when unset. */
423
+ agentOptions: {
424
+ provider: string;
425
+ model: string;
426
+ } | undefined;
427
+ /** Fold the live plan/permission mode for the agent. */
428
+ liveMode(agent: Agent, fallback?: string): string;
429
+ /** Directory backing prompt/bash-history persistence. */
430
+ historyDir: string | undefined;
431
+ /** Working directory the resume marker is keyed by. */
432
+ cwd: string;
433
+ }
434
+ /**
435
+ * The slice of createDriver's closed-over state the `session/event` listener
436
+ * needs. It only reads the live view-model and current agent; the queue flush
437
+ * is late-bound through a holder so the listener can be attached before the
438
+ * queue section is constructed.
439
+ */
440
+ export interface DriverSessionEventsCtx {
441
+ /** Publish the next view-model value (rebinds createDriver's `state`). */
442
+ emit(next: TuiState): void;
443
+ /** Read the current view-model value (fresh, not a snapshot). */
444
+ state(): TuiState;
445
+ /** Host context the `session/event` listener subscribes through. */
446
+ ctx: Context;
447
+ /** The rebindable agent holder (re-read live at fire time). */
448
+ current: {
449
+ handle: AgentHandle;
450
+ agent: Agent;
451
+ };
452
+ /** Fold the live plan/permission mode. */
453
+ liveMode(agent: Agent, fallback?: string): string;
454
+ /** Tool presenters for folding replayed session events. */
455
+ presenters: ToolPresenters | undefined;
456
+ /** Late-bound queue flush (wired after createQueueSection). */
457
+ flushQueue(): void;
458
+ /** Transient user-visible notice (the classifier-breaker fallback hint). */
459
+ showNotice(text: string): void;
460
+ }
461
+ export type { SessionEventLike, ToolPresenters };
462
+ //# sourceMappingURL=driver-ctx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-ctx.d.ts","sourceRoot":"","sources":["../../src/harness/driver-ctx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Driver cluster context: structural interface(s) that free-function
3
+ * collaborators (harness/driver-*.ts) use instead of importing the createDriver
4
+ * factory (which would be a cycle). This file is a type-only leaf — every new
5
+ * cluster that migrates out of driver.ts grows a `*.Ctx` here.
6
+ *
7
+ * All TS-only; erased at runtime.
8
+ * @module @dsh-cc/tui/harness/driver-ctx
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=driver-ctx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-ctx.js","sourceRoot":"","sources":["../../src/harness/driver-ctx.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Statusline HUD + sessionProjections feed for the TUI driver.
3
+ *
4
+ * Migrated out of createDriver (harness/driver.ts) as a free-function
5
+ * collaborator so the factory stays under the line budget. Receives a
6
+ * structural {@link DriverHudCtx} instead of importing the factory (no cycle).
7
+ *
8
+ * Owned state: the git-branch probe result, the sessionProjections handle, and
9
+ * the derived HUD patch path. Exposes back to createDriver the pieces the
10
+ * factory (runLocal usage panel) and switchSession still need: applyUsage,
11
+ * projections, statusLineOf, seedHud, seedTodos, refreshBranch.
12
+ * @module @dsh-cc/tui/harness/driver-hud
13
+ */
14
+ import { type UsageView } from '../store.ts';
15
+ import { type SessionProjectionsLike } from '../state/driver-types.ts';
16
+ import type { DriverHudCtx } from './driver-ctx.ts';
17
+ /**
18
+ * Build the statusline HUD section. Runs the boot sequence on construction —
19
+ * in original order: branch probe, seed HUD/todos from live projections, anchor
20
+ * the working line if busy, then subscribe to the change feed — so createDriver
21
+ * needs no extra call.
22
+ */
23
+ export declare function createHudSection(rt: DriverHudCtx): {
24
+ refreshBranch: () => void;
25
+ seedHud: () => void;
26
+ seedTodos: () => void;
27
+ applyUsage: (patch: UsageView | undefined) => void;
28
+ projections: SessionProjectionsLike | undefined;
29
+ statusLineOf: (width?: number) => string;
30
+ };
31
+ //# sourceMappingURL=driver-hud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-hud.d.ts","sourceRoot":"","sources":["../../src/harness/driver-hud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AAYpB,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY;yBAUrB,IAAI;mBAyCV,IAAI;qBAwBF,IAAI;wBA/BC,SAAS,GAAG,SAAS,KAAG,IAAI;;2BA0FzB,MAAM,KAAG,MAAM;EAgC9C"}