@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 @@
1
+ {"version":3,"file":"driver-queue.js","sourceRoot":"","sources":["../../src/harness/driver-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * /export-md, /copy, local slash-command (runLocal) and host-command
3
+ * (runHarness) pipeline of the in-process protocol driver.
4
+ *
5
+ * Moved out of harness/driver.ts's createDriver factory so the factory stays
6
+ * under the line budget. All shared state arrives on `rt` (DriverRunLocalCtx)
7
+ * and is read through getters / by-reference holders — never a stale snapshot —
8
+ * because createDriver rebinds `state` on every emit.
9
+ *
10
+ * @module @dsh-cc/tui/harness/driver-run-local
11
+ */
12
+ import { type ProviderRuntime } from '../provider-command.ts';
13
+ import type { DriverRunLocalCtx } from './driver-ctx.ts';
14
+ export interface RunLocalSection {
15
+ exportTranscript(rawInput: string): void;
16
+ copyLatestReply(): void;
17
+ runLocal(name: string, rawInput: string): Promise<void>;
18
+ runHarness(line: string): Promise<{
19
+ kind: string;
20
+ text?: string;
21
+ } | undefined | null>;
22
+ /** `/provider` runtime (read path + action wizards); mounted onto the driver. */
23
+ providerRuntime: ProviderRuntime;
24
+ /** Move the `/quit` worktree-exit confirmation focus by one row. */
25
+ worktreeExitMove(delta: -1 | 1): void;
26
+ /** Confirm the focused worktree-exit option (keep / remove / cancel). */
27
+ worktreeExitSubmit(): Promise<void>;
28
+ /** Dismiss the `/quit` worktree-exit overlay without quitting. */
29
+ worktreeExitCancel(): void;
30
+ }
31
+ export declare function createRunLocalSection(rt: DriverRunLocalCtx): RunLocalSection;
32
+ //# sourceMappingURL=driver-run-local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-run-local.d.ts","sourceRoot":"","sources":["../../src/harness/driver-run-local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAWpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAgCxD,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,eAAe,IAAI,IAAI,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI,CAAC,CAAA;IACrF,iFAAiF;IACjF,eAAe,EAAE,eAAe,CAAA;IAChC,oEAAoE;IACpE,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IACrC,yEAAyE;IACzE,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,kEAAkE;IAClE,kBAAkB,IAAI,IAAI,CAAA;CAC3B;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,iBAAiB,GAAG,eAAe,CAmV5E"}
@@ -0,0 +1,366 @@
1
+ /**
2
+ * /export-md, /copy, local slash-command (runLocal) and host-command
3
+ * (runHarness) pipeline of the in-process protocol driver.
4
+ *
5
+ * Moved out of harness/driver.ts's createDriver factory so the factory stays
6
+ * under the line budget. All shared state arrives on `rt` (DriverRunLocalCtx)
7
+ * and is read through getters / by-reference holders — never a stale snapshot —
8
+ * because createDriver rebinds `state` on every emit.
9
+ *
10
+ * @module @dsh-cc/tui/harness/driver-run-local
11
+ */
12
+ import { mkdirSync, writeFileSync } from 'node:fs';
13
+ import { dirname, join, resolve } from 'node:path';
14
+ import { ReasoningEffortId } from '@deepseek-ai/dsh-llm';
15
+ import { rowsToMarkdown } from "../export-markdown.js";
16
+ import { defaultExportDir, exportStamp } from "./shell-output.js";
17
+ import { breakdownOf, formatCostReport, occupancyOf, totalsOf, usageViewOf, } from "./usage-view.js";
18
+ import { parseModelChoice } from "../model-catalog.js";
19
+ import { parseEffortChoice } from "../effort-catalog.js";
20
+ import { shouldEchoCommandResult } from "../compact-fold.js";
21
+ import { createAgentsSection } from "./driver-agents.js";
22
+ import { createProviderSection } from "../provider-command.js";
23
+ import { enqueue, moveWorktreeExitFocus, openUsagePanel, setBusy, setTurnActive, setWorktreeExit, upsertRow } from "../store.js";
24
+ import { createWorktreeExitHooks, ownsBranch, } from "./worktree-exit.js";
25
+ /**
26
+ * OSC 52 clipboard-write prefix: `ESC ] 52 ; c ;` + base64 payload, closed
27
+ * with BEL. The sequence is zero-width — writing it inline never disturbs the
28
+ * rendered frame. Only /copy uses it.
29
+ */
30
+ const OSC52_PREFIX = '\x1b]52;c;';
31
+ export function createRunLocalSection(rt) {
32
+ const { emit, showNotice } = rt;
33
+ const { agentsSlash } = createAgentsSection(rt);
34
+ // `/provider` section (read path + action wizards). Created here so runLocal
35
+ // can dispatch without a cycle; createDriver re-exports it on the driver.
36
+ const providerRuntime = createProviderSection({ emit: rt.emit, state: rt.state, ctx: rt.ctx, selection: rt.selection });
37
+ const worktreeExit = rt.config.worktreeExit ?? createWorktreeExitHooks();
38
+ // The section owns the quit finalizer: after a `/quit` decision settles it
39
+ // persists the resume target (unless the worktree is being removed), tears
40
+ // down the session handle, then hands control to `config.onQuit` (the
41
+ // plugin's shutdown) when wired. `persist` is false on the remove path —
42
+ // resuming into a deleted worktree is meaningless.
43
+ const finalizeQuit = async (persist) => {
44
+ if (persist && rt.getMarkedContent()) {
45
+ rt.persistResumeTarget();
46
+ }
47
+ await rt.current.handle.dispose();
48
+ rt.config.onQuit?.();
49
+ };
50
+ // --- /export-md: local transcript utilities --------------------------------
51
+ // /export-md serializes the live rows via rowsToMarkdown — an explicit path
52
+ // is resolved against the session cwd; no argument lands under the export
53
+ // dir as <sessionId>-<timestamp>.md. Failures degrade to a notice, never a
54
+ // throw into the composer path.
55
+ const exportTranscript = (rawInput) => {
56
+ const target = rawInput.length > 0
57
+ ? resolve(rt.cwd, rawInput)
58
+ : join(rt.config.exportDir ?? defaultExportDir(), `${String(rt.current.agent.session.id)}-${exportStamp()}.md`);
59
+ try {
60
+ mkdirSync(dirname(target), { recursive: true });
61
+ writeFileSync(target, rowsToMarkdown(rt.state().rows));
62
+ showNotice(`Exported to ${target}`);
63
+ }
64
+ catch (error) {
65
+ const message = error instanceof Error ? error.message : String(error);
66
+ showNotice(`Export failed: ${message}`);
67
+ }
68
+ };
69
+ // /copy re-emits the latest assistant reply through an OSC 52 sequence so
70
+ // the terminal itself owns the clipboard (no child process, no permissions).
71
+ // The write sink is injected; without a sink the command still reports — it
72
+ // just has nowhere to hand the payload.
73
+ const copyLatestReply = () => {
74
+ const last = [...rt.state().rows].reverse().find(row => row.kind === 'assistant');
75
+ if (last === undefined || last.kind !== 'assistant' || last.text.trim().length === 0) {
76
+ showNotice('Nothing to copy yet — no assistant reply in the transcript.');
77
+ return;
78
+ }
79
+ const payload = Buffer.from(last.text, 'utf8').toString('base64');
80
+ rt.config.copyWrite?.(`${OSC52_PREFIX}${payload}\x07`);
81
+ showNotice('Copied latest reply');
82
+ };
83
+ const runLocal = async (name, rawInput) => {
84
+ if (name === 'quit' || name === 'exit') {
85
+ // When the session cwd is a recognized worktree, `/quit` parks a
86
+ // confirmation overlay instead of exiting: the user decides whether to
87
+ // keep the worktree or remove it (with its owned branch) on exit.
88
+ let session;
89
+ try {
90
+ session = await worktreeExit.probe(rt.cwd);
91
+ }
92
+ catch {
93
+ session = undefined;
94
+ }
95
+ if (session !== undefined) {
96
+ const evidence = await worktreeExit.evidence(session);
97
+ emit(setWorktreeExit(rt.state(), {
98
+ repoRoot: session.repoRoot,
99
+ worktreePath: session.worktreePath,
100
+ branch: session.branch,
101
+ managed: session.kind === 'managed',
102
+ ownsBranch: ownsBranch(session),
103
+ ...(session.baseHead === undefined ? {} : { baseHead: session.baseHead }),
104
+ ...(evidence.dirtyFiles === undefined ? {} : { dirtyFiles: evidence.dirtyFiles }),
105
+ ...(evidence.commitsAhead === undefined ? {} : { commitsAhead: evidence.commitsAhead }),
106
+ focused: 0,
107
+ busy: false,
108
+ }));
109
+ return;
110
+ }
111
+ await finalizeQuit(true);
112
+ return;
113
+ }
114
+ if (name === 'clear' || name === 'new' || name === 'reset') {
115
+ await rt.startFreshSession();
116
+ return;
117
+ }
118
+ if (name === 'tui-help') {
119
+ emit(upsertRow(rt.state(), {
120
+ kind: 'status',
121
+ text: 'Shift+Tab cycles permission modes. /permissions opens the mode picker. /model lists adapters. /agents lists background agents. /resume lists sessions. /clear starts a new conversation. /quit exits.',
122
+ }));
123
+ return;
124
+ }
125
+ if (name === 'resume') {
126
+ if (rawInput.length > 0) {
127
+ await rt.switchSession(rawInput);
128
+ return;
129
+ }
130
+ await rt.openSessionSwitcher();
131
+ return;
132
+ }
133
+ if (name === 'model') {
134
+ if (rawInput.length === 0) {
135
+ await rt.openModelPicker();
136
+ return;
137
+ }
138
+ const catalog = await rt.loadCatalog();
139
+ const chosen = parseModelChoice(rawInput, catalog);
140
+ if (chosen === undefined) {
141
+ showNotice(`Unknown model "${rawInput}". Try /model for the catalog.`);
142
+ return;
143
+ }
144
+ // Validates + preserves a carried effort when possible (never blocks the
145
+ // switch itself — see applyModelSwitch).
146
+ await rt.applyModelSwitch(chosen.provider, chosen.model);
147
+ }
148
+ if (name === 'effort') {
149
+ // W4 await-late seam: identical to the submit path — the seed must be
150
+ // settled before this branch reads `selection.current`, or a boot-window
151
+ // /effort would resolve against an undefined route.
152
+ await rt.waitForModel();
153
+ if (rawInput.length === 0) {
154
+ await rt.openEffortPicker();
155
+ return;
156
+ }
157
+ const route = rt.selection.current;
158
+ if (route === undefined) {
159
+ emit(upsertRow(rt.state(), { kind: 'status', text: 'No model configured. Use /model first.' }));
160
+ return;
161
+ }
162
+ // `default` is a reserved keyword (it wins even over a model effort
163
+ // literally named "default"): reset to the bare pair with ZERO
164
+ // validation and zero adapter calls — the provider default is always
165
+ // legal, even when the llm service is unreachable.
166
+ if (parseEffortChoice(rawInput, [])?.kind === 'default') {
167
+ rt.selection.current = { provider: route.provider, model: route.model };
168
+ emit(upsertRow(rt.state(), { kind: 'status', text: 'Reasoning effort reset to the provider default.' }));
169
+ return;
170
+ }
171
+ // Fail closed: resolve before validating — selection must never hold an
172
+ // effort the llm layer would reject.
173
+ const efforts = await rt.resolveEfforts(route.provider, route.model);
174
+ if (efforts === undefined || efforts.length === 0) {
175
+ emit(upsertRow(rt.state(), { kind: 'status', text: `Cannot resolve effort levels for ${route.model}.` }));
176
+ return;
177
+ }
178
+ const choice = parseEffortChoice(rawInput, efforts.map(level => level.id));
179
+ // `choice.kind === 'default'` cannot occur here: the reserved keyword
180
+ // already returned above, so anything non-level is unknown.
181
+ if (choice?.kind !== 'level') {
182
+ emit(upsertRow(rt.state(), {
183
+ kind: 'status',
184
+ text: `Unknown effort "${rawInput.trim()}" for ${route.model}. Try /effort.`,
185
+ }));
186
+ return;
187
+ }
188
+ const level = efforts.find(candidate => candidate.id === choice.level);
189
+ // Single branding seam: view layers stay plain strings.
190
+ rt.selection.current = {
191
+ provider: route.provider,
192
+ model: route.model,
193
+ reasoningEffort: ReasoningEffortId(level.id),
194
+ };
195
+ // User-facing text carries the effort NAME, not the raw id.
196
+ emit(upsertRow(rt.state(), { kind: 'status', text: `Reasoning effort is now ${level.name}.` }));
197
+ }
198
+ if (name === 'cost') {
199
+ const totals = rt.projections === undefined
200
+ ? undefined
201
+ : totalsOf(rt.projections.stateOf(rt.current.agent.session, 'tokenUsage'));
202
+ emit(upsertRow(rt.state(), { kind: 'status', text: formatCostReport(totals) }));
203
+ return;
204
+ }
205
+ if (name === 'usage') {
206
+ // Seed from the live projections before opening: a resumed session (or
207
+ // one with no projection change since boot) already holds data the
208
+ // change feed has never delivered. From here on the onChanged feed
209
+ // keeps the snapshot fresh, so an open panel refreshes live.
210
+ if (rt.projections !== undefined) {
211
+ rt.applyUsage(usageViewOf(totalsOf(rt.projections.stateOf(rt.current.agent.session, 'tokenUsage')), occupancyOf(rt.projections.stateOf(rt.current.agent.session, 'contextPressure')), breakdownOf(rt.projections.stateOf(rt.current.agent.session, 'contextBreakdown'))));
212
+ }
213
+ emit(openUsagePanel(rt.state()));
214
+ return;
215
+ }
216
+ if (name === 'agents') {
217
+ emit(upsertRow(rt.state(), { kind: 'status', text: await agentsSlash(rawInput) }));
218
+ return;
219
+ }
220
+ if (name === 'export-md') {
221
+ exportTranscript(rawInput);
222
+ return;
223
+ }
224
+ if (name === 'provider') {
225
+ await providerRuntime.openProviderPanel(rawInput);
226
+ return;
227
+ }
228
+ if (name === 'copy') {
229
+ copyLatestReply();
230
+ return;
231
+ }
232
+ // Plugin commands (colon form `plugin:command`) dispatch through the
233
+ // optional ccPlugins service. The agent is read from the LIVE holder at
234
+ // fire time — never a cached boot reference — so a post-switch session
235
+ // receives the command, not the one booted with the driver.
236
+ const plugins = rt.ctx.get('ccPlugins');
237
+ if (plugins === undefined || typeof plugins.runPluginCommand !== 'function')
238
+ return;
239
+ const s = rt.state();
240
+ if (s.busy) {
241
+ // Mirror Enter-on-prompt while busy: park the full line in the outbox
242
+ // instead of dispatching. Nothing is injected into the running turn.
243
+ emit(enqueue(s, `/${name}${rawInput.length === 0 ? '' : ` ${rawInput}`}`));
244
+ return;
245
+ }
246
+ let result;
247
+ try {
248
+ result = await plugins.runPluginCommand(name, { agent: rt.current.agent, rawInput });
249
+ }
250
+ catch (error) {
251
+ // A throwing plugin must not reject into `void driver.submit()` — show
252
+ // a notice and stop, mirroring the {ok:false} path below.
253
+ const reason = error instanceof Error ? error.message : String(error);
254
+ showNotice(`Plugin command /${name} failed: ${reason}`);
255
+ return;
256
+ }
257
+ if (result !== null && typeof result === 'object' && result.ok === false) {
258
+ const reason = result.reason ?? 'unknown error';
259
+ showNotice(`Plugin command /${name} failed: ${reason}`);
260
+ return;
261
+ }
262
+ // Turn tail mirroring the prompt path (driver-queue.submit): anchor the
263
+ // working line at dispatch, token delta from the pre-dispatch HUD total.
264
+ emit(setTurnActive(setBusy(rt.state(), true), { startedAt: Date.now(), outputBase: s.hud?.tokens?.output }));
265
+ };
266
+ /**
267
+ * Execute a slash command line through the host registry and echo its
268
+ * result text as a status row. Tri-state return:
269
+ * - `null` — no command registry is mounted (already noticed here).
270
+ * - `undefined` — the registry matched nothing. The submit path falls
271
+ * through to a user prompt so a typed `/skill-name` can load through
272
+ * dsh-tool-skill's gesture boundary; do not notice here.
273
+ * - otherwise the command result.
274
+ */
275
+ const runHarness = async (line) => {
276
+ const commands = rt.ctx.get('commands');
277
+ if (commands === undefined) {
278
+ showNotice('No command registry is mounted.');
279
+ return null;
280
+ }
281
+ const execution = await commands.execute(rt.current.agent, line, [], new AbortController().signal);
282
+ if (execution === undefined)
283
+ return undefined;
284
+ const result = execution.result;
285
+ // A successful `/compact` already painted its compact boundary row —
286
+ // echoing `Compacted N history items…` on top would duplicate it.
287
+ if (result !== undefined && result.text !== undefined && result.text.length > 0
288
+ && shouldEchoCommandResult(result, rt.state().rows)) {
289
+ emit(upsertRow(rt.state(), {
290
+ kind: 'status',
291
+ text: result.text,
292
+ ...(result.kind === 'error' ? { error: true } : {}),
293
+ }));
294
+ }
295
+ return result;
296
+ };
297
+ // --- /quit worktree-exit confirmation overlay ------------------------------
298
+ // Parked by the quit branch above when the session cwd is a recognized
299
+ // worktree; these three methods drive the overlay. State is re-read fresh
300
+ // via rt.state() (createDriver rebinds it on every emit).
301
+ const worktreeExitMove = (delta) => {
302
+ const view = rt.state().worktreeExit;
303
+ if (view === undefined || view.busy)
304
+ return;
305
+ emit(moveWorktreeExitFocus(rt.state(), delta));
306
+ };
307
+ const worktreeExitCancel = () => {
308
+ const view = rt.state().worktreeExit;
309
+ if (view === undefined || view.busy)
310
+ return;
311
+ emit(setWorktreeExit(rt.state(), undefined));
312
+ };
313
+ const worktreeExitSubmit = async () => {
314
+ const view = rt.state().worktreeExit;
315
+ if (view === undefined || view.busy)
316
+ return;
317
+ // Cancel row: just dismiss, session stays.
318
+ if (view.focused === 2) {
319
+ emit(setWorktreeExit(rt.state(), undefined));
320
+ return;
321
+ }
322
+ // Keep row: standard quit with resume persistence.
323
+ if (view.focused === 0) {
324
+ emit(setWorktreeExit(rt.state(), undefined));
325
+ await finalizeQuit(true);
326
+ return;
327
+ }
328
+ // Remove row: destructive — gather the session back, run the cleanup,
329
+ // and only tear down on success. A failed removal leaves the session
330
+ // and the worktree fully intact (never a half-disposed TUI).
331
+ emit(setWorktreeExit(rt.state(), { ...view, busy: true }));
332
+ const session = {
333
+ kind: view.managed ? 'managed' : 'detected',
334
+ repoRoot: view.repoRoot,
335
+ worktreePath: view.worktreePath,
336
+ branch: view.branch,
337
+ ...(view.baseHead === undefined ? {} : { baseHead: view.baseHead }),
338
+ };
339
+ try {
340
+ await worktreeExit.cleanup(session);
341
+ }
342
+ catch (error) {
343
+ const message = error instanceof Error ? error.message : String(error);
344
+ emit(setWorktreeExit(rt.state(), undefined));
345
+ showNotice(`Worktree cleanup failed: ${message}. Session kept alive; worktree left in place.`);
346
+ return;
347
+ }
348
+ emit(setWorktreeExit(rt.state(), undefined));
349
+ // The worktree is gone; clear the marked-content flag so dispose() (which
350
+ // the plugin's shutdown invokes) does not re-persist a resume marker that
351
+ // points into the deleted worktree.
352
+ rt.setMarkedContent(false);
353
+ await finalizeQuit(false);
354
+ };
355
+ return {
356
+ exportTranscript,
357
+ copyLatestReply,
358
+ runLocal,
359
+ runHarness,
360
+ providerRuntime,
361
+ worktreeExitMove,
362
+ worktreeExitSubmit,
363
+ worktreeExitCancel,
364
+ };
365
+ }
366
+ //# sourceMappingURL=driver-run-local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-run-local.js","sourceRoot":"","sources":["../../src/harness/driver-run-local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Session switcher / /resume section of the in-process protocol driver.
3
+ *
4
+ * Moved out of harness/driver.ts's createDriver factory so the factory stays
5
+ * under the line budget. All shared state arrives on `rt` (DriverSessionsCtx)
6
+ * and is read through getters / by-reference holders — never a stale snapshot —
7
+ * because createDriver rebinds `state` on every emit.
8
+ *
9
+ * @module @dsh-cc/tui/harness/driver-sessions
10
+ */
11
+ import { type SessionListEntry } from './session-list.ts';
12
+ import type { DriverSessionsCtx } from './driver-ctx.ts';
13
+ export interface SessionsSection {
14
+ listSessions(): Promise<readonly SessionListEntry[]>;
15
+ openSessionSwitcher(): Promise<void>;
16
+ closeSessionSwitcher(): void;
17
+ switchSession(id: string): Promise<void>;
18
+ /** Bind a freshly created session in place of the live one (local /clear). */
19
+ startFreshSession(): Promise<void>;
20
+ sessionSwitcherMove(delta: -1 | 1): void;
21
+ sessionSwitcherType(text: string): void;
22
+ sessionSwitcherBackspace(): void;
23
+ sessionSwitcherToggleScope(): void;
24
+ sessionSwitcherSubmit(): Promise<void>;
25
+ sessionSwitcherCancel(): void;
26
+ }
27
+ export declare function createSessionsSection(rt: DriverSessionsCtx): SessionsSection;
28
+ //# sourceMappingURL=driver-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-sessions.d.ts","sourceRoot":"","sources":["../../src/harness/driver-sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,EAAkC,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAsBzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOxD,MAAM,WAAW,eAAe;IAC9B,YAAY,IAAI,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAA;IACpD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,oBAAoB,IAAI,IAAI,CAAA;IAC5B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,8EAA8E;IAC9E,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IACxC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,wBAAwB,IAAI,IAAI,CAAA;IAChC,0BAA0B,IAAI,IAAI,CAAA;IAClC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,qBAAqB,IAAI,IAAI,CAAA;CAC9B;AAWD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,iBAAiB,GAAG,eAAe,CAoW5E"}