@oh-my-pi/pi-coding-agent 15.1.0 → 15.1.2

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 (744) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/types/async/index.d.ts +2 -0
  3. package/dist/types/async/job-manager.d.ts +87 -0
  4. package/dist/types/async/support.d.ts +2 -0
  5. package/dist/types/autoresearch/dashboard.d.ts +4 -0
  6. package/dist/types/autoresearch/git.d.ts +36 -0
  7. package/dist/types/autoresearch/helpers.d.ts +24 -0
  8. package/dist/types/autoresearch/index.d.ts +2 -0
  9. package/dist/types/autoresearch/state.d.ts +17 -0
  10. package/dist/types/autoresearch/storage.d.ts +142 -0
  11. package/dist/types/autoresearch/tools/init-experiment.d.ts +31 -0
  12. package/dist/types/autoresearch/tools/log-experiment.d.ts +23 -0
  13. package/dist/types/autoresearch/tools/run-experiment.d.ts +8 -0
  14. package/dist/types/autoresearch/tools/update-notes.d.ts +12 -0
  15. package/dist/types/autoresearch/types.d.ts +154 -0
  16. package/dist/types/capability/context-file.d.ts +17 -0
  17. package/dist/types/capability/extension-module.d.ts +15 -0
  18. package/dist/types/capability/extension.d.ts +28 -0
  19. package/dist/types/capability/fs.d.ts +20 -0
  20. package/dist/types/capability/hook.d.ts +19 -0
  21. package/dist/types/capability/index.d.ts +80 -0
  22. package/dist/types/capability/instruction.d.ts +17 -0
  23. package/dist/types/capability/mcp.d.ts +45 -0
  24. package/dist/types/capability/prompt.d.ts +15 -0
  25. package/dist/types/capability/rule.d.ts +61 -0
  26. package/dist/types/capability/settings.d.ts +15 -0
  27. package/dist/types/capability/skill.d.ts +36 -0
  28. package/dist/types/capability/slash-command.d.ts +17 -0
  29. package/dist/types/capability/ssh.d.ts +23 -0
  30. package/dist/types/capability/system-prompt.d.ts +15 -0
  31. package/dist/types/capability/tool.d.ts +19 -0
  32. package/dist/types/capability/types.d.ts +154 -0
  33. package/dist/types/cli/agents-cli.d.ts +12 -0
  34. package/dist/types/cli/args.d.ts +52 -0
  35. package/dist/types/cli/classify-install-target.d.ts +18 -0
  36. package/dist/types/cli/commands/init-xdg.d.ts +1 -0
  37. package/dist/types/cli/config-cli.d.ts +22 -0
  38. package/dist/types/cli/file-processor.d.ts +11 -0
  39. package/dist/types/cli/grep-cli.d.ts +17 -0
  40. package/dist/types/cli/grievances-cli.d.ts +25 -0
  41. package/dist/types/cli/initial-message.d.ts +17 -0
  42. package/dist/types/cli/list-models.d.ts +30 -0
  43. package/dist/types/cli/plugin-cli.d.ts +32 -0
  44. package/dist/types/cli/read-cli.d.ts +4 -0
  45. package/dist/types/cli/session-picker.d.ts +3 -0
  46. package/dist/types/cli/setup-cli.d.ts +24 -0
  47. package/dist/types/cli/shell-cli.d.ts +8 -0
  48. package/dist/types/cli/ssh-cli.d.ts +21 -0
  49. package/dist/types/cli/stats-cli.d.ts +17 -0
  50. package/dist/types/cli/update-cli.d.ts +20 -0
  51. package/dist/types/cli/web-search-cli.d.ts +20 -0
  52. package/dist/types/cli.d.ts +3 -0
  53. package/dist/types/commands/acp.d.ts +12 -0
  54. package/dist/types/commands/agents.d.ts +34 -0
  55. package/dist/types/commands/commit.d.ts +27 -0
  56. package/dist/types/commands/config.d.ts +30 -0
  57. package/dist/types/commands/grep.d.ts +42 -0
  58. package/dist/types/commands/grievances.d.ts +40 -0
  59. package/dist/types/commands/launch.d.ts +118 -0
  60. package/dist/types/commands/plugin.d.ts +52 -0
  61. package/dist/types/commands/read.d.ts +15 -0
  62. package/dist/types/commands/setup.d.ts +25 -0
  63. package/dist/types/commands/shell.d.ts +21 -0
  64. package/dist/types/commands/ssh.d.ts +48 -0
  65. package/dist/types/commands/stats.d.ts +25 -0
  66. package/dist/types/commands/update.d.ts +20 -0
  67. package/dist/types/commands/web-search.d.ts +33 -0
  68. package/dist/types/commit/agentic/agent.d.ts +31 -0
  69. package/dist/types/commit/agentic/fallback.d.ts +5 -0
  70. package/dist/types/commit/agentic/index.d.ts +2 -0
  71. package/dist/types/commit/agentic/state.d.ts +58 -0
  72. package/dist/types/commit/agentic/tools/analyze-file.d.ts +19 -0
  73. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +10 -0
  74. package/dist/types/commit/agentic/tools/git-hunk.d.ts +9 -0
  75. package/dist/types/commit/agentic/tools/git-overview.d.ts +9 -0
  76. package/dist/types/commit/agentic/tools/index.d.ts +16 -0
  77. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +28 -0
  78. package/dist/types/commit/agentic/tools/propose-commit.d.ts +28 -0
  79. package/dist/types/commit/agentic/tools/recent-commits.d.ts +7 -0
  80. package/dist/types/commit/agentic/tools/schemas.d.ts +19 -0
  81. package/dist/types/commit/agentic/tools/split-commit.d.ts +45 -0
  82. package/dist/types/commit/agentic/topo-sort.d.ts +4 -0
  83. package/dist/types/commit/agentic/trivial.d.ts +7 -0
  84. package/dist/types/commit/agentic/validation.d.ts +20 -0
  85. package/dist/types/commit/analysis/conventional.d.ts +22 -0
  86. package/dist/types/commit/analysis/index.d.ts +4 -0
  87. package/dist/types/commit/analysis/scope.d.ts +6 -0
  88. package/dist/types/commit/analysis/summary.d.ts +19 -0
  89. package/dist/types/commit/analysis/validation.d.ts +8 -0
  90. package/dist/types/commit/changelog/detect.d.ts +2 -0
  91. package/dist/types/commit/changelog/generate.d.ts +30 -0
  92. package/dist/types/commit/changelog/index.d.ts +30 -0
  93. package/dist/types/commit/changelog/parse.d.ts +2 -0
  94. package/dist/types/commit/cli.d.ts +3 -0
  95. package/dist/types/commit/git/diff.d.ts +5 -0
  96. package/dist/types/commit/index.d.ts +4 -0
  97. package/dist/types/commit/map-reduce/index.d.ts +28 -0
  98. package/dist/types/commit/map-reduce/map-phase.d.ts +17 -0
  99. package/dist/types/commit/map-reduce/reduce-phase.d.ts +13 -0
  100. package/dist/types/commit/map-reduce/utils.d.ts +2 -0
  101. package/dist/types/commit/message.d.ts +2 -0
  102. package/dist/types/commit/model-selection.d.ts +15 -0
  103. package/dist/types/commit/pipeline.d.ts +5 -0
  104. package/dist/types/commit/shared-llm.d.ts +54 -0
  105. package/dist/types/commit/types.d.ts +78 -0
  106. package/dist/types/commit/utils/exclusions.d.ts +4 -0
  107. package/dist/types/commit/utils.d.ts +20 -0
  108. package/dist/types/config/config-file.d.ts +58 -0
  109. package/dist/types/config/file-lock.d.ts +6 -0
  110. package/dist/types/config/keybindings.d.ts +334 -0
  111. package/dist/types/config/model-equivalence.d.ts +24 -0
  112. package/dist/types/config/model-registry.d.ts +360 -0
  113. package/dist/types/config/model-resolver.d.ts +230 -0
  114. package/dist/types/config/models-config-schema.d.ts +502 -0
  115. package/dist/types/config/prompt-templates.d.ts +32 -0
  116. package/dist/types/config/resolve-config-value.d.ts +17 -0
  117. package/dist/types/config/settings-schema.d.ts +3315 -0
  118. package/dist/types/config/settings.d.ts +126 -0
  119. package/dist/types/config.d.ts +66 -0
  120. package/dist/types/cursor.d.ts +22 -0
  121. package/dist/types/dap/client.d.ts +38 -0
  122. package/dist/types/dap/config.d.ts +6 -0
  123. package/dist/types/dap/index.d.ts +4 -0
  124. package/dist/types/dap/session.d.ts +108 -0
  125. package/dist/types/dap/types.d.ts +524 -0
  126. package/dist/types/debug/index.d.ts +15 -0
  127. package/dist/types/debug/log-formatting.d.ts +4 -0
  128. package/dist/types/debug/log-viewer.d.ts +68 -0
  129. package/dist/types/debug/profiler.d.ts +24 -0
  130. package/dist/types/debug/raw-sse-buffer.d.ts +44 -0
  131. package/dist/types/debug/raw-sse.d.ts +16 -0
  132. package/dist/types/debug/report-bundle.d.ts +55 -0
  133. package/dist/types/debug/system-info.d.ts +26 -0
  134. package/dist/types/discovery/agents-md.d.ts +1 -0
  135. package/dist/types/discovery/agents.d.ts +1 -0
  136. package/dist/types/discovery/builtin.d.ts +1 -0
  137. package/dist/types/discovery/claude-plugins.d.ts +1 -0
  138. package/dist/types/discovery/claude.d.ts +1 -0
  139. package/dist/types/discovery/cline.d.ts +1 -0
  140. package/dist/types/discovery/codex.d.ts +1 -0
  141. package/dist/types/discovery/cursor.d.ts +16 -0
  142. package/dist/types/discovery/gemini.d.ts +1 -0
  143. package/dist/types/discovery/github.d.ts +1 -0
  144. package/dist/types/discovery/helpers.d.ts +267 -0
  145. package/dist/types/discovery/index.d.ts +51 -0
  146. package/dist/types/discovery/mcp-json.d.ts +1 -0
  147. package/dist/types/discovery/opencode.d.ts +1 -0
  148. package/dist/types/discovery/plugin-dir-roots.d.ts +15 -0
  149. package/dist/types/discovery/ssh.d.ts +1 -0
  150. package/dist/types/discovery/substitute-plugin-root.d.ts +5 -0
  151. package/dist/types/discovery/vscode.d.ts +1 -0
  152. package/dist/types/discovery/windsurf.d.ts +13 -0
  153. package/dist/types/edit/apply-patch/index.d.ts +35 -0
  154. package/dist/types/edit/apply-patch/parser.d.ts +34 -0
  155. package/dist/types/edit/diff.d.ts +59 -0
  156. package/dist/types/edit/file-read-cache.d.ts +25 -0
  157. package/dist/types/edit/index.d.ts +58 -0
  158. package/dist/types/edit/modes/apply-patch.d.ts +24 -0
  159. package/dist/types/edit/modes/patch.d.ts +99 -0
  160. package/dist/types/edit/modes/replace.d.ts +142 -0
  161. package/dist/types/edit/normalize.d.ts +43 -0
  162. package/dist/types/edit/notebook.d.ts +23 -0
  163. package/dist/types/edit/read-file.d.ts +2 -0
  164. package/dist/types/edit/renderer.d.ts +107 -0
  165. package/dist/types/edit/streaming.d.ts +59 -0
  166. package/dist/types/eval/backend.d.ts +40 -0
  167. package/dist/types/eval/index.d.ts +6 -0
  168. package/dist/types/eval/js/context-manager.d.ts +24 -0
  169. package/dist/types/eval/js/executor.d.ts +28 -0
  170. package/dist/types/eval/js/index.d.ts +10 -0
  171. package/dist/types/eval/js/shared/helpers.d.ts +38 -0
  172. package/dist/types/eval/js/shared/indirect-eval.d.ts +14 -0
  173. package/dist/types/eval/js/shared/prelude.d.ts +1 -0
  174. package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -0
  175. package/dist/types/eval/js/shared/runtime.d.ts +47 -0
  176. package/dist/types/eval/js/shared/types.d.ts +24 -0
  177. package/dist/types/eval/js/tool-bridge.d.ts +18 -0
  178. package/dist/types/eval/js/worker-core.d.ts +5 -0
  179. package/dist/types/eval/js/worker-entry.d.ts +1 -0
  180. package/dist/types/eval/js/worker-protocol.d.ts +77 -0
  181. package/dist/types/eval/parse.d.ts +28 -0
  182. package/dist/types/eval/py/display.d.ts +25 -0
  183. package/dist/types/eval/py/executor.d.ts +83 -0
  184. package/dist/types/eval/py/index.d.ts +10 -0
  185. package/dist/types/eval/py/kernel.d.ts +55 -0
  186. package/dist/types/eval/py/prelude.d.ts +1 -0
  187. package/dist/types/eval/py/runtime.d.ts +21 -0
  188. package/dist/types/eval/py/tool-bridge.d.ts +20 -0
  189. package/dist/types/eval/sniff.d.ts +11 -0
  190. package/dist/types/eval/types.d.ts +52 -0
  191. package/dist/types/exa/factory.d.ts +13 -0
  192. package/dist/types/exa/index.d.ts +20 -0
  193. package/dist/types/exa/mcp-client.d.ts +45 -0
  194. package/dist/types/exa/render.d.ts +19 -0
  195. package/dist/types/exa/researcher.d.ts +9 -0
  196. package/dist/types/exa/search.d.ts +9 -0
  197. package/dist/types/exa/types.d.ts +155 -0
  198. package/dist/types/exa/websets.d.ts +9 -0
  199. package/dist/types/exec/bash-executor.d.ts +41 -0
  200. package/dist/types/exec/exec.d.ts +25 -0
  201. package/dist/types/exec/idle-timeout-watchdog.d.ts +18 -0
  202. package/dist/types/exec/non-interactive-env.d.ts +1 -0
  203. package/dist/types/export/custom-share.d.ts +20 -0
  204. package/dist/types/export/html/index.d.ts +10 -0
  205. package/dist/types/export/html/template.generated.d.ts +1 -0
  206. package/dist/types/export/html/template.macro.d.ts +5 -0
  207. package/dist/types/export/ttsr.d.ts +44 -0
  208. package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +9 -0
  209. package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +10 -0
  210. package/dist/types/extensibility/custom-commands/index.d.ts +2 -0
  211. package/dist/types/extensibility/custom-commands/loader.d.ts +29 -0
  212. package/dist/types/extensibility/custom-commands/types.d.ts +106 -0
  213. package/dist/types/extensibility/custom-tools/index.d.ts +6 -0
  214. package/dist/types/extensibility/custom-tools/loader.d.ts +69 -0
  215. package/dist/types/extensibility/custom-tools/types.d.ts +226 -0
  216. package/dist/types/extensibility/custom-tools/wrapper.d.ts +23 -0
  217. package/dist/types/extensibility/extensions/compact-handler.d.ts +26 -0
  218. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +29 -0
  219. package/dist/types/extensibility/extensions/index.d.ts +8 -0
  220. package/dist/types/extensibility/extensions/loader.d.ts +43 -0
  221. package/dist/types/extensibility/extensions/runner.d.ts +134 -0
  222. package/dist/types/extensibility/extensions/types.d.ts +864 -0
  223. package/dist/types/extensibility/extensions/wrapper.d.ts +54 -0
  224. package/dist/types/extensibility/hooks/index.d.ts +5 -0
  225. package/dist/types/extensibility/hooks/loader.d.ts +89 -0
  226. package/dist/types/extensibility/hooks/runner.d.ts +126 -0
  227. package/dist/types/extensibility/hooks/tool-wrapper.d.ts +25 -0
  228. package/dist/types/extensibility/hooks/types.d.ts +431 -0
  229. package/dist/types/extensibility/plugins/doctor.d.ts +3 -0
  230. package/dist/types/extensibility/plugins/git-url.d.ts +34 -0
  231. package/dist/types/extensibility/plugins/index.d.ts +7 -0
  232. package/dist/types/extensibility/plugins/installer.d.ts +5 -0
  233. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +2 -0
  234. package/dist/types/extensibility/plugins/loader.d.ts +31 -0
  235. package/dist/types/extensibility/plugins/manager.d.ts +65 -0
  236. package/dist/types/extensibility/plugins/marketplace/cache.d.ts +41 -0
  237. package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +48 -0
  238. package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -0
  239. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +57 -0
  240. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +34 -0
  241. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +28 -0
  242. package/dist/types/extensibility/plugins/marketplace/types.d.ts +130 -0
  243. package/dist/types/extensibility/plugins/parser.d.ts +52 -0
  244. package/dist/types/extensibility/plugins/types.d.ts +149 -0
  245. package/dist/types/extensibility/shared-events.d.ts +279 -0
  246. package/dist/types/extensibility/skills.d.ts +57 -0
  247. package/dist/types/extensibility/slash-commands.d.ts +48 -0
  248. package/dist/types/extensibility/tool-proxy.d.ts +4 -0
  249. package/dist/types/extensibility/typebox.d.ts +155 -0
  250. package/dist/types/extensibility/utils.d.ts +12 -0
  251. package/dist/types/goals/index.d.ts +3 -0
  252. package/dist/types/goals/runtime.d.ts +63 -0
  253. package/dist/types/goals/state.d.ts +35 -0
  254. package/dist/types/goals/tools/goal-tool.d.ts +54 -0
  255. package/dist/types/hashline/anchors.d.ts +20 -0
  256. package/dist/types/hashline/apply.d.ts +14 -0
  257. package/dist/types/hashline/constants.d.ts +21 -0
  258. package/dist/types/hashline/diff-preview.d.ts +2 -0
  259. package/dist/types/hashline/diff.d.ts +17 -0
  260. package/dist/types/hashline/execute.d.ts +4 -0
  261. package/dist/types/hashline/hash.d.ts +149 -0
  262. package/dist/types/hashline/index.d.ts +13 -0
  263. package/dist/types/hashline/input.d.ts +11 -0
  264. package/dist/types/hashline/parser.d.ts +7 -0
  265. package/dist/types/hashline/prefixes.d.ts +7 -0
  266. package/dist/types/hashline/recovery.d.ts +22 -0
  267. package/dist/types/hashline/stream.d.ts +2 -0
  268. package/dist/types/hashline/types.d.ts +77 -0
  269. package/dist/types/hindsight/backend.d.ts +13 -0
  270. package/dist/types/hindsight/bank.d.ts +54 -0
  271. package/dist/types/hindsight/client.d.ts +224 -0
  272. package/dist/types/hindsight/config.d.ts +51 -0
  273. package/dist/types/hindsight/content.d.ts +70 -0
  274. package/dist/types/hindsight/index.d.ts +8 -0
  275. package/dist/types/hindsight/mental-models.d.ts +125 -0
  276. package/dist/types/hindsight/state.d.ts +99 -0
  277. package/dist/types/hindsight/transcript.d.ts +28 -0
  278. package/dist/types/index.d.ts +34 -0
  279. package/dist/types/internal-urls/agent-protocol.d.ts +12 -0
  280. package/dist/types/internal-urls/artifact-protocol.d.ts +6 -0
  281. package/dist/types/internal-urls/docs-index.generated.d.ts +2 -0
  282. package/dist/types/internal-urls/index.d.ts +22 -0
  283. package/dist/types/internal-urls/issue-pr-protocol.d.ts +17 -0
  284. package/dist/types/internal-urls/json-query.d.ts +30 -0
  285. package/dist/types/internal-urls/local-protocol.d.ts +39 -0
  286. package/dist/types/internal-urls/mcp-protocol.d.ts +12 -0
  287. package/dist/types/internal-urls/memory-protocol.d.ts +17 -0
  288. package/dist/types/internal-urls/parse.d.ts +19 -0
  289. package/dist/types/internal-urls/pi-protocol.d.ts +12 -0
  290. package/dist/types/internal-urls/registry-helpers.d.ts +10 -0
  291. package/dist/types/internal-urls/router.d.ts +14 -0
  292. package/dist/types/internal-urls/rule-protocol.d.ts +6 -0
  293. package/dist/types/internal-urls/skill-protocol.d.ts +13 -0
  294. package/dist/types/internal-urls/types.d.ts +105 -0
  295. package/dist/types/lsp/client.d.ts +65 -0
  296. package/dist/types/lsp/clients/biome-client.d.ts +16 -0
  297. package/dist/types/lsp/clients/index.d.ts +19 -0
  298. package/dist/types/lsp/clients/lsp-linter-client.d.ts +16 -0
  299. package/dist/types/lsp/clients/swiftlint-client.d.ts +20 -0
  300. package/dist/types/lsp/config.d.ts +65 -0
  301. package/dist/types/lsp/edits.d.ts +16 -0
  302. package/dist/types/lsp/index.d.ts +130 -0
  303. package/dist/types/lsp/lspmux.d.ts +58 -0
  304. package/dist/types/lsp/render.d.ts +32 -0
  305. package/dist/types/lsp/startup-events.d.ts +11 -0
  306. package/dist/types/lsp/types.d.ts +302 -0
  307. package/dist/types/lsp/utils.d.ts +108 -0
  308. package/dist/types/main.d.ts +17 -0
  309. package/dist/types/mcp/client.d.ts +74 -0
  310. package/dist/types/mcp/config-writer.d.ts +53 -0
  311. package/dist/types/mcp/config.d.ts +75 -0
  312. package/dist/types/mcp/discoverable-tool-metadata.d.ts +7 -0
  313. package/dist/types/mcp/index.d.ts +18 -0
  314. package/dist/types/mcp/json-rpc.d.ts +22 -0
  315. package/dist/types/mcp/loader.d.ts +43 -0
  316. package/dist/types/mcp/manager.d.ts +193 -0
  317. package/dist/types/mcp/oauth-discovery.d.ts +40 -0
  318. package/dist/types/mcp/oauth-flow.d.ts +59 -0
  319. package/dist/types/mcp/render.d.ts +25 -0
  320. package/dist/types/mcp/smithery-auth.d.ts +16 -0
  321. package/dist/types/mcp/smithery-connect.d.ts +38 -0
  322. package/dist/types/mcp/smithery-registry.d.ts +51 -0
  323. package/dist/types/mcp/tool-bridge.d.ts +86 -0
  324. package/dist/types/mcp/tool-cache.d.ts +8 -0
  325. package/dist/types/mcp/transports/http.d.ts +36 -0
  326. package/dist/types/mcp/transports/index.d.ts +5 -0
  327. package/dist/types/mcp/transports/stdio.d.ts +32 -0
  328. package/dist/types/mcp/types.d.ts +333 -0
  329. package/dist/types/memories/index.d.ts +28 -0
  330. package/dist/types/memories/storage.d.ts +110 -0
  331. package/dist/types/memory-backend/index.d.ts +4 -0
  332. package/dist/types/memory-backend/local-backend.d.ts +9 -0
  333. package/dist/types/memory-backend/off-backend.d.ts +7 -0
  334. package/dist/types/memory-backend/resolve.d.ts +15 -0
  335. package/dist/types/memory-backend/types.d.ts +61 -0
  336. package/dist/types/modes/acp/acp-agent.d.ts +60 -0
  337. package/dist/types/modes/acp/acp-client-bridge.d.ts +9 -0
  338. package/dist/types/modes/acp/acp-event-mapper.d.ts +20 -0
  339. package/dist/types/modes/acp/acp-mode.d.ts +3 -0
  340. package/dist/types/modes/acp/index.d.ts +2 -0
  341. package/dist/types/modes/acp/terminal-auth.d.ts +6 -0
  342. package/dist/types/modes/components/agent-dashboard.d.ts +21 -0
  343. package/dist/types/modes/components/assistant-message.d.ts +16 -0
  344. package/dist/types/modes/components/bash-execution.d.ts +29 -0
  345. package/dist/types/modes/components/bordered-loader.d.ts +11 -0
  346. package/dist/types/modes/components/branch-summary-message.d.ts +13 -0
  347. package/dist/types/modes/components/btw-panel.d.ts +16 -0
  348. package/dist/types/modes/components/compaction-summary-message.d.ts +13 -0
  349. package/dist/types/modes/components/countdown-timer.d.ts +14 -0
  350. package/dist/types/modes/components/custom-editor.d.ts +47 -0
  351. package/dist/types/modes/components/custom-message.d.ts +15 -0
  352. package/dist/types/modes/components/diff.d.ts +11 -0
  353. package/dist/types/modes/components/dynamic-border.d.ts +14 -0
  354. package/dist/types/modes/components/eval-execution.d.ts +23 -0
  355. package/dist/types/modes/components/execution-shared.d.ts +46 -0
  356. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +26 -0
  357. package/dist/types/modes/components/extensions/extension-list.d.ts +39 -0
  358. package/dist/types/modes/components/extensions/index.d.ts +8 -0
  359. package/dist/types/modes/components/extensions/inspector-panel.d.ts +8 -0
  360. package/dist/types/modes/components/extensions/state-manager.d.ts +50 -0
  361. package/dist/types/modes/components/extensions/types.d.ts +151 -0
  362. package/dist/types/modes/components/footer.d.ts +30 -0
  363. package/dist/types/modes/components/history-search.d.ts +7 -0
  364. package/dist/types/modes/components/hook-editor.d.ts +18 -0
  365. package/dist/types/modes/components/hook-input.d.ts +15 -0
  366. package/dist/types/modes/components/hook-message.d.ts +15 -0
  367. package/dist/types/modes/components/hook-selector.d.ts +23 -0
  368. package/dist/types/modes/components/index.d.ts +35 -0
  369. package/dist/types/modes/components/keybinding-hints.d.ts +40 -0
  370. package/dist/types/modes/components/login-dialog.d.ts +32 -0
  371. package/dist/types/modes/components/mcp-add-wizard.d.ts +25 -0
  372. package/dist/types/modes/components/message-frame.d.ts +42 -0
  373. package/dist/types/modes/components/model-selector.d.ts +26 -0
  374. package/dist/types/modes/components/oauth-selector.d.ts +14 -0
  375. package/dist/types/modes/components/plugin-selector.d.ts +26 -0
  376. package/dist/types/modes/components/plugin-settings.d.ts +66 -0
  377. package/dist/types/modes/components/queue-mode-selector.d.ts +9 -0
  378. package/dist/types/modes/components/read-tool-group.d.ts +30 -0
  379. package/dist/types/modes/components/session-observer-overlay.d.ts +11 -0
  380. package/dist/types/modes/components/session-selector.d.ts +30 -0
  381. package/dist/types/modes/components/settings-defs.d.ts +50 -0
  382. package/dist/types/modes/components/settings-selector.d.ts +54 -0
  383. package/dist/types/modes/components/show-images-selector.d.ts +9 -0
  384. package/dist/types/modes/components/skill-message.d.ts +9 -0
  385. package/dist/types/modes/components/status-line/context-thresholds.d.ts +4 -0
  386. package/dist/types/modes/components/status-line/git-utils.d.ts +22 -0
  387. package/dist/types/modes/components/status-line/index.d.ts +4 -0
  388. package/dist/types/modes/components/status-line/presets.d.ts +3 -0
  389. package/dist/types/modes/components/status-line/segments.d.ts +5 -0
  390. package/dist/types/modes/components/status-line/separators.d.ts +3 -0
  391. package/dist/types/modes/components/status-line/token-rate.d.ts +10 -0
  392. package/dist/types/modes/components/status-line/types.d.ts +70 -0
  393. package/dist/types/modes/components/status-line-segment-editor.d.ts +24 -0
  394. package/dist/types/modes/components/status-line.d.ts +61 -0
  395. package/dist/types/modes/components/theme-selector.d.ts +10 -0
  396. package/dist/types/modes/components/thinking-selector.d.ts +10 -0
  397. package/dist/types/modes/components/todo-reminder.d.ts +13 -0
  398. package/dist/types/modes/components/tool-execution.d.ts +53 -0
  399. package/dist/types/modes/components/tree-selector.d.ts +31 -0
  400. package/dist/types/modes/components/ttsr-notification.d.ts +13 -0
  401. package/dist/types/modes/components/user-message-selector.d.ts +28 -0
  402. package/dist/types/modes/components/user-message.d.ts +8 -0
  403. package/dist/types/modes/components/visual-truncate.d.ts +19 -0
  404. package/dist/types/modes/components/welcome.d.ts +33 -0
  405. package/dist/types/modes/controllers/btw-controller.d.ts +10 -0
  406. package/dist/types/modes/controllers/command-controller-shared.d.ts +47 -0
  407. package/dist/types/modes/controllers/command-controller.d.ts +36 -0
  408. package/dist/types/modes/controllers/event-controller.d.ts +12 -0
  409. package/dist/types/modes/controllers/extension-ui-controller.d.ts +80 -0
  410. package/dist/types/modes/controllers/input-controller.d.ts +35 -0
  411. package/dist/types/modes/controllers/mcp-command-controller.d.ts +10 -0
  412. package/dist/types/modes/controllers/selector-controller.d.ts +45 -0
  413. package/dist/types/modes/controllers/ssh-command-controller.d.ts +10 -0
  414. package/dist/types/modes/controllers/todo-command-controller.d.ts +7 -0
  415. package/dist/types/modes/index.d.ts +9 -0
  416. package/dist/types/modes/interactive-mode.d.ts +267 -0
  417. package/dist/types/modes/loop-limit.d.ts +22 -0
  418. package/dist/types/modes/oauth-manual-input.d.ts +8 -0
  419. package/dist/types/modes/print-mode.d.ts +27 -0
  420. package/dist/types/modes/prompt-action-autocomplete.d.ts +42 -0
  421. package/dist/types/modes/rpc/host-tools.d.ts +16 -0
  422. package/dist/types/modes/rpc/host-uris.d.ts +38 -0
  423. package/dist/types/modes/rpc/rpc-client.d.ts +249 -0
  424. package/dist/types/modes/rpc/rpc-mode.d.ts +17 -0
  425. package/dist/types/modes/rpc/rpc-types.d.ts +586 -0
  426. package/dist/types/modes/runtime-init.d.ts +21 -0
  427. package/dist/types/modes/session-observer-registry.d.ts +26 -0
  428. package/dist/types/modes/shared.d.ts +6 -0
  429. package/dist/types/modes/theme/defaults/index.d.ts +9436 -0
  430. package/dist/types/modes/theme/mermaid-cache.d.ts +9 -0
  431. package/dist/types/modes/theme/theme.d.ts +273 -0
  432. package/dist/types/modes/types.d.ts +274 -0
  433. package/dist/types/modes/utils/context-usage.d.ts +30 -0
  434. package/dist/types/modes/utils/hotkeys-markdown.d.ts +5 -0
  435. package/dist/types/modes/utils/keybinding-matchers.d.ts +10 -0
  436. package/dist/types/modes/utils/tools-markdown.d.ts +5 -0
  437. package/dist/types/modes/utils/ui-helpers.d.ts +49 -0
  438. package/dist/types/plan-mode/approved-plan.d.ts +25 -0
  439. package/dist/types/plan-mode/state.d.ts +6 -0
  440. package/dist/types/registry/agent-registry.d.ts +62 -0
  441. package/dist/types/sdk.d.ts +246 -0
  442. package/dist/types/secrets/index.d.ts +9 -0
  443. package/dist/types/secrets/obfuscator.d.ts +23 -0
  444. package/dist/types/secrets/regex.d.ts +2 -0
  445. package/dist/types/session/agent-session.d.ts +898 -0
  446. package/dist/types/session/agent-storage.d.ts +93 -0
  447. package/dist/types/session/artifacts.d.ts +61 -0
  448. package/dist/types/session/auth-storage.d.ts +6 -0
  449. package/dist/types/session/blob-store.d.ts +63 -0
  450. package/dist/types/session/client-bridge.d.ts +84 -0
  451. package/dist/types/session/history-storage.d.ts +16 -0
  452. package/dist/types/session/messages.d.ts +162 -0
  453. package/dist/types/session/session-dump-format.d.ts +22 -0
  454. package/dist/types/session/session-manager.d.ts +539 -0
  455. package/dist/types/session/session-storage.d.ts +82 -0
  456. package/dist/types/session/streaming-output.d.ts +185 -0
  457. package/dist/types/session/tool-choice-queue.d.ts +78 -0
  458. package/dist/types/slash-commands/acp-builtins.d.ts +18 -0
  459. package/dist/types/slash-commands/builtin-registry.d.ts +23 -0
  460. package/dist/types/slash-commands/helpers/context-report.d.ts +7 -0
  461. package/dist/types/slash-commands/helpers/format.d.ts +7 -0
  462. package/dist/types/slash-commands/helpers/marketplace-manager.d.ts +8 -0
  463. package/dist/types/slash-commands/helpers/mcp.d.ts +3 -0
  464. package/dist/types/slash-commands/helpers/parse.d.ts +33 -0
  465. package/dist/types/slash-commands/helpers/ssh.d.ts +3 -0
  466. package/dist/types/slash-commands/helpers/todo.d.ts +3 -0
  467. package/dist/types/slash-commands/helpers/usage-report.d.ts +7 -0
  468. package/dist/types/slash-commands/marketplace-install-parser.d.ts +33 -0
  469. package/dist/types/slash-commands/types.d.ts +119 -0
  470. package/dist/types/ssh/config-writer.d.ts +49 -0
  471. package/dist/types/ssh/connection-manager.d.ts +33 -0
  472. package/dist/types/ssh/ssh-executor.d.ts +37 -0
  473. package/dist/types/ssh/sshfs-mount.d.ts +6 -0
  474. package/dist/types/ssh/utils.d.ts +2 -0
  475. package/dist/types/stt/downloader.d.ts +9 -0
  476. package/dist/types/stt/index.d.ts +3 -0
  477. package/dist/types/stt/recorder.d.ts +13 -0
  478. package/dist/types/stt/setup.d.ts +18 -0
  479. package/dist/types/stt/stt-controller.d.ts +16 -0
  480. package/dist/types/stt/transcriber.d.ts +16 -0
  481. package/dist/types/system-prompt.d.ts +93 -0
  482. package/dist/types/task/agents.d.ts +28 -0
  483. package/dist/types/task/commands.d.ts +35 -0
  484. package/dist/types/task/discovery.d.ts +18 -0
  485. package/dist/types/task/executor.d.ts +106 -0
  486. package/dist/types/task/index.d.ts +38 -0
  487. package/dist/types/task/name-generator.d.ts +16 -0
  488. package/dist/types/task/omp-command.d.ts +7 -0
  489. package/dist/types/task/output-manager.d.ts +36 -0
  490. package/dist/types/task/parallel.d.ts +34 -0
  491. package/dist/types/task/render.d.ts +22 -0
  492. package/dist/types/task/simple-mode.d.ts +8 -0
  493. package/dist/types/task/subprocess-tool-registry.d.ts +72 -0
  494. package/dist/types/task/types.d.ts +251 -0
  495. package/dist/types/task/worktree.d.ts +95 -0
  496. package/dist/types/thinking.d.ts +30 -0
  497. package/dist/types/tool-discovery/tool-index.d.ts +107 -0
  498. package/dist/types/tools/archive-reader.d.ts +40 -0
  499. package/dist/types/tools/ask.d.ts +109 -0
  500. package/dist/types/tools/ast-edit.d.ts +72 -0
  501. package/dist/types/tools/ast-grep.d.ts +64 -0
  502. package/dist/types/tools/auto-generated-guard.d.ts +17 -0
  503. package/dist/types/tools/bash-command-fixup.d.ts +16 -0
  504. package/dist/types/tools/bash-interactive.d.ts +16 -0
  505. package/dist/types/tools/bash-interceptor.d.ts +24 -0
  506. package/dist/types/tools/bash-pty-selection.d.ts +7 -0
  507. package/dist/types/tools/bash-skill-urls.d.ts +31 -0
  508. package/dist/types/tools/bash.d.ts +130 -0
  509. package/dist/types/tools/browser/attach.d.ts +34 -0
  510. package/dist/types/tools/browser/launch.d.ts +60 -0
  511. package/dist/types/tools/browser/readable.d.ts +17 -0
  512. package/dist/types/tools/browser/registry.d.ts +42 -0
  513. package/dist/types/tools/browser/render.d.ts +50 -0
  514. package/dist/types/tools/browser/tab-protocol.d.ts +144 -0
  515. package/dist/types/tools/browser/tab-supervisor.d.ts +63 -0
  516. package/dist/types/tools/browser/tab-worker-entry.d.ts +1 -0
  517. package/dist/types/tools/browser/tab-worker.d.ts +19 -0
  518. package/dist/types/tools/browser.d.ts +114 -0
  519. package/dist/types/tools/calculator.d.ts +76 -0
  520. package/dist/types/tools/checkpoint.d.ts +63 -0
  521. package/dist/types/tools/conflict-detect.d.ts +205 -0
  522. package/dist/types/tools/context.d.ts +19 -0
  523. package/dist/types/tools/debug.d.ts +209 -0
  524. package/dist/types/tools/eval.d.ts +74 -0
  525. package/dist/types/tools/fetch.d.ts +61 -0
  526. package/dist/types/tools/file-recorder.d.ts +13 -0
  527. package/dist/types/tools/find.d.ts +88 -0
  528. package/dist/types/tools/fs-cache-invalidation.d.ts +15 -0
  529. package/dist/types/tools/gh-format.d.ts +6 -0
  530. package/dist/types/tools/gh-renderer.d.ts +25 -0
  531. package/dist/types/tools/gh.d.ts +356 -0
  532. package/dist/types/tools/github-cache.d.ts +103 -0
  533. package/dist/types/tools/grouped-file-output.d.ts +36 -0
  534. package/dist/types/tools/hindsight-recall.d.ts +23 -0
  535. package/dist/types/tools/hindsight-reflect.d.ts +25 -0
  536. package/dist/types/tools/hindsight-retain.d.ts +29 -0
  537. package/dist/types/tools/image-gen.d.ts +78 -0
  538. package/dist/types/tools/index.d.ts +244 -0
  539. package/dist/types/tools/inspect-image-renderer.d.ts +26 -0
  540. package/dist/types/tools/inspect-image.d.ts +31 -0
  541. package/dist/types/tools/irc.d.ts +73 -0
  542. package/dist/types/tools/job.d.ts +65 -0
  543. package/dist/types/tools/json-tree.d.ts +23 -0
  544. package/dist/types/tools/jtd-to-json-schema.d.ts +29 -0
  545. package/dist/types/tools/jtd-to-typescript.d.ts +26 -0
  546. package/dist/types/tools/jtd-utils.d.ts +42 -0
  547. package/dist/types/tools/list-limit.d.ts +12 -0
  548. package/dist/types/tools/match-line-format.d.ts +11 -0
  549. package/dist/types/tools/output-meta.d.ts +204 -0
  550. package/dist/types/tools/path-utils.d.ts +125 -0
  551. package/dist/types/tools/plan-mode-guard.d.ts +18 -0
  552. package/dist/types/tools/read.d.ts +85 -0
  553. package/dist/types/tools/recipe/index.d.ts +45 -0
  554. package/dist/types/tools/recipe/render.d.ts +36 -0
  555. package/dist/types/tools/recipe/runner.d.ts +60 -0
  556. package/dist/types/tools/recipe/runners/cargo.d.ts +16 -0
  557. package/dist/types/tools/recipe/runners/index.d.ts +2 -0
  558. package/dist/types/tools/recipe/runners/just.d.ts +2 -0
  559. package/dist/types/tools/recipe/runners/make.d.ts +2 -0
  560. package/dist/types/tools/recipe/runners/pkg.d.ts +2 -0
  561. package/dist/types/tools/recipe/runners/task.d.ts +2 -0
  562. package/dist/types/tools/render-mermaid.d.ts +37 -0
  563. package/dist/types/tools/render-utils.d.ts +148 -0
  564. package/dist/types/tools/renderers.d.ts +26 -0
  565. package/dist/types/tools/report-tool-issue.d.ts +6 -0
  566. package/dist/types/tools/resolve.d.ts +79 -0
  567. package/dist/types/tools/review.d.ts +50 -0
  568. package/dist/types/tools/search-tool-bm25.d.ts +65 -0
  569. package/dist/types/tools/search.d.ts +90 -0
  570. package/dist/types/tools/sqlite-reader.d.ts +93 -0
  571. package/dist/types/tools/ssh.d.ts +67 -0
  572. package/dist/types/tools/todo-write.d.ts +120 -0
  573. package/dist/types/tools/tool-errors.d.ts +33 -0
  574. package/dist/types/tools/tool-result.d.ts +30 -0
  575. package/dist/types/tools/tool-timeouts.d.ts +51 -0
  576. package/dist/types/tools/vim.d.ts +58 -0
  577. package/dist/types/tools/write.d.ts +59 -0
  578. package/dist/types/tools/yield.d.ts +25 -0
  579. package/dist/types/tui/code-cell.d.ts +32 -0
  580. package/dist/types/tui/file-list.d.ts +16 -0
  581. package/dist/types/tui/index.d.ts +10 -0
  582. package/dist/types/tui/output-block.d.ts +28 -0
  583. package/dist/types/tui/status-line.d.ts +18 -0
  584. package/dist/types/tui/tree-list.d.ts +19 -0
  585. package/dist/types/tui/types.d.ts +13 -0
  586. package/dist/types/tui/utils.d.ts +36 -0
  587. package/dist/types/utils/changelog.d.ts +20 -0
  588. package/dist/types/utils/clipboard.d.ts +20 -0
  589. package/dist/types/utils/command-args.d.ts +9 -0
  590. package/dist/types/utils/commit-message-generator.d.ts +7 -0
  591. package/dist/types/utils/edit-mode.d.ts +13 -0
  592. package/dist/types/utils/event-bus.d.ts +6 -0
  593. package/dist/types/utils/external-editor.d.ts +17 -0
  594. package/dist/types/utils/file-display-mode.d.ts +27 -0
  595. package/dist/types/utils/file-mentions.d.ts +11 -0
  596. package/dist/types/utils/git.d.ts +360 -0
  597. package/dist/types/utils/image-loading.d.ts +26 -0
  598. package/dist/types/utils/image-resize.d.ts +36 -0
  599. package/dist/types/utils/lang-from-path.d.ts +8 -0
  600. package/dist/types/utils/markit.d.ts +7 -0
  601. package/dist/types/utils/open.d.ts +2 -0
  602. package/dist/types/utils/session-color.d.ts +10 -0
  603. package/dist/types/utils/shell-snapshot.d.ts +5 -0
  604. package/dist/types/utils/sixel.d.ts +21 -0
  605. package/dist/types/utils/title-generator.d.ts +31 -0
  606. package/dist/types/utils/tool-choice.d.ts +6 -0
  607. package/dist/types/utils/tools-manager.d.ts +9 -0
  608. package/dist/types/vim/buffer.d.ts +41 -0
  609. package/dist/types/vim/commands.d.ts +6 -0
  610. package/dist/types/vim/engine.d.ts +47 -0
  611. package/dist/types/vim/parser.d.ts +3 -0
  612. package/dist/types/vim/render.d.ts +25 -0
  613. package/dist/types/vim/types.d.ts +182 -0
  614. package/dist/types/web/kagi.d.ts +21 -0
  615. package/dist/types/web/parallel.d.ts +57 -0
  616. package/dist/types/web/scrapers/artifacthub.d.ts +6 -0
  617. package/dist/types/web/scrapers/arxiv.d.ts +5 -0
  618. package/dist/types/web/scrapers/aur.d.ts +5 -0
  619. package/dist/types/web/scrapers/biorxiv.d.ts +5 -0
  620. package/dist/types/web/scrapers/bluesky.d.ts +5 -0
  621. package/dist/types/web/scrapers/brew.d.ts +5 -0
  622. package/dist/types/web/scrapers/cheatsh.d.ts +8 -0
  623. package/dist/types/web/scrapers/chocolatey.d.ts +5 -0
  624. package/dist/types/web/scrapers/choosealicense.d.ts +2 -0
  625. package/dist/types/web/scrapers/cisa-kev.d.ts +5 -0
  626. package/dist/types/web/scrapers/clojars.d.ts +5 -0
  627. package/dist/types/web/scrapers/coingecko.d.ts +5 -0
  628. package/dist/types/web/scrapers/crates-io.d.ts +5 -0
  629. package/dist/types/web/scrapers/crossref.d.ts +2 -0
  630. package/dist/types/web/scrapers/devto.d.ts +5 -0
  631. package/dist/types/web/scrapers/discogs.d.ts +8 -0
  632. package/dist/types/web/scrapers/discourse.d.ts +5 -0
  633. package/dist/types/web/scrapers/dockerhub.d.ts +5 -0
  634. package/dist/types/web/scrapers/docs-rs.d.ts +2 -0
  635. package/dist/types/web/scrapers/fdroid.d.ts +5 -0
  636. package/dist/types/web/scrapers/firefox-addons.d.ts +2 -0
  637. package/dist/types/web/scrapers/flathub.d.ts +2 -0
  638. package/dist/types/web/scrapers/github-gist.d.ts +5 -0
  639. package/dist/types/web/scrapers/github.d.ts +12 -0
  640. package/dist/types/web/scrapers/gitlab.d.ts +5 -0
  641. package/dist/types/web/scrapers/go-pkg.d.ts +5 -0
  642. package/dist/types/web/scrapers/hackage.d.ts +5 -0
  643. package/dist/types/web/scrapers/hackernews.d.ts +2 -0
  644. package/dist/types/web/scrapers/hex.d.ts +5 -0
  645. package/dist/types/web/scrapers/huggingface.d.ts +2 -0
  646. package/dist/types/web/scrapers/iacr.d.ts +5 -0
  647. package/dist/types/web/scrapers/index.d.ts +84 -0
  648. package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +2 -0
  649. package/dist/types/web/scrapers/lemmy.d.ts +2 -0
  650. package/dist/types/web/scrapers/lobsters.d.ts +5 -0
  651. package/dist/types/web/scrapers/mastodon.d.ts +5 -0
  652. package/dist/types/web/scrapers/maven.d.ts +6 -0
  653. package/dist/types/web/scrapers/mdn.d.ts +2 -0
  654. package/dist/types/web/scrapers/metacpan.d.ts +5 -0
  655. package/dist/types/web/scrapers/musicbrainz.d.ts +5 -0
  656. package/dist/types/web/scrapers/npm.d.ts +5 -0
  657. package/dist/types/web/scrapers/nuget.d.ts +5 -0
  658. package/dist/types/web/scrapers/nvd.d.ts +5 -0
  659. package/dist/types/web/scrapers/ollama.d.ts +2 -0
  660. package/dist/types/web/scrapers/open-vsx.d.ts +5 -0
  661. package/dist/types/web/scrapers/opencorporates.d.ts +5 -0
  662. package/dist/types/web/scrapers/openlibrary.d.ts +5 -0
  663. package/dist/types/web/scrapers/orcid.d.ts +5 -0
  664. package/dist/types/web/scrapers/osv.d.ts +5 -0
  665. package/dist/types/web/scrapers/packagist.d.ts +5 -0
  666. package/dist/types/web/scrapers/pub-dev.d.ts +5 -0
  667. package/dist/types/web/scrapers/pubmed.d.ts +5 -0
  668. package/dist/types/web/scrapers/pypi.d.ts +5 -0
  669. package/dist/types/web/scrapers/rawg.d.ts +2 -0
  670. package/dist/types/web/scrapers/readthedocs.d.ts +2 -0
  671. package/dist/types/web/scrapers/reddit.d.ts +5 -0
  672. package/dist/types/web/scrapers/repology.d.ts +5 -0
  673. package/dist/types/web/scrapers/rfc.d.ts +5 -0
  674. package/dist/types/web/scrapers/rubygems.d.ts +5 -0
  675. package/dist/types/web/scrapers/searchcode.d.ts +2 -0
  676. package/dist/types/web/scrapers/sec-edgar.d.ts +5 -0
  677. package/dist/types/web/scrapers/semantic-scholar.d.ts +2 -0
  678. package/dist/types/web/scrapers/snapcraft.d.ts +2 -0
  679. package/dist/types/web/scrapers/sourcegraph.d.ts +2 -0
  680. package/dist/types/web/scrapers/spdx.d.ts +5 -0
  681. package/dist/types/web/scrapers/spotify.d.ts +8 -0
  682. package/dist/types/web/scrapers/stackoverflow.d.ts +6 -0
  683. package/dist/types/web/scrapers/terraform.d.ts +5 -0
  684. package/dist/types/web/scrapers/tldr.d.ts +7 -0
  685. package/dist/types/web/scrapers/twitter.d.ts +5 -0
  686. package/dist/types/web/scrapers/types.d.ts +77 -0
  687. package/dist/types/web/scrapers/utils.d.ts +26 -0
  688. package/dist/types/web/scrapers/vimeo.d.ts +5 -0
  689. package/dist/types/web/scrapers/vscode-marketplace.d.ts +5 -0
  690. package/dist/types/web/scrapers/w3c.d.ts +2 -0
  691. package/dist/types/web/scrapers/wikidata.d.ts +5 -0
  692. package/dist/types/web/scrapers/wikipedia.d.ts +5 -0
  693. package/dist/types/web/scrapers/youtube.d.ts +5 -0
  694. package/dist/types/web/search/index.d.ts +76 -0
  695. package/dist/types/web/search/provider.d.ts +20 -0
  696. package/dist/types/web/search/providers/anthropic.d.ts +27 -0
  697. package/dist/types/web/search/providers/base.d.ts +35 -0
  698. package/dist/types/web/search/providers/brave.d.ts +20 -0
  699. package/dist/types/web/search/providers/codex.d.ts +31 -0
  700. package/dist/types/web/search/providers/exa.d.ts +43 -0
  701. package/dist/types/web/search/providers/gemini.d.ts +60 -0
  702. package/dist/types/web/search/providers/jina.d.ts +25 -0
  703. package/dist/types/web/search/providers/kagi.d.ts +21 -0
  704. package/dist/types/web/search/providers/kimi.d.ts +18 -0
  705. package/dist/types/web/search/providers/parallel.d.ts +14 -0
  706. package/dist/types/web/search/providers/perplexity.d.ts +35 -0
  707. package/dist/types/web/search/providers/searxng.d.ts +43 -0
  708. package/dist/types/web/search/providers/synthetic.d.ts +24 -0
  709. package/dist/types/web/search/providers/tavily.d.ts +22 -0
  710. package/dist/types/web/search/providers/utils.d.ts +24 -0
  711. package/dist/types/web/search/providers/zai.d.ts +19 -0
  712. package/dist/types/web/search/render.d.ts +35 -0
  713. package/dist/types/web/search/types.d.ts +344 -0
  714. package/dist/types/web/search/utils.d.ts +4 -0
  715. package/dist/types/workspace-tree.d.ts +42 -0
  716. package/package.json +124 -123
  717. package/src/config/mcp-schema.json +1 -1
  718. package/src/edit/normalize.ts +1 -1
  719. package/src/extensibility/typebox.ts +1 -1
  720. package/src/hashline/index.ts +0 -1
  721. package/src/hashline/input.ts +8 -11
  722. package/src/hashline/parser.ts +6 -8
  723. package/src/modes/acp/acp-agent.ts +1 -0
  724. package/src/modes/controllers/command-controller.ts +1 -0
  725. package/src/modes/controllers/ssh-command-controller.ts +2 -0
  726. package/src/modes/theme/theme-schema.json +1 -1
  727. package/src/prompts/tools/hashline.md +1 -0
  728. package/src/prompts/tools/read.md +1 -1
  729. package/src/sdk.ts +14 -0
  730. package/src/session/agent-session.ts +49 -0
  731. package/src/slash-commands/builtin-registry.ts +2 -0
  732. package/src/slash-commands/helpers/ssh.ts +2 -0
  733. package/src/ssh/connection-manager.ts +28 -7
  734. package/src/tools/bash-interactive.ts +1 -1
  735. package/src/tools/bash-pty-selection.ts +14 -0
  736. package/src/tools/bash.ts +5 -4
  737. package/src/tools/image-gen.ts +1 -1
  738. package/src/tools/path-utils.ts +2 -2
  739. package/src/tools/read.ts +7 -4
  740. package/src/tools/search.ts +7 -0
  741. package/src/tools/yield.ts +17 -5
  742. package/src/tui/code-cell.ts +18 -3
  743. package/src/web/scrapers/searchcode.ts +1 -2
  744. package/src/hashline/utils.ts +0 -3
@@ -12,7 +12,7 @@
12
12
  * the agent pipeline:
13
13
  *
14
14
  * - `isZodSchema()` keys off the Zod `_zod` marker that every schema carries.
15
- * - `zodToWireSchema()` emits the same draft-7 JSON Schema providers expect
15
+ * - `zodToWireSchema()` emits the same draft 2020-12 JSON Schema providers expect
16
16
  * from TypeBox-authored tools (defaulted fields treated as optional, etc.).
17
17
  *
18
18
  * The surface intentionally covers only the common TypeBox builders. Plugins
@@ -11,4 +11,3 @@ export * from "./prefixes";
11
11
  export * from "./recovery";
12
12
  export * from "./stream";
13
13
  export * from "./types";
14
- export * from "./utils";
@@ -2,7 +2,6 @@ import * as path from "node:path";
2
2
  import { ABORT_MARKER, BEGIN_PATCH_MARKER, END_PATCH_MARKER, FILE_HEADER_PREFIX } from "./constants";
3
3
  import { HL_EDIT_SEP } from "./hash";
4
4
  import type { SplitHashlineOptions } from "./types";
5
- import { stripTrailingCarriageReturn } from "./utils";
6
5
 
7
6
  export interface HashlineInputSection {
8
7
  path: string;
@@ -64,8 +63,7 @@ function stripLeadingBlankLines(input: string): string {
64
63
  }
65
64
 
66
65
  export function containsRecognizableHashlineOperations(input: string): boolean {
67
- for (const rawLine of input.split("\n")) {
68
- const line = stripTrailingCarriageReturn(rawLine);
66
+ for (const line of input.split(/\r?\n/)) {
69
67
  if (/^[+<=-]\s+/.test(line) || line.startsWith(HL_EDIT_SEP)) return true;
70
68
  }
71
69
  return false;
@@ -74,8 +72,8 @@ export function containsRecognizableHashlineOperations(input: string): boolean {
74
72
  function normalizeFallbackInput(input: string, options: SplitHashlineOptions): string {
75
73
  const stripped = input.startsWith("\uFEFF") ? input.slice(1) : input;
76
74
  const hasExplicitHeader = stripped
77
- .split("\n")
78
- .some(rawLine => parseHashlineHeaderLine(stripTrailingCarriageReturn(rawLine), options.cwd) !== null);
75
+ .split(/\r?\n/)
76
+ .some(rawLine => parseHashlineHeaderLine(rawLine, options.cwd) !== null);
79
77
  if (hasExplicitHeader) return input;
80
78
 
81
79
  if (!options.path || !containsRecognizableHashlineOperations(input)) return input;
@@ -91,8 +89,8 @@ export function splitHashlineInput(input: string, options: SplitHashlineOptions
91
89
 
92
90
  export function splitHashlineInputs(input: string, options: SplitHashlineOptions = {}): HashlineInputSection[] {
93
91
  const stripped = stripLeadingBlankLines(normalizeFallbackInput(input, options));
94
- const lines = stripped.split("\n");
95
- const firstLine = stripTrailingCarriageReturn(lines[0] ?? "");
92
+ const lines = stripped.split(/\r?\n/);
93
+ const firstLine = lines[0] ?? "";
96
94
 
97
95
  if (parseHashlineHeaderLine(firstLine, options.cwd) === null) {
98
96
  const preview = JSON.stringify(firstLine.slice(0, 120));
@@ -108,13 +106,12 @@ export function splitHashlineInputs(input: string, options: SplitHashlineOptions
108
106
 
109
107
  const flush = () => {
110
108
  if (currentPath.length === 0) return;
111
- const hasOps = currentLines.some(rawLine => stripTrailingCarriageReturn(rawLine).trim().length > 0);
109
+ const hasOps = currentLines.some(line => line.trim().length > 0);
112
110
  if (hasOps) sections.push({ path: currentPath, diff: currentLines.join("\n") });
113
111
  currentLines = [];
114
112
  };
115
113
 
116
- for (const rawLine of lines) {
117
- const line = stripTrailingCarriageReturn(rawLine);
114
+ for (const line of lines) {
118
115
  if (line.trimEnd() === END_PATCH_MARKER || line.trimEnd() === ABORT_MARKER) break;
119
116
  if (isPatchEnvelopeMarker(line)) continue;
120
117
  const header = parseHashlineHeaderLine(line, options.cwd);
@@ -123,7 +120,7 @@ export function splitHashlineInputs(input: string, options: SplitHashlineOptions
123
120
  currentPath = header.path;
124
121
  currentLines = [];
125
122
  } else {
126
- currentLines.push(rawLine);
123
+ currentLines.push(line);
127
124
  }
128
125
  }
129
126
  flush();
@@ -1,7 +1,6 @@
1
1
  import { ABORT_MARKER, ABORT_WARNING, BEGIN_PATCH_MARKER, END_PATCH_MARKER, RANGE_INTERIOR_HASH } from "./constants";
2
2
  import { describeAnchorExamples, HL_EDIT_SEP, HL_HASH_CAPTURE_RE_RAW } from "./hash";
3
3
  import type { Anchor, HashlineCursor, HashlineEdit } from "./types";
4
- import { stripTrailingCarriageReturn } from "./utils";
5
4
 
6
5
  const LID_CAPTURE_RE = new RegExp(`^${HL_HASH_CAPTURE_RE_RAW}$`);
7
6
 
@@ -85,9 +84,9 @@ function collectPayload(
85
84
  const payload: string[] = [];
86
85
  let index = startIndex;
87
86
  while (index < lines.length) {
88
- const line = stripTrailingCarriageReturn(lines[index]);
87
+ const line = lines[index];
89
88
  if (line.startsWith(HL_EDIT_SEP)) {
90
- payload.push(line.slice(1));
89
+ payload.push(line.slice(1).trimEnd());
91
90
  index++;
92
91
  continue;
93
92
  }
@@ -100,11 +99,10 @@ function collectPayload(
100
99
  // when inserting a blank line.
101
100
  if (line.length === 0) {
102
101
  let lookahead = index + 1;
103
- while (lookahead < lines.length && stripTrailingCarriageReturn(lines[lookahead]).length === 0) {
102
+ while (lookahead < lines.length && lines[lookahead].length === 0) {
104
103
  lookahead++;
105
104
  }
106
- const followedByPayload =
107
- lookahead < lines.length && stripTrailingCarriageReturn(lines[lookahead]).startsWith(HL_EDIT_SEP);
105
+ const followedByPayload = lookahead < lines.length && lines[lookahead].startsWith(HL_EDIT_SEP);
108
106
  const acceptBareBlank = requirePayload && payload.length === 0;
109
107
  if (followedByPayload || acceptBareBlank) {
110
108
  for (let j = index; j < lookahead; j++) payload.push("");
@@ -127,7 +125,7 @@ export function parseHashline(diff: string): HashlineEdit[] {
127
125
  export function parseHashlineWithWarnings(diff: string): { edits: HashlineEdit[]; warnings: string[] } {
128
126
  const edits: HashlineEdit[] = [];
129
127
  const warnings: string[] = [];
130
- const lines = diff.split("\n");
128
+ const lines = diff.split(/\r?\n/);
131
129
  let editIndex = 0;
132
130
 
133
131
  const pushInsert = (cursor: HashlineCursor, text: string, lineNum: number) => {
@@ -136,7 +134,7 @@ export function parseHashlineWithWarnings(diff: string): { edits: HashlineEdit[]
136
134
 
137
135
  for (let i = 0; i < lines.length; ) {
138
136
  const lineNum = i + 1;
139
- const line = stripTrailingCarriageReturn(lines[i]);
137
+ const line = lines[i];
140
138
 
141
139
  if (line.trim().length === 0) {
142
140
  i++;
@@ -1416,6 +1416,7 @@ export class AcpAgent implements Agent {
1416
1416
  resetCapabilities();
1417
1417
  const fileCommands = await loadSlashCommands({ cwd });
1418
1418
  record.session.setSlashCommands(fileCommands);
1419
+ await record.session.refreshSshTool({ activateIfAvailable: true });
1419
1420
  await this.#emitAvailableCommandsUpdate(record);
1420
1421
  }
1421
1422
 
@@ -968,6 +968,7 @@ export class CommandController {
968
968
  clearClaudePluginRootsCache(); // re-warms preloadedPluginRoots with new project dir (async)
969
969
  resetCapabilities();
970
970
  await this.ctx.refreshSlashCommandState(resolvedPath);
971
+ await this.ctx.session.refreshSshTool({ activateIfAvailable: true });
971
972
 
972
973
  this.ctx.statusLine.invalidate();
973
974
  this.ctx.updateEditorTopBorder();
@@ -204,6 +204,7 @@ export class SSHCommandController {
204
204
  if (compat) hostConfig.compat = true;
205
205
 
206
206
  await addSSHHost(filePath, name, hostConfig);
207
+ await this.ctx.session.refreshSshTool({ activateIfAvailable: true });
207
208
 
208
209
  const scopeLabel = scope === "user" ? "user" : "project";
209
210
  const lines = [
@@ -364,6 +365,7 @@ export class SSHCommandController {
364
365
  }
365
366
 
366
367
  await removeSSHHost(filePath, name);
368
+ await this.ctx.session.refreshSshTool();
367
369
 
368
370
  this.#showMessage(
369
371
  ["", theme.fg("success", `✓ Removed SSH host "${name}" from ${scope} config`), ""].join("\n"),
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "OMP Coding Agent Theme",
4
4
  "description": "Theme schema for the OMP coding agent",
5
5
  "type": "object",
@@ -143,4 +143,5 @@ When braces bound your edit, you SHOULD prefer these shapes:
143
143
  - `= A..B` deletes the range; payload is what's written. Edge line matches just outside? Widen, or it duplicates.
144
144
  - Multiple ops are cheap. SHOULD prefer two narrow ops over one wide `=`.
145
145
  - Before `= A..B`, mentally delete A..B. Splits an unclosed bracket/brace/string from above, or orphans a closer inside? You're bisecting a construct.
146
+ - NEVER use this tool to reformat code (indentation, whitespace, line wrapping, style). Run the project's formatter instead.
146
147
  </critical>
@@ -15,7 +15,7 @@ Read files, directories, archives, SQLite databases, images, documents, internal
15
15
  Append `:<sel>` to `path`. The bare path falls back to the default mode.
16
16
 
17
17
  - _(none)_ — parseable code → structural summary (signatures kept, bodies elided); other files → read from the start (up to {{DEFAULT_LIMIT}} lines).
18
- - `:50` — read from line 50 onward.
18
+ - `:50` / `:50-` — read from line 50 onward.
19
19
  - `:50-200` — lines 50–200 inclusive.
20
20
  - `:50+150` — 150 lines starting at line 50.
21
21
  - `:20+1` — exactly one line.
package/src/sdk.ts CHANGED
@@ -1428,6 +1428,17 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
1428
1428
  }
1429
1429
  }
1430
1430
 
1431
+ const reloadSshTool = async (): Promise<AgentTool | null> => {
1432
+ if (!requestedToolNameSet.has("ssh")) return null;
1433
+ const sshTool = (await loadSshTool({
1434
+ ...toolSession,
1435
+ cwd: sessionManager.getCwd(),
1436
+ })) as unknown as AgentTool | null;
1437
+ if (!sshTool) return null;
1438
+ const wrapped = wrapToolWithMetaNotice(sshTool);
1439
+ return (extensionRunner ? new ExtensionToolWrapper(wrapped, extensionRunner) : wrapped) as AgentTool;
1440
+ };
1441
+
1431
1442
  let cursorEventEmitter: ((event: AgentEvent) => void) | undefined;
1432
1443
  const cursorExecHandlers = new CursorExecHandlers({
1433
1444
  cwd,
@@ -1532,6 +1543,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
1532
1543
  (options.toolNames ? [...new Set(options.toolNames.map(name => name.toLowerCase()))] : undefined) ??
1533
1544
  toolNamesFromRegistry;
1534
1545
  const normalizedRequested = requestedToolNames.filter(name => toolRegistry.has(name));
1546
+ const requestedToolNameSet = new Set(normalizedRequested);
1535
1547
  // Effective discovery mode: tools.discoveryMode takes precedence; mcp.discoveryMode is back-compat alias.
1536
1548
  const toolsDiscoveryModeSetting = settings.get("tools.discoveryMode");
1537
1549
  const effectiveDiscoveryMode: "off" | "mcp-only" | "all" =
@@ -1810,6 +1822,8 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
1810
1822
  onResponse,
1811
1823
  convertToLlm: convertToLlmFinal,
1812
1824
  rebuildSystemPrompt,
1825
+ reloadSshTool,
1826
+ requestedToolNames: requestedToolNameSet,
1813
1827
  getMcpServerInstructions: mcpManager
1814
1828
  ? () => {
1815
1829
  const raw = mcpManager.getServerInstructions();
@@ -79,6 +79,7 @@ import {
79
79
  Snowflake,
80
80
  } from "@oh-my-pi/pi-utils";
81
81
  import { type AsyncJob, AsyncJobManager } from "../async";
82
+ import { reset as resetCapabilities } from "../capability";
82
83
  import type { Rule } from "../capability/rule";
83
84
  import { MODEL_ROLE_IDS, type ModelRegistry } from "../config/model-registry";
84
85
  import {
@@ -92,6 +93,7 @@ import {
92
93
  import { expandPromptTemplate, type PromptTemplate } from "../config/prompt-templates";
93
94
  import type { Settings, SkillsSettings } from "../config/settings";
94
95
  import { RawSseDebugBuffer } from "../debug/raw-sse-buffer";
96
+ import { loadCapability } from "../discovery";
95
97
  import { normalizeDiff, normalizeToLF, ParseError, previewPatch, stripBom } from "../edit";
96
98
  import {
97
99
  disposeKernelSessionsByOwner,
@@ -153,6 +155,7 @@ import planModeToolDecisionReminderPrompt from "../prompts/system/plan-mode-tool
153
155
  import ttsrInterruptTemplate from "../prompts/system/ttsr-interrupt.md" with { type: "text" };
154
156
  import { type AgentRegistry, MAIN_AGENT_ID } from "../registry/agent-registry";
155
157
  import { deobfuscateSessionContext, type SecretObfuscator } from "../secrets/obfuscator";
158
+ import { invalidateHostMetadata } from "../ssh/connection-manager";
156
159
  import { resolveThinkingLevelForModel, toReasoningEffort } from "../thinking";
157
160
  import {
158
161
  buildDiscoverableToolSearchIndex,
@@ -274,6 +277,9 @@ export interface AgentSessionConfig {
274
277
  convertToLlm?: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;
275
278
  /** System prompt builder that can consider tool availability. Returns ordered provider-facing blocks. */
276
279
  rebuildSystemPrompt?: (toolNames: string[], tools: Map<string, AgentTool>) => Promise<{ systemPrompt: string[] }>;
280
+ /** Rebuild the SSH tool from current capability discovery results. */
281
+ reloadSshTool?: () => Promise<AgentTool | null>;
282
+ requestedToolNames?: ReadonlySet<string>;
277
283
  /**
278
284
  * Optional accessor for live MCP server instructions. Read by the session's
279
285
  * `rebuildSystemPrompt`-skip optimization to detect server-side instruction
@@ -736,6 +742,8 @@ export class AgentSession {
736
742
  | ((toolNames: string[], tools: Map<string, AgentTool>) => Promise<{ systemPrompt: string[] }>)
737
743
  | undefined;
738
744
  #getMcpServerInstructions: (() => Map<string, string> | undefined) | undefined;
745
+ #reloadSshTool: (() => Promise<AgentTool | null>) | undefined;
746
+ #requestedToolNames: ReadonlySet<string> | undefined;
739
747
  #baseSystemPrompt: string[];
740
748
  /**
741
749
  * Signature of the (toolNames, tool descriptions) tuple passed to the most
@@ -868,6 +876,7 @@ export class AgentSession {
868
876
  this.#modelRegistry = config.modelRegistry;
869
877
  this.#validateRetryFallbackChains();
870
878
  this.#toolRegistry = config.toolRegistry ?? new Map();
879
+ this.#requestedToolNames = config.requestedToolNames;
871
880
  this.#transformContext = config.transformContext ?? (messages => messages);
872
881
  this.#onPayload = config.onPayload;
873
882
  this.rawSseDebugBuffer = config.rawSseDebugBuffer ?? new RawSseDebugBuffer();
@@ -886,6 +895,7 @@ export class AgentSession {
886
895
  this.#convertToLlm = config.convertToLlm ?? convertToLlm;
887
896
  this.#rebuildSystemPrompt = config.rebuildSystemPrompt;
888
897
  this.#getMcpServerInstructions = config.getMcpServerInstructions;
898
+ this.#reloadSshTool = config.reloadSshTool;
889
899
  this.#baseSystemPrompt = this.agent.state.systemPrompt;
890
900
  this.#mcpDiscoveryEnabled = config.mcpDiscoveryEnabled ?? false;
891
901
  this.#setDiscoverableMCPTools(this.#collectDiscoverableMCPToolsFromRegistry());
@@ -3000,6 +3010,45 @@ export class AgentSession {
3000
3010
  }
3001
3011
  }
3002
3012
 
3013
+ /**
3014
+ * Reload the SSH tool from disk-backed capability discovery and make the
3015
+ * refreshed definition visible to the next model call without restarting.
3016
+ */
3017
+ async refreshSshTool(options?: { activateIfAvailable?: boolean }): Promise<void> {
3018
+ resetCapabilities();
3019
+ if (!this.#reloadSshTool) return;
3020
+ const previousSshTool = this.#toolRegistry.get("ssh");
3021
+ const previousActiveToolNames = this.getActiveToolNames();
3022
+ const hadSshTool = previousSshTool !== undefined;
3023
+ const wasActive = previousActiveToolNames.includes("ssh");
3024
+ const previousHostNames =
3025
+ previousSshTool && "hostNames" in previousSshTool && Array.isArray(previousSshTool.hostNames)
3026
+ ? [...previousSshTool.hostNames]
3027
+ : [];
3028
+ const candidateHostNames = new Set(previousHostNames);
3029
+ const capability = await loadCapability<{ name: string }>("ssh", { cwd: this.sessionManager.getCwd() });
3030
+ for (const host of capability.items) {
3031
+ if (typeof host?.name === "string") {
3032
+ candidateHostNames.add(host.name);
3033
+ }
3034
+ }
3035
+ await invalidateHostMetadata(candidateHostNames);
3036
+ const sshAllowed = this.#requestedToolNames === undefined || this.#requestedToolNames.has("ssh");
3037
+ const refreshedTool = await this.#reloadSshTool();
3038
+ if (refreshedTool) {
3039
+ this.#toolRegistry.set(refreshedTool.name, refreshedTool);
3040
+ } else {
3041
+ this.#toolRegistry.delete("ssh");
3042
+ this.#selectedDiscoveredToolNames.delete("ssh");
3043
+ }
3044
+
3045
+ const nextActive = previousActiveToolNames.filter(name => name !== "ssh" && this.#toolRegistry.has(name));
3046
+ if (refreshedTool && sshAllowed && (wasActive || (options?.activateIfAvailable && !hadSshTool))) {
3047
+ nextActive.push(refreshedTool.name);
3048
+ }
3049
+ await this.#applyActiveToolsByName(nextActive);
3050
+ }
3051
+
3003
3052
  /**
3004
3053
  * Set active tools by name.
3005
3054
  * Only tools in the registry can be enabled. Unknown tool names are ignored.
@@ -1506,6 +1506,7 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
1506
1506
  const projectPath = await resolveActiveProjectRegistryPath(runtime.ctx.sessionManager.getCwd());
1507
1507
  clearPluginRootsAndCaches(projectPath ? [projectPath] : undefined);
1508
1508
  await runtime.ctx.refreshSlashCommandState();
1509
+ await runtime.ctx.session.refreshSshTool({ activateIfAvailable: true });
1509
1510
  runtime.ctx.showStatus("Plugins reloaded.");
1510
1511
  runtime.ctx.editor.setText("");
1511
1512
  },
@@ -1632,6 +1633,7 @@ export async function executeBuiltinSlashCommand(
1632
1633
  const projectPath = await resolveActiveProjectRegistryPath(ctx.sessionManager.getCwd());
1633
1634
  clearPluginRootsAndCaches(projectPath ? [projectPath] : undefined);
1634
1635
  await ctx.refreshSlashCommandState();
1636
+ await ctx.session.refreshSshTool({ activateIfAvailable: true });
1635
1637
  },
1636
1638
  };
1637
1639
  const result = await command.handle(parsed, adapted);
@@ -142,6 +142,7 @@ async function handleRemoveCommand(rest: string, runtime: SlashCommandRuntime):
142
142
  try {
143
143
  const filePath = getSSHConfigPath(parsed.scope, runtime.cwd);
144
144
  await removeSSHHost(filePath, parsed.name);
145
+ await runtime.session.refreshSshTool();
145
146
  await runtime.output(`Removed SSH host "${parsed.name}" from ${parsed.scope} config.`);
146
147
  return commandConsumed();
147
148
  } catch (err) {
@@ -162,6 +163,7 @@ async function handleAddCommand(rest: string, runtime: SlashCommandRuntime): Pro
162
163
  try {
163
164
  const filePath = getSSHConfigPath(parsed.scope, runtime.cwd);
164
165
  await addSSHHost(filePath, parsed.name, hostConfig);
166
+ await runtime.session.refreshSshTool({ activateIfAvailable: true });
165
167
  await runtime.output(`Added SSH host "${parsed.name}" (${parsed.scope}).`);
166
168
  return commandConsumed();
167
169
  } catch (err) {
@@ -55,6 +55,16 @@ function getHostInfoPath(name: string): string {
55
55
  return path.join(HOST_INFO_DIR, `${sanitizeHostName(name)}.json`);
56
56
  }
57
57
 
58
+ async function deleteHostInfoFromDisk(hostName: string): Promise<void> {
59
+ const path = getHostInfoPath(hostName);
60
+ try {
61
+ await fs.promises.unlink(path);
62
+ } catch (err) {
63
+ if (isEnoent(err)) return;
64
+ logger.warn("Failed to delete SSH host info", { host: hostName, error: String(err) });
65
+ }
66
+ }
67
+
58
68
  async function validateKeyPermissions(keyPath?: string): Promise<void> {
59
69
  if (!keyPath) return;
60
70
  let stats: fs.Stats;
@@ -429,6 +439,23 @@ export async function ensureConnection(host: SSHConnectionTarget): Promise<void>
429
439
  }
430
440
  }
431
441
 
442
+ export async function invalidateHostMetadata(hostNames: Iterable<string>): Promise<void> {
443
+ const names = [...hostNames];
444
+ for (const hostName of names) {
445
+ hostInfoCache.delete(hostName);
446
+ await deleteHostInfoFromDisk(hostName);
447
+ }
448
+ for (const hostName of names) {
449
+ const activeHost = activeHosts.get(hostName);
450
+ if (activeHost) {
451
+ await closeConnectionInternal(activeHost);
452
+ activeHosts.delete(hostName);
453
+ continue;
454
+ }
455
+ await closeConnectionInternal({ name: hostName, host: hostName });
456
+ }
457
+ }
458
+
432
459
  async function closeConnectionInternal(host: SSHConnectionTarget): Promise<void> {
433
460
  if (!supportsSshControlMaster()) return;
434
461
  const target = buildSshTarget(host.username, host.host);
@@ -436,13 +463,7 @@ async function closeConnectionInternal(host: SSHConnectionTarget): Promise<void>
436
463
  }
437
464
 
438
465
  export async function closeConnection(hostName: string): Promise<void> {
439
- const host = activeHosts.get(hostName);
440
- if (!host) {
441
- await closeConnectionInternal({ name: hostName, host: hostName });
442
- return;
443
- }
444
- await closeConnectionInternal(host);
445
- activeHosts.delete(hostName);
466
+ await invalidateHostMetadata([hostName]);
446
467
  }
447
468
 
448
469
  export async function closeAllConnections(): Promise<void> {
@@ -27,7 +27,7 @@ export interface BashInteractiveResult extends OutputSummary {
27
27
  }
28
28
 
29
29
  function normalizeCaptureChunk(chunk: string): string {
30
- const normalized = chunk.replace(/\r\n/gu, "\n").replace(/\r/gu, "\n");
30
+ const normalized = chunk.replace(/\r\n?/gu, "\n");
31
31
  return sanitizeWithOptionalSixelPassthrough(normalized, sanitizeText);
32
32
  }
33
33
 
@@ -0,0 +1,14 @@
1
+ import { $env } from "@oh-my-pi/pi-utils/env";
2
+
3
+ /** Minimal UI-capability fields needed to decide whether bash can use the local PTY overlay. */
4
+ export interface BashPtyContext {
5
+ hasUI?: boolean;
6
+ ui?: unknown;
7
+ }
8
+
9
+ /** Return whether a bash tool call should use the local interactive PTY overlay. */
10
+ export function canUseInteractiveBashPty(pty: boolean, ctx: BashPtyContext | undefined): boolean {
11
+ if (!pty) return false;
12
+ if (process.platform === "win32") return false;
13
+ return $env.PI_NO_PTY !== "1" && ctx?.hasUI === true && ctx.ui !== undefined;
14
+ }
package/src/tools/bash.ts CHANGED
@@ -2,7 +2,7 @@ import * as fs from "node:fs";
2
2
  import type { AgentTool, AgentToolContext, AgentToolResult, AgentToolUpdateCallback } from "@oh-my-pi/pi-agent-core";
3
3
  import type { Component } from "@oh-my-pi/pi-tui";
4
4
  import { ImageProtocol, TERMINAL, Text } from "@oh-my-pi/pi-tui";
5
- import { $env, getProjectDir, isEnoent, logger, prompt } from "@oh-my-pi/pi-utils";
5
+ import { getProjectDir, isEnoent, logger, prompt } from "@oh-my-pi/pi-utils";
6
6
  import * as z from "zod/v4";
7
7
  import { AsyncJobManager } from "../async";
8
8
  import { type BashResult, executeBash } from "../exec/bash-executor";
@@ -20,6 +20,7 @@ import type { ToolSession } from ".";
20
20
  import { applyBashFixups, formatBashFixupNotice } from "./bash-command-fixup";
21
21
  import { type BashInteractiveResult, runInteractiveBashPty } from "./bash-interactive";
22
22
  import { checkBashInterception } from "./bash-interceptor";
23
+ import { canUseInteractiveBashPty } from "./bash-pty-selection";
23
24
  import { expandInternalUrls, type InternalUrlExpansionOptions } from "./bash-skill-urls";
24
25
  import { formatStyledTruncationWarning, type OutputMeta, stripOutputNotice } from "./output-meta";
25
26
  import { resolveToCwd } from "./path-utils";
@@ -807,9 +808,9 @@ export class BashTool implements AgentTool<BashToolSchema, BashToolDetails> {
807
808
  // Allocate artifact for truncated output storage
808
809
  const { path: artifactPath, id: artifactId } = (await this.session.allocateOutputArtifact?.("bash")) ?? {};
809
810
 
810
- const usePty = pty && $env.PI_NO_PTY !== "1" && ctx?.hasUI === true && ctx.ui !== undefined;
811
- const result: BashResult | BashInteractiveResult = usePty
812
- ? await runInteractiveBashPty(ctx.ui!, {
811
+ const interactiveUi = canUseInteractiveBashPty(pty, ctx) ? ctx?.ui : undefined;
812
+ const result: BashResult | BashInteractiveResult = interactiveUi
813
+ ? await runInteractiveBashPty(interactiveUi, {
813
814
  command,
814
815
  cwd: commandCwd,
815
816
  timeoutMs,
@@ -1075,7 +1075,7 @@ export const imageGenTool: CustomTool<typeof imageGenSchema, ImageGenToolDetails
1075
1075
  headers: {
1076
1076
  "Content-Type": "application/json",
1077
1077
  Authorization: `Bearer ${apiKey.apiKey}`,
1078
- "HTTP-Referer": "https://github.com/can1357/oh-my-pi",
1078
+ "HTTP-Referer": "https://omp.sh/",
1079
1079
  "X-OpenRouter-Title": "Oh-My-Pi",
1080
1080
  "X-OpenRouter-Categories": "cli-agent",
1081
1081
  },
@@ -7,8 +7,8 @@ import { InternalUrlRouter } from "../internal-urls";
7
7
  import { ToolError } from "./tool-errors";
8
8
 
9
9
  const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
10
- const FILE_LINE_RANGE_RE = /^(?:L?\d+(?:[-+]L?\d+)?(?:,L?\d+(?:[-+]L?\d+)?)*|raw|conflicts)$/i;
11
- const FILE_LINE_RANGE_ONLY_RE = /^L?\d+(?:[-+]L?\d+)?(?:,L?\d+(?:[-+]L?\d+)?)*$/i;
10
+ const FILE_LINE_RANGE_RE = /^(?:L?\d+(?:[-+]L?\d+|-)?(?:,L?\d+(?:[-+]L?\d+|-)?)*|raw|conflicts)$/i;
11
+ const FILE_LINE_RANGE_ONLY_RE = /^L?\d+(?:[-+]L?\d+|-)?(?:,L?\d+(?:[-+]L?\d+|-)?)*$/i;
12
12
  const FILE_RAW_ONLY_RE = /^raw$/i;
13
13
  const NARROW_NO_BREAK_SPACE = "\u202F";
14
14
  const TOP_LEVEL_INTERNAL_URL_PREFIXES = [
package/src/tools/read.ts CHANGED
@@ -513,7 +513,7 @@ type ParsedSelector =
513
513
  | { kind: "conflicts" }
514
514
  | { kind: "lines"; ranges: [LineRange, ...LineRange[]]; raw?: boolean };
515
515
 
516
- const LINE_RANGE_RE = /^L?(\d+)(?:([-+])L?(\d+))?$/i;
516
+ const LINE_RANGE_RE = /^L?(\d+)(?:([-+])L?(\d+)?)?$/i;
517
517
 
518
518
  /** Returns true when the selector requested verbatim/raw output (alone or combined with a range). */
519
519
  function isRawSelector(parsed: ParsedSelector): boolean {
@@ -541,10 +541,13 @@ function parseLineRangeChunk(sel: string): LineRange | null {
541
541
  }
542
542
  rawEnd = rawStart + rhs - 1;
543
543
  } else if (sep === "-") {
544
- if (rhs === undefined || rhs < rawStart) {
545
- throw new ToolError(`Invalid range ${rawStart}-${rhs ?? 0}: end must be >= start.`);
544
+ // `301-` is shorthand for "from 301 onward" — equivalent to bare `301`.
545
+ if (rhs !== undefined) {
546
+ if (rhs < rawStart) {
547
+ throw new ToolError(`Invalid range ${rawStart}-${rhs}: end must be >= start.`);
548
+ }
549
+ rawEnd = rhs;
546
550
  }
547
- rawEnd = rhs;
548
551
  }
549
552
  return { startLine: rawStart, endLine: rawEnd };
550
553
  }
@@ -328,11 +328,18 @@ export class SearchTool implements AgentTool<typeof searchSchema, SearchToolDeta
328
328
  return nextWidth;
329
329
  }, 0);
330
330
  const cacheEntries: Array<readonly [number, string]> = [];
331
+ let lastEmittedLine: number | undefined;
332
+ const gutterPad = " ".repeat(lineNumberWidth + 1);
331
333
  for (const match of fileMatches) {
332
334
  const pushLine = (lineNumber: number, line: string, isMatch: boolean, recordable: boolean) => {
335
+ if (lastEmittedLine !== undefined && lineNumber > lastEmittedLine + 1) {
336
+ modelOut.push("...");
337
+ displayOut.push(`${gutterPad}│...`);
338
+ }
333
339
  modelOut.push(formatMatchLine(lineNumber, line, isMatch, { useHashLines }));
334
340
  displayOut.push(formatCodeFrameLine(isMatch ? "*" : " ", lineNumber, line, lineNumberWidth));
335
341
  if (recordable) cacheEntries.push([lineNumber, line] as const);
342
+ lastEmittedLine = lineNumber;
336
343
  };
337
344
  if (match.contextBefore) {
338
345
  for (const ctx of match.contextBefore) {
@@ -11,6 +11,7 @@ import {
11
11
  type JsonSchemaValidationIssue,
12
12
  type JsonSchemaValidationResult,
13
13
  sanitizeSchemaForStrictMode,
14
+ tryEnforceStrictSchema,
14
15
  validateJsonSchemaValue,
15
16
  } from "@oh-my-pi/pi-ai/utils/schema";
16
17
  import { subprocessToolRegistry } from "../task/subprocess-tool-registry";
@@ -140,15 +141,25 @@ export class YieldTool implements AgentTool<TSchema, YieldDetails> {
140
141
  const schemaDescription = schemaError
141
142
  ? `Structured JSON output (output schema invalid; accepting unconstrained object): ${schemaError}`
142
143
  : `Structured output matching the schema:\n${schemaHint}`;
143
- const sanitizedSchema =
144
+ let sanitizedSchema: Record<string, unknown> | undefined;
145
+ if (
144
146
  !schemaError &&
145
147
  normalizedSchema != null &&
146
148
  typeof normalizedSchema === "object" &&
147
149
  !Array.isArray(normalizedSchema)
148
- ? sanitizeSchemaForStrictMode(normalizedSchema as Record<string, unknown>)
149
- : !schemaError && normalizedSchema === true
150
- ? {}
151
- : undefined;
150
+ ) {
151
+ const normalizedRecord = normalizedSchema as Record<string, unknown>;
152
+ const strictProbe = tryEnforceStrictSchema(normalizedRecord);
153
+ if (strictProbe.strict) {
154
+ sanitizedSchema = sanitizeSchemaForStrictMode(normalizedRecord);
155
+ } else {
156
+ sanitizedSchema = normalizedRecord;
157
+ this.strict = false;
158
+ }
159
+ } else if (!schemaError && normalizedSchema === true) {
160
+ sanitizedSchema = {};
161
+ this.strict = false;
162
+ }
152
163
 
153
164
  let dataSchema: Record<string, unknown>;
154
165
  if (sanitizedSchema !== undefined) {
@@ -161,6 +172,7 @@ export class YieldTool implements AgentTool<TSchema, YieldDetails> {
161
172
  }
162
173
  dataSchema = resolved;
163
174
  } else {
175
+ this.strict = false;
164
176
  dataSchema = looseRecordSchema(
165
177
  schemaError ? schemaDescription : "Structured JSON output (no schema specified)",
166
178
  );
@@ -77,13 +77,28 @@ function formatHeader(options: CodeCellOptions, theme: Theme): { title: string;
77
77
  return { title: headerTitle, meta: metaParts.join(theme.fg("dim", theme.sep.dot)) };
78
78
  }
79
79
 
80
+ /**
81
+ * Normalize terminal control characters that would otherwise corrupt TUI rendering:
82
+ * - Collapse `\r\n` to `\n`.
83
+ * - Within a line, treat `\r` as a cursor-return overwrite by keeping only the
84
+ * final segment (mirrors how rsync/curl/pip progress bars render to a terminal).
85
+ * Splits on `\n` and returns the cleaned lines.
86
+ */
87
+ function sanitizeTerminalLines(text: string): string[] {
88
+ return text.split(/\r?\n/).map(collapseCarriageReturns);
89
+ }
90
+
91
+ function collapseCarriageReturns(line: string): string {
92
+ const idx = line.lastIndexOf("\r");
93
+ return idx < 0 ? line : line.slice(idx + 1);
94
+ }
80
95
  export function renderCodeCell(options: CodeCellOptions, theme: Theme): string[] {
81
96
  const { code, language, output, expanded = false, outputMaxLines = 6, codeMaxLines = 12, width } = options;
82
97
  const { title, meta } = formatHeader(options, theme);
83
98
  const state = getState(options.status);
84
99
 
85
100
  const normalizedCode = replaceTabs(code ?? "");
86
- const rawCodeLines = normalizedCode.split("\n");
101
+ const rawCodeLines = sanitizeTerminalLines(normalizedCode);
87
102
  const maxCodeLines = expanded ? rawCodeLines.length : Math.min(rawCodeLines.length, codeMaxLines);
88
103
  const visibleCode = rawCodeLines.slice(0, maxCodeLines).join("\n");
89
104
  const codeLines = highlightCode(visibleCode, language);
@@ -96,7 +111,7 @@ export function renderCodeCell(options: CodeCellOptions, theme: Theme): string[]
96
111
 
97
112
  const outputLines: string[] = [];
98
113
  if (output?.trim()) {
99
- const rawLines = output.split("\n");
114
+ const rawLines = sanitizeTerminalLines(output);
100
115
  const maxLines = expanded ? rawLines.length : Math.min(rawLines.length, outputMaxLines);
101
116
  const displayLines = rawLines
102
117
  .slice(0, maxLines)
@@ -163,7 +178,7 @@ export function renderMarkdownCell(options: MarkdownCellOptions, theme: Theme):
163
178
 
164
179
  const outputLines: string[] = [];
165
180
  if (output?.trim()) {
166
- const rawLines = output.split("\n");
181
+ const rawLines = sanitizeTerminalLines(output);
167
182
  const maxLines = expanded ? rawLines.length : Math.min(rawLines.length, outputMaxLines);
168
183
  const displayLines = rawLines
169
184
  .slice(0, maxLines)
@@ -55,8 +55,7 @@ function formatCodeBlock(
55
55
  ): string | null {
56
56
  if (!code) return null;
57
57
 
58
- const normalized = code.replace(/\r\n/g, "\n").trimEnd();
59
- const codeLines = normalized.split("\n");
58
+ const codeLines = code.trimEnd().split(/\r?\n/);
60
59
  const languageTag = typeof language === "string" ? language.trim().toLowerCase() : "";
61
60
 
62
61
  let displayLines = codeLines;