@greppleai/grip 0.1.5 → 0.1.7

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 (587) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +1 -1
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/embedded-assets.d.ts.map +1 -1
  6. package/dist/bun/embedded-assets.js.map +1 -1
  7. package/dist/bun/register-bedrock.d.ts.map +1 -1
  8. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  9. package/dist/bun/restore-sandbox-env.js.map +1 -1
  10. package/dist/cli/args.d.ts.map +1 -1
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/config-selector.d.ts.map +1 -1
  13. package/dist/cli/config-selector.js.map +1 -1
  14. package/dist/cli/file-processor.d.ts.map +1 -1
  15. package/dist/cli/file-processor.js.map +1 -1
  16. package/dist/cli/initial-message.d.ts +1 -1
  17. package/dist/cli/initial-message.d.ts.map +1 -1
  18. package/dist/cli/initial-message.js.map +1 -1
  19. package/dist/cli/list-models.d.ts.map +1 -1
  20. package/dist/cli/list-models.js.map +1 -1
  21. package/dist/cli/session-picker.d.ts.map +1 -1
  22. package/dist/cli/session-picker.js.map +1 -1
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/config.js +2 -0
  27. package/dist/config.js.map +1 -1
  28. package/dist/core/agent-session.d.ts +38 -1
  29. package/dist/core/agent-session.d.ts.map +1 -1
  30. package/dist/core/agent-session.js +289 -154
  31. package/dist/core/agent-session.js.map +1 -1
  32. package/dist/core/auth-guidance.d.ts.map +1 -1
  33. package/dist/core/auth-guidance.js.map +1 -1
  34. package/dist/core/auth-storage.d.ts +4 -0
  35. package/dist/core/auth-storage.d.ts.map +1 -1
  36. package/dist/core/auth-storage.js +3 -10
  37. package/dist/core/auth-storage.js.map +1 -1
  38. package/dist/core/bash-executor.d.ts.map +1 -1
  39. package/dist/core/bash-executor.js +19 -23
  40. package/dist/core/bash-executor.js.map +1 -1
  41. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  42. package/dist/core/compaction/branch-summarization.js.map +1 -1
  43. package/dist/core/compaction/compaction.d.ts.map +1 -1
  44. package/dist/core/compaction/compaction.js +9 -2
  45. package/dist/core/compaction/compaction.js.map +1 -1
  46. package/dist/core/compaction/compression-detection-ledger.d.ts.map +1 -1
  47. package/dist/core/compaction/compression-detection-ledger.js.map +1 -1
  48. package/dist/core/compaction/compression-detector.d.ts +1 -0
  49. package/dist/core/compaction/compression-detector.d.ts.map +1 -1
  50. package/dist/core/compaction/compression-detector.js +10 -21
  51. package/dist/core/compaction/compression-detector.js.map +1 -1
  52. package/dist/core/compaction/compression-economics.d.ts.map +1 -1
  53. package/dist/core/compaction/compression-economics.js.map +1 -1
  54. package/dist/core/compaction/utils.d.ts.map +1 -1
  55. package/dist/core/compaction/utils.js.map +1 -1
  56. package/dist/core/defaults.d.ts.map +1 -1
  57. package/dist/core/diagnostics.d.ts.map +1 -1
  58. package/dist/core/event-bus.d.ts.map +1 -1
  59. package/dist/core/event-bus.js.map +1 -1
  60. package/dist/core/exec.d.ts.map +1 -1
  61. package/dist/core/exec.js.map +1 -1
  62. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  63. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  64. package/dist/core/export-html/index.d.ts.map +1 -1
  65. package/dist/core/export-html/index.js.map +1 -1
  66. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  67. package/dist/core/export-html/tool-renderer.js.map +1 -1
  68. package/dist/core/extensions/loader.d.ts.map +1 -1
  69. package/dist/core/extensions/loader.js.map +1 -1
  70. package/dist/core/extensions/runner.d.ts +3 -0
  71. package/dist/core/extensions/runner.d.ts.map +1 -1
  72. package/dist/core/extensions/runner.js +40 -30
  73. package/dist/core/extensions/runner.js.map +1 -1
  74. package/dist/core/extensions/types.d.ts +21 -1
  75. package/dist/core/extensions/types.d.ts.map +1 -1
  76. package/dist/core/extensions/types.js.map +1 -1
  77. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  78. package/dist/core/extensions/wrapper.js.map +1 -1
  79. package/dist/core/footer-data-provider.d.ts.map +1 -1
  80. package/dist/core/footer-data-provider.js +15 -16
  81. package/dist/core/footer-data-provider.js.map +1 -1
  82. package/dist/core/grip-agent.d.ts.map +1 -1
  83. package/dist/core/grip-agent.js +7 -21
  84. package/dist/core/grip-agent.js.map +1 -1
  85. package/dist/core/grip-manifest.d.ts.map +1 -1
  86. package/dist/core/grip-manifest.js.map +1 -1
  87. package/dist/core/hooks/aggregate.d.ts.map +1 -1
  88. package/dist/core/hooks/aggregate.js.map +1 -1
  89. package/dist/core/hooks/config.d.ts.map +1 -1
  90. package/dist/core/hooks/config.js.map +1 -1
  91. package/dist/core/hooks/executor.d.ts.map +1 -1
  92. package/dist/core/hooks/executor.js.map +1 -1
  93. package/dist/core/hooks/index.d.ts.map +1 -1
  94. package/dist/core/hooks/index.js.map +1 -1
  95. package/dist/core/hooks/matcher.d.ts.map +1 -1
  96. package/dist/core/hooks/matcher.js.map +1 -1
  97. package/dist/core/hooks/trust-store.d.ts.map +1 -1
  98. package/dist/core/hooks/trust-store.js +0 -3
  99. package/dist/core/hooks/trust-store.js.map +1 -1
  100. package/dist/core/hooks/types.d.ts.map +1 -1
  101. package/dist/core/hooks/types.js.map +1 -1
  102. package/dist/core/http-dispatcher.d.ts.map +1 -1
  103. package/dist/core/http-dispatcher.js.map +1 -1
  104. package/dist/core/instruction-resource-loader.d.ts +1 -0
  105. package/dist/core/instruction-resource-loader.d.ts.map +1 -1
  106. package/dist/core/instruction-resource-loader.js +2 -4
  107. package/dist/core/instruction-resource-loader.js.map +1 -1
  108. package/dist/core/keybindings.d.ts.map +1 -1
  109. package/dist/core/keybindings.js +0 -1
  110. package/dist/core/keybindings.js.map +1 -1
  111. package/dist/core/lsp/abort.d.ts.map +1 -1
  112. package/dist/core/lsp/abort.js.map +1 -1
  113. package/dist/core/lsp/client.d.ts.map +1 -1
  114. package/dist/core/lsp/client.js +8 -22
  115. package/dist/core/lsp/client.js.map +1 -1
  116. package/dist/core/lsp/config-loader.d.ts.map +1 -1
  117. package/dist/core/lsp/config-loader.js.map +1 -1
  118. package/dist/core/lsp/config.d.ts.map +1 -1
  119. package/dist/core/lsp/config.js.map +1 -1
  120. package/dist/core/lsp/diagnostics.d.ts.map +1 -1
  121. package/dist/core/lsp/diagnostics.js.map +1 -1
  122. package/dist/core/lsp/file-sync.d.ts.map +1 -1
  123. package/dist/core/lsp/file-sync.js +7 -9
  124. package/dist/core/lsp/file-sync.js.map +1 -1
  125. package/dist/core/lsp/integration.d.ts.map +1 -1
  126. package/dist/core/lsp/integration.js.map +1 -1
  127. package/dist/core/lsp/language-map.d.ts.map +1 -1
  128. package/dist/core/lsp/language-map.js +2 -7
  129. package/dist/core/lsp/language-map.js.map +1 -1
  130. package/dist/core/lsp/manager.d.ts.map +1 -1
  131. package/dist/core/lsp/manager.js +18 -29
  132. package/dist/core/lsp/manager.js.map +1 -1
  133. package/dist/core/lsp/navigation.d.ts.map +1 -1
  134. package/dist/core/lsp/navigation.js.map +1 -1
  135. package/dist/core/lsp/portable-path.d.ts.map +1 -1
  136. package/dist/core/lsp/portable-path.js.map +1 -1
  137. package/dist/core/lsp/refactor.d.ts.map +1 -1
  138. package/dist/core/lsp/refactor.js.map +1 -1
  139. package/dist/core/lsp/transport.d.ts.map +1 -1
  140. package/dist/core/lsp/transport.js.map +1 -1
  141. package/dist/core/messages.d.ts.map +1 -1
  142. package/dist/core/messages.js +30 -1
  143. package/dist/core/messages.js.map +1 -1
  144. package/dist/core/model-registry.d.ts.map +1 -1
  145. package/dist/core/model-registry.js +5 -7
  146. package/dist/core/model-registry.js.map +1 -1
  147. package/dist/core/model-resolver.d.ts.map +1 -1
  148. package/dist/core/model-resolver.js.map +1 -1
  149. package/dist/core/output-guard.d.ts.map +1 -1
  150. package/dist/core/output-guard.js.map +1 -1
  151. package/dist/core/package-manager.d.ts.map +1 -1
  152. package/dist/core/package-manager.js +0 -6
  153. package/dist/core/package-manager.js.map +1 -1
  154. package/dist/core/prompt-templates.d.ts.map +1 -1
  155. package/dist/core/prompt-templates.js.map +1 -1
  156. package/dist/core/provider-display-names.d.ts.map +1 -1
  157. package/dist/core/remote-workspace-protocol/contract.d.ts.map +1 -1
  158. package/dist/core/remote-workspace-protocol/contract.js +4 -2
  159. package/dist/core/remote-workspace-protocol/contract.js.map +1 -1
  160. package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts.map +1 -1
  161. package/dist/core/remote-workspace-protocol/guest-shared-client.js +1 -5
  162. package/dist/core/remote-workspace-protocol/guest-shared-client.js.map +1 -1
  163. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts.map +1 -1
  164. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js +5 -10
  165. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js.map +1 -1
  166. package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts.map +1 -1
  167. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js +2 -9
  168. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js.map +1 -1
  169. package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts.map +1 -1
  170. package/dist/core/remote-workspace-protocol/lima-owner-directory.js.map +1 -1
  171. package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts.map +1 -1
  172. package/dist/core/remote-workspace-protocol/lima-owner-lock.js.map +1 -1
  173. package/dist/core/remote-workspace-protocol/session.d.ts.map +1 -1
  174. package/dist/core/remote-workspace-protocol/session.js +27 -65
  175. package/dist/core/remote-workspace-protocol/session.js.map +1 -1
  176. package/dist/core/remote-workspace-protocol/shared-transport.d.ts.map +1 -1
  177. package/dist/core/remote-workspace-protocol/shared-transport.js.map +1 -1
  178. package/dist/core/resolve-config-value.d.ts.map +1 -1
  179. package/dist/core/resolve-config-value.js.map +1 -1
  180. package/dist/core/resource-loader.d.ts.map +1 -1
  181. package/dist/core/resource-loader.js +0 -48
  182. package/dist/core/resource-loader.js.map +1 -1
  183. package/dist/core/rules.d.ts.map +1 -1
  184. package/dist/core/rules.js.map +1 -1
  185. package/dist/core/sandbox/command.d.ts.map +1 -1
  186. package/dist/core/sandbox/command.js.map +1 -1
  187. package/dist/core/sandbox/config.d.ts.map +1 -1
  188. package/dist/core/sandbox/config.js.map +1 -1
  189. package/dist/core/sandbox/lima-guest-binary.d.ts.map +1 -1
  190. package/dist/core/sandbox/lima-guest-binary.js.map +1 -1
  191. package/dist/core/sandbox/lima.d.ts +2 -0
  192. package/dist/core/sandbox/lima.d.ts.map +1 -1
  193. package/dist/core/sandbox/lima.js +3 -9
  194. package/dist/core/sandbox/lima.js.map +1 -1
  195. package/dist/core/sandbox/shared-lima-roots.d.ts.map +1 -1
  196. package/dist/core/sandbox/shared-lima-roots.js.map +1 -1
  197. package/dist/core/sandbox/update-shared-guest-binary.d.ts.map +1 -1
  198. package/dist/core/sandbox/update-shared-guest-binary.js.map +1 -1
  199. package/dist/core/session/constants.d.ts.map +1 -1
  200. package/dist/core/session/context-metadata.d.ts.map +1 -1
  201. package/dist/core/session/context-metadata.js.map +1 -1
  202. package/dist/core/session/context.d.ts.map +1 -1
  203. package/dist/core/session/context.js.map +1 -1
  204. package/dist/core/session/ids.d.ts.map +1 -1
  205. package/dist/core/session/ids.js.map +1 -1
  206. package/dist/core/session/in-memory-session-manager.d.ts.map +1 -1
  207. package/dist/core/session/in-memory-session-manager.js +0 -1
  208. package/dist/core/session/in-memory-session-manager.js.map +1 -1
  209. package/dist/core/session/in-memory-session.d.ts.map +1 -1
  210. package/dist/core/session/in-memory-session.js.map +1 -1
  211. package/dist/core/session/jsonl-errors.d.ts.map +1 -1
  212. package/dist/core/session/jsonl-errors.js +0 -11
  213. package/dist/core/session/jsonl-errors.js.map +1 -1
  214. package/dist/core/session/jsonl-helpers.d.ts.map +1 -1
  215. package/dist/core/session/jsonl-helpers.js.map +1 -1
  216. package/dist/core/session/local-session-manager.d.ts.map +1 -1
  217. package/dist/core/session/local-session-manager.js +4 -6
  218. package/dist/core/session/local-session-manager.js.map +1 -1
  219. package/dist/core/session/local-session.d.ts.map +1 -1
  220. package/dist/core/session/local-session.js.map +1 -1
  221. package/dist/core/session/migrations.d.ts.map +1 -1
  222. package/dist/core/session/migrations.js.map +1 -1
  223. package/dist/core/session/remote-session-client.d.ts.map +1 -1
  224. package/dist/core/session/remote-session-client.js +0 -6
  225. package/dist/core/session/remote-session-client.js.map +1 -1
  226. package/dist/core/session/remote-session-manager.d.ts.map +1 -1
  227. package/dist/core/session/remote-session-manager.js +0 -3
  228. package/dist/core/session/remote-session-manager.js.map +1 -1
  229. package/dist/core/session/remote-session.d.ts.map +1 -1
  230. package/dist/core/session/remote-session.js +0 -1
  231. package/dist/core/session/remote-session.js.map +1 -1
  232. package/dist/core/session/session-manager.d.ts.map +1 -1
  233. package/dist/core/session/session.d.ts.map +1 -1
  234. package/dist/core/session/session.js +1 -5
  235. package/dist/core/session/session.js.map +1 -1
  236. package/dist/core/session/stores/in-memory-session-store.d.ts.map +1 -1
  237. package/dist/core/session/stores/in-memory-session-store.js +7 -6
  238. package/dist/core/session/stores/in-memory-session-store.js.map +1 -1
  239. package/dist/core/session/stores/jsonl-session-store.d.ts.map +1 -1
  240. package/dist/core/session/stores/jsonl-session-store.js +6 -14
  241. package/dist/core/session/stores/jsonl-session-store.js.map +1 -1
  242. package/dist/core/session/stores/remote-session-store.d.ts.map +1 -1
  243. package/dist/core/session/stores/remote-session-store.js +3 -8
  244. package/dist/core/session/stores/remote-session-store.js.map +1 -1
  245. package/dist/core/session/stores/session-store.d.ts.map +1 -1
  246. package/dist/core/session/types.d.ts.map +1 -1
  247. package/dist/core/session/usage-ledger.d.ts.map +1 -1
  248. package/dist/core/session/usage-ledger.js.map +1 -1
  249. package/dist/core/session-cwd.d.ts.map +1 -1
  250. package/dist/core/session-cwd.js +0 -1
  251. package/dist/core/session-cwd.js.map +1 -1
  252. package/dist/core/settings-manager.d.ts.map +1 -1
  253. package/dist/core/settings-manager.js +9 -17
  254. package/dist/core/settings-manager.js.map +1 -1
  255. package/dist/core/skills.d.ts.map +1 -1
  256. package/dist/core/skills.js +3 -2
  257. package/dist/core/skills.js.map +1 -1
  258. package/dist/core/slash-commands.d.ts.map +1 -1
  259. package/dist/core/source-info.d.ts.map +1 -1
  260. package/dist/core/source-info.js.map +1 -1
  261. package/dist/core/system-prompt.d.ts +1 -1
  262. package/dist/core/system-prompt.d.ts.map +1 -1
  263. package/dist/core/system-prompt.js +3 -2
  264. package/dist/core/system-prompt.js.map +1 -1
  265. package/dist/core/telemetry.d.ts.map +1 -1
  266. package/dist/core/telemetry.js.map +1 -1
  267. package/dist/core/timings.d.ts.map +1 -1
  268. package/dist/core/timings.js.map +1 -1
  269. package/dist/core/tools/bash.d.ts +1 -0
  270. package/dist/core/tools/bash.d.ts.map +1 -1
  271. package/dist/core/tools/bash.js +34 -28
  272. package/dist/core/tools/bash.js.map +1 -1
  273. package/dist/core/tools/compress-context.d.ts.map +1 -1
  274. package/dist/core/tools/compress-context.js.map +1 -1
  275. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  276. package/dist/core/tools/edit-diff.js.map +1 -1
  277. package/dist/core/tools/edit.d.ts.map +1 -1
  278. package/dist/core/tools/edit.js.map +1 -1
  279. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  280. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  281. package/dist/core/tools/find.d.ts.map +1 -1
  282. package/dist/core/tools/find.js.map +1 -1
  283. package/dist/core/tools/grep.d.ts.map +1 -1
  284. package/dist/core/tools/grep.js.map +1 -1
  285. package/dist/core/tools/hash-store.d.ts.map +1 -1
  286. package/dist/core/tools/hash-store.js.map +1 -1
  287. package/dist/core/tools/hashline/apply.d.ts.map +1 -1
  288. package/dist/core/tools/hashline/apply.js.map +1 -1
  289. package/dist/core/tools/hashline/hash.d.ts.map +1 -1
  290. package/dist/core/tools/hashline/hash.js.map +1 -1
  291. package/dist/core/tools/hashline/parse.d.ts.map +1 -1
  292. package/dist/core/tools/hashline/parse.js.map +1 -1
  293. package/dist/core/tools/hashline/resolve.d.ts.map +1 -1
  294. package/dist/core/tools/hashline/resolve.js.map +1 -1
  295. package/dist/core/tools/hashline-utils.d.ts.map +1 -1
  296. package/dist/core/tools/hashline-utils.js.map +1 -1
  297. package/dist/core/tools/index.d.ts.map +1 -1
  298. package/dist/core/tools/index.js.map +1 -1
  299. package/dist/core/tools/ls.d.ts.map +1 -1
  300. package/dist/core/tools/ls.js.map +1 -1
  301. package/dist/core/tools/operations.d.ts +11 -0
  302. package/dist/core/tools/operations.d.ts.map +1 -1
  303. package/dist/core/tools/operations.js +54 -28
  304. package/dist/core/tools/operations.js.map +1 -1
  305. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  306. package/dist/core/tools/output-accumulator.js +12 -18
  307. package/dist/core/tools/output-accumulator.js.map +1 -1
  308. package/dist/core/tools/path-utils.d.ts.map +1 -1
  309. package/dist/core/tools/path-utils.js.map +1 -1
  310. package/dist/core/tools/read.d.ts.map +1 -1
  311. package/dist/core/tools/read.js.map +1 -1
  312. package/dist/core/tools/render-utils.d.ts.map +1 -1
  313. package/dist/core/tools/render-utils.js.map +1 -1
  314. package/dist/core/tools/replace-diff.d.ts.map +1 -1
  315. package/dist/core/tools/replace-diff.js.map +1 -1
  316. package/dist/core/tools/replace-normalize.d.ts.map +1 -1
  317. package/dist/core/tools/replace-normalize.js.map +1 -1
  318. package/dist/core/tools/replace-render.d.ts +1 -1
  319. package/dist/core/tools/replace-render.d.ts.map +1 -1
  320. package/dist/core/tools/replace-render.js.map +1 -1
  321. package/dist/core/tools/runtime.d.ts.map +1 -1
  322. package/dist/core/tools/runtime.js.map +1 -1
  323. package/dist/core/tools/session-history.d.ts.map +1 -1
  324. package/dist/core/tools/session-history.js.map +1 -1
  325. package/dist/core/tools/subagent-agents.d.ts.map +1 -1
  326. package/dist/core/tools/subagent-agents.js.map +1 -1
  327. package/dist/core/tools/subagent.d.ts.map +1 -1
  328. package/dist/core/tools/subagent.js.map +1 -1
  329. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  330. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  331. package/dist/core/tools/truncate.d.ts.map +1 -1
  332. package/dist/core/tools/truncate.js.map +1 -1
  333. package/dist/core/tools/websearch.d.ts.map +1 -1
  334. package/dist/core/tools/websearch.js.map +1 -1
  335. package/dist/core/tools/workspace-tool-host.d.ts +1 -0
  336. package/dist/core/tools/workspace-tool-host.d.ts.map +1 -1
  337. package/dist/core/tools/workspace-tool-host.js +36 -22
  338. package/dist/core/tools/workspace-tool-host.js.map +1 -1
  339. package/dist/core/tools/write.d.ts.map +1 -1
  340. package/dist/core/tools/write.js +0 -1
  341. package/dist/core/tools/write.js.map +1 -1
  342. package/dist/core/workspace-identity.d.ts.map +1 -1
  343. package/dist/daemon/activity-budget.d.ts.map +1 -1
  344. package/dist/daemon/activity-budget.js +2 -3
  345. package/dist/daemon/activity-budget.js.map +1 -1
  346. package/dist/daemon/command.d.ts.map +1 -1
  347. package/dist/daemon/command.js.map +1 -1
  348. package/dist/daemon/config.d.ts +2 -0
  349. package/dist/daemon/config.d.ts.map +1 -1
  350. package/dist/daemon/config.js +4 -0
  351. package/dist/daemon/config.js.map +1 -1
  352. package/dist/daemon/help.d.ts.map +1 -1
  353. package/dist/daemon/help.js +4 -3
  354. package/dist/daemon/help.js.map +1 -1
  355. package/dist/daemon/lsp-config.d.ts.map +1 -1
  356. package/dist/daemon/lsp-config.js.map +1 -1
  357. package/dist/daemon/outbound-budget.d.ts.map +1 -1
  358. package/dist/daemon/outbound-budget.js +2 -4
  359. package/dist/daemon/outbound-budget.js.map +1 -1
  360. package/dist/daemon/security.d.ts.map +1 -1
  361. package/dist/daemon/security.js.map +1 -1
  362. package/dist/daemon/server.d.ts.map +1 -1
  363. package/dist/daemon/server.js.map +1 -1
  364. package/dist/daemon/shared-connection.d.ts.map +1 -1
  365. package/dist/daemon/shared-connection.js +10 -15
  366. package/dist/daemon/shared-connection.js.map +1 -1
  367. package/dist/daemon/shared-revision.d.ts.map +1 -1
  368. package/dist/daemon/shared-revision.js +2 -1
  369. package/dist/daemon/shared-revision.js.map +1 -1
  370. package/dist/daemon/shared-roots.d.ts.map +1 -1
  371. package/dist/daemon/shared-roots.js +0 -1
  372. package/dist/daemon/shared-roots.js.map +1 -1
  373. package/dist/daemon/workspace-runtime.d.ts +2 -0
  374. package/dist/daemon/workspace-runtime.d.ts.map +1 -1
  375. package/dist/daemon/workspace-runtime.js +43 -15
  376. package/dist/daemon/workspace-runtime.js.map +1 -1
  377. package/dist/index.d.ts +1 -1
  378. package/dist/index.d.ts.map +1 -1
  379. package/dist/index.js.map +1 -1
  380. package/dist/main.d.ts.map +1 -1
  381. package/dist/main.js +8 -3
  382. package/dist/main.js.map +1 -1
  383. package/dist/migrations.d.ts.map +1 -1
  384. package/dist/migrations.js.map +1 -1
  385. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  386. package/dist/modes/interactive/components/assistant-message.js +3 -10
  387. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  388. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  389. package/dist/modes/interactive/components/bash-execution.js +4 -9
  390. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  391. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  392. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  393. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  394. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  395. package/dist/modes/interactive/components/branch-summary-message.js +1 -3
  396. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  397. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  398. package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
  399. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  400. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  401. package/dist/modes/interactive/components/config-selector.js +6 -16
  402. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  403. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  404. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  405. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  406. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  407. package/dist/modes/interactive/components/custom-editor.js +1 -8
  408. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  409. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  410. package/dist/modes/interactive/components/custom-message.js +1 -6
  411. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  412. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  413. package/dist/modes/interactive/components/diff.js.map +1 -1
  414. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  415. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  416. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  417. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  418. package/dist/modes/interactive/components/extension-editor.js +1 -7
  419. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  420. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  421. package/dist/modes/interactive/components/extension-input.js +2 -8
  422. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  423. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  424. package/dist/modes/interactive/components/extension-selector.js +1 -9
  425. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  426. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  427. package/dist/modes/interactive/components/footer.js +8 -4
  428. package/dist/modes/interactive/components/footer.js.map +1 -1
  429. package/dist/modes/interactive/components/hook-execution.d.ts.map +1 -1
  430. package/dist/modes/interactive/components/hook-execution.js +2 -5
  431. package/dist/modes/interactive/components/hook-execution.js.map +1 -1
  432. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  433. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  434. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  435. package/dist/modes/interactive/components/login-dialog.js +3 -9
  436. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  437. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  438. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  439. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  440. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  441. package/dist/modes/interactive/components/message-card.d.ts.map +1 -1
  442. package/dist/modes/interactive/components/message-card.js +0 -1
  443. package/dist/modes/interactive/components/message-card.js.map +1 -1
  444. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  445. package/dist/modes/interactive/components/model-selector.js +13 -28
  446. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  447. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  448. package/dist/modes/interactive/components/oauth-selector.js +3 -12
  449. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  450. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  451. package/dist/modes/interactive/components/scoped-models-selector.js +9 -13
  452. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  453. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  454. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  455. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  456. package/dist/modes/interactive/components/session-selector.js +33 -58
  457. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  458. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  459. package/dist/modes/interactive/components/settings-selector.js +0 -4
  460. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  461. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  462. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  463. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  464. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  465. package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
  466. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  467. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  468. package/dist/modes/interactive/components/theme-selector.js +0 -2
  469. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  470. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  472. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  473. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  474. package/dist/modes/interactive/components/tool-execution.js +9 -24
  475. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  476. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  477. package/dist/modes/interactive/components/tree-selector.js +18 -34
  478. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  479. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  480. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  481. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  482. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  483. package/dist/modes/interactive/components/user-message.js +0 -4
  484. package/dist/modes/interactive/components/user-message.js.map +1 -1
  485. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  486. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  487. package/dist/modes/interactive/interactive-mode.d.ts +13 -0
  488. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  489. package/dist/modes/interactive/interactive-mode.js +162 -136
  490. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  491. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  492. package/dist/modes/interactive/theme/theme.js +0 -7
  493. package/dist/modes/interactive/theme/theme.js.map +1 -1
  494. package/dist/modes/json-event.d.ts.map +1 -1
  495. package/dist/modes/json-event.js.map +1 -1
  496. package/dist/modes/print-mode.d.ts.map +1 -1
  497. package/dist/modes/print-mode.js.map +1 -1
  498. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  499. package/dist/modes/rpc/jsonl.js.map +1 -1
  500. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  501. package/dist/modes/rpc/rpc-client.js +10 -11
  502. package/dist/modes/rpc/rpc-client.js.map +1 -1
  503. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  504. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  505. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  506. package/dist/package-manager-cli.d.ts.map +1 -1
  507. package/dist/package-manager-cli.js +33 -2
  508. package/dist/package-manager-cli.js.map +1 -1
  509. package/dist/utils/ansi.d.ts.map +1 -1
  510. package/dist/utils/ansi.js.map +1 -1
  511. package/dist/utils/binary-self-update.d.ts +25 -0
  512. package/dist/utils/binary-self-update.d.ts.map +1 -0
  513. package/dist/utils/binary-self-update.js +159 -0
  514. package/dist/utils/binary-self-update.js.map +1 -0
  515. package/dist/utils/changelog.d.ts.map +1 -1
  516. package/dist/utils/changelog.js.map +1 -1
  517. package/dist/utils/child-process.d.ts.map +1 -1
  518. package/dist/utils/child-process.js.map +1 -1
  519. package/dist/utils/clipboard-image.d.ts.map +1 -1
  520. package/dist/utils/clipboard-image.js.map +1 -1
  521. package/dist/utils/clipboard-native.d.ts.map +1 -1
  522. package/dist/utils/clipboard-native.js.map +1 -1
  523. package/dist/utils/clipboard.d.ts.map +1 -1
  524. package/dist/utils/clipboard.js.map +1 -1
  525. package/dist/utils/deprecation.d.ts.map +1 -1
  526. package/dist/utils/deprecation.js.map +1 -1
  527. package/dist/utils/directory-completions.d.ts +8 -0
  528. package/dist/utils/directory-completions.d.ts.map +1 -1
  529. package/dist/utils/directory-completions.js +42 -1
  530. package/dist/utils/directory-completions.js.map +1 -1
  531. package/dist/utils/exif-orientation.d.ts.map +1 -1
  532. package/dist/utils/exif-orientation.js.map +1 -1
  533. package/dist/utils/frontmatter.d.ts.map +1 -1
  534. package/dist/utils/frontmatter.js.map +1 -1
  535. package/dist/utils/fs-watch.d.ts.map +1 -1
  536. package/dist/utils/fs-watch.js.map +1 -1
  537. package/dist/utils/git.d.ts.map +1 -1
  538. package/dist/utils/git.js.map +1 -1
  539. package/dist/utils/grip-user-agent.d.ts.map +1 -1
  540. package/dist/utils/grip-user-agent.js.map +1 -1
  541. package/dist/utils/html.d.ts.map +1 -1
  542. package/dist/utils/html.js.map +1 -1
  543. package/dist/utils/image-convert.d.ts.map +1 -1
  544. package/dist/utils/image-convert.js.map +1 -1
  545. package/dist/utils/image-process.d.ts.map +1 -1
  546. package/dist/utils/image-process.js.map +1 -1
  547. package/dist/utils/image-resize-core.d.ts.map +1 -1
  548. package/dist/utils/image-resize-core.js.map +1 -1
  549. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  550. package/dist/utils/image-resize-worker.js.map +1 -1
  551. package/dist/utils/image-resize.d.ts.map +1 -1
  552. package/dist/utils/image-resize.js.map +1 -1
  553. package/dist/utils/json.d.ts.map +1 -1
  554. package/dist/utils/json.js.map +1 -1
  555. package/dist/utils/mime.d.ts.map +1 -1
  556. package/dist/utils/mime.js.map +1 -1
  557. package/dist/utils/open-browser.d.ts.map +1 -1
  558. package/dist/utils/open-browser.js.map +1 -1
  559. package/dist/utils/paths.d.ts.map +1 -1
  560. package/dist/utils/paths.js.map +1 -1
  561. package/dist/utils/photon.d.ts.map +1 -1
  562. package/dist/utils/photon.js +10 -5
  563. package/dist/utils/photon.js.map +1 -1
  564. package/dist/utils/shell.d.ts.map +1 -1
  565. package/dist/utils/shell.js.map +1 -1
  566. package/dist/utils/sleep.d.ts.map +1 -1
  567. package/dist/utils/sleep.js.map +1 -1
  568. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  569. package/dist/utils/syntax-highlight.js +1 -1
  570. package/dist/utils/syntax-highlight.js.map +1 -1
  571. package/dist/utils/tools-manager.d.ts.map +1 -1
  572. package/dist/utils/tools-manager.js.map +1 -1
  573. package/dist/utils/version-check.d.ts.map +1 -1
  574. package/dist/utils/version-check.js.map +1 -1
  575. package/dist/utils/windows-self-update.d.ts.map +1 -1
  576. package/dist/utils/windows-self-update.js.map +1 -1
  577. package/docs/extensions.md +31 -1
  578. package/docs/sandbox.md +6 -0
  579. package/docs/sessions.md +1 -1
  580. package/docs/skills.md +4 -4
  581. package/docs/usage.md +2 -1
  582. package/examples/extensions/custom-provider-anthropic/package.json +2 -2
  583. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  584. package/examples/extensions/sandbox/package.json +2 -2
  585. package/examples/extensions/with-deps/package.json +1 -1
  586. package/npm-shrinkwrap.json +602 -834
  587. package/package.json +20 -21
@@ -72,8 +72,6 @@ function isExpandable(obj) {
72
72
  return typeof obj === "object" && obj !== null && "setExpanded" in obj && typeof obj.setExpanded === "function";
73
73
  }
74
74
  class ExpandableText extends Text {
75
- getCollapsedText;
76
- getExpandedText;
77
75
  constructor(getCollapsedText, getExpandedText, expanded = false, paddingX = 0, paddingY = 0) {
78
76
  super(expanded ? getExpandedText() : getCollapsedText(), paddingX, paddingY);
79
77
  this.getCollapsedText = getCollapsedText;
@@ -196,123 +194,6 @@ export function createInteractiveTuiReference(getTui) {
196
194
  });
197
195
  }
198
196
  export class InteractiveMode {
199
- runtimeHost;
200
- options;
201
- onRightClickPaste = () => {
202
- void this.handleRightClickPaste();
203
- };
204
- renderer;
205
- ui;
206
- mainScreenRenderState;
207
- loadedResourcesContainer;
208
- chatContainer;
209
- documentContainer;
210
- transcriptScrollView;
211
- fullscreenLayoutRoot;
212
- pendingMessagesContainer;
213
- statusContainer;
214
- defaultEditor;
215
- editor;
216
- editorComponentFactory;
217
- autocompleteProvider;
218
- autocompleteProviderWrappers = [];
219
- fdPath;
220
- editorContainer;
221
- footer;
222
- footerContainer;
223
- footerDataProvider;
224
- // Stored so the same manager can be injected into custom editors, selectors, and extension UI.
225
- keybindings;
226
- version;
227
- isInitialized = false;
228
- transcriptRendered = false;
229
- onInputCallback;
230
- pendingUserInputs = [];
231
- loadingAnimation = undefined;
232
- workingMessage = undefined;
233
- compressionDetectionActive = false;
234
- compressionDetectionOwnsLoader = false;
235
- workingVisible = true;
236
- workingIndicatorOptions = undefined;
237
- defaultWorkingMessage = "Working...";
238
- defaultHiddenThinkingLabel = "Thinking...";
239
- hiddenThinkingLabel = this.defaultHiddenThinkingLabel;
240
- lastSigintTime = 0;
241
- lastEscapeTime = 0;
242
- changelogMarkdown = undefined;
243
- startupNoticesShown = false;
244
- anthropicSubscriptionWarningShown = false;
245
- // Status line tracking (for mutating immediately-sequential status updates)
246
- lastStatusSpacer = undefined;
247
- lastStatusText = undefined;
248
- // Streaming message tracking
249
- streamingComponent = undefined;
250
- streamingMessage = undefined;
251
- // Tool execution tracking: toolCallId -> component
252
- pendingTools = new Map();
253
- // Tool output expansion state
254
- toolOutputExpanded = false;
255
- activeSandboxContainerId;
256
- activeSandboxBackendConnected = false;
257
- sessionSandboxStates = new Map();
258
- managedLimaInstances = new Map();
259
- // Thinking block visibility state
260
- hideThinkingBlock = false;
261
- outputPad = 1;
262
- mermaidMarkdownTransformer;
263
- // Skill commands: command name -> skill file path
264
- skillCommands = new Map();
265
- // Agent subscription unsubscribe function
266
- unsubscribe;
267
- hookExecutionUnsubscribe;
268
- hookExecutionActivityUnsubscribe;
269
- hookExecutionActivityDepth = 0;
270
- hookExecutionActivityOwnsLoader = false;
271
- hookExecutionSession;
272
- hookExecutionNotices = [];
273
- hookExecutionComponents = [];
274
- pendingStopHookNotifications = [];
275
- activeToolHookExecutionGroups = new Map();
276
- hookExecutionTurnActive = false;
277
- signalCleanupHandlers = [];
278
- // Track if editor is in bash mode (text starts with !)
279
- isBashMode = false;
280
- // Track current bash execution component
281
- bashComponent = undefined;
282
- // Track pending bash components (shown in pending area, moved to chat on submit)
283
- pendingBashComponents = [];
284
- // Auto-compaction state
285
- autoCompactionLoader = undefined;
286
- autoCompactionEscapeHandler;
287
- branchSummaryLoader;
288
- summarizationRetryLoader;
289
- summarizationRetryCountdown;
290
- // Auto-retry state
291
- retryLoader = undefined;
292
- retryCountdown = undefined;
293
- retryEscapeHandler;
294
- // Messages queued while compaction is running
295
- compactionQueuedMessages = [];
296
- // Shutdown state
297
- shutdownRequested = false;
298
- // Extension UI state
299
- extensionSelector = undefined;
300
- extensionInput = undefined;
301
- extensionEditor = undefined;
302
- extensionTerminalInputSubscriptions = new Set();
303
- // Extension widgets (components rendered above/below the editor)
304
- extensionWidgetsAbove = new Map();
305
- extensionWidgetsBelow = new Map();
306
- widgetContainerAbove;
307
- widgetContainerBelow;
308
- // Custom footer from extension (undefined = use built-in footer)
309
- customFooter = undefined;
310
- // Header container that holds the built-in or custom header
311
- headerContainer;
312
- // Built-in header (logo + keybinding hints + changelog)
313
- builtInHeader = undefined;
314
- // Custom header from extension (undefined = use built-in header)
315
- customHeader = undefined;
316
197
  // Convenience accessors
317
198
  get session() {
318
199
  return this.runtimeHost.session;
@@ -327,6 +208,88 @@ export class InteractiveMode {
327
208
  return this.session.settingsManager;
328
209
  }
329
210
  constructor(runtimeHost, options = {}) {
211
+ this.onRightClickPaste = () => {
212
+ void this.handleRightClickPaste();
213
+ };
214
+ this.autocompleteProviderWrappers = [];
215
+ this.isInitialized = false;
216
+ this.transcriptRendered = false;
217
+ this.pendingUserInputs = [];
218
+ this.loadingAnimation = undefined;
219
+ this.workingMessage = undefined;
220
+ this.compressionDetectionActive = false;
221
+ this.compressionDetectionOwnsLoader = false;
222
+ this.workingVisible = true;
223
+ this.workingIndicatorOptions = undefined;
224
+ this.defaultWorkingMessage = "Working...";
225
+ this.defaultHiddenThinkingLabel = "Thinking...";
226
+ this.hiddenThinkingLabel = this.defaultHiddenThinkingLabel;
227
+ this.lastSigintTime = 0;
228
+ this.lastEscapeTime = 0;
229
+ this.changelogMarkdown = undefined;
230
+ this.startupNoticesShown = false;
231
+ this.anthropicSubscriptionWarningShown = false;
232
+ // Status line tracking (for mutating immediately-sequential status updates)
233
+ this.lastStatusSpacer = undefined;
234
+ this.lastStatusText = undefined;
235
+ // Streaming message tracking
236
+ this.streamingComponent = undefined;
237
+ this.streamingMessage = undefined;
238
+ // Tool execution tracking: toolCallId -> component
239
+ this.pendingTools = new Map();
240
+ // Tool output expansion state
241
+ this.toolOutputExpanded = false;
242
+ this.activeSandboxBackendConnected = false;
243
+ this.sessionSandboxStates = new Map();
244
+ this.managedLimaInstances = new Map();
245
+ // Thinking block visibility state
246
+ this.hideThinkingBlock = false;
247
+ this.outputPad = 1;
248
+ // Skill commands: command name -> skill file path
249
+ this.skillCommands = new Map();
250
+ this.hookExecutionActivityDepth = 0;
251
+ this.hookExecutionActivityOwnsLoader = false;
252
+ this.hookExecutionNotices = [];
253
+ this.hookExecutionComponents = [];
254
+ this.pendingStopHookNotifications = [];
255
+ this.activeToolHookExecutionGroups = new Map();
256
+ this.hookExecutionTurnActive = false;
257
+ this.signalCleanupHandlers = [];
258
+ // Track if editor is in bash mode (text starts with !)
259
+ this.isBashMode = false;
260
+ // Track current bash execution component
261
+ this.bashComponent = undefined;
262
+ // Track pending bash components (shown in pending area, moved to chat on submit)
263
+ this.pendingBashComponents = [];
264
+ // Auto-compaction state
265
+ this.autoCompactionLoader = undefined;
266
+ // Auto-retry state
267
+ this.retryLoader = undefined;
268
+ this.retryCountdown = undefined;
269
+ // Messages queued while compaction is running
270
+ this.compactionQueuedMessages = [];
271
+ // Shutdown state
272
+ this.shutdownRequested = false;
273
+ // Extension UI state
274
+ this.extensionSelector = undefined;
275
+ this.extensionInput = undefined;
276
+ this.extensionEditor = undefined;
277
+ this.extensionTerminalInputSubscriptions = new Set();
278
+ // Extension widgets (components rendered above/below the editor)
279
+ this.extensionWidgetsAbove = new Map();
280
+ this.extensionWidgetsBelow = new Map();
281
+ // Custom footer from extension (undefined = use built-in footer)
282
+ this.customFooter = undefined;
283
+ // Built-in header (logo + keybinding hints + changelog)
284
+ this.builtInHeader = undefined;
285
+ // Custom header from extension (undefined = use built-in header)
286
+ this.customHeader = undefined;
287
+ /**
288
+ * Gracefully shutdown the agent.
289
+ * Stops the TUI before emitting shutdown events so extension UI cleanup cannot
290
+ * repaint the final frame while the process is exiting.
291
+ */
292
+ this.isShuttingDown = false;
330
293
  this.runtimeHost = runtimeHost;
331
294
  const tuiMode = options.tuiMode ?? this.settingsManager.getTuiMode();
332
295
  this.options = { ...options, tuiMode };
@@ -428,7 +391,7 @@ export class InteractiveMode {
428
391
  }));
429
392
  }
430
393
  createBaseAutocompleteProvider() {
431
- // Commands without arguments remain selectable after a trailing space (e.g. /new ).
394
+ // Commands without arguments remain selectable after a trailing space (e.g. /quit ).
432
395
  const noArgumentCommands = new Set([
433
396
  "settings",
434
397
  "scoped-models",
@@ -439,10 +402,10 @@ export class InteractiveMode {
439
402
  "hotkeys",
440
403
  "fork",
441
404
  "clone",
405
+ "new",
442
406
  "tree",
443
407
  "login",
444
408
  "logout",
445
- "new",
446
409
  "reload",
447
410
  "resume",
448
411
  "quit",
@@ -455,7 +418,13 @@ export class InteractiveMode {
455
418
  const cdCommand = slashCommands.find((command) => command.name === "cd");
456
419
  if (cdCommand) {
457
420
  cdCommand.argumentHint = "<directory>";
458
- cdCommand.getArgumentCompletions = (prefix) => this.session.supportsDirectoryChange() ? getDirectoryCompletions(prefix, this.activeSession.getCwd()) : [];
421
+ cdCommand.getArgumentCompletions = (prefix) => {
422
+ if (this.activeSandboxBackendConnected)
423
+ return this.session.getSandboxDirectoryCompletions(prefix);
424
+ return this.session.supportsDirectoryChange()
425
+ ? getDirectoryCompletions(prefix, this.activeSession.getCwd())
426
+ : [];
427
+ };
459
428
  }
460
429
  const choiceCompletions = (choices) => (prefix) => {
461
430
  if (prefix.includes(" "))
@@ -491,10 +460,10 @@ export class InteractiveMode {
491
460
  label: item,
492
461
  }));
493
462
  }
494
- const startMatch = prefix.match(/^start\s+(--[^\s]*)$/);
463
+ const startMatch = prefix.match(/^start\s+(--[^\s]*)?$/);
495
464
  if (!startMatch)
496
465
  return null;
497
- return fuzzyFilter(["--name", "--template", "--update"], startMatch[1], (item) => item).map((item) => ({
466
+ return fuzzyFilter(["--name", "--template", "--update"], startMatch[1] ?? "", (item) => item).map((item) => ({
498
467
  value: `start ${item}${item === "--update" ? "" : " "}`,
499
468
  label: item,
500
469
  }));
@@ -1635,12 +1604,15 @@ export class InteractiveMode {
1635
1604
  cwd: this.activeSession.getCwd(),
1636
1605
  toolOperations: this.session.getToolOperations(),
1637
1606
  getToolBackendInfo: () => this.session.getToolBackendInfo(),
1607
+ isSandbox: () => this.session.isSandbox(),
1638
1608
  getLspStatus: () => this.session.getLspStatus(),
1639
1609
  configureLsp: (configuration) => this.session.configureLsp(configuration),
1640
1610
  execToolBackend: (command, options) => {
1641
1611
  const operations = this.session.getToolOperations();
1642
1612
  return executeBashWithOperations(command, options?.cwd ?? operations.cwd, operations, options);
1643
1613
  },
1614
+ execHostCommand: (command, options) => extensionRunner.createContext().execHostCommand(command, options),
1615
+ execHostProcess: (executable, args, options) => extensionRunner.createContext().execHostProcess(executable, args, options),
1644
1616
  session: this.activeSession,
1645
1617
  modelRegistry: this.session.modelRegistry,
1646
1618
  model: this.session.model,
@@ -1695,7 +1667,7 @@ export class InteractiveMode {
1695
1667
  return theme.fg("dim", `tools: local ${info.cwd}`);
1696
1668
  }
1697
1669
  return info.configured
1698
- ? theme.fg("accent", `tools: remote ${info.url} ${info.cwd}`)
1670
+ ? theme.fg("accent", `tools: remote ${info.url} ${this.activeSandboxBackendConnected ? this.session.getToolOperations().cwd : info.cwd}`)
1699
1671
  : theme.fg("warning", `tools: remote not configured ${info.cwd}`);
1700
1672
  }
1701
1673
  updateToolBackendStatus() {
@@ -1901,7 +1873,7 @@ export class InteractiveMode {
1901
1873
  this.setHiddenThinkingLabel();
1902
1874
  }
1903
1875
  // Maximum total widget lines to prevent viewport overflow
1904
- static MAX_WIDGET_LINES = 10;
1876
+ static { this.MAX_WIDGET_LINES = 10; }
1905
1877
  /**
1906
1878
  * Render all extension widgets to the widget container.
1907
1879
  */
@@ -2561,6 +2533,19 @@ export class InteractiveMode {
2561
2533
  },
2562
2534
  };
2563
2535
  }
2536
+ if (this.matchesEditorCommand(text, "/new")) {
2537
+ return {
2538
+ run: async () => {
2539
+ this.editor.setText("");
2540
+ const option = text.slice("/new".length).trim();
2541
+ if (option) {
2542
+ this.showWarning("Usage: /new");
2543
+ return;
2544
+ }
2545
+ await this.handleClearCommand();
2546
+ },
2547
+ };
2548
+ }
2564
2549
  if (this.matchesEditorCommand(text, "/compact")) {
2565
2550
  const customInstructions = text.slice("/compact".length).trim() || undefined;
2566
2551
  return {
@@ -3465,12 +3450,6 @@ export class InteractiveMode {
3465
3450
  // Only called when editor is empty (enforced by CustomEditor)
3466
3451
  void this.shutdown();
3467
3452
  }
3468
- /**
3469
- * Gracefully shutdown the agent.
3470
- * Stops the TUI before emitting shutdown events so extension UI cleanup cannot
3471
- * repaint the final frame while the process is exiting.
3472
- */
3473
- isShuttingDown = false;
3474
3453
  async shutdown(options) {
3475
3454
  if (this.isShuttingDown)
3476
3455
  return;
@@ -4951,13 +4930,44 @@ export class InteractiveMode {
4951
4930
  }
4952
4931
  // =========================================================================
4953
4932
  // Command handlers
4933
+ async handleSandboxCdCommand(text) {
4934
+ const backend = this.session.getToolBackendInfo();
4935
+ if (backend.type !== "remote" || !backend.configured) {
4936
+ this.showWarning("Changing directories is not supported with the active workspace backend.");
4937
+ return;
4938
+ }
4939
+ const argument = this.getPathCommandArgument(text, "/cd");
4940
+ if (text !== "/cd" && !argument) {
4941
+ this.showError("Usage: /cd [directory]");
4942
+ return;
4943
+ }
4944
+ try {
4945
+ const directory = await this.session.changeSandboxWorkingDirectory(argument ?? backend.workspace.root);
4946
+ this.updateToolBackendStatus();
4947
+ this.showStatus(`Working directory: ${directory}`);
4948
+ }
4949
+ catch (error) {
4950
+ const message = error instanceof Error ? error.message : String(error);
4951
+ this.showError(message === "Remote workspace request handler failed"
4952
+ ? `Directory unavailable in sandbox: ${argument ?? backend.workspace.root} (it must exist within the mounted workspace ${backend.workspace.root})`
4953
+ : `Failed to change sandbox directory: ${message}`);
4954
+ }
4955
+ }
4956
+ async handleUnavailableCdCommand(text) {
4957
+ if (this.activeSandboxBackendConnected) {
4958
+ await this.handleSandboxCdCommand(text);
4959
+ }
4960
+ else {
4961
+ this.showWarning("Changing directories is not supported with the active workspace backend.");
4962
+ }
4963
+ }
4954
4964
  async handleCdCommand(text) {
4955
4965
  if (!this.session.isIdle || this.session.isBashRunning) {
4956
4966
  this.showWarning("Wait for the current operation to finish before changing directories.");
4957
4967
  return;
4958
4968
  }
4959
4969
  if (!this.session.supportsDirectoryChange()) {
4960
- this.showWarning("Changing directories is not supported with the active workspace backend.");
4970
+ await this.handleUnavailableCdCommand(text);
4961
4971
  return;
4962
4972
  }
4963
4973
  const argument = this.getPathCommandArgument(text, "/cd");
@@ -5374,6 +5384,7 @@ export class InteractiveMode {
5374
5384
  try {
5375
5385
  await this.session.activateSandboxDaemon({
5376
5386
  url: state.url,
5387
+ hostWorkspaceRoot: state.hostWorkspaceRoot,
5377
5388
  token: state.token,
5378
5389
  expectedCwd: state.expectedCwd,
5379
5390
  });
@@ -5455,6 +5466,7 @@ export class InteractiveMode {
5455
5466
  url: result.daemonUrl,
5456
5467
  token: result.token,
5457
5468
  expectedCwd: result.workspaceMountPath,
5469
+ hostWorkspaceRoot: result.workspaceRoot,
5458
5470
  });
5459
5471
  break;
5460
5472
  }
@@ -5511,6 +5523,7 @@ export class InteractiveMode {
5511
5523
  url: result.daemonUrl,
5512
5524
  token: result.token,
5513
5525
  expectedCwd: result.workspaceMountPath,
5526
+ hostWorkspaceRoot: result.workspaceRoot,
5514
5527
  containerId: result.containerId,
5515
5528
  });
5516
5529
  this.refreshUiAfterBackendChange();
@@ -5826,17 +5839,30 @@ export class InteractiveMode {
5826
5839
  this.loadingAnimation = undefined;
5827
5840
  }
5828
5841
  this.statusContainer.clear();
5842
+ const sandboxState = this.activeSandboxBackendConnected
5843
+ ? this.sessionSandboxStates.get(getSessionSandboxKey(this.activeSession))
5844
+ : undefined;
5845
+ let newSessionKey;
5829
5846
  try {
5830
- const result = await this.runtimeHost.newSession();
5831
- if (result.cancelled) {
5847
+ const result = await this.runtimeHost.newSession(sandboxState
5848
+ ? {
5849
+ setup: async (nextSession) => {
5850
+ newSessionKey = getSessionSandboxKey(nextSession);
5851
+ this.sessionSandboxStates.set(newSessionKey, sandboxState);
5852
+ },
5853
+ }
5854
+ : undefined);
5855
+ if (result.cancelled)
5832
5856
  return;
5833
- }
5834
5857
  this.renderCurrentSessionState();
5835
5858
  this.chatContainer.addChild(new Spacer(1));
5836
5859
  this.chatContainer.addChild(new Text(`${theme.fg("accent", "✓ New session started")}`, 1, 1));
5837
5860
  this.ui.requestRender();
5838
5861
  }
5839
5862
  catch (error) {
5863
+ if (newSessionKey && newSessionKey !== getSessionSandboxKey(this.activeSession)) {
5864
+ this.sessionSandboxStates.delete(newSessionKey);
5865
+ }
5840
5866
  await this.handleFatalRuntimeError("Failed to create session", error);
5841
5867
  }
5842
5868
  }