@oh-my-pi/pi-coding-agent 15.1.1 → 15.1.3

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 (844) hide show
  1. package/CHANGELOG.md +54 -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/auth-broker-cli.d.ts +25 -0
  36. package/dist/types/cli/auth-gateway-cli.d.ts +18 -0
  37. package/dist/types/cli/classify-install-target.d.ts +18 -0
  38. package/dist/types/cli/commands/init-xdg.d.ts +1 -0
  39. package/dist/types/cli/config-cli.d.ts +22 -0
  40. package/dist/types/cli/file-processor.d.ts +11 -0
  41. package/dist/types/cli/grep-cli.d.ts +17 -0
  42. package/dist/types/cli/grievances-cli.d.ts +37 -0
  43. package/dist/types/cli/initial-message.d.ts +17 -0
  44. package/dist/types/cli/list-models.d.ts +30 -0
  45. package/dist/types/cli/plugin-cli.d.ts +32 -0
  46. package/dist/types/cli/read-cli.d.ts +4 -0
  47. package/dist/types/cli/session-picker.d.ts +3 -0
  48. package/dist/types/cli/setup-cli.d.ts +24 -0
  49. package/dist/types/cli/shell-cli.d.ts +8 -0
  50. package/dist/types/cli/ssh-cli.d.ts +21 -0
  51. package/dist/types/cli/stats-cli.d.ts +17 -0
  52. package/dist/types/cli/update-cli.d.ts +20 -0
  53. package/dist/types/cli/web-search-cli.d.ts +20 -0
  54. package/dist/types/cli.d.ts +3 -0
  55. package/dist/types/commands/acp.d.ts +12 -0
  56. package/dist/types/commands/agents.d.ts +34 -0
  57. package/dist/types/commands/auth-broker.d.ts +54 -0
  58. package/dist/types/commands/auth-gateway.d.ts +32 -0
  59. package/dist/types/commands/commit.d.ts +27 -0
  60. package/dist/types/commands/config.d.ts +30 -0
  61. package/dist/types/commands/grep.d.ts +42 -0
  62. package/dist/types/commands/grievances.d.ts +40 -0
  63. package/dist/types/commands/launch.d.ts +118 -0
  64. package/dist/types/commands/plugin.d.ts +52 -0
  65. package/dist/types/commands/read.d.ts +15 -0
  66. package/dist/types/commands/setup.d.ts +25 -0
  67. package/dist/types/commands/shell.d.ts +21 -0
  68. package/dist/types/commands/ssh.d.ts +48 -0
  69. package/dist/types/commands/stats.d.ts +25 -0
  70. package/dist/types/commands/update.d.ts +20 -0
  71. package/dist/types/commands/web-search.d.ts +33 -0
  72. package/dist/types/commit/agentic/agent.d.ts +31 -0
  73. package/dist/types/commit/agentic/fallback.d.ts +5 -0
  74. package/dist/types/commit/agentic/index.d.ts +2 -0
  75. package/dist/types/commit/agentic/state.d.ts +58 -0
  76. package/dist/types/commit/agentic/tools/analyze-file.d.ts +19 -0
  77. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +10 -0
  78. package/dist/types/commit/agentic/tools/git-hunk.d.ts +9 -0
  79. package/dist/types/commit/agentic/tools/git-overview.d.ts +9 -0
  80. package/dist/types/commit/agentic/tools/index.d.ts +16 -0
  81. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +28 -0
  82. package/dist/types/commit/agentic/tools/propose-commit.d.ts +36 -0
  83. package/dist/types/commit/agentic/tools/recent-commits.d.ts +7 -0
  84. package/dist/types/commit/agentic/tools/schemas.d.ts +27 -0
  85. package/dist/types/commit/agentic/tools/split-commit.d.ts +53 -0
  86. package/dist/types/commit/agentic/topo-sort.d.ts +4 -0
  87. package/dist/types/commit/agentic/trivial.d.ts +7 -0
  88. package/dist/types/commit/agentic/validation.d.ts +20 -0
  89. package/dist/types/commit/analysis/conventional.d.ts +22 -0
  90. package/dist/types/commit/analysis/index.d.ts +4 -0
  91. package/dist/types/commit/analysis/scope.d.ts +6 -0
  92. package/dist/types/commit/analysis/summary.d.ts +19 -0
  93. package/dist/types/commit/analysis/validation.d.ts +8 -0
  94. package/dist/types/commit/changelog/detect.d.ts +2 -0
  95. package/dist/types/commit/changelog/generate.d.ts +30 -0
  96. package/dist/types/commit/changelog/index.d.ts +30 -0
  97. package/dist/types/commit/changelog/parse.d.ts +2 -0
  98. package/dist/types/commit/cli.d.ts +3 -0
  99. package/dist/types/commit/git/diff.d.ts +5 -0
  100. package/dist/types/commit/index.d.ts +4 -0
  101. package/dist/types/commit/map-reduce/index.d.ts +28 -0
  102. package/dist/types/commit/map-reduce/map-phase.d.ts +17 -0
  103. package/dist/types/commit/map-reduce/reduce-phase.d.ts +13 -0
  104. package/dist/types/commit/map-reduce/utils.d.ts +2 -0
  105. package/dist/types/commit/message.d.ts +2 -0
  106. package/dist/types/commit/model-selection.d.ts +15 -0
  107. package/dist/types/commit/pipeline.d.ts +5 -0
  108. package/dist/types/commit/shared-llm.d.ts +54 -0
  109. package/dist/types/commit/types.d.ts +78 -0
  110. package/dist/types/commit/utils/exclusions.d.ts +4 -0
  111. package/dist/types/commit/utils.d.ts +20 -0
  112. package/dist/types/config/config-file.d.ts +58 -0
  113. package/dist/types/config/file-lock.d.ts +6 -0
  114. package/dist/types/config/keybindings.d.ts +334 -0
  115. package/dist/types/config/model-equivalence.d.ts +24 -0
  116. package/dist/types/config/model-registry.d.ts +363 -0
  117. package/dist/types/config/model-resolver.d.ts +230 -0
  118. package/dist/types/config/models-config-schema.d.ts +503 -0
  119. package/dist/types/config/prompt-templates.d.ts +32 -0
  120. package/dist/types/config/resolve-config-value.d.ts +17 -0
  121. package/dist/types/config/settings-schema.d.ts +3361 -0
  122. package/dist/types/config/settings.d.ts +126 -0
  123. package/dist/types/config.d.ts +66 -0
  124. package/dist/types/cursor.d.ts +22 -0
  125. package/dist/types/dap/client.d.ts +38 -0
  126. package/dist/types/dap/config.d.ts +6 -0
  127. package/dist/types/dap/index.d.ts +4 -0
  128. package/dist/types/dap/session.d.ts +108 -0
  129. package/dist/types/dap/types.d.ts +524 -0
  130. package/dist/types/debug/index.d.ts +15 -0
  131. package/dist/types/debug/log-formatting.d.ts +4 -0
  132. package/dist/types/debug/log-viewer.d.ts +68 -0
  133. package/dist/types/debug/profiler.d.ts +24 -0
  134. package/dist/types/debug/raw-sse-buffer.d.ts +44 -0
  135. package/dist/types/debug/raw-sse.d.ts +16 -0
  136. package/dist/types/debug/report-bundle.d.ts +55 -0
  137. package/dist/types/debug/system-info.d.ts +26 -0
  138. package/dist/types/discovery/agents-md.d.ts +1 -0
  139. package/dist/types/discovery/agents.d.ts +12 -0
  140. package/dist/types/discovery/builtin.d.ts +1 -0
  141. package/dist/types/discovery/claude-plugins.d.ts +1 -0
  142. package/dist/types/discovery/claude.d.ts +1 -0
  143. package/dist/types/discovery/cline.d.ts +1 -0
  144. package/dist/types/discovery/codex.d.ts +1 -0
  145. package/dist/types/discovery/cursor.d.ts +16 -0
  146. package/dist/types/discovery/gemini.d.ts +1 -0
  147. package/dist/types/discovery/github.d.ts +1 -0
  148. package/dist/types/discovery/helpers.d.ts +267 -0
  149. package/dist/types/discovery/index.d.ts +51 -0
  150. package/dist/types/discovery/mcp-json.d.ts +1 -0
  151. package/dist/types/discovery/opencode.d.ts +1 -0
  152. package/dist/types/discovery/plugin-dir-roots.d.ts +15 -0
  153. package/dist/types/discovery/ssh.d.ts +1 -0
  154. package/dist/types/discovery/substitute-plugin-root.d.ts +5 -0
  155. package/dist/types/discovery/vscode.d.ts +1 -0
  156. package/dist/types/discovery/windsurf.d.ts +13 -0
  157. package/dist/types/edit/apply-patch/index.d.ts +35 -0
  158. package/dist/types/edit/apply-patch/parser.d.ts +34 -0
  159. package/dist/types/edit/diff.d.ts +59 -0
  160. package/dist/types/edit/file-read-cache.d.ts +25 -0
  161. package/dist/types/edit/index.d.ts +58 -0
  162. package/dist/types/edit/modes/apply-patch.d.ts +24 -0
  163. package/dist/types/edit/modes/patch.d.ts +99 -0
  164. package/dist/types/edit/modes/replace.d.ts +142 -0
  165. package/dist/types/edit/normalize.d.ts +43 -0
  166. package/dist/types/edit/notebook.d.ts +23 -0
  167. package/dist/types/edit/read-file.d.ts +2 -0
  168. package/dist/types/edit/renderer.d.ts +110 -0
  169. package/dist/types/edit/streaming.d.ts +59 -0
  170. package/dist/types/eval/backend.d.ts +40 -0
  171. package/dist/types/eval/index.d.ts +4 -0
  172. package/dist/types/eval/js/context-manager.d.ts +24 -0
  173. package/dist/types/eval/js/executor.d.ts +28 -0
  174. package/dist/types/eval/js/index.d.ts +10 -0
  175. package/dist/types/eval/js/shared/helpers.d.ts +38 -0
  176. package/dist/types/eval/js/shared/indirect-eval.d.ts +14 -0
  177. package/dist/types/eval/js/shared/prelude.d.ts +1 -0
  178. package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -0
  179. package/dist/types/eval/js/shared/runtime.d.ts +47 -0
  180. package/dist/types/eval/js/shared/types.d.ts +24 -0
  181. package/dist/types/eval/js/tool-bridge.d.ts +18 -0
  182. package/dist/types/eval/js/worker-core.d.ts +5 -0
  183. package/dist/types/eval/js/worker-entry.d.ts +1 -0
  184. package/dist/types/eval/js/worker-protocol.d.ts +77 -0
  185. package/dist/types/eval/py/display.d.ts +25 -0
  186. package/dist/types/eval/py/executor.d.ts +83 -0
  187. package/dist/types/eval/py/index.d.ts +10 -0
  188. package/dist/types/eval/py/kernel.d.ts +55 -0
  189. package/dist/types/eval/py/prelude.d.ts +1 -0
  190. package/dist/types/eval/py/runtime.d.ts +21 -0
  191. package/dist/types/eval/py/tool-bridge.d.ts +20 -0
  192. package/dist/types/eval/types.d.ts +52 -0
  193. package/dist/types/exa/factory.d.ts +13 -0
  194. package/dist/types/exa/index.d.ts +20 -0
  195. package/dist/types/exa/mcp-client.d.ts +45 -0
  196. package/dist/types/exa/render.d.ts +19 -0
  197. package/dist/types/exa/researcher.d.ts +9 -0
  198. package/dist/types/exa/search.d.ts +9 -0
  199. package/dist/types/exa/types.d.ts +155 -0
  200. package/dist/types/exa/websets.d.ts +9 -0
  201. package/dist/types/exec/bash-executor.d.ts +41 -0
  202. package/dist/types/exec/exec.d.ts +25 -0
  203. package/dist/types/exec/idle-timeout-watchdog.d.ts +18 -0
  204. package/dist/types/exec/non-interactive-env.d.ts +1 -0
  205. package/dist/types/export/custom-share.d.ts +20 -0
  206. package/dist/types/export/html/index.d.ts +10 -0
  207. package/dist/types/export/html/template.generated.d.ts +1 -0
  208. package/dist/types/export/html/template.macro.d.ts +5 -0
  209. package/dist/types/export/ttsr.d.ts +44 -0
  210. package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +9 -0
  211. package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +10 -0
  212. package/dist/types/extensibility/custom-commands/index.d.ts +2 -0
  213. package/dist/types/extensibility/custom-commands/loader.d.ts +29 -0
  214. package/dist/types/extensibility/custom-commands/types.d.ts +106 -0
  215. package/dist/types/extensibility/custom-tools/index.d.ts +6 -0
  216. package/dist/types/extensibility/custom-tools/loader.d.ts +69 -0
  217. package/dist/types/extensibility/custom-tools/types.d.ts +226 -0
  218. package/dist/types/extensibility/custom-tools/wrapper.d.ts +23 -0
  219. package/dist/types/extensibility/extensions/compact-handler.d.ts +26 -0
  220. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +29 -0
  221. package/dist/types/extensibility/extensions/index.d.ts +8 -0
  222. package/dist/types/extensibility/extensions/loader.d.ts +43 -0
  223. package/dist/types/extensibility/extensions/runner.d.ts +134 -0
  224. package/dist/types/extensibility/extensions/types.d.ts +864 -0
  225. package/dist/types/extensibility/extensions/wrapper.d.ts +54 -0
  226. package/dist/types/extensibility/hooks/index.d.ts +5 -0
  227. package/dist/types/extensibility/hooks/loader.d.ts +89 -0
  228. package/dist/types/extensibility/hooks/runner.d.ts +126 -0
  229. package/dist/types/extensibility/hooks/tool-wrapper.d.ts +25 -0
  230. package/dist/types/extensibility/hooks/types.d.ts +431 -0
  231. package/dist/types/extensibility/plugins/doctor.d.ts +3 -0
  232. package/dist/types/extensibility/plugins/git-url.d.ts +34 -0
  233. package/dist/types/extensibility/plugins/index.d.ts +7 -0
  234. package/dist/types/extensibility/plugins/installer.d.ts +5 -0
  235. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +2 -0
  236. package/dist/types/extensibility/plugins/loader.d.ts +31 -0
  237. package/dist/types/extensibility/plugins/manager.d.ts +65 -0
  238. package/dist/types/extensibility/plugins/marketplace/cache.d.ts +41 -0
  239. package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +48 -0
  240. package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -0
  241. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +57 -0
  242. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +34 -0
  243. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +28 -0
  244. package/dist/types/extensibility/plugins/marketplace/types.d.ts +130 -0
  245. package/dist/types/extensibility/plugins/parser.d.ts +52 -0
  246. package/dist/types/extensibility/plugins/types.d.ts +149 -0
  247. package/dist/types/extensibility/shared-events.d.ts +279 -0
  248. package/dist/types/extensibility/skills.d.ts +57 -0
  249. package/dist/types/extensibility/slash-commands.d.ts +48 -0
  250. package/dist/types/extensibility/tool-proxy.d.ts +4 -0
  251. package/dist/types/extensibility/typebox.d.ts +155 -0
  252. package/dist/types/extensibility/utils.d.ts +12 -0
  253. package/dist/types/goals/index.d.ts +3 -0
  254. package/dist/types/goals/runtime.d.ts +63 -0
  255. package/dist/types/goals/state.d.ts +35 -0
  256. package/dist/types/goals/tools/goal-tool.d.ts +62 -0
  257. package/dist/types/hashline/anchors.d.ts +20 -0
  258. package/dist/types/hashline/apply.d.ts +14 -0
  259. package/dist/types/hashline/constants.d.ts +21 -0
  260. package/dist/types/hashline/diff-preview.d.ts +2 -0
  261. package/dist/types/hashline/diff.d.ts +17 -0
  262. package/dist/types/hashline/execute.d.ts +4 -0
  263. package/dist/types/hashline/hash.d.ts +149 -0
  264. package/dist/types/hashline/index.d.ts +13 -0
  265. package/dist/types/hashline/input.d.ts +11 -0
  266. package/dist/types/hashline/parser.d.ts +7 -0
  267. package/dist/types/hashline/prefixes.d.ts +7 -0
  268. package/dist/types/hashline/recovery.d.ts +22 -0
  269. package/dist/types/hashline/stream.d.ts +2 -0
  270. package/dist/types/hashline/types.d.ts +77 -0
  271. package/dist/types/hindsight/backend.d.ts +13 -0
  272. package/dist/types/hindsight/bank.d.ts +54 -0
  273. package/dist/types/hindsight/client.d.ts +224 -0
  274. package/dist/types/hindsight/config.d.ts +51 -0
  275. package/dist/types/hindsight/content.d.ts +70 -0
  276. package/dist/types/hindsight/index.d.ts +8 -0
  277. package/dist/types/hindsight/mental-models.d.ts +125 -0
  278. package/dist/types/hindsight/state.d.ts +99 -0
  279. package/dist/types/hindsight/transcript.d.ts +28 -0
  280. package/dist/types/index.d.ts +33 -0
  281. package/dist/types/internal-urls/agent-protocol.d.ts +12 -0
  282. package/dist/types/internal-urls/artifact-protocol.d.ts +6 -0
  283. package/dist/types/internal-urls/docs-index.generated.d.ts +2 -0
  284. package/dist/types/internal-urls/index.d.ts +22 -0
  285. package/dist/types/internal-urls/issue-pr-protocol.d.ts +17 -0
  286. package/dist/types/internal-urls/json-query.d.ts +30 -0
  287. package/dist/types/internal-urls/local-protocol.d.ts +39 -0
  288. package/dist/types/internal-urls/mcp-protocol.d.ts +12 -0
  289. package/dist/types/internal-urls/memory-protocol.d.ts +17 -0
  290. package/dist/types/internal-urls/omp-protocol.d.ts +12 -0
  291. package/dist/types/internal-urls/parse.d.ts +19 -0
  292. package/dist/types/internal-urls/registry-helpers.d.ts +10 -0
  293. package/dist/types/internal-urls/router.d.ts +14 -0
  294. package/dist/types/internal-urls/rule-protocol.d.ts +6 -0
  295. package/dist/types/internal-urls/skill-protocol.d.ts +13 -0
  296. package/dist/types/internal-urls/types.d.ts +105 -0
  297. package/dist/types/lsp/client.d.ts +65 -0
  298. package/dist/types/lsp/clients/biome-client.d.ts +16 -0
  299. package/dist/types/lsp/clients/index.d.ts +19 -0
  300. package/dist/types/lsp/clients/lsp-linter-client.d.ts +16 -0
  301. package/dist/types/lsp/clients/swiftlint-client.d.ts +20 -0
  302. package/dist/types/lsp/config.d.ts +65 -0
  303. package/dist/types/lsp/edits.d.ts +16 -0
  304. package/dist/types/lsp/index.d.ts +130 -0
  305. package/dist/types/lsp/lspmux.d.ts +58 -0
  306. package/dist/types/lsp/render.d.ts +32 -0
  307. package/dist/types/lsp/startup-events.d.ts +11 -0
  308. package/dist/types/lsp/types.d.ts +302 -0
  309. package/dist/types/lsp/utils.d.ts +108 -0
  310. package/dist/types/main.d.ts +17 -0
  311. package/dist/types/mcp/client.d.ts +74 -0
  312. package/dist/types/mcp/config-writer.d.ts +53 -0
  313. package/dist/types/mcp/config.d.ts +75 -0
  314. package/dist/types/mcp/discoverable-tool-metadata.d.ts +7 -0
  315. package/dist/types/mcp/index.d.ts +18 -0
  316. package/dist/types/mcp/json-rpc.d.ts +22 -0
  317. package/dist/types/mcp/loader.d.ts +43 -0
  318. package/dist/types/mcp/manager.d.ts +193 -0
  319. package/dist/types/mcp/oauth-discovery.d.ts +40 -0
  320. package/dist/types/mcp/oauth-flow.d.ts +59 -0
  321. package/dist/types/mcp/render.d.ts +25 -0
  322. package/dist/types/mcp/smithery-auth.d.ts +16 -0
  323. package/dist/types/mcp/smithery-connect.d.ts +38 -0
  324. package/dist/types/mcp/smithery-registry.d.ts +51 -0
  325. package/dist/types/mcp/tool-bridge.d.ts +86 -0
  326. package/dist/types/mcp/tool-cache.d.ts +8 -0
  327. package/dist/types/mcp/transports/http.d.ts +36 -0
  328. package/dist/types/mcp/transports/index.d.ts +5 -0
  329. package/dist/types/mcp/transports/stdio.d.ts +32 -0
  330. package/dist/types/mcp/types.d.ts +333 -0
  331. package/dist/types/memories/index.d.ts +28 -0
  332. package/dist/types/memories/storage.d.ts +110 -0
  333. package/dist/types/memory-backend/index.d.ts +4 -0
  334. package/dist/types/memory-backend/local-backend.d.ts +9 -0
  335. package/dist/types/memory-backend/off-backend.d.ts +7 -0
  336. package/dist/types/memory-backend/resolve.d.ts +15 -0
  337. package/dist/types/memory-backend/types.d.ts +61 -0
  338. package/dist/types/modes/acp/acp-agent.d.ts +61 -0
  339. package/dist/types/modes/acp/acp-client-bridge.d.ts +9 -0
  340. package/dist/types/modes/acp/acp-event-mapper.d.ts +20 -0
  341. package/dist/types/modes/acp/acp-mode.d.ts +3 -0
  342. package/dist/types/modes/acp/index.d.ts +2 -0
  343. package/dist/types/modes/acp/terminal-auth.d.ts +6 -0
  344. package/dist/types/modes/components/agent-dashboard.d.ts +21 -0
  345. package/dist/types/modes/components/assistant-message.d.ts +16 -0
  346. package/dist/types/modes/components/bash-execution.d.ts +29 -0
  347. package/dist/types/modes/components/bordered-loader.d.ts +11 -0
  348. package/dist/types/modes/components/branch-summary-message.d.ts +13 -0
  349. package/dist/types/modes/components/btw-panel.d.ts +16 -0
  350. package/dist/types/modes/components/compaction-summary-message.d.ts +13 -0
  351. package/dist/types/modes/components/countdown-timer.d.ts +14 -0
  352. package/dist/types/modes/components/custom-editor.d.ts +47 -0
  353. package/dist/types/modes/components/custom-message.d.ts +15 -0
  354. package/dist/types/modes/components/diff.d.ts +11 -0
  355. package/dist/types/modes/components/dynamic-border.d.ts +14 -0
  356. package/dist/types/modes/components/eval-execution.d.ts +23 -0
  357. package/dist/types/modes/components/execution-shared.d.ts +46 -0
  358. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +26 -0
  359. package/dist/types/modes/components/extensions/extension-list.d.ts +39 -0
  360. package/dist/types/modes/components/extensions/index.d.ts +8 -0
  361. package/dist/types/modes/components/extensions/inspector-panel.d.ts +8 -0
  362. package/dist/types/modes/components/extensions/state-manager.d.ts +50 -0
  363. package/dist/types/modes/components/extensions/types.d.ts +151 -0
  364. package/dist/types/modes/components/footer.d.ts +30 -0
  365. package/dist/types/modes/components/history-search.d.ts +7 -0
  366. package/dist/types/modes/components/hook-editor.d.ts +18 -0
  367. package/dist/types/modes/components/hook-input.d.ts +15 -0
  368. package/dist/types/modes/components/hook-message.d.ts +15 -0
  369. package/dist/types/modes/components/hook-selector.d.ts +23 -0
  370. package/dist/types/modes/components/index.d.ts +35 -0
  371. package/dist/types/modes/components/keybinding-hints.d.ts +40 -0
  372. package/dist/types/modes/components/login-dialog.d.ts +32 -0
  373. package/dist/types/modes/components/mcp-add-wizard.d.ts +25 -0
  374. package/dist/types/modes/components/message-frame.d.ts +42 -0
  375. package/dist/types/modes/components/model-selector.d.ts +26 -0
  376. package/dist/types/modes/components/oauth-selector.d.ts +14 -0
  377. package/dist/types/modes/components/plugin-selector.d.ts +26 -0
  378. package/dist/types/modes/components/plugin-settings.d.ts +66 -0
  379. package/dist/types/modes/components/queue-mode-selector.d.ts +9 -0
  380. package/dist/types/modes/components/read-tool-group.d.ts +30 -0
  381. package/dist/types/modes/components/session-observer-overlay.d.ts +11 -0
  382. package/dist/types/modes/components/session-selector.d.ts +30 -0
  383. package/dist/types/modes/components/settings-defs.d.ts +50 -0
  384. package/dist/types/modes/components/settings-selector.d.ts +54 -0
  385. package/dist/types/modes/components/show-images-selector.d.ts +9 -0
  386. package/dist/types/modes/components/skill-message.d.ts +9 -0
  387. package/dist/types/modes/components/status-line/context-thresholds.d.ts +4 -0
  388. package/dist/types/modes/components/status-line/git-utils.d.ts +22 -0
  389. package/dist/types/modes/components/status-line/index.d.ts +4 -0
  390. package/dist/types/modes/components/status-line/presets.d.ts +3 -0
  391. package/dist/types/modes/components/status-line/segments.d.ts +5 -0
  392. package/dist/types/modes/components/status-line/separators.d.ts +3 -0
  393. package/dist/types/modes/components/status-line/token-rate.d.ts +10 -0
  394. package/dist/types/modes/components/status-line/types.d.ts +70 -0
  395. package/dist/types/modes/components/status-line-segment-editor.d.ts +24 -0
  396. package/dist/types/modes/components/status-line.d.ts +61 -0
  397. package/dist/types/modes/components/theme-selector.d.ts +10 -0
  398. package/dist/types/modes/components/thinking-selector.d.ts +10 -0
  399. package/dist/types/modes/components/todo-reminder.d.ts +13 -0
  400. package/dist/types/modes/components/tool-execution.d.ts +53 -0
  401. package/dist/types/modes/components/tree-selector.d.ts +31 -0
  402. package/dist/types/modes/components/ttsr-notification.d.ts +13 -0
  403. package/dist/types/modes/components/user-message-selector.d.ts +28 -0
  404. package/dist/types/modes/components/user-message.d.ts +8 -0
  405. package/dist/types/modes/components/visual-truncate.d.ts +19 -0
  406. package/dist/types/modes/components/welcome.d.ts +33 -0
  407. package/dist/types/modes/controllers/btw-controller.d.ts +10 -0
  408. package/dist/types/modes/controllers/command-controller-shared.d.ts +47 -0
  409. package/dist/types/modes/controllers/command-controller.d.ts +36 -0
  410. package/dist/types/modes/controllers/event-controller.d.ts +12 -0
  411. package/dist/types/modes/controllers/extension-ui-controller.d.ts +80 -0
  412. package/dist/types/modes/controllers/input-controller.d.ts +35 -0
  413. package/dist/types/modes/controllers/mcp-command-controller.d.ts +10 -0
  414. package/dist/types/modes/controllers/selector-controller.d.ts +45 -0
  415. package/dist/types/modes/controllers/ssh-command-controller.d.ts +10 -0
  416. package/dist/types/modes/controllers/todo-command-controller.d.ts +7 -0
  417. package/dist/types/modes/emoji-autocomplete.d.ts +16 -0
  418. package/dist/types/modes/index.d.ts +9 -0
  419. package/dist/types/modes/interactive-mode.d.ts +267 -0
  420. package/dist/types/modes/loop-limit.d.ts +22 -0
  421. package/dist/types/modes/oauth-manual-input.d.ts +8 -0
  422. package/dist/types/modes/print-mode.d.ts +27 -0
  423. package/dist/types/modes/prompt-action-autocomplete.d.ts +46 -0
  424. package/dist/types/modes/rpc/host-tools.d.ts +16 -0
  425. package/dist/types/modes/rpc/host-uris.d.ts +38 -0
  426. package/dist/types/modes/rpc/rpc-client.d.ts +249 -0
  427. package/dist/types/modes/rpc/rpc-mode.d.ts +17 -0
  428. package/dist/types/modes/rpc/rpc-types.d.ts +586 -0
  429. package/dist/types/modes/runtime-init.d.ts +21 -0
  430. package/dist/types/modes/session-observer-registry.d.ts +26 -0
  431. package/dist/types/modes/shared.d.ts +6 -0
  432. package/dist/types/modes/theme/defaults/index.d.ts +9436 -0
  433. package/dist/types/modes/theme/mermaid-cache.d.ts +9 -0
  434. package/dist/types/modes/theme/theme.d.ts +273 -0
  435. package/dist/types/modes/types.d.ts +274 -0
  436. package/dist/types/modes/utils/context-usage.d.ts +30 -0
  437. package/dist/types/modes/utils/hotkeys-markdown.d.ts +5 -0
  438. package/dist/types/modes/utils/keybinding-matchers.d.ts +10 -0
  439. package/dist/types/modes/utils/tools-markdown.d.ts +5 -0
  440. package/dist/types/modes/utils/ui-helpers.d.ts +49 -0
  441. package/dist/types/plan-mode/approved-plan.d.ts +29 -0
  442. package/dist/types/plan-mode/state.d.ts +6 -0
  443. package/dist/types/registry/agent-registry.d.ts +62 -0
  444. package/dist/types/sdk.d.ts +253 -0
  445. package/dist/types/secrets/index.d.ts +9 -0
  446. package/dist/types/secrets/obfuscator.d.ts +23 -0
  447. package/dist/types/secrets/regex.d.ts +2 -0
  448. package/dist/types/session/agent-session.d.ts +898 -0
  449. package/dist/types/session/agent-storage.d.ts +93 -0
  450. package/dist/types/session/artifacts.d.ts +61 -0
  451. package/dist/types/session/auth-broker-config.d.ts +13 -0
  452. package/dist/types/session/auth-storage.d.ts +6 -0
  453. package/dist/types/session/blob-store.d.ts +63 -0
  454. package/dist/types/session/client-bridge.d.ts +84 -0
  455. package/dist/types/session/history-storage.d.ts +16 -0
  456. package/dist/types/session/messages.d.ts +162 -0
  457. package/dist/types/session/session-dump-format.d.ts +22 -0
  458. package/dist/types/session/session-manager.d.ts +539 -0
  459. package/dist/types/session/session-storage.d.ts +82 -0
  460. package/dist/types/session/streaming-output.d.ts +185 -0
  461. package/dist/types/session/tool-choice-queue.d.ts +78 -0
  462. package/dist/types/slash-commands/acp-builtins.d.ts +18 -0
  463. package/dist/types/slash-commands/builtin-registry.d.ts +23 -0
  464. package/dist/types/slash-commands/helpers/context-report.d.ts +7 -0
  465. package/dist/types/slash-commands/helpers/format.d.ts +7 -0
  466. package/dist/types/slash-commands/helpers/marketplace-manager.d.ts +8 -0
  467. package/dist/types/slash-commands/helpers/mcp.d.ts +3 -0
  468. package/dist/types/slash-commands/helpers/parse.d.ts +33 -0
  469. package/dist/types/slash-commands/helpers/ssh.d.ts +3 -0
  470. package/dist/types/slash-commands/helpers/todo.d.ts +3 -0
  471. package/dist/types/slash-commands/helpers/usage-report.d.ts +7 -0
  472. package/dist/types/slash-commands/marketplace-install-parser.d.ts +33 -0
  473. package/dist/types/slash-commands/types.d.ts +119 -0
  474. package/dist/types/ssh/config-writer.d.ts +49 -0
  475. package/dist/types/ssh/connection-manager.d.ts +33 -0
  476. package/dist/types/ssh/ssh-executor.d.ts +37 -0
  477. package/dist/types/ssh/sshfs-mount.d.ts +6 -0
  478. package/dist/types/ssh/utils.d.ts +2 -0
  479. package/dist/types/stt/downloader.d.ts +9 -0
  480. package/dist/types/stt/index.d.ts +3 -0
  481. package/dist/types/stt/recorder.d.ts +13 -0
  482. package/dist/types/stt/setup.d.ts +18 -0
  483. package/dist/types/stt/stt-controller.d.ts +16 -0
  484. package/dist/types/stt/transcriber.d.ts +16 -0
  485. package/dist/types/system-prompt.d.ts +93 -0
  486. package/dist/types/task/agents.d.ts +28 -0
  487. package/dist/types/task/commands.d.ts +35 -0
  488. package/dist/types/task/discovery.d.ts +18 -0
  489. package/dist/types/task/executor.d.ts +106 -0
  490. package/dist/types/task/index.d.ts +38 -0
  491. package/dist/types/task/name-generator.d.ts +16 -0
  492. package/dist/types/task/omp-command.d.ts +7 -0
  493. package/dist/types/task/output-manager.d.ts +36 -0
  494. package/dist/types/task/parallel.d.ts +34 -0
  495. package/dist/types/task/render.d.ts +22 -0
  496. package/dist/types/task/simple-mode.d.ts +8 -0
  497. package/dist/types/task/subprocess-tool-registry.d.ts +72 -0
  498. package/dist/types/task/types.d.ts +251 -0
  499. package/dist/types/task/worktree.d.ts +95 -0
  500. package/dist/types/thinking.d.ts +30 -0
  501. package/dist/types/tool-discovery/tool-index.d.ts +107 -0
  502. package/dist/types/tools/archive-reader.d.ts +40 -0
  503. package/dist/types/tools/ask.d.ts +109 -0
  504. package/dist/types/tools/ast-edit.d.ts +72 -0
  505. package/dist/types/tools/ast-grep.d.ts +64 -0
  506. package/dist/types/tools/auto-generated-guard.d.ts +17 -0
  507. package/dist/types/tools/bash-command-fixup.d.ts +16 -0
  508. package/dist/types/tools/bash-interactive.d.ts +16 -0
  509. package/dist/types/tools/bash-interceptor.d.ts +24 -0
  510. package/dist/types/tools/bash-pty-selection.d.ts +7 -0
  511. package/dist/types/tools/bash-skill-urls.d.ts +31 -0
  512. package/dist/types/tools/bash.d.ts +130 -0
  513. package/dist/types/tools/browser/attach.d.ts +34 -0
  514. package/dist/types/tools/browser/launch.d.ts +60 -0
  515. package/dist/types/tools/browser/readable.d.ts +17 -0
  516. package/dist/types/tools/browser/registry.d.ts +42 -0
  517. package/dist/types/tools/browser/render.d.ts +50 -0
  518. package/dist/types/tools/browser/tab-protocol.d.ts +144 -0
  519. package/dist/types/tools/browser/tab-supervisor.d.ts +63 -0
  520. package/dist/types/tools/browser/tab-worker-entry.d.ts +1 -0
  521. package/dist/types/tools/browser/tab-worker.d.ts +19 -0
  522. package/dist/types/tools/browser.d.ts +114 -0
  523. package/dist/types/tools/calculator.d.ts +76 -0
  524. package/dist/types/tools/checkpoint.d.ts +63 -0
  525. package/dist/types/tools/conflict-detect.d.ts +205 -0
  526. package/dist/types/tools/context.d.ts +19 -0
  527. package/dist/types/tools/debug.d.ts +209 -0
  528. package/dist/types/tools/eval.d.ts +108 -0
  529. package/dist/types/tools/fetch.d.ts +61 -0
  530. package/dist/types/tools/file-recorder.d.ts +13 -0
  531. package/dist/types/tools/find.d.ts +88 -0
  532. package/dist/types/tools/fs-cache-invalidation.d.ts +15 -0
  533. package/dist/types/tools/gh-format.d.ts +6 -0
  534. package/dist/types/tools/gh-renderer.d.ts +25 -0
  535. package/dist/types/tools/gh.d.ts +356 -0
  536. package/dist/types/tools/github-cache.d.ts +103 -0
  537. package/dist/types/tools/grouped-file-output.d.ts +36 -0
  538. package/dist/types/tools/hindsight-recall.d.ts +23 -0
  539. package/dist/types/tools/hindsight-reflect.d.ts +25 -0
  540. package/dist/types/tools/hindsight-retain.d.ts +29 -0
  541. package/dist/types/tools/image-gen.d.ts +78 -0
  542. package/dist/types/tools/index.d.ts +244 -0
  543. package/dist/types/tools/inspect-image-renderer.d.ts +26 -0
  544. package/dist/types/tools/inspect-image.d.ts +31 -0
  545. package/dist/types/tools/irc.d.ts +79 -0
  546. package/dist/types/tools/job.d.ts +65 -0
  547. package/dist/types/tools/json-tree.d.ts +23 -0
  548. package/dist/types/tools/jtd-to-json-schema.d.ts +29 -0
  549. package/dist/types/tools/jtd-to-typescript.d.ts +26 -0
  550. package/dist/types/tools/jtd-utils.d.ts +42 -0
  551. package/dist/types/tools/list-limit.d.ts +12 -0
  552. package/dist/types/tools/match-line-format.d.ts +11 -0
  553. package/dist/types/tools/output-meta.d.ts +204 -0
  554. package/dist/types/tools/path-utils.d.ts +125 -0
  555. package/dist/types/tools/plan-mode-guard.d.ts +18 -0
  556. package/dist/types/tools/read.d.ts +85 -0
  557. package/dist/types/tools/recipe/index.d.ts +45 -0
  558. package/dist/types/tools/recipe/render.d.ts +36 -0
  559. package/dist/types/tools/recipe/runner.d.ts +60 -0
  560. package/dist/types/tools/recipe/runners/cargo.d.ts +16 -0
  561. package/dist/types/tools/recipe/runners/index.d.ts +2 -0
  562. package/dist/types/tools/recipe/runners/just.d.ts +2 -0
  563. package/dist/types/tools/recipe/runners/make.d.ts +2 -0
  564. package/dist/types/tools/recipe/runners/pkg.d.ts +2 -0
  565. package/dist/types/tools/recipe/runners/task.d.ts +2 -0
  566. package/dist/types/tools/render-mermaid.d.ts +37 -0
  567. package/dist/types/tools/render-utils.d.ts +148 -0
  568. package/dist/types/tools/renderers.d.ts +26 -0
  569. package/dist/types/tools/report-tool-issue.d.ts +123 -0
  570. package/dist/types/tools/resolve.d.ts +85 -0
  571. package/dist/types/tools/review.d.ts +50 -0
  572. package/dist/types/tools/search-tool-bm25.d.ts +65 -0
  573. package/dist/types/tools/search.d.ts +90 -0
  574. package/dist/types/tools/sqlite-reader.d.ts +93 -0
  575. package/dist/types/tools/ssh.d.ts +67 -0
  576. package/dist/types/tools/todo-write.d.ts +120 -0
  577. package/dist/types/tools/tool-errors.d.ts +33 -0
  578. package/dist/types/tools/tool-result.d.ts +30 -0
  579. package/dist/types/tools/tool-timeouts.d.ts +51 -0
  580. package/dist/types/tools/vim.d.ts +58 -0
  581. package/dist/types/tools/write.d.ts +59 -0
  582. package/dist/types/tools/yield.d.ts +25 -0
  583. package/dist/types/tui/code-cell.d.ts +32 -0
  584. package/dist/types/tui/file-list.d.ts +16 -0
  585. package/dist/types/tui/index.d.ts +10 -0
  586. package/dist/types/tui/output-block.d.ts +28 -0
  587. package/dist/types/tui/status-line.d.ts +18 -0
  588. package/dist/types/tui/tree-list.d.ts +19 -0
  589. package/dist/types/tui/types.d.ts +13 -0
  590. package/dist/types/tui/utils.d.ts +36 -0
  591. package/dist/types/utils/changelog.d.ts +20 -0
  592. package/dist/types/utils/clipboard.d.ts +20 -0
  593. package/dist/types/utils/command-args.d.ts +9 -0
  594. package/dist/types/utils/commit-message-generator.d.ts +7 -0
  595. package/dist/types/utils/edit-mode.d.ts +13 -0
  596. package/dist/types/utils/event-bus.d.ts +6 -0
  597. package/dist/types/utils/external-editor.d.ts +17 -0
  598. package/dist/types/utils/file-display-mode.d.ts +27 -0
  599. package/dist/types/utils/file-mentions.d.ts +11 -0
  600. package/dist/types/utils/git.d.ts +360 -0
  601. package/dist/types/utils/image-loading.d.ts +26 -0
  602. package/dist/types/utils/image-resize.d.ts +36 -0
  603. package/dist/types/utils/lang-from-path.d.ts +8 -0
  604. package/dist/types/utils/markit.d.ts +7 -0
  605. package/dist/types/utils/open.d.ts +2 -0
  606. package/dist/types/utils/session-color.d.ts +10 -0
  607. package/dist/types/utils/shell-snapshot.d.ts +5 -0
  608. package/dist/types/utils/sixel.d.ts +21 -0
  609. package/dist/types/utils/title-generator.d.ts +31 -0
  610. package/dist/types/utils/tool-choice.d.ts +6 -0
  611. package/dist/types/utils/tools-manager.d.ts +9 -0
  612. package/dist/types/vim/buffer.d.ts +41 -0
  613. package/dist/types/vim/commands.d.ts +6 -0
  614. package/dist/types/vim/engine.d.ts +47 -0
  615. package/dist/types/vim/parser.d.ts +3 -0
  616. package/dist/types/vim/render.d.ts +25 -0
  617. package/dist/types/vim/types.d.ts +182 -0
  618. package/dist/types/web/kagi.d.ts +21 -0
  619. package/dist/types/web/parallel.d.ts +57 -0
  620. package/dist/types/web/scrapers/artifacthub.d.ts +6 -0
  621. package/dist/types/web/scrapers/arxiv.d.ts +5 -0
  622. package/dist/types/web/scrapers/aur.d.ts +5 -0
  623. package/dist/types/web/scrapers/biorxiv.d.ts +5 -0
  624. package/dist/types/web/scrapers/bluesky.d.ts +5 -0
  625. package/dist/types/web/scrapers/brew.d.ts +5 -0
  626. package/dist/types/web/scrapers/cheatsh.d.ts +8 -0
  627. package/dist/types/web/scrapers/chocolatey.d.ts +5 -0
  628. package/dist/types/web/scrapers/choosealicense.d.ts +2 -0
  629. package/dist/types/web/scrapers/cisa-kev.d.ts +5 -0
  630. package/dist/types/web/scrapers/clojars.d.ts +5 -0
  631. package/dist/types/web/scrapers/coingecko.d.ts +5 -0
  632. package/dist/types/web/scrapers/crates-io.d.ts +5 -0
  633. package/dist/types/web/scrapers/crossref.d.ts +2 -0
  634. package/dist/types/web/scrapers/devto.d.ts +5 -0
  635. package/dist/types/web/scrapers/discogs.d.ts +8 -0
  636. package/dist/types/web/scrapers/discourse.d.ts +5 -0
  637. package/dist/types/web/scrapers/dockerhub.d.ts +5 -0
  638. package/dist/types/web/scrapers/docs-rs.d.ts +2 -0
  639. package/dist/types/web/scrapers/fdroid.d.ts +5 -0
  640. package/dist/types/web/scrapers/firefox-addons.d.ts +2 -0
  641. package/dist/types/web/scrapers/flathub.d.ts +2 -0
  642. package/dist/types/web/scrapers/github-gist.d.ts +5 -0
  643. package/dist/types/web/scrapers/github.d.ts +12 -0
  644. package/dist/types/web/scrapers/gitlab.d.ts +5 -0
  645. package/dist/types/web/scrapers/go-pkg.d.ts +5 -0
  646. package/dist/types/web/scrapers/hackage.d.ts +5 -0
  647. package/dist/types/web/scrapers/hackernews.d.ts +2 -0
  648. package/dist/types/web/scrapers/hex.d.ts +5 -0
  649. package/dist/types/web/scrapers/huggingface.d.ts +2 -0
  650. package/dist/types/web/scrapers/iacr.d.ts +5 -0
  651. package/dist/types/web/scrapers/index.d.ts +84 -0
  652. package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +2 -0
  653. package/dist/types/web/scrapers/lemmy.d.ts +2 -0
  654. package/dist/types/web/scrapers/lobsters.d.ts +5 -0
  655. package/dist/types/web/scrapers/mastodon.d.ts +5 -0
  656. package/dist/types/web/scrapers/maven.d.ts +6 -0
  657. package/dist/types/web/scrapers/mdn.d.ts +2 -0
  658. package/dist/types/web/scrapers/metacpan.d.ts +5 -0
  659. package/dist/types/web/scrapers/musicbrainz.d.ts +5 -0
  660. package/dist/types/web/scrapers/npm.d.ts +5 -0
  661. package/dist/types/web/scrapers/nuget.d.ts +5 -0
  662. package/dist/types/web/scrapers/nvd.d.ts +5 -0
  663. package/dist/types/web/scrapers/ollama.d.ts +2 -0
  664. package/dist/types/web/scrapers/open-vsx.d.ts +5 -0
  665. package/dist/types/web/scrapers/opencorporates.d.ts +5 -0
  666. package/dist/types/web/scrapers/openlibrary.d.ts +5 -0
  667. package/dist/types/web/scrapers/orcid.d.ts +5 -0
  668. package/dist/types/web/scrapers/osv.d.ts +5 -0
  669. package/dist/types/web/scrapers/packagist.d.ts +5 -0
  670. package/dist/types/web/scrapers/pub-dev.d.ts +5 -0
  671. package/dist/types/web/scrapers/pubmed.d.ts +5 -0
  672. package/dist/types/web/scrapers/pypi.d.ts +5 -0
  673. package/dist/types/web/scrapers/rawg.d.ts +2 -0
  674. package/dist/types/web/scrapers/readthedocs.d.ts +2 -0
  675. package/dist/types/web/scrapers/reddit.d.ts +5 -0
  676. package/dist/types/web/scrapers/repology.d.ts +5 -0
  677. package/dist/types/web/scrapers/rfc.d.ts +5 -0
  678. package/dist/types/web/scrapers/rubygems.d.ts +5 -0
  679. package/dist/types/web/scrapers/searchcode.d.ts +2 -0
  680. package/dist/types/web/scrapers/sec-edgar.d.ts +5 -0
  681. package/dist/types/web/scrapers/semantic-scholar.d.ts +2 -0
  682. package/dist/types/web/scrapers/snapcraft.d.ts +2 -0
  683. package/dist/types/web/scrapers/sourcegraph.d.ts +2 -0
  684. package/dist/types/web/scrapers/spdx.d.ts +5 -0
  685. package/dist/types/web/scrapers/spotify.d.ts +8 -0
  686. package/dist/types/web/scrapers/stackoverflow.d.ts +6 -0
  687. package/dist/types/web/scrapers/terraform.d.ts +5 -0
  688. package/dist/types/web/scrapers/tldr.d.ts +7 -0
  689. package/dist/types/web/scrapers/twitter.d.ts +5 -0
  690. package/dist/types/web/scrapers/types.d.ts +77 -0
  691. package/dist/types/web/scrapers/utils.d.ts +26 -0
  692. package/dist/types/web/scrapers/vimeo.d.ts +5 -0
  693. package/dist/types/web/scrapers/vscode-marketplace.d.ts +5 -0
  694. package/dist/types/web/scrapers/w3c.d.ts +2 -0
  695. package/dist/types/web/scrapers/wikidata.d.ts +5 -0
  696. package/dist/types/web/scrapers/wikipedia.d.ts +5 -0
  697. package/dist/types/web/scrapers/youtube.d.ts +5 -0
  698. package/dist/types/web/search/index.d.ts +76 -0
  699. package/dist/types/web/search/provider.d.ts +20 -0
  700. package/dist/types/web/search/providers/anthropic.d.ts +27 -0
  701. package/dist/types/web/search/providers/base.d.ts +35 -0
  702. package/dist/types/web/search/providers/brave.d.ts +20 -0
  703. package/dist/types/web/search/providers/codex.d.ts +31 -0
  704. package/dist/types/web/search/providers/exa.d.ts +43 -0
  705. package/dist/types/web/search/providers/gemini.d.ts +60 -0
  706. package/dist/types/web/search/providers/jina.d.ts +25 -0
  707. package/dist/types/web/search/providers/kagi.d.ts +21 -0
  708. package/dist/types/web/search/providers/kimi.d.ts +18 -0
  709. package/dist/types/web/search/providers/parallel.d.ts +14 -0
  710. package/dist/types/web/search/providers/perplexity.d.ts +35 -0
  711. package/dist/types/web/search/providers/searxng.d.ts +43 -0
  712. package/dist/types/web/search/providers/synthetic.d.ts +24 -0
  713. package/dist/types/web/search/providers/tavily.d.ts +22 -0
  714. package/dist/types/web/search/providers/utils.d.ts +24 -0
  715. package/dist/types/web/search/providers/zai.d.ts +19 -0
  716. package/dist/types/web/search/render.d.ts +35 -0
  717. package/dist/types/web/search/types.d.ts +344 -0
  718. package/dist/types/web/search/utils.d.ts +4 -0
  719. package/dist/types/workspace-tree.d.ts +42 -0
  720. package/examples/custom-tools/README.md +3 -12
  721. package/examples/extensions/README.md +2 -15
  722. package/examples/extensions/api-demo.ts +1 -7
  723. package/package.json +124 -123
  724. package/src/autoresearch/tools/init-experiment.ts +11 -33
  725. package/src/autoresearch/tools/log-experiment.ts +10 -24
  726. package/src/autoresearch/tools/run-experiment.ts +1 -1
  727. package/src/autoresearch/tools/update-notes.ts +2 -9
  728. package/src/cli/auth-broker-cli.ts +746 -0
  729. package/src/cli/auth-gateway-cli.ts +342 -0
  730. package/src/cli/grievances-cli.ts +109 -16
  731. package/src/cli.ts +4 -2
  732. package/src/commands/auth-broker.ts +96 -0
  733. package/src/commands/auth-gateway.ts +61 -0
  734. package/src/commands/grievances.ts +13 -8
  735. package/src/commands/launch.ts +1 -1
  736. package/src/commit/agentic/agent.ts +2 -0
  737. package/src/commit/agentic/tools/analyze-file.ts +2 -2
  738. package/src/commit/agentic/tools/git-file-diff.ts +2 -2
  739. package/src/commit/agentic/tools/git-hunk.ts +3 -3
  740. package/src/commit/agentic/tools/git-overview.ts +2 -2
  741. package/src/commit/agentic/tools/propose-changelog.ts +1 -3
  742. package/src/commit/agentic/tools/recent-commits.ts +1 -1
  743. package/src/commit/agentic/tools/schemas.ts +1 -9
  744. package/src/config/mcp-schema.json +1 -1
  745. package/src/config/model-equivalence.ts +279 -174
  746. package/src/config/model-registry.ts +37 -6
  747. package/src/config/model-resolver.ts +13 -8
  748. package/src/config/models-config-schema.ts +8 -0
  749. package/src/config/settings-schema.ts +52 -0
  750. package/src/cursor.ts +1 -1
  751. package/src/debug/log-formatting.ts +1 -1
  752. package/src/debug/log-viewer.ts +1 -1
  753. package/src/debug/profiler.ts +4 -0
  754. package/src/debug/raw-sse-buffer.ts +100 -59
  755. package/src/debug/raw-sse.ts +1 -1
  756. package/src/discovery/agents.ts +15 -4
  757. package/src/edit/modes/apply-patch.ts +1 -5
  758. package/src/edit/modes/patch.ts +5 -5
  759. package/src/edit/modes/replace.ts +5 -5
  760. package/src/edit/normalize.ts +1 -1
  761. package/src/edit/renderer.ts +2 -1
  762. package/src/edit/streaming.ts +1 -1
  763. package/src/eval/index.ts +0 -2
  764. package/src/eval/js/shared/runtime.ts +25 -0
  765. package/src/eval/py/kernel.ts +1 -1
  766. package/src/exa/researcher.ts +4 -4
  767. package/src/exa/search.ts +10 -22
  768. package/src/exa/websets.ts +33 -33
  769. package/src/extensibility/typebox.ts +1 -1
  770. package/src/goals/tools/goal-tool.ts +3 -3
  771. package/src/hashline/index.ts +0 -1
  772. package/src/hashline/input.ts +8 -11
  773. package/src/hashline/parser.ts +6 -8
  774. package/src/index.ts +0 -3
  775. package/src/internal-urls/docs-index.generated.ts +21 -18
  776. package/src/internal-urls/index.ts +1 -1
  777. package/src/internal-urls/{pi-protocol.ts → omp-protocol.ts} +10 -10
  778. package/src/internal-urls/router.ts +3 -3
  779. package/src/internal-urls/types.ts +1 -1
  780. package/src/lsp/types.ts +8 -11
  781. package/src/main.ts +3 -0
  782. package/src/mcp/tool-bridge.ts +3 -3
  783. package/src/modes/acp/acp-agent.ts +89 -25
  784. package/src/modes/components/bash-execution.ts +1 -1
  785. package/src/modes/components/diff.ts +1 -2
  786. package/src/modes/components/eval-execution.ts +1 -1
  787. package/src/modes/components/oauth-selector.ts +38 -2
  788. package/src/modes/components/tool-execution.ts +1 -2
  789. package/src/modes/controllers/command-controller.ts +96 -34
  790. package/src/modes/controllers/input-controller.ts +4 -3
  791. package/src/modes/controllers/ssh-command-controller.ts +2 -0
  792. package/src/modes/data/emojis.json +1 -0
  793. package/src/modes/emoji-autocomplete.ts +285 -0
  794. package/src/modes/interactive-mode.ts +92 -19
  795. package/src/modes/print-mode.ts +3 -3
  796. package/src/modes/prompt-action-autocomplete.ts +14 -0
  797. package/src/modes/theme/theme-schema.json +1 -1
  798. package/src/plan-mode/approved-plan.ts +9 -0
  799. package/src/prompts/system/system-prompt.md +1 -1
  800. package/src/prompts/system/ttsr-tool-reminder.md +5 -0
  801. package/src/prompts/tools/eval.md +25 -26
  802. package/src/prompts/tools/hashline.md +1 -0
  803. package/src/prompts/tools/read.md +2 -2
  804. package/src/prompts/tools/resolve.md +1 -1
  805. package/src/prompts/tools/search.md +1 -1
  806. package/src/prompts/tools/web-search.md +1 -1
  807. package/src/sdk.ts +92 -7
  808. package/src/session/agent-session.ts +225 -77
  809. package/src/session/agent-storage.ts +7 -2
  810. package/src/session/auth-broker-config.ts +102 -0
  811. package/src/session/auth-storage.ts +7 -1
  812. package/src/session/streaming-output.ts +1 -1
  813. package/src/slash-commands/builtin-registry.ts +2 -0
  814. package/src/slash-commands/helpers/ssh.ts +2 -0
  815. package/src/ssh/connection-manager.ts +28 -7
  816. package/src/task/types.ts +10 -35
  817. package/src/tools/bash-interactive.ts +5 -2
  818. package/src/tools/bash-pty-selection.ts +14 -0
  819. package/src/tools/bash.ts +5 -4
  820. package/src/tools/browser.ts +12 -20
  821. package/src/tools/eval.ts +77 -100
  822. package/src/tools/gh.ts +21 -45
  823. package/src/tools/hindsight-recall.ts +1 -1
  824. package/src/tools/hindsight-reflect.ts +2 -2
  825. package/src/tools/hindsight-retain.ts +3 -7
  826. package/src/tools/index.ts +8 -1
  827. package/src/tools/inspect-image.ts +4 -1
  828. package/src/tools/irc.ts +4 -12
  829. package/src/tools/job.ts +3 -11
  830. package/src/tools/path-utils.ts +2 -2
  831. package/src/tools/read.ts +7 -4
  832. package/src/tools/report-tool-issue.ts +462 -17
  833. package/src/tools/resolve.ts +2 -7
  834. package/src/tools/search.ts +7 -0
  835. package/src/tools/todo-write.ts +8 -15
  836. package/src/tools/yield.ts +17 -5
  837. package/src/tui/code-cell.ts +18 -3
  838. package/src/utils/title-generator.ts +3 -0
  839. package/src/web/scrapers/searchcode.ts +1 -2
  840. package/src/web/search/index.ts +6 -6
  841. package/src/eval/eval.lark +0 -36
  842. package/src/eval/parse.ts +0 -407
  843. package/src/eval/sniff.ts +0 -28
  844. package/src/hashline/utils.ts +0 -3
@@ -1,34 +1,207 @@
1
1
  /**
2
2
  * report_tool_issue — automated QA tool for tracking unexpected tool behavior.
3
3
  *
4
- * Enabled when PI_AUTO_QA=1 or the dev.autoqa setting is on.
4
+ * Enabled by default; gated behind PI_AUTO_QA=1 / `dev.autoqa` so a user
5
+ * who flips the setting off short-circuits injection entirely.
5
6
  * Always injected into every agent (including subagents) regardless of tool selection.
6
7
  * Records grievances to a local SQLite database; never throws.
8
+ *
9
+ * Before the first record lands, the user's consent is checked. If they've
10
+ * never been asked (`dev.autoqa.consent === "unset"`) the process-global
11
+ * consent handler — wired by `InteractiveMode` to a Yes/No popup — is
12
+ * invoked exactly once and the decision is persisted. Subsequent calls
13
+ * (including from subagents) read the cached decision without prompting.
14
+ *
15
+ * When the user grants consent, push is automatically active against the
16
+ * bundled endpoint (`dev.autoqaPush.endpoint`, default `qa.omp.sh`). Each
17
+ * insert schedules a background flush that POSTs pending rows and deletes
18
+ * them on HTTP 2xx. `PI_AUTO_QA_PUSH=1` forces push in non-interactive
19
+ * environments where the consent dialog never fires. Tool execution is
20
+ * never blocked on the network and never throws.
7
21
  */
8
22
  import { Database } from "bun:sqlite";
9
23
  import path from "node:path";
10
24
  import type { AgentTool } from "@oh-my-pi/pi-agent-core";
11
- import { $flag, getAgentDir, logger, VERSION } from "@oh-my-pi/pi-utils";
25
+ import { $env, $flag, getAgentDir, getInstallId, logger, VERSION } from "@oh-my-pi/pi-utils";
12
26
  import * as z from "zod/v4";
13
27
  import type { Settings } from "..";
14
28
  import type { ToolSession } from "./index";
15
29
 
16
- const ReportToolIssueParams = z.object({
17
- tool: z.string().describe("tool name"),
18
- report: z.string().describe("unexpected behavior"),
19
- });
30
+ function buildReportToolIssueParams(activeBuiltinNames: readonly string[]) {
31
+ // Enum gives the model a tight schema; the runtime check in `execute` is the
32
+ // source of truth (handles models that ignore the enum and the empty-list
33
+ // fallback used by call sites that don't know the active set yet).
34
+ const toolSchema = activeBuiltinNames.length > 0 ? z.enum(activeBuiltinNames as [string, ...string[]]) : z.string();
35
+ return z.object({
36
+ tool: toolSchema.describe("tool name"),
37
+ report: z
38
+ .string()
39
+ .describe("unexpected behavior; generic, NEVER PII (paths, file contents, identifiers, prompt text)"),
40
+ });
41
+ }
20
42
 
21
43
  export function isAutoQaEnabled(settings?: Settings): boolean {
22
44
  return $flag("PI_AUTO_QA") || !!settings?.get("dev.autoqa");
23
45
  }
24
46
 
47
+ // ───────────────────────────────────────────────────────────────────────────
48
+ // Consent gate
49
+ // ───────────────────────────────────────────────────────────────────────────
50
+
51
+ /**
52
+ * Resolver for the user's "share grievances?" consent.
53
+ *
54
+ * Return values:
55
+ * - `true` — user agreed; record + ship for this run and persist.
56
+ * - `false` — user declined; suppress for this run and persist.
57
+ * - `null` — user dismissed the dialog (ESC, click-away, …) without
58
+ * picking an option. The decision is NOT cached or persisted,
59
+ * so the next `report_tool_issue` invocation re-prompts.
60
+ *
61
+ * Persistence is the tool's job (so subagent invocations can persist into
62
+ * the disk-backed `Settings` instance the host registered alongside the
63
+ * handler), not the handler's. Implementations live in hosts that have UI
64
+ * affordances — today only `InteractiveMode`. When no handler is
65
+ * registered (CLI subcommands, tests, non-interactive runs) consent
66
+ * defaults to `false` — the explicit "don't collect by default" stance.
67
+ */
68
+ export type AutoQaConsentHandler = () => Promise<boolean | null>;
69
+
70
+ let consentHandler: AutoQaConsentHandler | null = null;
71
+ /**
72
+ * Persistent settings instance supplied by the consent-handler registrant.
73
+ * Subagents have in-memory `Settings` snapshots that don't write to disk;
74
+ * we persist the decision through this disk-backed reference so a grant
75
+ * survives across runs even when triggered from a subagent tool call.
76
+ */
77
+ let persistentConsentSettings: Settings | null = null;
78
+ /**
79
+ * Process-global cache of the resolved consent decision. Survives across
80
+ * subagent boundaries (subagents share this module instance), so a grant
81
+ * in the parent applies immediately to children — including children that
82
+ * spawned BEFORE the grant and would otherwise see a stale snapshot of
83
+ * `dev.autoqa.consent` in their isolated `Settings`.
84
+ *
85
+ * `null` = never asked, never cached.
86
+ */
87
+ let cachedConsent: boolean | null = null;
88
+ /**
89
+ * Single-flight in-flight consent request. While the dialog is open, every
90
+ * concurrent `report_tool_issue` call (main + every subagent) awaits this
91
+ * promise instead of stacking duplicate popups.
92
+ */
93
+ let consentInFlight: Promise<boolean> | null = null;
94
+
95
+ /**
96
+ * Register the consent handler and the persistent {@link Settings} instance
97
+ * the decision should be written to. Passing `null` clears the handler
98
+ * (e.g. on `InteractiveMode` teardown). Re-registration is authoritative.
99
+ */
100
+ export function setAutoQaConsentHandler(
101
+ handler: AutoQaConsentHandler | null,
102
+ persistentSettings: Settings | null = null,
103
+ ): void {
104
+ consentHandler = handler;
105
+ persistentConsentSettings = persistentSettings;
106
+ }
107
+
108
+ /** Test-only: clear consent cache + handler. Never call from production code. */
109
+ export function __resetAutoQaConsentForTests(): void {
110
+ consentHandler = null;
111
+ persistentConsentSettings = null;
112
+ cachedConsent = null;
113
+ consentInFlight = null;
114
+ }
115
+
116
+ function readPersistedConsent(settings: Settings | undefined): boolean | null {
117
+ if (!settings) return null;
118
+ const stored = settings.get("dev.autoqa.consent");
119
+ if (stored === "granted") return true;
120
+ if (stored === "denied") return false;
121
+ return null;
122
+ }
123
+
124
+ function persistConsent(localSettings: Settings | undefined, granted: boolean): void {
125
+ const value = granted ? "granted" : "denied";
126
+ // Write on every settings instance we know about. The local one keeps
127
+ // the in-memory snapshot consistent for the current subagent; the
128
+ // persistent one (registered by the host) is what actually lands on disk.
129
+ for (const target of [localSettings, persistentConsentSettings]) {
130
+ if (!target) continue;
131
+ try {
132
+ target.set("dev.autoqa.consent", value);
133
+ } catch (error) {
134
+ logger.debug("autoqa consent persist failed", { error: String(error) });
135
+ }
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Resolve the user's consent for `report_tool_issue` grievances.
141
+ *
142
+ * Precedence (highest first):
143
+ * 1. Process-global cache (set on first successful resolution).
144
+ * 2. Persistent setting (`dev.autoqa.consent` on the supplied `Settings`).
145
+ * 3. Persistent setting on the registered host `Settings`.
146
+ * 4. Consent handler popup (single-flight; persists the answer).
147
+ * 5. Default-deny when no handler is registered.
148
+ *
149
+ * Never throws — handler errors degrade to "denied for this call" without
150
+ * caching, so a subsequent invocation can re-prompt instead of being
151
+ * permanently locked into the false branch.
152
+ */
153
+ export async function resolveAutoQaConsent(settings: Settings | undefined): Promise<boolean> {
154
+ if (cachedConsent !== null) return cachedConsent;
155
+ const persisted = readPersistedConsent(settings) ?? readPersistedConsent(persistentConsentSettings ?? undefined);
156
+ if (persisted !== null) {
157
+ cachedConsent = persisted;
158
+ return persisted;
159
+ }
160
+ if (!consentHandler) return false;
161
+ if (consentInFlight) return consentInFlight;
162
+ const handler = consentHandler;
163
+ consentInFlight = (async () => {
164
+ try {
165
+ const granted = await handler();
166
+ if (granted === null) {
167
+ // User dismissed the dialog (ESC) without picking. Treat as
168
+ // "skip this call" but don't cache or persist — the next
169
+ // invocation gets to re-prompt so a stray ESC isn't a
170
+ // permanent opt-out.
171
+ return false;
172
+ }
173
+ cachedConsent = granted;
174
+ persistConsent(settings, granted);
175
+ return granted;
176
+ } catch (error) {
177
+ logger.warn("autoqa consent handler threw", { error: String(error) });
178
+ return false;
179
+ } finally {
180
+ consentInFlight = null;
181
+ }
182
+ })();
183
+ return consentInFlight;
184
+ }
185
+
25
186
  export function getAutoQaDbPath(): string {
26
187
  return path.join(getAgentDir(), "autoqa.db");
27
188
  }
28
189
 
29
190
  let cachedDb: Database | null = null;
30
191
 
31
- function openDb(): Database | null {
192
+ /**
193
+ * Open (or return the cached handle for) the auto-QA SQLite database at
194
+ * `~/.omp/agent/autoqa.db`. Idempotently runs schema creation, the
195
+ * `pushed`-column migration, and index setup so every consumer — tool
196
+ * execute path, manual `omp grievances push`, future debug scripts —
197
+ * sees the same prepared schema. Returns `null` only on a hard open
198
+ * failure (filesystem permissions, etc.); a missing file is created.
199
+ *
200
+ * Exported because the `omp grievances` CLI handlers need the migrated
201
+ * handle too — having a second `openDb` in the CLI led to the column
202
+ * never being added on the manual-push path.
203
+ */
204
+ export function openAutoQaDb(): Database | null {
32
205
  if (cachedDb) return cachedDb;
33
206
  try {
34
207
  const db = new Database(getAutoQaDbPath());
@@ -41,9 +214,22 @@ function openDb(): Database | null {
41
214
  model TEXT NOT NULL,
42
215
  version TEXT NOT NULL,
43
216
  tool TEXT NOT NULL,
44
- report TEXT NOT NULL
217
+ report TEXT NOT NULL,
218
+ pushed INTEGER NOT NULL DEFAULT 0
45
219
  );
46
220
  `);
221
+ // Migration: pre-`pushed` databases get the column tacked on. Existing
222
+ // rows default to `0` (unpushed), so legacy grievances from before the
223
+ // consent + push pipeline went live get swept up by the next flush —
224
+ // exactly the behaviour we want for users who just granted consent.
225
+ const cols = db.prepare("PRAGMA table_info(grievances)").all() as Array<{ name: string }>;
226
+ if (!cols.some(c => c.name === "pushed")) {
227
+ db.run("ALTER TABLE grievances ADD COLUMN pushed INTEGER NOT NULL DEFAULT 0");
228
+ }
229
+ // Speed up the per-batch `WHERE pushed = 0` scan that drives the flush
230
+ // loop. Without the index every batch becomes a full table scan once
231
+ // pushed rows dominate the table.
232
+ db.run("CREATE INDEX IF NOT EXISTS grievances_pushed_idx ON grievances(pushed, id)");
47
233
  cachedDb = db;
48
234
  return db;
49
235
  } catch {
@@ -51,26 +237,285 @@ function openDb(): Database | null {
51
237
  }
52
238
  }
53
239
 
54
- export function createReportToolIssueTool(session: ToolSession): AgentTool {
240
+ // ───────────────────────────────────────────────────────────────────────────
241
+ // Backend push
242
+ // ───────────────────────────────────────────────────────────────────────────
243
+
244
+ export interface FlushResult {
245
+ pushed: number;
246
+ ok: boolean;
247
+ skipped?: boolean;
248
+ }
249
+
250
+ /**
251
+ * Optional per-flush controls. Used by `omp grievances push` to surface
252
+ * progress to a TTY and to skip the user-facing consent gate (manual
253
+ * pushes are the user's explicit intent, not a side effect of a tool call).
254
+ */
255
+ export interface FlushOptions {
256
+ /**
257
+ * Skip the `dev.autoqa.consent === "granted"` gate in
258
+ * {@link resolvePushConfig}. Endpoint configuration is still required.
259
+ * Reserved for explicit user-driven pushes (CLI `grievances push`,
260
+ * future debug recipes); never set from the tool's auto-flush path.
261
+ */
262
+ bypassConsent?: boolean;
263
+ /**
264
+ * Fires once at the start of the loop with the snapshot count of
265
+ * unpushed rows. Subsequent inserts won't be reflected (the count is
266
+ * a planning hint for progress reporters, not a live total).
267
+ */
268
+ onStart?: (totalUnpushed: number) => void;
269
+ /**
270
+ * Fires after every successfully shipped batch with the running pushed
271
+ * count. Reporters compare against the `totalUnpushed` they saw in
272
+ * `onStart` to advance their bar.
273
+ */
274
+ onProgress?: (pushedSoFar: number) => void;
275
+ }
276
+
277
+ interface PushConfig {
278
+ endpoint: string;
279
+ token: string | undefined;
280
+ }
281
+
282
+ const FLUSH_TIMEOUT_MS = 5_000;
283
+ const FAILURE_COOLDOWN_MS = 30_000;
284
+ /**
285
+ * Per-request batch size. The worker loops until no unpushed rows remain,
286
+ * shipping `FLUSH_BATCH_SIZE` rows per POST. Tunes the trade-off between
287
+ * request count and request size — 50 keeps each payload well under the
288
+ * default `maxBody` limit on the autoqa collector while letting a
289
+ * realistic backlog (a few hundred legacy rows on first flush after the
290
+ * consent grant) drain in single-digit requests.
291
+ */
292
+ const FLUSH_BATCH_SIZE = 50;
293
+
294
+ let inFlightFlush: Promise<FlushResult> | null = null;
295
+ let lastFailureAt = 0;
296
+
297
+ /** Test-only: clear single-flight + cooldown state. Never call from production code. */
298
+ export function __resetAutoQaFlushStateForTests(): void {
299
+ inFlightFlush = null;
300
+ lastFailureAt = 0;
301
+ }
302
+
303
+ function envOverrideString(name: string): string | undefined {
304
+ const value = $env[name];
305
+ if (typeof value !== "string") return undefined;
306
+ const trimmed = value.trim();
307
+ return trimmed.length > 0 ? trimmed : undefined;
308
+ }
309
+
310
+ function resolvePushConfig(settings: Settings | undefined, bypassConsent: boolean): PushConfig | null {
311
+ if (!isAutoQaEnabled(settings)) return null;
312
+
313
+ // Consent IS the push opt-in for the auto-flush path. `bypassConsent`
314
+ // covers explicit user-driven pushes (`omp grievances push`) where the
315
+ // user clearly intends to ship regardless of dialog state. The
316
+ // `PI_AUTO_QA_PUSH` env flag stays as a CI/headless override too.
317
+ if (!bypassConsent) {
318
+ const consented = settings?.get("dev.autoqa.consent") === "granted";
319
+ if (!consented && !$flag("PI_AUTO_QA_PUSH")) return null;
320
+ }
321
+
322
+ const endpoint = envOverrideString("PI_AUTO_QA_PUSH_URL") ?? settings?.get("dev.autoqaPush.endpoint");
323
+ if (!endpoint || endpoint.trim().length === 0) return null;
324
+
325
+ const token = envOverrideString("PI_AUTO_QA_PUSH_TOKEN") ?? settings?.get("dev.autoqaPush.token");
326
+ return { endpoint: endpoint.trim(), token: token && token.length > 0 ? token : undefined };
327
+ }
328
+
329
+ interface GrievanceRow {
330
+ id: number;
331
+ model: string;
332
+ version: string;
333
+ tool: string;
334
+ report: string;
335
+ }
336
+
337
+ async function performFlush(db: Database, config: PushConfig, options: FlushOptions = {}): Promise<FlushResult> {
338
+ const selectStmt = db.prepare(
339
+ "SELECT id, model, version, tool, report FROM grievances WHERE pushed = 0 ORDER BY id ASC LIMIT ?",
340
+ );
341
+ // Planning snapshot — fires once so progress reporters can size their bar.
342
+ // Mid-flight inserts are NOT folded in (the worker drains them too, but
343
+ // the progress bar treats the initial backlog as the denominator).
344
+ if (options.onStart) {
345
+ const totalRow = db.prepare("SELECT COUNT(*) AS n FROM grievances WHERE pushed = 0").get() as { n: number };
346
+ options.onStart(totalRow.n);
347
+ }
348
+ let totalPushed = 0;
349
+ for (;;) {
350
+ const rows = selectStmt.all(FLUSH_BATCH_SIZE) as GrievanceRow[];
351
+ if (rows.length === 0) return { pushed: totalPushed, ok: true };
352
+
353
+ const body = JSON.stringify({
354
+ agent: { name: "omp", version: VERSION },
355
+ installId: getInstallId(),
356
+ // Coarse host fingerprint for triage — `darwin`/`linux`/`win32` +
357
+ // `arm64`/`x64`. Useful for "is this bug arch-specific?" without
358
+ // leaking the user's machine name (the old payload sent
359
+ // `os.hostname()` verbatim, which trivially deanonymises users).
360
+ platform: process.platform,
361
+ arch: process.arch,
362
+ entries: rows,
363
+ });
364
+ const headers: Record<string, string> = { "content-type": "application/json" };
365
+ if (config.token) headers.authorization = `Bearer ${config.token}`;
366
+
367
+ let response: Response;
368
+ try {
369
+ response = await fetch(config.endpoint, {
370
+ method: "POST",
371
+ headers,
372
+ body,
373
+ signal: AbortSignal.timeout(FLUSH_TIMEOUT_MS),
374
+ });
375
+ } catch (error) {
376
+ lastFailureAt = Date.now();
377
+ logger.warn("autoqa push failed", {
378
+ endpoint: config.endpoint,
379
+ error: String(error),
380
+ batchSize: rows.length,
381
+ pushedSoFar: totalPushed,
382
+ });
383
+ return { pushed: totalPushed, ok: false };
384
+ }
385
+
386
+ if (!response.ok) {
387
+ lastFailureAt = Date.now();
388
+ logger.warn("autoqa push failed", {
389
+ endpoint: config.endpoint,
390
+ status: response.status,
391
+ batchSize: rows.length,
392
+ pushedSoFar: totalPushed,
393
+ });
394
+ return { pushed: totalPushed, ok: false };
395
+ }
396
+
397
+ // Mark just this batch — never touch ids the SELECT didn't return so a
398
+ // concurrent insert that landed mid-flight isn't claimed-as-shipped on
399
+ // our behalf. `id IN (?, ?, …)` rather than a range so a non-contiguous
400
+ // batch (after partial fills, retries, etc.) still flips exactly what
401
+ // we sent.
402
+ const ids = rows.map(r => r.id);
403
+ const placeholders = ids.map(() => "?").join(",");
404
+ db.prepare(`UPDATE grievances SET pushed = 1 WHERE id IN (${placeholders})`).run(...ids);
405
+ totalPushed += rows.length;
406
+ options.onProgress?.(totalPushed);
407
+ // Loop continues; the next SELECT picks up the next batch (or returns
408
+ // empty, exiting the loop).
409
+ }
410
+ }
411
+
412
+ /**
413
+ * Flush queued grievances to the configured backend.
414
+ *
415
+ * Single-flight: concurrent callers share the in-flight promise. After a
416
+ * failed push, retries are skipped for {@link FAILURE_COOLDOWN_MS} ms.
417
+ * Never throws — all errors are caught and routed to the logger.
418
+ */
419
+ export async function flushGrievances(
420
+ db?: Database,
421
+ settings?: Settings,
422
+ options: FlushOptions = {},
423
+ ): Promise<FlushResult> {
424
+ const config = resolvePushConfig(settings, options.bypassConsent === true);
425
+ if (!config) return { pushed: 0, ok: false, skipped: true };
426
+
427
+ // `bypassConsent` is the user's explicit "ship NOW" intent — skip the
428
+ // 30s cooldown window so they're not stuck looking at "skipped" after a
429
+ // transient failure. Auto-flush calls still cool off.
430
+ const bypass = options.bypassConsent === true;
431
+ if (!bypass && inFlightFlush) return inFlightFlush;
432
+
433
+ if (!bypass && lastFailureAt > 0 && Date.now() - lastFailureAt < FAILURE_COOLDOWN_MS) {
434
+ return { pushed: 0, ok: false, skipped: true };
435
+ }
436
+
437
+ const handle = db ?? openAutoQaDb();
438
+ if (!handle) return { pushed: 0, ok: false, skipped: true };
439
+
440
+ const promise = (async () => {
441
+ try {
442
+ return await performFlush(handle, config, options);
443
+ } catch (error) {
444
+ lastFailureAt = Date.now();
445
+ logger.warn("autoqa push failed", { endpoint: config.endpoint, error: String(error) });
446
+ return { pushed: 0, ok: false };
447
+ }
448
+ })();
449
+
450
+ if (!bypass) inFlightFlush = promise;
451
+ try {
452
+ return await promise;
453
+ } finally {
454
+ if (!bypass) inFlightFlush = null;
455
+ }
456
+ }
457
+
458
+ export function createReportToolIssueTool(session: ToolSession, activeBuiltinNames: readonly string[] = []): AgentTool {
55
459
  const getModel = () => session.getActiveModelString?.() ?? "unknown";
460
+ // Snapshotted at construction time. The model's enum is built from the same
461
+ // snapshot; mid-session drift (extensions registering later, etc.) is caught
462
+ // by the silent-drop guard below.
463
+ const allowedToolNames = new Set(activeBuiltinNames);
56
464
 
57
465
  return {
58
466
  name: "report_tool_issue",
59
467
  label: "Report Tool Issue",
60
468
  strict: false,
61
469
  description: "Report unexpected tool behavior for automated QA tracking.",
62
- parameters: ReportToolIssueParams,
470
+ parameters: buildReportToolIssueParams(activeBuiltinNames),
63
471
  intent: "omit",
64
472
  async execute(_toolCallId, rawParams) {
473
+ // Save is unconditional: the row lives in the user's own SQLite
474
+ // at ~/.omp/agent/autoqa.db regardless of consent — they always
475
+ // own their local data and can inspect or wipe it via `omp grievances`.
476
+ // Consent only gates whether the row is *shipped* to the shared
477
+ // backend; that decision rides on `dev.autoqa.consent` and is
478
+ // enforced inside `flushGrievances` via `resolvePushConfig`.
65
479
  try {
66
480
  const params = rawParams as { tool: string; report: string };
67
- const db = openDb();
68
- db?.prepare("INSERT INTO grievances (model, version, tool, report) VALUES (?, ?, ?, ?)").run(
69
- getModel(),
70
- VERSION,
71
- params.tool,
72
- params.report,
73
- );
481
+ // Some models emit `proxy_<name>` for tools routed through a
482
+ // passthrough wrapper. Strip the prefix before allowlist check so
483
+ // `proxy_read` lands as a report against `read`, not a silent drop.
484
+ const canonicalTool = params.tool.startsWith("proxy_") ? params.tool.slice("proxy_".length) : params.tool;
485
+ // Silently drop reports targeting tools that aren't shipped built-ins
486
+ // (MCP servers, extensions that overrode a built-in name, typos).
487
+ // Not the model's fault — no error, no DB row, just acknowledge.
488
+ // Empty allowlist means the factory was called without a known active
489
+ // set, so behave as before and record everything.
490
+ if (allowedToolNames.size > 0 && !allowedToolNames.has(canonicalTool)) {
491
+ return { content: [{ type: "text", text: "Noted, thanks!" }] };
492
+ }
493
+ const db = openAutoQaDb();
494
+ if (db) {
495
+ db.prepare("INSERT INTO grievances (model, version, tool, report) VALUES (?, ?, ?, ?)").run(
496
+ getModel(),
497
+ VERSION,
498
+ canonicalTool,
499
+ params.report,
500
+ );
501
+ // Fire-and-forget background pipeline:
502
+ // 1. Trigger the consent popup if it hasn't been answered
503
+ // (single-flight inside `resolveAutoQaConsent`; subagents
504
+ // share the same module-level state).
505
+ // 2. Attempt a flush — `resolvePushConfig` no-ops when consent
506
+ // isn't granted, so a "no" leaves the row local for later
507
+ // `omp grievances push` or a future consent change.
508
+ // Tool execution returns immediately; the model never waits
509
+ // on the dialog.
510
+ void (async () => {
511
+ try {
512
+ await resolveAutoQaConsent(session.settings);
513
+ await flushGrievances(db, session.settings);
514
+ } catch (error) {
515
+ logger.debug("autoqa post-insert pipeline failed", { error: String(error) });
516
+ }
517
+ })();
518
+ }
74
519
  } catch (error) {
75
520
  logger.error("Failed to record tool issue", { error });
76
521
  }
@@ -12,14 +12,9 @@ import { replaceTabs } from "./render-utils";
12
12
  import { ToolError } from "./tool-errors";
13
13
 
14
14
  const resolveSchema = z.object({
15
- action: z.union([z.literal("apply"), z.literal("discard")]),
15
+ action: z.enum(["apply", "discard"]),
16
16
  reason: z.string().describe("reason for action"),
17
- extra: z
18
- .record(z.string(), z.unknown())
19
- .optional()
20
- .describe(
21
- 'Free-form metadata interpreted by the resolving tool (e.g. plan-mode approval requires `{ title: "<PLAN_TITLE>" }`).',
22
- ),
17
+ extra: z.record(z.string(), z.unknown()).optional().describe("free-form metadata"),
23
18
  });
24
19
 
25
20
  type ResolveParams = z.infer<typeof resolveSchema>;
@@ -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) {
@@ -49,31 +49,24 @@ const TodoOp = z
49
49
  .describe("operation to apply");
50
50
 
51
51
  const InitListEntry = z.object({
52
- phase: z.string().describe("phase name (short noun phrase)"),
53
- items: z
54
- .array(z.string().describe("task content (5-10 words)"))
55
- .min(1)
56
- .describe("tasks for this phase, in execution order; all start as pending"),
52
+ phase: z.string().describe("phase name"),
53
+ items: z.array(z.string().describe("task content")).min(1).describe("tasks for this phase"),
57
54
  });
58
55
 
59
56
  const TodoOpEntry = z.object({
60
57
  op: TodoOp,
61
- list: z.array(InitListEntry).optional().describe("phased task list for op=init"),
62
- task: z.string().optional().describe("task content for start/done/rm/drop/note"),
63
- phase: z.string().optional().describe("phase name for done/rm/drop/append"),
64
- items: z
65
- .array(z.string().describe("task content (5-10 words)"))
66
- .min(1)
67
- .optional()
68
- .describe("tasks to append to `phase` for op=append"),
69
- text: z.string().optional().describe("note text for op=note (appended with newline)"),
58
+ list: z.array(InitListEntry).optional().describe("phased task list (init)"),
59
+ task: z.string().optional().describe("task content"),
60
+ phase: z.string().optional().describe("phase name"),
61
+ items: z.array(z.string().describe("task content")).min(1).optional().describe("tasks to append"),
62
+ text: z.string().optional().describe("note text"),
70
63
  });
71
64
 
72
65
  const todoWriteSchema = z
73
66
  .object({
74
67
  ops: z.array(TodoOpEntry).min(1).describe("ordered todo operations"),
75
68
  })
76
- .describe("Apply ordered todo operations");
69
+ .describe("apply ordered todo operations");
77
70
 
78
71
  type TodoWriteParams = z.infer<typeof todoWriteSchema>;
79
72
  type TodoOpEntryValue = TodoWriteParams["ops"][number];
@@ -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
  );