@oh-my-pi/pi-coding-agent 15.12.3 → 15.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/CHANGELOG.md +347 -7
  2. package/dist/cli.js +1615 -1231
  3. package/dist/types/async/job-manager.d.ts +15 -0
  4. package/dist/types/autolearn/controller.d.ts +25 -0
  5. package/dist/types/autolearn/managed-skills.d.ts +45 -0
  6. package/dist/types/autoresearch/state.d.ts +1 -1
  7. package/dist/types/autoresearch/tools/init-experiment.d.ts +1 -1
  8. package/dist/types/autoresearch/tools/log-experiment.d.ts +1 -1
  9. package/dist/types/autoresearch/tools/run-experiment.d.ts +1 -1
  10. package/dist/types/autoresearch/tools/update-notes.d.ts +1 -1
  11. package/dist/types/autoresearch/types.d.ts +1 -1
  12. package/dist/types/cli/args.d.ts +19 -2
  13. package/dist/types/cli/models-cli.d.ts +49 -0
  14. package/dist/types/cli/session-picker.d.ts +1 -1
  15. package/dist/types/cli/setup-cli.d.ts +1 -1
  16. package/dist/types/cli/setup-model-picker.d.ts +14 -0
  17. package/dist/types/collab/protocol.d.ts +1 -1
  18. package/dist/types/commands/launch.d.ts +0 -3
  19. package/dist/types/commands/models.d.ts +33 -0
  20. package/dist/types/commands/say.d.ts +24 -0
  21. package/dist/types/commands/token.d.ts +25 -0
  22. package/dist/types/commit/agentic/tools/analyze-file.d.ts +1 -1
  23. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +1 -1
  24. package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
  25. package/dist/types/commit/agentic/tools/git-overview.d.ts +1 -1
  26. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +1 -1
  27. package/dist/types/commit/agentic/tools/propose-commit.d.ts +1 -1
  28. package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
  29. package/dist/types/commit/agentic/tools/schemas.d.ts +1 -1
  30. package/dist/types/commit/agentic/tools/split-commit.d.ts +1 -1
  31. package/dist/types/commit/changelog/generate.d.ts +1 -1
  32. package/dist/types/commit/shared-llm.d.ts +1 -1
  33. package/dist/types/config/keybindings.d.ts +3 -3
  34. package/dist/types/config/model-registry.d.ts +17 -0
  35. package/dist/types/config/models-config-schema.d.ts +13 -1
  36. package/dist/types/config/models-config.d.ts +8 -2
  37. package/dist/types/config/settings-schema.d.ts +281 -58
  38. package/dist/types/edit/hashline/params.d.ts +1 -1
  39. package/dist/types/edit/modes/apply-patch.d.ts +1 -1
  40. package/dist/types/edit/modes/patch.d.ts +1 -1
  41. package/dist/types/edit/modes/replace.d.ts +1 -1
  42. package/dist/types/export/html/index.d.ts +2 -1
  43. package/dist/types/extensibility/custom-commands/types.d.ts +2 -2
  44. package/dist/types/extensibility/custom-tools/types.d.ts +2 -2
  45. package/dist/types/extensibility/extensions/model-api.d.ts +17 -0
  46. package/dist/types/extensibility/extensions/runner.d.ts +3 -1
  47. package/dist/types/extensibility/extensions/types.d.ts +49 -3
  48. package/dist/types/extensibility/hooks/index.d.ts +2 -1
  49. package/dist/types/extensibility/hooks/types.d.ts +2 -2
  50. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +9 -0
  51. package/dist/types/extensibility/plugins/loader.d.ts +11 -0
  52. package/dist/types/extensibility/shared-events.d.ts +1 -1
  53. package/dist/types/extensibility/skills.d.ts +10 -0
  54. package/dist/types/goals/guided-setup.d.ts +18 -0
  55. package/dist/types/goals/state.d.ts +1 -1
  56. package/dist/types/goals/tools/goal-tool.d.ts +1 -1
  57. package/dist/types/hindsight/transcript.d.ts +1 -1
  58. package/dist/types/index.d.ts +5 -0
  59. package/dist/types/internal-urls/local-protocol.d.ts +4 -2
  60. package/dist/types/lsp/types.d.ts +1 -1
  61. package/dist/types/main.d.ts +4 -3
  62. package/dist/types/mcp/manager.d.ts +8 -0
  63. package/dist/types/mcp/startup-events.d.ts +11 -0
  64. package/dist/types/memories/index.d.ts +7 -0
  65. package/dist/types/memory-backend/local-backend.d.ts +4 -3
  66. package/dist/types/mnemopi/config.d.ts +28 -0
  67. package/dist/types/modes/acp/acp-agent.d.ts +1 -2
  68. package/dist/types/modes/components/agent-hub.d.ts +6 -0
  69. package/dist/types/modes/components/assistant-message.d.ts +1 -2
  70. package/dist/types/modes/components/compaction-summary-message.d.ts +15 -1
  71. package/dist/types/modes/components/custom-editor.d.ts +39 -1
  72. package/dist/types/modes/components/custom-editor.test.d.ts +1 -0
  73. package/dist/types/modes/components/index.d.ts +1 -0
  74. package/dist/types/modes/components/logout-account-selector.d.ts +8 -0
  75. package/dist/types/modes/components/session-selector.d.ts +1 -1
  76. package/dist/types/modes/components/status-line/component.d.ts +9 -5
  77. package/dist/types/modes/components/status-line/types.d.ts +2 -1
  78. package/dist/types/modes/components/tool-execution.d.ts +26 -16
  79. package/dist/types/modes/components/transcript-container.d.ts +23 -2
  80. package/dist/types/modes/components/tree-selector.d.ts +1 -1
  81. package/dist/types/modes/components/usage-row.d.ts +3 -0
  82. package/dist/types/modes/controllers/command-controller.d.ts +2 -2
  83. package/dist/types/modes/controllers/event-controller.d.ts +0 -17
  84. package/dist/types/modes/controllers/input-controller.d.ts +14 -0
  85. package/dist/types/modes/controllers/selector-controller.d.ts +3 -1
  86. package/dist/types/modes/gradient-highlight.d.ts +9 -4
  87. package/dist/types/modes/image-references.d.ts +6 -0
  88. package/dist/types/modes/interactive-mode.d.ts +27 -6
  89. package/dist/types/modes/magic-keywords.d.ts +13 -1
  90. package/dist/types/modes/rpc/rpc-mode.d.ts +35 -1
  91. package/dist/types/modes/rpc/rpc-types.d.ts +9 -1
  92. package/dist/types/modes/runtime-init.d.ts +4 -0
  93. package/dist/types/modes/theme/theme.d.ts +13 -2
  94. package/dist/types/modes/types.d.ts +8 -7
  95. package/dist/types/modes/utils/ui-helpers.d.ts +1 -1
  96. package/dist/types/registry/agent-registry.d.ts +17 -0
  97. package/dist/types/secrets/obfuscator.d.ts +1 -1
  98. package/dist/types/session/agent-session.d.ts +28 -35
  99. package/dist/types/session/agent-storage.d.ts +2 -1
  100. package/dist/types/session/indexed-session-storage.d.ts +3 -3
  101. package/dist/types/session/messages.d.ts +8 -10
  102. package/dist/types/session/session-context.d.ts +39 -0
  103. package/dist/types/session/session-entries.d.ts +159 -0
  104. package/dist/types/session/session-listing.d.ts +69 -0
  105. package/dist/types/session/session-loader.d.ts +16 -0
  106. package/dist/types/session/session-manager.d.ts +85 -462
  107. package/dist/types/session/session-migrations.d.ts +12 -0
  108. package/dist/types/session/session-paths.d.ts +25 -0
  109. package/dist/types/session/session-persistence.d.ts +8 -0
  110. package/dist/types/session/session-storage.d.ts +11 -7
  111. package/dist/types/session/snapcompact-inline.d.ts +12 -1
  112. package/dist/types/session/snapcompact-savings-journal.d.ts +46 -0
  113. package/dist/types/session/tool-choice-queue.d.ts +6 -6
  114. package/dist/types/slash-commands/helpers/logout.d.ts +15 -0
  115. package/dist/types/stt/asr-client.d.ts +90 -0
  116. package/dist/types/stt/asr-protocol.d.ts +97 -0
  117. package/dist/types/stt/asr-worker.d.ts +2 -0
  118. package/dist/types/stt/downloader.d.ts +38 -0
  119. package/dist/types/stt/endpointer.d.ts +59 -0
  120. package/dist/types/stt/index.d.ts +5 -1
  121. package/dist/types/stt/models.d.ts +120 -0
  122. package/dist/types/stt/recorder.d.ts +17 -0
  123. package/dist/types/stt/stt-controller.d.ts +6 -0
  124. package/dist/types/stt/transcriber.d.ts +5 -7
  125. package/dist/types/stt/wav.d.ts +29 -0
  126. package/dist/types/system-prompt.d.ts +4 -0
  127. package/dist/types/task/executor.d.ts +2 -0
  128. package/dist/types/task/index.d.ts +9 -1
  129. package/dist/types/task/types.d.ts +37 -1
  130. package/dist/types/tools/ask.d.ts +1 -1
  131. package/dist/types/tools/ast-edit.d.ts +1 -1
  132. package/dist/types/tools/ast-grep.d.ts +1 -1
  133. package/dist/types/tools/bash.d.ts +3 -3
  134. package/dist/types/tools/browser/cmux/cmux-tab.d.ts +202 -0
  135. package/dist/types/tools/browser/cmux/rpc.d.ts +70 -0
  136. package/dist/types/tools/browser/cmux/socket-client.d.ts +19 -0
  137. package/dist/types/tools/browser/registry.d.ts +16 -3
  138. package/dist/types/tools/browser/render.d.ts +2 -0
  139. package/dist/types/tools/browser/tab-protocol.d.ts +2 -0
  140. package/dist/types/tools/browser/tab-supervisor.d.ts +16 -4
  141. package/dist/types/tools/browser.d.ts +3 -1
  142. package/dist/types/tools/checkpoint.d.ts +1 -1
  143. package/dist/types/tools/debug.d.ts +1 -1
  144. package/dist/types/tools/eval-render.d.ts +1 -1
  145. package/dist/types/tools/eval.d.ts +1 -1
  146. package/dist/types/tools/find.d.ts +1 -1
  147. package/dist/types/tools/gh.d.ts +1 -1
  148. package/dist/types/tools/image-gen.d.ts +1 -1
  149. package/dist/types/tools/index.d.ts +14 -2
  150. package/dist/types/tools/inspect-image.d.ts +1 -1
  151. package/dist/types/tools/irc.d.ts +2 -1
  152. package/dist/types/tools/job.d.ts +1 -1
  153. package/dist/types/tools/learn.d.ts +51 -0
  154. package/dist/types/tools/manage-skill.d.ts +40 -0
  155. package/dist/types/tools/memory-edit.d.ts +1 -1
  156. package/dist/types/tools/memory-recall.d.ts +1 -1
  157. package/dist/types/tools/memory-reflect.d.ts +1 -1
  158. package/dist/types/tools/memory-retain.d.ts +1 -1
  159. package/dist/types/tools/plan-mode-guard.d.ts +10 -0
  160. package/dist/types/tools/read.d.ts +1 -1
  161. package/dist/types/tools/render-mermaid.d.ts +1 -1
  162. package/dist/types/tools/renderers.d.ts +7 -11
  163. package/dist/types/tools/resolve.d.ts +1 -1
  164. package/dist/types/tools/review.d.ts +1 -1
  165. package/dist/types/tools/search-tool-bm25.d.ts +1 -1
  166. package/dist/types/tools/search.d.ts +1 -1
  167. package/dist/types/tools/ssh.d.ts +2 -2
  168. package/dist/types/tools/todo.d.ts +2 -2
  169. package/dist/types/tools/tts.d.ts +26 -1
  170. package/dist/types/tools/write.d.ts +2 -2
  171. package/dist/types/tts/downloader.d.ts +20 -0
  172. package/dist/types/tts/index.d.ts +8 -0
  173. package/dist/types/tts/models.d.ts +82 -0
  174. package/dist/types/tts/player.d.ts +32 -0
  175. package/dist/types/tts/runtime.d.ts +6 -0
  176. package/dist/types/tts/streaming-player.d.ts +41 -0
  177. package/dist/types/tts/tts-client.d.ts +93 -0
  178. package/dist/types/tts/tts-protocol.d.ts +95 -0
  179. package/dist/types/tts/tts-worker.d.ts +2 -0
  180. package/dist/types/tts/vocalizer.d.ts +41 -0
  181. package/dist/types/tts/wav.d.ts +8 -0
  182. package/dist/types/utils/clipboard.d.ts +4 -3
  183. package/dist/types/utils/image-loading.d.ts +18 -1
  184. package/dist/types/utils/thinking-display.d.ts +17 -0
  185. package/dist/types/utils/tool-choice.d.ts +8 -0
  186. package/dist/types/utils/tools-manager.d.ts +2 -1
  187. package/dist/types/utils/tools-manager.test.d.ts +1 -0
  188. package/dist/types/web/scrapers/github.d.ts +1 -1
  189. package/dist/types/web/search/index.d.ts +1 -1
  190. package/package.json +17 -16
  191. package/src/async/job-manager.ts +49 -0
  192. package/src/autolearn/controller.ts +139 -0
  193. package/src/autolearn/managed-skills.ts +257 -0
  194. package/src/autoresearch/state.ts +1 -1
  195. package/src/autoresearch/storage.ts +2 -1
  196. package/src/autoresearch/tools/init-experiment.ts +1 -1
  197. package/src/autoresearch/tools/log-experiment.ts +1 -1
  198. package/src/autoresearch/tools/run-experiment.ts +1 -1
  199. package/src/autoresearch/tools/update-notes.ts +1 -1
  200. package/src/autoresearch/types.ts +1 -1
  201. package/src/cli/args.ts +56 -10
  202. package/src/cli/auth-gateway-cli.ts +1 -1
  203. package/src/cli/bench-cli.ts +1 -1
  204. package/src/cli/dry-balance-cli.ts +1 -1
  205. package/src/cli/models-cli.ts +427 -0
  206. package/src/cli/session-picker.ts +2 -1
  207. package/src/cli/setup-cli.ts +148 -47
  208. package/src/cli/setup-model-picker.ts +43 -0
  209. package/src/cli-commands.ts +3 -0
  210. package/src/cli.ts +45 -13
  211. package/src/collab/host.ts +10 -13
  212. package/src/collab/protocol.ts +1 -1
  213. package/src/commands/launch.ts +0 -3
  214. package/src/commands/models.ts +61 -0
  215. package/src/commands/say.ts +102 -0
  216. package/src/commands/setup.ts +1 -1
  217. package/src/commands/token.ts +89 -0
  218. package/src/commit/agentic/tools/analyze-file.ts +4 -1
  219. package/src/commit/agentic/tools/git-file-diff.ts +1 -1
  220. package/src/commit/agentic/tools/git-hunk.ts +1 -1
  221. package/src/commit/agentic/tools/git-overview.ts +1 -1
  222. package/src/commit/agentic/tools/propose-changelog.ts +1 -1
  223. package/src/commit/agentic/tools/propose-commit.ts +1 -1
  224. package/src/commit/agentic/tools/recent-commits.ts +1 -1
  225. package/src/commit/agentic/tools/schemas.ts +1 -1
  226. package/src/commit/agentic/tools/split-commit.ts +1 -1
  227. package/src/commit/analysis/summary.ts +1 -1
  228. package/src/commit/changelog/generate.ts +1 -1
  229. package/src/commit/shared-llm.ts +1 -1
  230. package/src/config/keybindings.ts +2 -2
  231. package/src/config/model-discovery.ts +11 -5
  232. package/src/config/model-registry.ts +79 -21
  233. package/src/config/model-resolver.ts +2 -2
  234. package/src/config/models-config-schema.ts +5 -2
  235. package/src/config/models-config.ts +2 -1
  236. package/src/config/settings-schema.ts +266 -32
  237. package/src/config/settings.ts +10 -0
  238. package/src/discovery/builtin.ts +23 -1
  239. package/src/discovery/claude-plugins.ts +44 -5
  240. package/src/discovery/helpers.ts +41 -1
  241. package/src/edit/hashline/params.ts +1 -1
  242. package/src/edit/modes/apply-patch.ts +1 -1
  243. package/src/edit/modes/patch.ts +1 -1
  244. package/src/edit/modes/replace.ts +1 -1
  245. package/src/eval/__tests__/budget-bridge.test.ts +1 -1
  246. package/src/eval/agent-bridge.ts +1 -1
  247. package/src/eval/completion-bridge.ts +1 -1
  248. package/src/eval/js/shared/prelude.txt +69 -17
  249. package/src/export/html/index.ts +3 -6
  250. package/src/export/html/template.js +24 -2
  251. package/src/export/html/tool-views.generated.js +2 -2
  252. package/src/extensibility/custom-commands/loader.ts +1 -1
  253. package/src/extensibility/custom-commands/types.ts +2 -2
  254. package/src/extensibility/custom-tools/loader.ts +1 -1
  255. package/src/extensibility/custom-tools/types.ts +2 -2
  256. package/src/extensibility/extensions/loader.ts +2 -2
  257. package/src/extensibility/extensions/model-api.ts +41 -0
  258. package/src/extensibility/extensions/runner.ts +4 -0
  259. package/src/extensibility/extensions/types.ts +54 -3
  260. package/src/extensibility/extensions/wrapper.ts +41 -5
  261. package/src/extensibility/hooks/index.ts +2 -1
  262. package/src/extensibility/hooks/loader.ts +1 -1
  263. package/src/extensibility/hooks/types.ts +2 -2
  264. package/src/extensibility/plugins/legacy-pi-compat.ts +43 -13
  265. package/src/extensibility/plugins/loader.ts +30 -19
  266. package/src/extensibility/plugins/manager.ts +221 -90
  267. package/src/extensibility/shared-events.ts +1 -1
  268. package/src/extensibility/skills.ts +101 -5
  269. package/src/goals/guided-setup.ts +133 -0
  270. package/src/goals/state.ts +1 -1
  271. package/src/goals/tools/goal-tool.ts +1 -1
  272. package/src/hindsight/transcript.ts +1 -1
  273. package/src/index.ts +5 -0
  274. package/src/internal-urls/docs-index.generated.ts +13 -10
  275. package/src/internal-urls/history-protocol.ts +1 -1
  276. package/src/internal-urls/local-protocol.ts +29 -7
  277. package/src/lsp/types.ts +1 -1
  278. package/src/main.ts +27 -32
  279. package/src/mcp/config-writer.ts +7 -3
  280. package/src/mcp/manager.ts +11 -0
  281. package/src/mcp/startup-events.ts +21 -0
  282. package/src/mcp/transports/stdio.ts +2 -1
  283. package/src/memories/index.ts +149 -12
  284. package/src/memories/storage.ts +2 -1
  285. package/src/memory-backend/local-backend.ts +11 -5
  286. package/src/mnemopi/backend.ts +1 -0
  287. package/src/mnemopi/config.ts +112 -12
  288. package/src/modes/acp/acp-agent.ts +8 -53
  289. package/src/modes/acp/acp-event-mapper.ts +5 -1
  290. package/src/modes/components/agent-hub.ts +51 -5
  291. package/src/modes/components/assistant-message.ts +12 -44
  292. package/src/modes/components/compaction-summary-message.ts +125 -26
  293. package/src/modes/components/custom-editor.test.ts +96 -0
  294. package/src/modes/components/custom-editor.ts +164 -8
  295. package/src/modes/components/index.ts +1 -0
  296. package/src/modes/components/logout-account-selector.ts +130 -0
  297. package/src/modes/components/mcp-add-wizard.ts +1 -1
  298. package/src/modes/components/model-selector.ts +2 -2
  299. package/src/modes/components/session-selector.ts +1 -1
  300. package/src/modes/components/settings-defs.ts +7 -0
  301. package/src/modes/components/status-line/component.ts +54 -157
  302. package/src/modes/components/status-line/segments.ts +1 -1
  303. package/src/modes/components/status-line/types.ts +2 -1
  304. package/src/modes/components/tool-execution.ts +82 -43
  305. package/src/modes/components/transcript-container.ts +70 -1
  306. package/src/modes/components/tree-selector.ts +1 -1
  307. package/src/modes/components/usage-row.ts +18 -0
  308. package/src/modes/components/user-message.ts +4 -2
  309. package/src/modes/controllers/command-controller.ts +14 -16
  310. package/src/modes/controllers/event-controller.ts +101 -73
  311. package/src/modes/controllers/extension-ui-controller.ts +6 -0
  312. package/src/modes/controllers/input-controller.ts +311 -57
  313. package/src/modes/controllers/mcp-command-controller.ts +44 -3
  314. package/src/modes/controllers/selector-controller.ts +68 -12
  315. package/src/modes/controllers/streaming-reveal.ts +4 -3
  316. package/src/modes/gradient-highlight.ts +21 -9
  317. package/src/modes/image-references.ts +20 -0
  318. package/src/modes/interactive-mode.ts +288 -48
  319. package/src/modes/magic-keywords.ts +27 -5
  320. package/src/modes/rpc/rpc-mode.ts +146 -14
  321. package/src/modes/rpc/rpc-subagents.ts +2 -2
  322. package/src/modes/rpc/rpc-types.ts +8 -2
  323. package/src/modes/runtime-init.ts +28 -3
  324. package/src/modes/theme/theme.ts +99 -51
  325. package/src/modes/types.ts +6 -7
  326. package/src/modes/utils/hotkeys-markdown.ts +1 -1
  327. package/src/modes/utils/ui-helpers.ts +36 -7
  328. package/src/priority.json +5 -1
  329. package/src/prompts/agents/task.md +1 -0
  330. package/src/prompts/goals/guided-goal-interview.md +8 -0
  331. package/src/prompts/goals/guided-goal-system.md +12 -0
  332. package/src/prompts/memories/read-path.md +6 -0
  333. package/src/prompts/system/autolearn-guidance-learn.md +1 -0
  334. package/src/prompts/system/autolearn-guidance.md +7 -0
  335. package/src/prompts/system/autolearn-nudge.md +3 -0
  336. package/src/prompts/system/eager-task.md +7 -0
  337. package/src/prompts/system/eager-todo.md +11 -6
  338. package/src/prompts/system/empty-stop-retry.md +4 -6
  339. package/src/prompts/system/subagent-system-prompt.md +4 -0
  340. package/src/prompts/system/system-prompt.md +10 -5
  341. package/src/prompts/system/title-marker-instruction.md +1 -0
  342. package/src/prompts/system/title-system-marker.md +16 -0
  343. package/src/prompts/tools/job.md +1 -0
  344. package/src/prompts/tools/learn.md +7 -0
  345. package/src/prompts/tools/manage-skill.md +9 -0
  346. package/src/prompts/tools/task.md +3 -0
  347. package/src/registry/agent-registry.ts +30 -0
  348. package/src/sdk.ts +103 -43
  349. package/src/secrets/obfuscator.ts +1 -1
  350. package/src/session/agent-session.ts +331 -318
  351. package/src/session/agent-storage.ts +18 -9
  352. package/src/session/history-storage.ts +3 -2
  353. package/src/session/indexed-session-storage.ts +7 -10
  354. package/src/session/messages.ts +9 -11
  355. package/src/session/session-context.ts +352 -0
  356. package/src/session/session-dump-format.ts +4 -2
  357. package/src/session/session-entries.ts +194 -0
  358. package/src/session/session-listing.ts +588 -0
  359. package/src/session/session-loader.ts +106 -0
  360. package/src/session/session-manager.ts +968 -3064
  361. package/src/session/session-migrations.ts +78 -0
  362. package/src/session/session-paths.ts +193 -0
  363. package/src/session/session-persistence.ts +131 -0
  364. package/src/session/session-storage.ts +91 -30
  365. package/src/session/snapcompact-inline.ts +21 -1
  366. package/src/session/snapcompact-savings-journal.ts +113 -0
  367. package/src/session/tool-choice-queue.ts +23 -11
  368. package/src/slash-commands/builtin-registry.ts +40 -4
  369. package/src/slash-commands/helpers/logout.ts +88 -0
  370. package/src/stt/asr-client.ts +520 -0
  371. package/src/stt/asr-protocol.ts +65 -0
  372. package/src/stt/asr-worker.ts +790 -0
  373. package/src/stt/downloader.ts +107 -47
  374. package/src/stt/endpointer.ts +259 -0
  375. package/src/stt/index.ts +5 -1
  376. package/src/stt/models.ts +150 -0
  377. package/src/stt/recorder.ts +247 -60
  378. package/src/stt/stt-controller.ts +201 -22
  379. package/src/stt/transcriber.ts +37 -68
  380. package/src/stt/wav.ts +173 -0
  381. package/src/system-prompt.ts +8 -0
  382. package/src/task/agents.ts +1 -2
  383. package/src/task/executor.ts +49 -15
  384. package/src/task/index.ts +60 -6
  385. package/src/task/render.ts +83 -8
  386. package/src/task/types.ts +54 -1
  387. package/src/tools/ask.ts +9 -1
  388. package/src/tools/ast-edit.ts +1 -1
  389. package/src/tools/ast-grep.ts +1 -1
  390. package/src/tools/bash.ts +5 -4
  391. package/src/tools/browser/cmux/cmux-tab.ts +1264 -0
  392. package/src/tools/browser/cmux/rpc.ts +156 -0
  393. package/src/tools/browser/cmux/socket-client.ts +309 -0
  394. package/src/tools/browser/registry.ts +37 -3
  395. package/src/tools/browser/render.ts +6 -1
  396. package/src/tools/browser/tab-protocol.ts +2 -0
  397. package/src/tools/browser/tab-supervisor.ts +189 -18
  398. package/src/tools/browser/tab-worker.ts +1 -1
  399. package/src/tools/browser.ts +16 -1
  400. package/src/tools/checkpoint.ts +1 -1
  401. package/src/tools/debug.ts +1 -1
  402. package/src/tools/eval-render.ts +4 -3
  403. package/src/tools/eval.ts +11 -6
  404. package/src/tools/fetch.ts +13 -2
  405. package/src/tools/find.ts +1 -1
  406. package/src/tools/gh.ts +1 -1
  407. package/src/tools/github-cache.ts +2 -1
  408. package/src/tools/image-gen.ts +1 -1
  409. package/src/tools/index.ts +43 -5
  410. package/src/tools/inspect-image.ts +3 -1
  411. package/src/tools/irc.ts +11 -3
  412. package/src/tools/job.ts +15 -3
  413. package/src/tools/learn.ts +144 -0
  414. package/src/tools/manage-skill.ts +104 -0
  415. package/src/tools/memory-edit.ts +1 -1
  416. package/src/tools/memory-recall.ts +1 -1
  417. package/src/tools/memory-reflect.ts +1 -1
  418. package/src/tools/memory-retain.ts +1 -1
  419. package/src/tools/plan-mode-guard.ts +53 -19
  420. package/src/tools/read.ts +8 -2
  421. package/src/tools/render-mermaid.ts +1 -1
  422. package/src/tools/renderers.ts +7 -11
  423. package/src/tools/report-tool-issue.ts +3 -2
  424. package/src/tools/resolve.ts +1 -1
  425. package/src/tools/review.ts +1 -1
  426. package/src/tools/search-tool-bm25.ts +1 -1
  427. package/src/tools/search.ts +1 -1
  428. package/src/tools/ssh.ts +5 -4
  429. package/src/tools/todo.ts +2 -2
  430. package/src/tools/tts.ts +204 -93
  431. package/src/tools/write.ts +19 -3
  432. package/src/tts/downloader.ts +64 -0
  433. package/src/tts/index.ts +8 -0
  434. package/src/tts/models.ts +137 -0
  435. package/src/tts/player.ts +137 -0
  436. package/src/tts/runtime.ts +21 -0
  437. package/src/tts/streaming-player.ts +266 -0
  438. package/src/tts/tts-client.ts +647 -0
  439. package/src/tts/tts-protocol.ts +60 -0
  440. package/src/tts/tts-worker.ts +497 -0
  441. package/src/tts/vocalizer.ts +162 -0
  442. package/src/tts/wav.ts +58 -0
  443. package/src/utils/clipboard.ts +35 -18
  444. package/src/utils/image-loading.ts +35 -4
  445. package/src/utils/thinking-display.ts +37 -0
  446. package/src/utils/title-generator.ts +48 -5
  447. package/src/utils/tool-choice.ts +16 -0
  448. package/src/utils/tools-manager.test.ts +25 -0
  449. package/src/utils/tools-manager.ts +19 -1
  450. package/src/web/scrapers/github.ts +96 -0
  451. package/src/web/search/index.ts +14 -1
  452. package/src/web/search/providers/searxng.ts +13 -1
  453. package/dist/types/cli/list-models.d.ts +0 -30
  454. package/dist/types/stt/setup.d.ts +0 -18
  455. package/src/cli/list-models.ts +0 -194
  456. package/src/stt/setup.ts +0 -52
  457. package/src/stt/transcribe.py +0 -70
@@ -29,7 +29,7 @@ export declare const ModelsConfigFile: ConfigFile<{
29
29
  providers?: Record<string, {
30
30
  baseUrl?: string | undefined;
31
31
  apiKey?: string | undefined;
32
- api?: "anthropic-messages" | "azure-openai-responses" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
32
+ api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
33
33
  headers?: Record<string, string> | undefined;
34
34
  compat?: {
35
35
  supportsStore?: boolean | undefined;
@@ -54,6 +54,7 @@ export declare const ModelsConfigFile: ConfigFile<{
54
54
  allowsSyntheticReasoningContentForToolCalls?: boolean | undefined;
55
55
  requiresAssistantContentForToolCalls?: boolean | undefined;
56
56
  supportsToolChoice?: boolean | undefined;
57
+ supportsForcedToolChoice?: boolean | undefined;
57
58
  disableReasoningOnForcedToolChoice?: boolean | undefined;
58
59
  disableReasoningOnToolChoice?: boolean | undefined;
59
60
  thinkingFormat?: "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "zai" | undefined;
@@ -99,6 +100,7 @@ export declare const ModelsConfigFile: ConfigFile<{
99
100
  allowsSyntheticReasoningContentForToolCalls?: boolean | undefined;
100
101
  requiresAssistantContentForToolCalls?: boolean | undefined;
101
102
  supportsToolChoice?: boolean | undefined;
103
+ supportsForcedToolChoice?: boolean | undefined;
102
104
  disableReasoningOnForcedToolChoice?: boolean | undefined;
103
105
  disableReasoningOnToolChoice?: boolean | undefined;
104
106
  thinkingFormat?: "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "zai" | undefined;
@@ -131,7 +133,7 @@ export declare const ModelsConfigFile: ConfigFile<{
131
133
  models?: {
132
134
  id: string;
133
135
  name?: string | undefined;
134
- api?: "anthropic-messages" | "azure-openai-responses" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
136
+ api?: "anthropic-messages" | "azure-openai-responses" | "google-gemini-cli" | "google-generative-ai" | "google-vertex" | "openai-codex-responses" | "openai-completions" | "openai-responses" | undefined;
135
137
  baseUrl?: string | undefined;
136
138
  reasoning?: boolean | undefined;
137
139
  thinking?: {
@@ -182,6 +184,7 @@ export declare const ModelsConfigFile: ConfigFile<{
182
184
  allowsSyntheticReasoningContentForToolCalls?: boolean | undefined;
183
185
  requiresAssistantContentForToolCalls?: boolean | undefined;
184
186
  supportsToolChoice?: boolean | undefined;
187
+ supportsForcedToolChoice?: boolean | undefined;
185
188
  disableReasoningOnForcedToolChoice?: boolean | undefined;
186
189
  disableReasoningOnToolChoice?: boolean | undefined;
187
190
  thinkingFormat?: "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "zai" | undefined;
@@ -227,6 +230,7 @@ export declare const ModelsConfigFile: ConfigFile<{
227
230
  allowsSyntheticReasoningContentForToolCalls?: boolean | undefined;
228
231
  requiresAssistantContentForToolCalls?: boolean | undefined;
229
232
  supportsToolChoice?: boolean | undefined;
233
+ supportsForcedToolChoice?: boolean | undefined;
230
234
  disableReasoningOnForcedToolChoice?: boolean | undefined;
231
235
  disableReasoningOnToolChoice?: boolean | undefined;
232
236
  thinkingFormat?: "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "zai" | undefined;
@@ -304,6 +308,7 @@ export declare const ModelsConfigFile: ConfigFile<{
304
308
  allowsSyntheticReasoningContentForToolCalls?: boolean | undefined;
305
309
  requiresAssistantContentForToolCalls?: boolean | undefined;
306
310
  supportsToolChoice?: boolean | undefined;
311
+ supportsForcedToolChoice?: boolean | undefined;
307
312
  disableReasoningOnForcedToolChoice?: boolean | undefined;
308
313
  disableReasoningOnToolChoice?: boolean | undefined;
309
314
  thinkingFormat?: "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "zai" | undefined;
@@ -349,6 +354,7 @@ export declare const ModelsConfigFile: ConfigFile<{
349
354
  allowsSyntheticReasoningContentForToolCalls?: boolean | undefined;
350
355
  requiresAssistantContentForToolCalls?: boolean | undefined;
351
356
  supportsToolChoice?: boolean | undefined;
357
+ supportsForcedToolChoice?: boolean | undefined;
352
358
  disableReasoningOnForcedToolChoice?: boolean | undefined;
353
359
  disableReasoningOnToolChoice?: boolean | undefined;
354
360
  thinkingFormat?: "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "zai" | undefined;
@@ -1046,6 +1046,30 @@ export declare const SETTINGS_SCHEMA: {
1046
1046
  }];
1047
1047
  };
1048
1048
  };
1049
+ readonly fastModeScope: {
1050
+ readonly type: "enum";
1051
+ readonly values: readonly ["both", "openai", "claude"];
1052
+ readonly default: "both";
1053
+ readonly ui: {
1054
+ readonly tab: "model";
1055
+ readonly group: "Sampling";
1056
+ readonly label: "Fast Mode Scope";
1057
+ readonly description: 'Which providers `/fast on` (and the fast-mode toggle) target. "both" = priority on every supported provider; "openai"/"claude" scope it to one family (mirrors serviceTier openai-only/claude-only).';
1058
+ readonly options: readonly [{
1059
+ readonly value: "both";
1060
+ readonly label: "Both";
1061
+ readonly description: "Priority on every supported provider";
1062
+ }, {
1063
+ readonly value: "openai";
1064
+ readonly label: "OpenAI only";
1065
+ readonly description: "Priority on OpenAI/OpenAI-Codex requests; ignored elsewhere";
1066
+ }, {
1067
+ readonly value: "claude";
1068
+ readonly label: "Claude only";
1069
+ readonly description: "Anthropic fast mode on direct Claude requests; ignored elsewhere";
1070
+ }];
1071
+ };
1072
+ };
1049
1073
  readonly "retry.enabled": {
1050
1074
  readonly type: "boolean";
1051
1075
  readonly default: true;
@@ -1242,6 +1266,32 @@ export declare const SETTINGS_SCHEMA: {
1242
1266
  readonly description: "Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`";
1243
1267
  };
1244
1268
  };
1269
+ readonly "paste.largeMenuThreshold": {
1270
+ readonly type: "number";
1271
+ readonly default: 100;
1272
+ readonly ui: {
1273
+ readonly tab: "interaction";
1274
+ readonly group: "Input";
1275
+ readonly label: "Large Paste Menu";
1276
+ readonly description: "When a paste reaches this many lines, offer a menu to wrap it in a code block, wrap it in XML tags, or save it to a file. 0 disables the menu (large pastes still collapse to a [Paste] marker).";
1277
+ readonly options: readonly [{
1278
+ readonly value: "0";
1279
+ readonly label: "Off";
1280
+ }, {
1281
+ readonly value: "100";
1282
+ readonly label: "100 lines";
1283
+ }, {
1284
+ readonly value: "250";
1285
+ readonly label: "250 lines";
1286
+ }, {
1287
+ readonly value: "500";
1288
+ readonly label: "500 lines";
1289
+ }, {
1290
+ readonly value: "1000";
1291
+ readonly label: "1000 lines";
1292
+ }];
1293
+ };
1294
+ };
1245
1295
  readonly "startup.quiet": {
1246
1296
  readonly type: "boolean";
1247
1297
  readonly default: false;
@@ -1450,50 +1500,18 @@ export declare const SETTINGS_SCHEMA: {
1450
1500
  };
1451
1501
  readonly "stt.modelName": {
1452
1502
  readonly type: "enum";
1453
- readonly values: readonly ["tiny", "tiny.en", "base", "base.en", "small", "small.en", "medium", "medium.en", "large"];
1454
- readonly default: "base.en";
1503
+ readonly values: readonly ["fast", "balanced", "turbo", "parakeet"];
1504
+ readonly default: "parakeet";
1455
1505
  readonly ui: {
1456
1506
  readonly tab: "interaction";
1457
1507
  readonly group: "Speech";
1458
1508
  readonly label: "Speech Model";
1459
- readonly description: "Whisper model size (larger = more accurate but slower)";
1460
- readonly options: readonly [{
1461
- readonly value: "tiny";
1462
- readonly label: "tiny";
1463
- readonly description: "Multilingual; fastest, lowest accuracy";
1464
- }, {
1465
- readonly value: "tiny.en";
1466
- readonly label: "tiny.en";
1467
- readonly description: "English-only; fastest";
1468
- }, {
1469
- readonly value: "base";
1470
- readonly label: "base";
1471
- readonly description: "Multilingual; small and fast";
1472
- }, {
1473
- readonly value: "base.en";
1474
- readonly label: "base.en";
1475
- readonly description: "English-only; default";
1476
- }, {
1477
- readonly value: "small";
1478
- readonly label: "small";
1479
- readonly description: "Multilingual; balanced";
1480
- }, {
1481
- readonly value: "small.en";
1482
- readonly label: "small.en";
1483
- readonly description: "English-only; balanced";
1484
- }, {
1485
- readonly value: "medium";
1486
- readonly label: "medium";
1487
- readonly description: "Multilingual; accurate but slower";
1488
- }, {
1489
- readonly value: "medium.en";
1490
- readonly label: "medium.en";
1491
- readonly description: "English-only; accurate but slower";
1492
- }, {
1493
- readonly value: "large";
1494
- readonly label: "large";
1495
- readonly description: "Multilingual; most accurate";
1496
- }];
1509
+ readonly description: "Local on-device speech model. Parakeet TDT v3 (sherpa-onnx) is the SoTA default; Whisper base/small/large-v3-turbo tiers (transformers.js) trade size for multilingual coverage. Downloaded on first use.";
1510
+ readonly options: {
1511
+ value: "balanced" | "fast" | "parakeet" | "turbo";
1512
+ label: "Balanced (Whisper small)" | "Fast (Whisper base)" | "Parakeet TDT v3 (SoTA)" | "Turbo (Whisper large-v3)";
1513
+ description: "NVIDIA Parakeet TDT 0.6B v3, 25 languages. Open ASR Leaderboard leader — best accuracy and far fastest decoding. Default." | "Whisper base, multilingual. Smallest + fastest; lowest accuracy. Best for low-resource machines." | "Whisper large-v3-turbo, 99 languages. Widest language coverage; large download, slower." | "Whisper small, multilingual. More accurate than Fast, still light on CPU/RAM.";
1514
+ }[];
1497
1515
  };
1498
1516
  };
1499
1517
  readonly "contextPromotion.enabled": {
@@ -1823,7 +1841,7 @@ export declare const SETTINGS_SCHEMA: {
1823
1841
  };
1824
1842
  readonly "snapcompact.shape": {
1825
1843
  readonly type: "enum";
1826
- readonly values: readonly ["auto", ...("5x8-bw" | "5x8-sent" | "6x12-dim" | "6x6u-bw" | "6x6u-sent" | "8on16-bw" | "8x13-bw" | "8x8r-bw" | "8x8r-sent" | "8x8u-bw" | "8x8u-sent" | "doc-8on16-bw" | "doc-8on16-sent" | "doc-8on16-sent-dim")[]];
1844
+ readonly values: readonly ["auto", ...("11on16-bw" | "5x8-bw" | "5x8-sent" | "6x12-dim" | "6x6u-bw" | "6x6u-sent" | "8on16-bw" | "8on22-bw" | "8x13-bw" | "8x8r-bw" | "8x8r-sent" | "8x8u-bw" | "8x8u-sent" | "doc-8on16-bw" | "doc-8on16-sent" | "doc-8on16-sent-dim")[]];
1827
1845
  readonly default: "auto";
1828
1846
  readonly ui: {
1829
1847
  readonly tab: "context";
@@ -1878,6 +1896,14 @@ export declare const SETTINGS_SCHEMA: {
1878
1896
  readonly value: "8on16-bw";
1879
1897
  readonly label: "8x13 on 16px pitch, black";
1880
1898
  readonly description: "8x13 glyphs on an 8x16 cell (extra leading), black ink.";
1899
+ }, {
1900
+ readonly value: "8on22-bw";
1901
+ readonly label: "8x13 on 22px pitch (leading), black";
1902
+ readonly description: "8x13 glyphs on an 8x22 cell — extra line spacing so rows don't crowd. Default for OpenAI/Google.";
1903
+ }, {
1904
+ readonly value: "11on16-bw";
1905
+ readonly label: "8x13 on 11px advance (tracking), black";
1906
+ readonly description: "8x13 glyphs on an 11x16 cell — extra letter spacing so characters don't merge. Default for Anthropic.";
1881
1907
  }, {
1882
1908
  readonly value: "doc-8on16-bw";
1883
1909
  readonly label: "Doc 8on16, black";
@@ -1999,6 +2025,31 @@ export declare const SETTINGS_SCHEMA: {
1999
2025
  }];
2000
2026
  };
2001
2027
  };
2028
+ readonly "autolearn.enabled": {
2029
+ readonly type: "boolean";
2030
+ readonly default: false;
2031
+ readonly ui: {
2032
+ readonly tab: "memory";
2033
+ readonly group: "Auto-Learn";
2034
+ readonly label: "Auto-Learn (experimental)";
2035
+ readonly description: "After the agent stops, nudge it to capture lessons to memory and create/enhance isolated managed skills";
2036
+ };
2037
+ };
2038
+ readonly "autolearn.autoContinue": {
2039
+ readonly type: "boolean";
2040
+ readonly default: false;
2041
+ readonly ui: {
2042
+ readonly tab: "memory";
2043
+ readonly group: "Auto-Learn";
2044
+ readonly label: "Auto-run capture at stop";
2045
+ readonly description: "When on, auto-run one capture turn at stop (uses extra tokens). Off = passive reminder on your next turn.";
2046
+ readonly condition: "autolearnActive";
2047
+ };
2048
+ };
2049
+ readonly "autolearn.minToolCalls": {
2050
+ readonly type: "number";
2051
+ readonly default: 5;
2052
+ };
2002
2053
  readonly "mnemopi.dbPath": {
2003
2054
  readonly type: "string";
2004
2055
  readonly default: undefined;
@@ -2046,6 +2097,27 @@ export declare const SETTINGS_SCHEMA: {
2046
2097
  readonly condition: "mnemopiActive";
2047
2098
  };
2048
2099
  };
2100
+ readonly "mnemopi.embeddingVariant": {
2101
+ readonly type: "enum";
2102
+ readonly values: readonly ["en", "multilingual"];
2103
+ readonly default: "en";
2104
+ readonly ui: {
2105
+ readonly tab: "memory";
2106
+ readonly group: "Mnemopi";
2107
+ readonly label: "Embedding variant";
2108
+ readonly description: "Local embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start.";
2109
+ readonly options: readonly [{
2110
+ readonly value: "en";
2111
+ readonly label: "English (bge-base-en-v1.5)";
2112
+ readonly description: "BAAI/bge-base-en-v1.5 (768d), English-only";
2113
+ }, {
2114
+ readonly value: "multilingual";
2115
+ readonly label: "Multilingual (multilingual-e5-large)";
2116
+ readonly description: "intfloat/multilingual-e5-large (1024d), cross-language recall";
2117
+ }];
2118
+ readonly condition: "mnemopiActive";
2119
+ };
2120
+ };
2049
2121
  readonly "mnemopi.autoRecall": {
2050
2122
  readonly type: "boolean";
2051
2123
  readonly default: true;
@@ -2108,7 +2180,7 @@ export declare const SETTINGS_SCHEMA: {
2108
2180
  readonly tab: "memory";
2109
2181
  readonly group: "Mnemopi";
2110
2182
  readonly label: "Mnemopi Embedding Model";
2111
- readonly description: "Optional embedding model override passed to Mnemopi";
2183
+ readonly description: "Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant.";
2112
2184
  readonly condition: "mnemopiActive";
2113
2185
  };
2114
2186
  };
@@ -2953,13 +3025,27 @@ export declare const SETTINGS_SCHEMA: {
2953
3025
  };
2954
3026
  };
2955
3027
  readonly "todo.eager": {
2956
- readonly type: "boolean";
2957
- readonly default: false;
3028
+ readonly type: "enum";
3029
+ readonly values: readonly ["default", "preferred", "always"];
3030
+ readonly default: "default";
2958
3031
  readonly ui: {
2959
3032
  readonly tab: "tools";
2960
3033
  readonly group: "Todos";
2961
3034
  readonly label: "Create Todos Automatically";
2962
- readonly description: "Automatically create a comprehensive todo list after the first message";
3035
+ readonly description: "How strongly to push automatic todo-list creation after the first message";
3036
+ readonly options: readonly [{
3037
+ readonly value: "default";
3038
+ readonly label: "Default";
3039
+ readonly description: "Model decides; no automatic todo list";
3040
+ }, {
3041
+ readonly value: "preferred";
3042
+ readonly label: "Preferred";
3043
+ readonly description: "Suggests a todo list on the first message (reminder, not forced)";
3044
+ }, {
3045
+ readonly value: "always";
3046
+ readonly label: "Always";
3047
+ readonly description: "Forces a comprehensive todo list on the first message";
3048
+ }];
2963
3049
  };
2964
3050
  };
2965
3051
  readonly "find.enabled": {
@@ -3077,14 +3163,14 @@ export declare const SETTINGS_SCHEMA: {
3077
3163
  readonly description: "Enable the debug tool for DAP-based debugging";
3078
3164
  };
3079
3165
  };
3080
- readonly "tts.enabled": {
3166
+ readonly "speechgen.enabled": {
3081
3167
  readonly type: "boolean";
3082
3168
  readonly default: false;
3083
3169
  readonly ui: {
3084
3170
  readonly tab: "tools";
3085
3171
  readonly group: "Available Tools";
3086
- readonly label: "Text-to-Speech";
3087
- readonly description: "Enable the tts tool for xAI Grok Voice speech synthesis";
3172
+ readonly label: "Speech Generation";
3173
+ readonly description: "Enable the tts tool for on-device (Kokoro) or xAI Grok Voice speech-file synthesis";
3088
3174
  };
3089
3175
  };
3090
3176
  readonly "inspect_image.enabled": {
@@ -3197,6 +3283,16 @@ export declare const SETTINGS_SCHEMA: {
3197
3283
  readonly description: "Launch browser in headless mode (disable to show browser UI)";
3198
3284
  };
3199
3285
  };
3286
+ readonly "browser.cmux": {
3287
+ readonly type: "boolean";
3288
+ readonly default: true;
3289
+ readonly ui: {
3290
+ readonly tab: "tools";
3291
+ readonly group: "Search & Browser";
3292
+ readonly label: "cmux Browser";
3293
+ readonly description: "Use cmux WKWebView surfaces for browser automation when a cmux socket is available. Set PI_BROWSER_CMUX=0 or PI_BROWSER_CMUX=1 to override.";
3294
+ };
3295
+ };
3200
3296
  readonly "browser.screenshotDir": {
3201
3297
  readonly type: "string";
3202
3298
  readonly default: undefined;
@@ -3262,13 +3358,13 @@ export declare const SETTINGS_SCHEMA: {
3262
3358
  };
3263
3359
  readonly "async.pollWaitDuration": {
3264
3360
  readonly type: "enum";
3265
- readonly values: readonly ["5s", "10s", "30s", "1m", "5m"];
3266
- readonly default: "30s";
3361
+ readonly values: readonly ["5s", "10s", "30s", "1m", "5m", "smart"];
3362
+ readonly default: "smart";
3267
3363
  readonly ui: {
3268
3364
  readonly tab: "tools";
3269
3365
  readonly group: "Execution";
3270
- readonly label: "Poll Wait Duration";
3271
- readonly description: "How long the poll tool waits for background job updates before returning the current state";
3366
+ readonly label: "Max Poll Time";
3367
+ readonly description: "How long the poll tool waits for background job updates before returning the current state. A fixed value waits that exact duration every time. `smart` adapts: it starts at 5s and lengthens with each back-to-back poll (up to 5m), then resets to 5s after about a minute without polling.";
3272
3368
  readonly options: readonly [{
3273
3369
  readonly value: "5s";
3274
3370
  readonly label: "5 seconds";
@@ -3278,13 +3374,16 @@ export declare const SETTINGS_SCHEMA: {
3278
3374
  }, {
3279
3375
  readonly value: "30s";
3280
3376
  readonly label: "30 seconds";
3281
- readonly description: "Default";
3282
3377
  }, {
3283
3378
  readonly value: "1m";
3284
3379
  readonly label: "1 minute";
3285
3380
  }, {
3286
3381
  readonly value: "5m";
3287
3382
  readonly label: "5 minutes";
3383
+ }, {
3384
+ readonly value: "smart";
3385
+ readonly label: "Smart";
3386
+ readonly description: "Default — adaptive 5s→5m, resets when you stop polling";
3288
3387
  }];
3289
3388
  };
3290
3389
  };
@@ -3522,13 +3621,27 @@ export declare const SETTINGS_SCHEMA: {
3522
3621
  };
3523
3622
  };
3524
3623
  readonly "task.eager": {
3525
- readonly type: "boolean";
3526
- readonly default: false;
3624
+ readonly type: "enum";
3625
+ readonly values: readonly ["default", "preferred", "always"];
3626
+ readonly default: "default";
3527
3627
  readonly ui: {
3528
3628
  readonly tab: "tasks";
3529
3629
  readonly group: "Subagents";
3530
3630
  readonly label: "Prefer Task Delegation";
3531
- readonly description: "Encourage the agent to delegate work to subagents unless changes are trivial";
3631
+ readonly description: "How strongly to push delegating work to subagents";
3632
+ readonly options: readonly [{
3633
+ readonly value: "default";
3634
+ readonly label: "Default";
3635
+ readonly description: "Model decides when to delegate";
3636
+ }, {
3637
+ readonly value: "preferred";
3638
+ readonly label: "Preferred";
3639
+ readonly description: "Adds delegation guidance to the system prompt";
3640
+ }, {
3641
+ readonly value: "always";
3642
+ readonly label: "Always";
3643
+ readonly description: "Prompt guidance plus a first-turn delegation reminder";
3644
+ }];
3532
3645
  };
3533
3646
  };
3534
3647
  readonly "task.batch": {
@@ -3758,6 +3871,14 @@ export declare const SETTINGS_SCHEMA: {
3758
3871
  readonly type: "boolean";
3759
3872
  readonly default: true;
3760
3873
  };
3874
+ readonly "skills.enableAgentsUser": {
3875
+ readonly type: "boolean";
3876
+ readonly default: true;
3877
+ };
3878
+ readonly "skills.enableAgentsProject": {
3879
+ readonly type: "boolean";
3880
+ readonly default: true;
3881
+ };
3761
3882
  readonly "skills.customDirectories": {
3762
3883
  readonly type: "array";
3763
3884
  readonly default: string[];
@@ -3928,6 +4049,107 @@ export declare const SETTINGS_SCHEMA: {
3928
4049
  }];
3929
4050
  };
3930
4051
  };
4052
+ readonly "providers.tts": {
4053
+ readonly type: "enum";
4054
+ readonly values: readonly ["auto", "local", "xai"];
4055
+ readonly default: "auto";
4056
+ readonly ui: {
4057
+ readonly tab: "providers";
4058
+ readonly group: "Services";
4059
+ readonly label: "Text-to-Speech Provider";
4060
+ readonly description: "Backend for the tts tool: local on-device neural TTS (Kokoro-82M) or xAI Grok Voice";
4061
+ readonly options: readonly [{
4062
+ readonly value: "auto";
4063
+ readonly label: "Auto";
4064
+ readonly description: "Prefer local on-device TTS; route .mp3 output to xAI when credentials exist";
4065
+ }, {
4066
+ readonly value: "local";
4067
+ readonly label: "Local";
4068
+ readonly description: "On-device neural TTS (Kokoro-82M); output is WAV/PCM16";
4069
+ }, {
4070
+ readonly value: "xai";
4071
+ readonly label: "xAI Grok Voice";
4072
+ readonly description: "Requires xAI Grok OAuth or XAI_API_KEY; MP3 or WAV";
4073
+ }];
4074
+ };
4075
+ };
4076
+ readonly "tts.localModel": {
4077
+ readonly type: "enum";
4078
+ readonly values: readonly ["kokoro"];
4079
+ readonly default: "kokoro";
4080
+ readonly ui: {
4081
+ readonly tab: "providers";
4082
+ readonly group: "Services";
4083
+ readonly label: "Local TTS Model";
4084
+ readonly description: "On-device neural TTS model (Kokoro-82M) used by the local TTS backend";
4085
+ readonly options: readonly [{
4086
+ readonly value: "kokoro";
4087
+ readonly label: "Kokoro-82M";
4088
+ readonly description: "Kokoro-82M neural TTS — SoTA on-device quality, multi-voice, fully local";
4089
+ }];
4090
+ };
4091
+ };
4092
+ readonly "tts.localVoice": {
4093
+ readonly type: "enum";
4094
+ readonly values: readonly string[];
4095
+ readonly default: "af_heart";
4096
+ readonly ui: {
4097
+ readonly tab: "providers";
4098
+ readonly group: "Services";
4099
+ readonly label: "Local TTS Voice";
4100
+ readonly description: "Kokoro voice used by the local TTS backend (American/British, female/male)";
4101
+ readonly options: readonly {
4102
+ value: string;
4103
+ label: string;
4104
+ }[];
4105
+ };
4106
+ };
4107
+ readonly "speech.enabled": {
4108
+ readonly type: "boolean";
4109
+ readonly default: false;
4110
+ readonly ui: {
4111
+ readonly tab: "providers";
4112
+ readonly group: "Services";
4113
+ readonly label: "Speech Vocalization";
4114
+ readonly description: "Speak the assistant's output aloud through the speakers as it streams";
4115
+ };
4116
+ };
4117
+ readonly "speech.mode": {
4118
+ readonly type: "enum";
4119
+ readonly values: readonly ["all", "assistant", "yield"];
4120
+ readonly default: "assistant";
4121
+ readonly ui: {
4122
+ readonly tab: "providers";
4123
+ readonly group: "Services";
4124
+ readonly label: "Speech Vocalization Mode";
4125
+ readonly description: "What to speak: all = assistant messages + thinking; assistant = messages only; yield = only the final message at turn end";
4126
+ readonly options: readonly [{
4127
+ readonly value: "all";
4128
+ readonly label: "All (messages + thinking)";
4129
+ }, {
4130
+ readonly value: "assistant";
4131
+ readonly label: "Assistant messages";
4132
+ }, {
4133
+ readonly value: "yield";
4134
+ readonly label: "Final message only";
4135
+ }];
4136
+ };
4137
+ };
4138
+ readonly "speech.voice": {
4139
+ readonly type: "enum";
4140
+ readonly values: readonly string[];
4141
+ readonly default: "af_heart";
4142
+ readonly ui: {
4143
+ readonly tab: "providers";
4144
+ readonly group: "Services";
4145
+ readonly label: "Speech Vocalization Voice";
4146
+ readonly description: "Kokoro voice used when speaking the assistant's output aloud";
4147
+ readonly options: readonly {
4148
+ value: string;
4149
+ label: string;
4150
+ }[];
4151
+ };
4152
+ };
3931
4153
  readonly "providers.tinyModel": {
3932
4154
  readonly type: "enum";
3933
4155
  readonly values: readonly ["online", "lfm2-350m", "qwen3-0.6b", "gemma-270m", "qwen2.5-0.5b", "lfm2-700m"];
@@ -4564,6 +4786,8 @@ export interface SkillsSettings {
4564
4786
  enableClaudeProject?: boolean;
4565
4787
  enablePiUser?: boolean;
4566
4788
  enablePiProject?: boolean;
4789
+ enableAgentsUser?: boolean;
4790
+ enableAgentsProject?: boolean;
4567
4791
  customDirectories?: string[];
4568
4792
  ignoredSkills?: string[];
4569
4793
  includeSkills?: string[];
@@ -4613,8 +4837,7 @@ export interface SttSettings {
4613
4837
  enabled: boolean;
4614
4838
  language: string | undefined;
4615
4839
  modelName: string;
4616
- whisperPath: string | undefined;
4617
- modelPath: string | undefined;
4840
+ streaming: boolean;
4618
4841
  }
4619
4842
  export interface BashInterceptorRule {
4620
4843
  pattern: string;
@@ -4,7 +4,7 @@
4
4
  * keys without rejection; only `input` is required. `_input` is accepted as a
5
5
  * provider-emitted alias for `input`.
6
6
  */
7
- import * as z from "zod/v4";
7
+ import { z } from "zod/v4";
8
8
  export declare const hashlineEditParamsSchema: z.ZodPreprocess<z.ZodObject<{
9
9
  input: z.ZodString;
10
10
  }, z.core.$loose>>;
@@ -7,7 +7,7 @@
7
7
  * LSP writethrough, fs-cache invalidation, diagnostics) is shared with
8
8
  * the `patch` mode.
9
9
  */
10
- import * as z from "zod/v4";
10
+ import { z } from "zod/v4";
11
11
  import type { PatchEditEntry } from "./patch";
12
12
  export declare const applyPatchSchema: z.ZodObject<{
13
13
  input: z.ZodString;
@@ -5,7 +5,7 @@
5
5
  * for robust handling of whitespace and formatting differences.
6
6
  */
7
7
  import type { AgentToolResult } from "@oh-my-pi/pi-agent-core";
8
- import * as z from "zod/v4";
8
+ import { z } from "zod/v4";
9
9
  import { type WritethroughCallback, type WritethroughDeferredHandle } from "../../lsp";
10
10
  import type { ToolSession } from "../../tools";
11
11
  import type { EditToolDetails, LspBatchRequest } from "../renderer";
@@ -5,7 +5,7 @@
5
5
  * fallback strategies for finding text in files.
6
6
  */
7
7
  import type { AgentToolResult } from "@oh-my-pi/pi-agent-core";
8
- import * as z from "zod/v4";
8
+ import { z } from "zod/v4";
9
9
  import type { WritethroughCallback, WritethroughDeferredHandle } from "../../lsp";
10
10
  import type { ToolSession } from "../../tools";
11
11
  import type { EditToolDetails, LspBatchRequest } from "../renderer";
@@ -1,5 +1,6 @@
1
1
  import type { AgentState } from "@oh-my-pi/pi-agent-core";
2
- import { type SessionEntry, type SessionHeader, SessionManager } from "../../session/session-manager";
2
+ import type { SessionEntry, SessionHeader } from "../../session/session-entries";
3
+ import { SessionManager } from "../../session/session-manager";
3
4
  /** Compose the standalone export template: minified CSS, tool renderers, and viewer JS inlined. */
4
5
  export declare function getTemplate(): string;
5
6
  export interface ExportOptions {
@@ -5,7 +5,7 @@
5
5
  * Unlike markdown commands which expand to prompts, custom commands can execute
6
6
  * arbitrary logic with full access to the hook context.
7
7
  */
8
- import type * as Zod from "zod/v4";
8
+ import type { z } from "zod/v4";
9
9
  import type { ExecOptions, ExecResult, HookCommandContext } from "../../extensibility/hooks/types";
10
10
  import type * as PiCodingAgent from "../../index";
11
11
  import type * as TypeBox from "../typebox";
@@ -22,7 +22,7 @@ export interface CustomCommandAPI {
22
22
  /** Injected zod-backed typebox shim (legacy/compat). */
23
23
  typebox: typeof TypeBox;
24
24
  /** Injected zod module for Zod-authored custom commands. */
25
- zod: typeof Zod;
25
+ zod: typeof z;
26
26
  /** Injected pi-coding-agent exports */
27
27
  pi: typeof PiCodingAgent;
28
28
  }
@@ -9,7 +9,7 @@ import type { CompactionResult } from "@oh-my-pi/pi-agent-core/compaction";
9
9
  import type { FetchImpl, Model, Static, TSchema } from "@oh-my-pi/pi-ai";
10
10
  import type { Component } from "@oh-my-pi/pi-tui";
11
11
  import type { logger as PiLogger } from "@oh-my-pi/pi-utils";
12
- import type * as Zod from "zod/v4";
12
+ import type { z } from "zod/v4";
13
13
  import type { Rule } from "../../capability/rule";
14
14
  import type { ModelRegistry } from "../../config/model-registry";
15
15
  import type { Settings } from "../../config/settings";
@@ -53,7 +53,7 @@ export interface CustomToolAPI {
53
53
  /** Injected zod-backed typebox shim (legacy/compat — Zod-authored tools are preferred). */
54
54
  typebox: typeof TypeBox;
55
55
  /** Injected zod module for Zod-authored custom tools. */
56
- zod: typeof Zod;
56
+ zod: typeof z;
57
57
  /** Injected pi-coding-agent exports */
58
58
  pi: typeof PiCodingAgent;
59
59
  /** Push a preview action that can later be resolved with the hidden resolve tool */
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Model query facade exposed to extensions as `ctx.models`.
3
+ *
4
+ * Read-only: lets an extension select a model the same way core does — list
5
+ * authenticated models, read the session model, resolve a model string or role
6
+ * alias, and compare model families — without touching the mutable registry or
7
+ * duplicating resolution/family heuristics.
8
+ */
9
+ import type { Model } from "@oh-my-pi/pi-ai";
10
+ import type { ModelRegistry } from "../../config/model-registry";
11
+ import type { Settings } from "../../config/settings";
12
+ import type { ExtensionModelQuery } from "./types";
13
+ /**
14
+ * Build the `ctx.models` facade. `getModel` is read lazily so `current()` always
15
+ * reflects the live session model (it can change mid-session via `/model`).
16
+ */
17
+ export declare function createExtensionModelQuery(modelRegistry: ModelRegistry, settings: Settings | undefined, getModel: () => Model | undefined): ExtensionModelQuery;