@earendil-works/pi-coding-agent 0.87.1 → 0.99.1

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 (722) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/dist/bun/cli.d.ts.map +1 -1
  3. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  4. package/dist/bun/restore-sandbox-env.js.map +1 -1
  5. package/dist/bun/runtime-setup.d.ts.map +1 -1
  6. package/dist/bun/runtime-setup.js +4 -1
  7. package/dist/bun/runtime-setup.js.map +1 -1
  8. package/dist/bun/sandbox-env-setup.d.ts.map +1 -1
  9. package/dist/bundle/chunks/anthropic-messages-A6EXUBG6.js +6 -0
  10. package/dist/bundle/chunks/anthropic.js +2 -2
  11. package/dist/bundle/chunks/azure-openai-responses-EN5WOBET.js +2 -0
  12. package/dist/bundle/chunks/bedrock-converse-stream.js +2 -2
  13. package/dist/bundle/chunks/chunk-7JGR3GZN.js +11 -0
  14. package/dist/bundle/chunks/chunk-AXPY26X7.js +146 -0
  15. package/dist/bundle/chunks/chunk-GOPCREV2.js +4 -0
  16. package/dist/bundle/chunks/chunk-GUORCHFS.js +1435 -0
  17. package/dist/bundle/chunks/chunk-H3QXYIF7.js +31 -0
  18. package/dist/bundle/chunks/{chunk-S7SZN6Z3.js → chunk-HSPCVFST.js} +1 -1
  19. package/dist/bundle/chunks/chunk-IMTXZUO7.js +82 -0
  20. package/dist/bundle/chunks/chunk-J4CWPC4N.js +2 -0
  21. package/dist/bundle/chunks/chunk-LLMKQWZS.js +21 -0
  22. package/dist/bundle/chunks/{chunk-WIUZI2CJ.js → chunk-LRS5S6EK.js} +3 -3
  23. package/dist/bundle/chunks/chunk-PEHWOV5U.js +187 -0
  24. package/dist/bundle/chunks/{chunk-XDUWOHPL.js → chunk-S3GGRYIO.js} +2 -2
  25. package/dist/bundle/chunks/chunk-SLDA2X2H.js +2 -0
  26. package/dist/bundle/chunks/chunk-UTB4DTYQ.js +2 -0
  27. package/dist/bundle/chunks/{chunk-FUXEF6JQ.js → chunk-W2DOMZSC.js} +1 -1
  28. package/dist/bundle/chunks/cli-AZXNGIZH.js +49 -0
  29. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-XJQQYGGU.js +2 -0
  30. package/dist/bundle/chunks/codemode-worker.js +295 -0
  31. package/dist/bundle/chunks/execute-7XXPZAWW.js +308 -0
  32. package/dist/bundle/chunks/github-copilot.js +1 -1
  33. package/dist/bundle/chunks/google-generative-ai-CQAKKJTA.js +2 -0
  34. package/dist/bundle/chunks/google-vertex-AE36YXJU.js +2 -0
  35. package/dist/bundle/chunks/{lib-HGQMNYVT.js → lib-TEDK3E5I.js} +2 -2
  36. package/dist/bundle/chunks/llama-cpp-classify-PJJYKPLD.js +22 -0
  37. package/dist/bundle/chunks/mistral-conversations-KEYTXJM7.js +5 -0
  38. package/dist/bundle/chunks/openai-chatgpt.js +75 -0
  39. package/dist/bundle/chunks/{openai-codex-responses-QDSOTBBO.js → openai-codex-responses-JQTCOVEG.js} +2 -2
  40. package/dist/bundle/chunks/openai-codex.js +2 -2
  41. package/dist/bundle/chunks/{openai-completions-OBX42CLD.js → openai-completions-XW2Q5HVC.js} +2 -2
  42. package/dist/bundle/chunks/openai-responses-6AXWFL75.js +3 -0
  43. package/dist/bundle/chunks/{openrouter-images-N4XVVFSD.js → openrouter-images-TPQ4V6OR.js} +1 -1
  44. package/dist/bundle/chunks/openrouter.js +2 -2
  45. package/dist/bundle/chunks/{pi-messages-GFKBWJHZ.js → pi-messages-TM5SOOIW.js} +2 -2
  46. package/dist/bundle/chunks/radius.js +2 -2
  47. package/dist/bundle/chunks/runtime-G5WJPRBM.js +2 -0
  48. package/dist/bundle/chunks/typesafe-system-one-E7A4HNJI.js +2 -0
  49. package/dist/bundle/chunks/virtual-modules-CSWRO37N.js +2 -0
  50. package/dist/bundle/cli-runtime.js +1 -1
  51. package/dist/bundle/index.js +1 -1
  52. package/dist/bundle/rpc-entry.js +1 -1
  53. package/dist/cli/args.d.ts.map +1 -1
  54. package/dist/cli/args.js +4 -3
  55. package/dist/cli/args.js.map +1 -1
  56. package/dist/cli/auth-check.d.ts.map +1 -1
  57. package/dist/cli/auth-check.js.map +1 -1
  58. package/dist/cli/auth-command.d.ts.map +1 -1
  59. package/dist/cli/auth-command.js.map +1 -1
  60. package/dist/cli/config-selector.d.ts.map +1 -1
  61. package/dist/cli/config-selector.js.map +1 -1
  62. package/dist/cli/credential-print.d.ts.map +1 -1
  63. package/dist/cli/credential-print.js.map +1 -1
  64. package/dist/cli/file-processor.d.ts.map +1 -1
  65. package/dist/cli/file-processor.js.map +1 -1
  66. package/dist/cli/initial-message.d.ts +1 -1
  67. package/dist/cli/initial-message.d.ts.map +1 -1
  68. package/dist/cli/initial-message.js.map +1 -1
  69. package/dist/cli/list-models.d.ts.map +1 -1
  70. package/dist/cli/list-models.js.map +1 -1
  71. package/dist/cli/project-trust.d.ts.map +1 -1
  72. package/dist/cli/project-trust.js.map +1 -1
  73. package/dist/cli/session-picker.d.ts.map +1 -1
  74. package/dist/cli/session-picker.js.map +1 -1
  75. package/dist/cli/setup.d.ts.map +1 -1
  76. package/dist/cli/setup.js.map +1 -1
  77. package/dist/cli/startup-ui.d.ts.map +1 -1
  78. package/dist/cli/startup-ui.js +38 -30
  79. package/dist/cli/startup-ui.js.map +1 -1
  80. package/dist/cli.d.ts.map +1 -1
  81. package/dist/config.d.ts +18 -4
  82. package/dist/config.d.ts.map +1 -1
  83. package/dist/config.js +30 -4
  84. package/dist/config.js.map +1 -1
  85. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  86. package/dist/core/agent-session-runtime.js +1 -1
  87. package/dist/core/agent-session-runtime.js.map +1 -1
  88. package/dist/core/agent-session-services.d.ts.map +1 -1
  89. package/dist/core/agent-session-services.js +13 -0
  90. package/dist/core/agent-session-services.js.map +1 -1
  91. package/dist/core/agent-session.d.ts +135 -11
  92. package/dist/core/agent-session.d.ts.map +1 -1
  93. package/dist/core/agent-session.js +509 -253
  94. package/dist/core/agent-session.js.map +1 -1
  95. package/dist/core/auth-guidance.d.ts.map +1 -1
  96. package/dist/core/auth-guidance.js.map +1 -1
  97. package/dist/core/auth-storage.d.ts.map +1 -1
  98. package/dist/core/auth-storage.js.map +1 -1
  99. package/dist/core/bash-executor.d.ts.map +1 -1
  100. package/dist/core/bash-executor.js.map +1 -1
  101. package/dist/core/bug-report-upload.d.ts.map +1 -1
  102. package/dist/core/bug-report-upload.js.map +1 -1
  103. package/dist/core/bug-report.d.ts +1 -1
  104. package/dist/core/bug-report.d.ts.map +1 -1
  105. package/dist/core/bug-report.js +1 -1
  106. package/dist/core/bug-report.js.map +1 -1
  107. package/dist/core/cache-stats.d.ts.map +1 -1
  108. package/dist/core/cache-stats.js.map +1 -1
  109. package/dist/core/cache-warmer.d.ts.map +1 -1
  110. package/dist/core/cache-warmer.js.map +1 -1
  111. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  112. package/dist/core/compaction/branch-summarization.js.map +1 -1
  113. package/dist/core/compaction/compaction.d.ts.map +1 -1
  114. package/dist/core/compaction/compaction.js +1 -22
  115. package/dist/core/compaction/compaction.js.map +1 -1
  116. package/dist/core/compaction/index.d.ts.map +1 -1
  117. package/dist/core/compaction/utils.d.ts +2 -1
  118. package/dist/core/compaction/utils.d.ts.map +1 -1
  119. package/dist/core/compaction/utils.js +25 -18
  120. package/dist/core/compaction/utils.js.map +1 -1
  121. package/dist/core/crash-log.d.ts.map +1 -1
  122. package/dist/core/crash-log.js +2 -1
  123. package/dist/core/crash-log.js.map +1 -1
  124. package/dist/core/defaults.d.ts.map +1 -1
  125. package/dist/core/diagnostics.d.ts.map +1 -1
  126. package/dist/core/event-bus.d.ts.map +1 -1
  127. package/dist/core/event-bus.js.map +1 -1
  128. package/dist/core/exec.d.ts.map +1 -1
  129. package/dist/core/exec.js.map +1 -1
  130. package/dist/core/experimental.d.ts.map +1 -1
  131. package/dist/core/experimental.js.map +1 -1
  132. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  133. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  134. package/dist/core/export-html/index.d.ts.map +1 -1
  135. package/dist/core/export-html/index.js.map +1 -1
  136. package/dist/core/export-html/template.css +10 -0
  137. package/dist/core/export-html/template.js +66 -17
  138. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  139. package/dist/core/export-html/tool-renderer.js.map +1 -1
  140. package/dist/core/extensions/index.d.ts +1 -1
  141. package/dist/core/extensions/index.d.ts.map +1 -1
  142. package/dist/core/extensions/index.js.map +1 -1
  143. package/dist/core/extensions/jiti-loader.d.ts.map +1 -1
  144. package/dist/core/extensions/jiti-static-loader.d.ts.map +1 -1
  145. package/dist/core/extensions/loader.d.ts.map +1 -1
  146. package/dist/core/extensions/loader.js +55 -5
  147. package/dist/core/extensions/loader.js.map +1 -1
  148. package/dist/core/extensions/runner.d.ts +18 -1
  149. package/dist/core/extensions/runner.d.ts.map +1 -1
  150. package/dist/core/extensions/runner.js +99 -0
  151. package/dist/core/extensions/runner.js.map +1 -1
  152. package/dist/core/extensions/types.d.ts +296 -22
  153. package/dist/core/extensions/types.d.ts.map +1 -1
  154. package/dist/core/extensions/types.js.map +1 -1
  155. package/dist/core/extensions/virtual-modules.d.ts.map +1 -1
  156. package/dist/core/extensions/wrapper.d.ts +2 -2
  157. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  158. package/dist/core/extensions/wrapper.js +3 -3
  159. package/dist/core/extensions/wrapper.js.map +1 -1
  160. package/dist/core/footer-data-provider.d.ts.map +1 -1
  161. package/dist/core/footer-data-provider.js.map +1 -1
  162. package/dist/core/http-dispatcher.d.ts.map +1 -1
  163. package/dist/core/http-dispatcher.js.map +1 -1
  164. package/dist/core/index.d.ts.map +1 -1
  165. package/dist/core/keybindings.d.ts +1 -1
  166. package/dist/core/keybindings.d.ts.map +1 -1
  167. package/dist/core/keybindings.js +1 -1
  168. package/dist/core/keybindings.js.map +1 -1
  169. package/dist/core/mcp-servers.d.ts +98 -0
  170. package/dist/core/mcp-servers.d.ts.map +1 -0
  171. package/dist/core/mcp-servers.js +157 -0
  172. package/dist/core/mcp-servers.js.map +1 -0
  173. package/dist/core/messages.d.ts.map +1 -1
  174. package/dist/core/messages.js.map +1 -1
  175. package/dist/core/model-config.d.ts.map +1 -1
  176. package/dist/core/model-config.js.map +1 -1
  177. package/dist/core/model-registry.d.ts +13 -1
  178. package/dist/core/model-registry.d.ts.map +1 -1
  179. package/dist/core/model-registry.js +25 -0
  180. package/dist/core/model-registry.js.map +1 -1
  181. package/dist/core/model-resolver.d.ts +2 -2
  182. package/dist/core/model-resolver.d.ts.map +1 -1
  183. package/dist/core/model-resolver.js +5 -5
  184. package/dist/core/model-resolver.js.map +1 -1
  185. package/dist/core/model-runtime.d.ts +41 -3
  186. package/dist/core/model-runtime.d.ts.map +1 -1
  187. package/dist/core/model-runtime.js +167 -17
  188. package/dist/core/model-runtime.js.map +1 -1
  189. package/dist/core/models-store.d.ts.map +1 -1
  190. package/dist/core/models-store.js.map +1 -1
  191. package/dist/core/nested-tool-calls.d.ts +102 -0
  192. package/dist/core/nested-tool-calls.d.ts.map +1 -0
  193. package/dist/core/nested-tool-calls.js +178 -0
  194. package/dist/core/nested-tool-calls.js.map +1 -0
  195. package/dist/core/output-guard.d.ts.map +1 -1
  196. package/dist/core/output-guard.js.map +1 -1
  197. package/dist/core/package-manager.d.ts +4 -0
  198. package/dist/core/package-manager.d.ts.map +1 -1
  199. package/dist/core/package-manager.js +59 -12
  200. package/dist/core/package-manager.js.map +1 -1
  201. package/dist/core/pi-manifest.d.ts.map +1 -1
  202. package/dist/core/pi-manifest.js.map +1 -1
  203. package/dist/core/project-trust.d.ts.map +1 -1
  204. package/dist/core/project-trust.js.map +1 -1
  205. package/dist/core/prompt-templates.d.ts.map +1 -1
  206. package/dist/core/prompt-templates.js.map +1 -1
  207. package/dist/core/provider-attribution.d.ts.map +1 -1
  208. package/dist/core/provider-attribution.js.map +1 -1
  209. package/dist/core/provider-composer.d.ts +40 -21
  210. package/dist/core/provider-composer.d.ts.map +1 -1
  211. package/dist/core/provider-composer.js +92 -40
  212. package/dist/core/provider-composer.js.map +1 -1
  213. package/dist/core/radius.d.ts.map +1 -1
  214. package/dist/core/radius.js.map +1 -1
  215. package/dist/core/remote-catalog-provider.d.ts +8 -1
  216. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  217. package/dist/core/remote-catalog-provider.js +18 -3
  218. package/dist/core/remote-catalog-provider.js.map +1 -1
  219. package/dist/core/resolve-config-value.d.ts.map +1 -1
  220. package/dist/core/resolve-config-value.js.map +1 -1
  221. package/dist/core/resource-loader.d.ts +7 -1
  222. package/dist/core/resource-loader.d.ts.map +1 -1
  223. package/dist/core/resource-loader.js +161 -35
  224. package/dist/core/resource-loader.js.map +1 -1
  225. package/dist/core/runtime-credentials.d.ts.map +1 -1
  226. package/dist/core/runtime-credentials.js.map +1 -1
  227. package/dist/core/sdk.d.ts +1 -1
  228. package/dist/core/sdk.d.ts.map +1 -1
  229. package/dist/core/sdk.js +24 -6
  230. package/dist/core/sdk.js.map +1 -1
  231. package/dist/core/session-cwd.d.ts.map +1 -1
  232. package/dist/core/session-cwd.js.map +1 -1
  233. package/dist/core/session-export.d.ts.map +1 -1
  234. package/dist/core/session-export.js.map +1 -1
  235. package/dist/core/session-manager.d.ts +9 -0
  236. package/dist/core/session-manager.d.ts.map +1 -1
  237. package/dist/core/session-manager.js +22 -22
  238. package/dist/core/session-manager.js.map +1 -1
  239. package/dist/core/settings-diagnostics.d.ts.map +1 -1
  240. package/dist/core/settings-diagnostics.js.map +1 -1
  241. package/dist/core/settings-manager.d.ts +31 -1
  242. package/dist/core/settings-manager.d.ts.map +1 -1
  243. package/dist/core/settings-manager.js +72 -2
  244. package/dist/core/settings-manager.js.map +1 -1
  245. package/dist/core/skills.d.ts.map +1 -1
  246. package/dist/core/skills.js.map +1 -1
  247. package/dist/core/slash-commands.d.ts.map +1 -1
  248. package/dist/core/source-info.d.ts +8 -0
  249. package/dist/core/source-info.d.ts.map +1 -1
  250. package/dist/core/source-info.js +16 -0
  251. package/dist/core/source-info.js.map +1 -1
  252. package/dist/core/system-prompt.d.ts.map +1 -1
  253. package/dist/core/system-prompt.js +1 -1
  254. package/dist/core/system-prompt.js.map +1 -1
  255. package/dist/core/telemetry.d.ts.map +1 -1
  256. package/dist/core/telemetry.js.map +1 -1
  257. package/dist/core/timings.d.ts.map +1 -1
  258. package/dist/core/timings.js.map +1 -1
  259. package/dist/core/tools/bash.d.ts +12 -0
  260. package/dist/core/tools/bash.d.ts.map +1 -1
  261. package/dist/core/tools/bash.js +35 -2
  262. package/dist/core/tools/bash.js.map +1 -1
  263. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  264. package/dist/core/tools/edit-diff.js.map +1 -1
  265. package/dist/core/tools/edit.d.ts.map +1 -1
  266. package/dist/core/tools/edit.js.map +1 -1
  267. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  268. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  269. package/dist/core/tools/find.d.ts.map +1 -1
  270. package/dist/core/tools/find.js.map +1 -1
  271. package/dist/core/tools/grep.d.ts.map +1 -1
  272. package/dist/core/tools/grep.js.map +1 -1
  273. package/dist/core/tools/index.d.ts.map +1 -1
  274. package/dist/core/tools/index.js.map +1 -1
  275. package/dist/core/tools/ls.d.ts.map +1 -1
  276. package/dist/core/tools/ls.js.map +1 -1
  277. package/dist/core/tools/output-accumulator.d.ts +11 -0
  278. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  279. package/dist/core/tools/output-accumulator.js +36 -0
  280. package/dist/core/tools/output-accumulator.js.map +1 -1
  281. package/dist/core/tools/path-utils.d.ts.map +1 -1
  282. package/dist/core/tools/path-utils.js.map +1 -1
  283. package/dist/core/tools/powershell.d.ts.map +1 -1
  284. package/dist/core/tools/powershell.js.map +1 -1
  285. package/dist/core/tools/read.d.ts.map +1 -1
  286. package/dist/core/tools/read.js.map +1 -1
  287. package/dist/core/tools/render-utils.d.ts +6 -0
  288. package/dist/core/tools/render-utils.d.ts.map +1 -1
  289. package/dist/core/tools/render-utils.js +26 -0
  290. package/dist/core/tools/render-utils.js.map +1 -1
  291. package/dist/core/tools/renderers/bash.d.ts.map +1 -1
  292. package/dist/core/tools/renderers/bash.js +9 -10
  293. package/dist/core/tools/renderers/bash.js.map +1 -1
  294. package/dist/core/tools/renderers/edit.d.ts.map +1 -1
  295. package/dist/core/tools/renderers/edit.js.map +1 -1
  296. package/dist/core/tools/renderers/find.d.ts.map +1 -1
  297. package/dist/core/tools/renderers/find.js.map +1 -1
  298. package/dist/core/tools/renderers/grep.d.ts.map +1 -1
  299. package/dist/core/tools/renderers/grep.js.map +1 -1
  300. package/dist/core/tools/renderers/index.d.ts.map +1 -1
  301. package/dist/core/tools/renderers/index.js.map +1 -1
  302. package/dist/core/tools/renderers/ls.d.ts.map +1 -1
  303. package/dist/core/tools/renderers/ls.js.map +1 -1
  304. package/dist/core/tools/renderers/read.d.ts.map +1 -1
  305. package/dist/core/tools/renderers/read.js +3 -2
  306. package/dist/core/tools/renderers/read.js.map +1 -1
  307. package/dist/core/tools/renderers/write.d.ts.map +1 -1
  308. package/dist/core/tools/renderers/write.js.map +1 -1
  309. package/dist/core/tools/tool-definition-wrapper.d.ts +5 -3
  310. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  311. package/dist/core/tools/tool-definition-wrapper.js +3 -1
  312. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  313. package/dist/core/tools/truncate.d.ts +14 -0
  314. package/dist/core/tools/truncate.d.ts.map +1 -1
  315. package/dist/core/tools/truncate.js +29 -0
  316. package/dist/core/tools/truncate.js.map +1 -1
  317. package/dist/core/tools/write.d.ts.map +1 -1
  318. package/dist/core/tools/write.js.map +1 -1
  319. package/dist/core/trust-manager.d.ts.map +1 -1
  320. package/dist/core/trust-manager.js +1 -0
  321. package/dist/core/trust-manager.js.map +1 -1
  322. package/dist/core/usage-totals.d.ts +2 -0
  323. package/dist/core/usage-totals.d.ts.map +1 -1
  324. package/dist/core/usage-totals.js +23 -0
  325. package/dist/core/usage-totals.js.map +1 -1
  326. package/dist/core/virtual-models.d.ts +115 -0
  327. package/dist/core/virtual-models.d.ts.map +1 -0
  328. package/dist/core/virtual-models.js +117 -0
  329. package/dist/core/virtual-models.js.map +1 -0
  330. package/dist/extensions/codemode/execute.d.ts +16 -0
  331. package/dist/extensions/codemode/execute.d.ts.map +1 -0
  332. package/dist/extensions/codemode/execute.js +390 -0
  333. package/dist/extensions/codemode/execute.js.map +1 -0
  334. package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
  335. package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
  336. package/dist/extensions/codemode/execute.lazy.js +3 -0
  337. package/dist/extensions/codemode/execute.lazy.js.map +1 -0
  338. package/dist/extensions/codemode/index.d.ts +21 -0
  339. package/dist/extensions/codemode/index.d.ts.map +1 -0
  340. package/dist/extensions/codemode/index.js +31 -0
  341. package/dist/extensions/codemode/index.js.map +1 -0
  342. package/dist/extensions/codemode/renderer.d.ts +12 -0
  343. package/dist/extensions/codemode/renderer.d.ts.map +1 -0
  344. package/dist/extensions/codemode/renderer.js +119 -0
  345. package/dist/extensions/codemode/renderer.js.map +1 -0
  346. package/dist/extensions/codemode/tool.d.ts +122 -0
  347. package/dist/extensions/codemode/tool.d.ts.map +1 -0
  348. package/dist/extensions/codemode/tool.js +324 -0
  349. package/dist/extensions/codemode/tool.js.map +1 -0
  350. package/dist/extensions/codemode/worker.d.ts +7 -0
  351. package/dist/extensions/codemode/worker.d.ts.map +1 -0
  352. package/dist/extensions/codemode/worker.js +7 -0
  353. package/dist/extensions/codemode/worker.js.map +1 -0
  354. package/dist/extensions/index.d.ts.map +1 -1
  355. package/dist/extensions/index.js +11 -1
  356. package/dist/extensions/index.js.map +1 -1
  357. package/dist/extensions/llama/client.d.ts.map +1 -1
  358. package/dist/extensions/llama/client.js.map +1 -1
  359. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  360. package/dist/extensions/llama/huggingface.js.map +1 -1
  361. package/dist/extensions/llama/index.d.ts.map +1 -1
  362. package/dist/extensions/llama/index.js.map +1 -1
  363. package/dist/extensions/llama/provider.d.ts +1 -1
  364. package/dist/extensions/llama/provider.d.ts.map +1 -1
  365. package/dist/extensions/llama/provider.js +65 -13
  366. package/dist/extensions/llama/provider.js.map +1 -1
  367. package/dist/extensions/llama/ui.d.ts.map +1 -1
  368. package/dist/extensions/llama/ui.js.map +1 -1
  369. package/dist/extensions/mcp/cli.d.ts +21 -0
  370. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  371. package/dist/extensions/mcp/cli.js +485 -0
  372. package/dist/extensions/mcp/cli.js.map +1 -0
  373. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  374. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  375. package/dist/extensions/mcp/cli.lazy.js +3 -0
  376. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  377. package/dist/extensions/mcp/config.d.ts +70 -0
  378. package/dist/extensions/mcp/config.d.ts.map +1 -0
  379. package/dist/extensions/mcp/config.js +146 -0
  380. package/dist/extensions/mcp/config.js.map +1 -0
  381. package/dist/extensions/mcp/index.d.ts +52 -0
  382. package/dist/extensions/mcp/index.d.ts.map +1 -0
  383. package/dist/extensions/mcp/index.js +902 -0
  384. package/dist/extensions/mcp/index.js.map +1 -0
  385. package/dist/extensions/mcp/log.d.ts +16 -0
  386. package/dist/extensions/mcp/log.d.ts.map +1 -0
  387. package/dist/extensions/mcp/log.js +66 -0
  388. package/dist/extensions/mcp/log.js.map +1 -0
  389. package/dist/extensions/mcp/oauth.d.ts +94 -0
  390. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  391. package/dist/extensions/mcp/oauth.js +333 -0
  392. package/dist/extensions/mcp/oauth.js.map +1 -0
  393. package/dist/extensions/mcp/resources.d.ts +43 -0
  394. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  395. package/dist/extensions/mcp/resources.js +262 -0
  396. package/dist/extensions/mcp/resources.js.map +1 -0
  397. package/dist/extensions/mcp/runtime.d.ts +96 -0
  398. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  399. package/dist/extensions/mcp/runtime.js +388 -0
  400. package/dist/extensions/mcp/runtime.js.map +1 -0
  401. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  402. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  403. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  404. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  405. package/dist/extensions/mcp/tools.d.ts +83 -0
  406. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  407. package/dist/extensions/mcp/tools.js +233 -0
  408. package/dist/extensions/mcp/tools.js.map +1 -0
  409. package/dist/extensions/mcp/ui.d.ts +60 -0
  410. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  411. package/dist/extensions/mcp/ui.js +172 -0
  412. package/dist/extensions/mcp/ui.js.map +1 -0
  413. package/dist/extensions/tool-search/index.d.ts +12 -0
  414. package/dist/extensions/tool-search/index.d.ts.map +1 -0
  415. package/dist/extensions/tool-search/index.js +15 -0
  416. package/dist/extensions/tool-search/index.js.map +1 -0
  417. package/dist/extensions/tool-search/tool.d.ts +72 -0
  418. package/dist/extensions/tool-search/tool.d.ts.map +1 -0
  419. package/dist/extensions/tool-search/tool.js +210 -0
  420. package/dist/extensions/tool-search/tool.js.map +1 -0
  421. package/dist/index.d.ts +9 -2
  422. package/dist/index.d.ts.map +1 -1
  423. package/dist/index.js +5 -0
  424. package/dist/index.js.map +1 -1
  425. package/dist/main.d.ts.map +1 -1
  426. package/dist/main.js +10 -0
  427. package/dist/main.js.map +1 -1
  428. package/dist/migrations.d.ts.map +1 -1
  429. package/dist/migrations.js.map +1 -1
  430. package/dist/modes/index.d.ts.map +1 -1
  431. package/dist/modes/interactive/bug-report.d.ts.map +1 -1
  432. package/dist/modes/interactive/bug-report.js.map +1 -1
  433. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -1
  434. package/dist/modes/interactive/chat-viewport.js.map +1 -1
  435. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  436. package/dist/modes/interactive/components/armin.js.map +1 -1
  437. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  438. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  439. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  440. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  441. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  442. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  443. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  444. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  445. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  446. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  447. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  448. package/dist/modes/interactive/components/config-selector.js +13 -3
  449. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  450. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  451. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  452. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  453. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  454. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  455. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  456. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  457. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  458. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  459. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  460. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  461. package/dist/modes/interactive/components/diff.js.map +1 -1
  462. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  463. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  464. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  465. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  466. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  467. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  468. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  469. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  470. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  472. package/dist/modes/interactive/components/first-time-setup.d.ts +4 -4
  473. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  474. package/dist/modes/interactive/components/first-time-setup.js +8 -2
  475. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  476. package/dist/modes/interactive/components/footer.d.ts +7 -0
  477. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  478. package/dist/modes/interactive/components/footer.js +43 -3
  479. package/dist/modes/interactive/components/footer.js.map +1 -1
  480. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  481. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  482. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  483. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  484. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  485. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  486. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  487. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  488. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  489. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  490. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  491. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  492. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  493. package/dist/modes/interactive/components/pi-logo.d.ts +12 -0
  494. package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -0
  495. package/dist/modes/interactive/components/pi-logo.js +25 -0
  496. package/dist/modes/interactive/components/pi-logo.js.map +1 -0
  497. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  498. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  499. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  500. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  501. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  502. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  503. package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  504. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  505. package/dist/modes/interactive/components/settings-selector.js +28 -6
  506. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  507. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
  508. package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
  509. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  510. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  511. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  512. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  513. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  514. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  515. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  516. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  517. package/dist/modes/interactive/components/themed-text.d.ts +17 -0
  518. package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
  519. package/dist/modes/interactive/components/themed-text.js +29 -0
  520. package/dist/modes/interactive/components/themed-text.js.map +1 -0
  521. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  522. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  523. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  524. package/dist/modes/interactive/components/tool-execution.js +2 -2
  525. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  526. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  527. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  528. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  529. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  530. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  531. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  532. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/user-message.js.map +1 -1
  534. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  535. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  536. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  537. package/dist/modes/interactive/external-editor.js.map +1 -1
  538. package/dist/modes/interactive/interactive-mode.d.ts +11 -0
  539. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  540. package/dist/modes/interactive/interactive-mode.js +199 -161
  541. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  542. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -1
  543. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
  544. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  545. package/dist/modes/interactive/model-search.js.map +1 -1
  546. package/dist/modes/interactive/session-share.d.ts.map +1 -1
  547. package/dist/modes/interactive/session-share.js.map +1 -1
  548. package/dist/modes/interactive/theme/dark.json +59 -72
  549. package/dist/modes/interactive/theme/light.json +57 -69
  550. package/dist/modes/interactive/theme/system-theme.d.ts +54 -0
  551. package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
  552. package/dist/modes/interactive/theme/system-theme.js +535 -0
  553. package/dist/modes/interactive/theme/system-theme.js.map +1 -0
  554. package/dist/modes/interactive/theme/theme-controller.d.ts +46 -6
  555. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  556. package/dist/modes/interactive/theme/theme-controller.js +127 -47
  557. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  558. package/dist/modes/interactive/theme/theme-json.d.ts +1 -0
  559. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -1
  560. package/dist/modes/interactive/theme/theme-json.js +3 -1
  561. package/dist/modes/interactive/theme/theme-json.js.map +1 -1
  562. package/dist/modes/interactive/theme/theme-schema.json +7 -2
  563. package/dist/modes/interactive/theme/theme.d.ts +66 -39
  564. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  565. package/dist/modes/interactive/theme/theme.js +238 -317
  566. package/dist/modes/interactive/theme/theme.js.map +1 -1
  567. package/dist/modes/interactive/tui-renderer.d.ts +2 -1
  568. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -1
  569. package/dist/modes/interactive/tui-renderer.js +1 -0
  570. package/dist/modes/interactive/tui-renderer.js.map +1 -1
  571. package/dist/modes/json-event.d.ts.map +1 -1
  572. package/dist/modes/json-event.js.map +1 -1
  573. package/dist/modes/print-mode.d.ts.map +1 -1
  574. package/dist/modes/print-mode.js.map +1 -1
  575. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  576. package/dist/modes/rpc/jsonl.js.map +1 -1
  577. package/dist/modes/rpc/rpc-client.d.ts +6 -6
  578. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  579. package/dist/modes/rpc/rpc-client.js +12 -8
  580. package/dist/modes/rpc/rpc-client.js.map +1 -1
  581. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  582. package/dist/modes/rpc/rpc-mode.js +7 -9
  583. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  584. package/dist/modes/rpc/rpc-types.d.ts +10 -1
  585. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  586. package/dist/modes/rpc/rpc-types.js.map +1 -1
  587. package/dist/package-manager-cli.d.ts.map +1 -1
  588. package/dist/package-manager-cli.js +6 -2
  589. package/dist/package-manager-cli.js.map +1 -1
  590. package/dist/rpc-entry.d.ts.map +1 -1
  591. package/dist/rpc-entry.js.map +1 -1
  592. package/dist/utils/abort.d.ts.map +1 -1
  593. package/dist/utils/abort.js.map +1 -1
  594. package/dist/utils/ansi.d.ts.map +1 -1
  595. package/dist/utils/ansi.js.map +1 -1
  596. package/dist/utils/changelog.d.ts.map +1 -1
  597. package/dist/utils/changelog.js.map +1 -1
  598. package/dist/utils/child-process.d.ts.map +1 -1
  599. package/dist/utils/child-process.js.map +1 -1
  600. package/dist/utils/clipboard-command.d.ts.map +1 -1
  601. package/dist/utils/clipboard-command.js.map +1 -1
  602. package/dist/utils/clipboard-image.d.ts.map +1 -1
  603. package/dist/utils/clipboard-image.js +14 -17
  604. package/dist/utils/clipboard-image.js.map +1 -1
  605. package/dist/utils/clipboard.d.ts +2 -0
  606. package/dist/utils/clipboard.d.ts.map +1 -1
  607. package/dist/utils/clipboard.js +5 -0
  608. package/dist/utils/clipboard.js.map +1 -1
  609. package/dist/utils/deprecation.d.ts.map +1 -1
  610. package/dist/utils/deprecation.js.map +1 -1
  611. package/dist/utils/exif-orientation.d.ts.map +1 -1
  612. package/dist/utils/exif-orientation.js.map +1 -1
  613. package/dist/utils/frontmatter.d.ts.map +1 -1
  614. package/dist/utils/frontmatter.js.map +1 -1
  615. package/dist/utils/fs-watch.d.ts.map +1 -1
  616. package/dist/utils/fs-watch.js.map +1 -1
  617. package/dist/utils/git.d.ts.map +1 -1
  618. package/dist/utils/git.js.map +1 -1
  619. package/dist/utils/html.d.ts.map +1 -1
  620. package/dist/utils/html.js.map +1 -1
  621. package/dist/utils/image-convert.d.ts.map +1 -1
  622. package/dist/utils/image-convert.js.map +1 -1
  623. package/dist/utils/image-process.d.ts.map +1 -1
  624. package/dist/utils/image-process.js.map +1 -1
  625. package/dist/utils/image-resize-core.d.ts.map +1 -1
  626. package/dist/utils/image-resize-core.js.map +1 -1
  627. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  628. package/dist/utils/image-resize-worker.js.map +1 -1
  629. package/dist/utils/image-resize.d.ts.map +1 -1
  630. package/dist/utils/image-resize.js.map +1 -1
  631. package/dist/utils/json.d.ts.map +1 -1
  632. package/dist/utils/json.js.map +1 -1
  633. package/dist/utils/management-http.d.ts.map +1 -1
  634. package/dist/utils/management-http.js.map +1 -1
  635. package/dist/utils/mime.d.ts.map +1 -1
  636. package/dist/utils/mime.js.map +1 -1
  637. package/dist/utils/open-browser.d.ts.map +1 -1
  638. package/dist/utils/open-browser.js.map +1 -1
  639. package/dist/utils/paths.d.ts +3 -3
  640. package/dist/utils/paths.d.ts.map +1 -1
  641. package/dist/utils/paths.js +5 -4
  642. package/dist/utils/paths.js.map +1 -1
  643. package/dist/utils/photon.d.ts.map +1 -1
  644. package/dist/utils/photon.js.map +1 -1
  645. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  646. package/dist/utils/pi-user-agent.js.map +1 -1
  647. package/dist/utils/shell.d.ts +1 -3
  648. package/dist/utils/shell.d.ts.map +1 -1
  649. package/dist/utils/shell.js +3 -30
  650. package/dist/utils/shell.js.map +1 -1
  651. package/dist/utils/sleep.d.ts.map +1 -1
  652. package/dist/utils/sleep.js.map +1 -1
  653. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  654. package/dist/utils/syntax-highlight.js +2 -0
  655. package/dist/utils/syntax-highlight.js.map +1 -1
  656. package/dist/utils/text.d.ts.map +1 -1
  657. package/dist/utils/text.js.map +1 -1
  658. package/dist/utils/tool-result-images.d.ts.map +1 -1
  659. package/dist/utils/tool-result-images.js.map +1 -1
  660. package/dist/utils/tools-manager.d.ts.map +1 -1
  661. package/dist/utils/tools-manager.js.map +1 -1
  662. package/dist/utils/version-check.d.ts.map +1 -1
  663. package/dist/utils/version-check.js.map +1 -1
  664. package/dist/utils/windows-self-update.d.ts.map +1 -1
  665. package/dist/utils/windows-self-update.js.map +1 -1
  666. package/dist/utils/wsl.d.ts.map +1 -1
  667. package/dist/utils/wsl.js.map +1 -1
  668. package/dist/utils/zip.d.ts.map +1 -1
  669. package/dist/utils/zip.js.map +1 -1
  670. package/docs/cli.md +64 -3
  671. package/docs/configuration.md +2 -0
  672. package/docs/custom-provider.md +43 -4
  673. package/docs/docs.json +8 -0
  674. package/docs/extensions.md +55 -0
  675. package/docs/keybindings.md +1 -1
  676. package/docs/llama-cpp.md +13 -0
  677. package/docs/mcp.md +188 -0
  678. package/docs/models.md +35 -0
  679. package/docs/packages.md +4 -2
  680. package/docs/providers.md +1 -0
  681. package/docs/rpc-commands.md +9 -3
  682. package/docs/rpc.md +3 -1
  683. package/docs/sdk.md +7 -2
  684. package/docs/security.md +2 -0
  685. package/docs/session-format.md +5 -1
  686. package/docs/settings.md +20 -3
  687. package/docs/themes.md +33 -7
  688. package/docs/tui.md +18 -0
  689. package/docs/virtual-models.md +114 -0
  690. package/docs/windows.md +2 -0
  691. package/examples/README.md +1 -1
  692. package/examples/extensions/README.md +2 -0
  693. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  694. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  695. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  696. package/examples/extensions/custom-provider-gitlab-duo/test.ts +5 -5
  697. package/examples/extensions/debug-provider.ts +90 -0
  698. package/examples/extensions/gondolin/package-lock.json +2 -2
  699. package/examples/extensions/gondolin/package.json +1 -1
  700. package/examples/extensions/jev-router.ts +113 -0
  701. package/examples/extensions/sandbox/package-lock.json +2 -2
  702. package/examples/extensions/sandbox/package.json +1 -1
  703. package/examples/extensions/with-deps/package-lock.json +2 -2
  704. package/examples/extensions/with-deps/package.json +1 -1
  705. package/examples/rpc-client.ts +1 -1
  706. package/examples/rpc-extension-ui.ts +1 -1
  707. package/examples/sdk/14-codemode-mcp.ts +61 -0
  708. package/examples/sdk/README.md +2 -1
  709. package/npm-shrinkwrap.json +89 -39
  710. package/package.json +14 -12
  711. package/dist/bundle/chunks/anthropic-messages-J5WXPPPC.js +0 -6
  712. package/dist/bundle/chunks/azure-openai-responses-HUSQ3GP2.js +0 -2
  713. package/dist/bundle/chunks/chunk-65HAU2C5.js +0 -2
  714. package/dist/bundle/chunks/chunk-6R7UI4IY.js +0 -2
  715. package/dist/bundle/chunks/chunk-NUHFSC37.js +0 -25
  716. package/dist/bundle/chunks/chunk-OJP47DM6.js +0 -1568
  717. package/dist/bundle/chunks/chunk-RCZIEVGO.js +0 -11
  718. package/dist/bundle/chunks/google-generative-ai-IMS5EK2Y.js +0 -2
  719. package/dist/bundle/chunks/google-vertex-O4YJEQUW.js +0 -2
  720. package/dist/bundle/chunks/mistral-conversations-NOSQHBEY.js +0 -5
  721. package/dist/bundle/chunks/openai-responses-HWEUZ6WZ.js +0 -2
  722. package/dist/bundle/chunks/virtual-modules-VHMJYYWQ.js +0 -2
@@ -7,8 +7,8 @@
7
7
  * - Register commands, keyboard shortcuts, and CLI flags
8
8
  * - Interact with the user via UI primitives
9
9
  */
10
- import type { AgentMessage, AgentToolResult, AgentToolUpdateCallback, ThinkingLevel, ToolExecutionMode } from "@earendil-works/pi-agent-core";
11
- import type { Api, AssistantMessageEvent, AssistantMessageEventStream, ConstrainedSamplingConfig, ImageContent, Message, Model, OAuthCredentials, OAuthLoginCallbacks, Provider, ProviderHeaders, RefreshModelsContext, SimpleStreamOptions, TextContent, ToolResultMessage, TranscriptContext, Usage } from "@earendil-works/pi-ai";
10
+ import type { AgentMessage, AgentTool, AgentToolCallOutcome, AgentToolResult, AgentToolUpdateCallback, ThinkingLevel, ToolExecutionMode } from "@earendil-works/pi-agent-core";
11
+ import type { AnyModel, Api, AssistantMessageEvent, AssistantMessageEventStream, ClassifierApi, ConstrainedSamplingConfig, ImageApi, ImageContent, JsonValue, Message, Model, OAuthCredentials, OAuthLoginCallbacks, Provider, ProviderClassifier, ProviderHeaders, ProviderId, ProviderImages, RefreshModelsContext, SimpleStreamOptions, TextContent, ToolResultMessage, TranscriptContext, Usage } from "@earendil-works/pi-ai";
12
12
  import type { AutocompleteItem, AutocompleteProvider, Component, EditorComponent, EditorTheme, KeyId, OverlayHandle, OverlayOptions, TUI } from "@earendil-works/pi-tui";
13
13
  import type { Static, TSchema } from "typebox";
14
14
  import type { Theme } from "../../modes/interactive/theme/theme.ts";
@@ -19,16 +19,19 @@ import type { EventBus } from "../event-bus.ts";
19
19
  import type { ExecOptions, ExecResult } from "../exec.ts";
20
20
  import type { ReadonlyFooterDataProvider } from "../footer-data-provider.ts";
21
21
  import type { KeybindingsManager } from "../keybindings.ts";
22
+ import type { McpServerConfig, McpServerRegistry, RegisteredMcpServer } from "../mcp-servers.ts";
22
23
  import type { CustomMessage } from "../messages.ts";
23
24
  import type { ModelRegistry } from "../model-registry.ts";
24
25
  import type { ScopedModel } from "../model-resolver.ts";
25
26
  import type { BranchSummaryEntry, CompactionEntry, ContextEditEntry, CustomEntry, ProjectedSessionEntry, ReadonlySessionManager, SessionEntry, SessionManager } from "../session-manager.ts";
27
+ import type { Settings } from "../settings-manager.ts";
26
28
  import type { SlashCommandInfo } from "../slash-commands.ts";
27
29
  import type { SourceInfo } from "../source-info.ts";
28
30
  import type { BuildSystemPromptOptions, NormalizedBuildSystemPromptOptions } from "../system-prompt.ts";
29
31
  import type { BashOperations } from "../tools/bash.ts";
30
32
  import type { EditToolDetails } from "../tools/edit.ts";
31
33
  import type { BashToolDetails, BashToolInput, EditToolInput, FindToolDetails, FindToolInput, GrepToolDetails, GrepToolInput, LsToolDetails, LsToolInput, PowerShellToolDetails, PowerShellToolInput, ReadToolDetails, ReadToolInput, WriteToolInput } from "../tools/index.ts";
34
+ import type { ModelRoute, ModelRouteRequest, VirtualModelDefinition } from "../virtual-models.ts";
32
35
  export type { ExecOptions, ExecResult } from "../exec.ts";
33
36
  export type { BuildSystemPromptOptions, NormalizedBuildSystemPromptOptions } from "../system-prompt.ts";
34
37
  export type { AgentToolResult, AgentToolUpdateCallback, ToolExecutionMode };
@@ -248,6 +251,34 @@ export interface ExtensionContext {
248
251
  /** Get the current effective system prompt. */
249
252
  getSystemPrompt(): string;
250
253
  }
254
+ /** Options for {@link ExtensionToolContext.executeTool}. */
255
+ export interface ExecuteToolOptions {
256
+ /** Defaults to the calling tool's signal. */
257
+ signal?: AbortSignal;
258
+ /** Receives partial results of the nested tool, in addition to `tool_execution_update` events. */
259
+ onUpdate?: AgentToolUpdateCallback;
260
+ }
261
+ /**
262
+ * Context passed to tool `execute()` in a session: the extension context plus `executeTool()`
263
+ * for running other tools through the same validation, hooks, and permission checks as
264
+ * model-issued calls.
265
+ *
266
+ * A tool wrapped with `wrapToolDefinition()` without a context factory, such as a built-in tool
267
+ * created with `createBashTool()` and run in a plain `Agent` or called directly, gets no context.
268
+ */
269
+ export interface ExtensionToolContext extends ExtensionContext {
270
+ /** Tools {@link executeTool} can call. */
271
+ readonly tools: readonly AgentTool[];
272
+ /**
273
+ * Run another tool. The call gets the id `<calling id>/<n>`, and the `tool_call`, `tool_result`,
274
+ * and `tool_execution_*` events carry `parentToolCallId`. It does not appear in the transcript;
275
+ * a bounded record of it is kept as `nestedCalls` on the calling tool's result message.
276
+ *
277
+ * Never rejects for tool failures: unknown tools, validation errors, blocked calls, and thrown
278
+ * errors come back as `isError: true`.
279
+ */
280
+ executeTool(name: string, args: unknown, options?: ExecuteToolOptions): Promise<AgentToolCallOutcome>;
281
+ }
251
282
  /**
252
283
  * Extended context for command handlers.
253
284
  * Includes session control methods only safe in user-initiated commands.
@@ -339,6 +370,64 @@ export interface ToolRenderContext<TState = any, TArgs = any> {
339
370
  /** Whether the current result is an error. */
340
371
  isError: boolean;
341
372
  }
373
+ /**
374
+ * How the model reaches a tool. "Callable" means callable from other tools through
375
+ * `ctx.executeTool()`, as the `codemode` tool does.
376
+ *
377
+ * - `direct`: declared to the model while active, and callable while active.
378
+ * - `model-only`: declared to the model while active, never callable. Use it for orchestrating or
379
+ * interactive tools.
380
+ * - `codemode`: callable whenever registered. Not declared to the model unless explicitly
381
+ * activated. Codemode tools list it in their description.
382
+ * - `deferred`: like `codemode`, but codemode tools do not list it; tool search can find it.
383
+ * - `hidden`: registered but unreachable. Activating it has no effect.
384
+ *
385
+ * `direct` and `model-only` tools are activated when they are registered; the others are not.
386
+ * The active tool set (`getActiveTools`/`setActiveTools`) is the set declared to the model.
387
+ */
388
+ export type ToolExposure = "direct" | "model-only" | "codemode" | "deferred" | "hidden";
389
+ /**
390
+ * Hints about what a tool does, with the meaning of MCP tool annotations. They come from the tool's
391
+ * author and are not verified; permission extensions can use them to decide which calls to confirm.
392
+ */
393
+ export interface ToolAnnotations {
394
+ /** The tool does not modify its environment. */
395
+ readOnlyHint?: boolean;
396
+ /** The tool may delete or overwrite data, rather than only add to it. Meaningful when not read-only. */
397
+ destructiveHint?: boolean;
398
+ /** Repeating a call with the same arguments has no further effect. Meaningful when not read-only. */
399
+ idempotentHint?: boolean;
400
+ /** The tool reaches an open world of external entities, such as the web, rather than a closed domain. */
401
+ openWorldHint?: boolean;
402
+ }
403
+ /** A group of related tools, such as the tools of one MCP server. Codemode tools list them together. */
404
+ export interface ToolNamespace {
405
+ /** For example `mcp__docs`. */
406
+ name: string;
407
+ /** Shown once above the group's tools. */
408
+ description?: string;
409
+ }
410
+ /** The tools of a session as {@link ToolDefinition.prepareLoadout} sees them. */
411
+ export interface ToolLoadout {
412
+ /** Tools declared to the model (the active tools), in order, with their original descriptions. */
413
+ readonly declared: readonly AgentTool[];
414
+ /** Tools callable through `ctx.executeTool()`. */
415
+ readonly callable: readonly AgentTool[];
416
+ /** Every registered tool. */
417
+ readonly registered: readonly AgentTool[];
418
+ getExposure(name: string): ToolExposure;
419
+ getNamespace(name: string): ToolNamespace | undefined;
420
+ }
421
+ /** Changes {@link ToolDefinition.prepareLoadout} makes to what the model sees. */
422
+ export interface ToolLoadoutChanges {
423
+ /** Model-facing descriptions of declared tools, by tool name. */
424
+ descriptions?: Readonly<Record<string, string>>;
425
+ /**
426
+ * Declared tools whose declarations requests leave out. They stay active and callable, and the
427
+ * transcript still declares them, so the active set survives `/tree` and resume.
428
+ */
429
+ hiddenDeclarations?: readonly string[];
430
+ }
342
431
  /**
343
432
  * Tool definition for registerTool().
344
433
  */
@@ -361,6 +450,31 @@ export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = un
361
450
  renderShell?: "default" | "self";
362
451
  /** Optional compatibility shim to prepare raw tool call arguments before schema validation. Must return an object conforming to TParams. */
363
452
  prepareArguments?: (args: unknown) => Static<TParams>;
453
+ /**
454
+ * JSON Schema of `structuredContent` in successful results. Tools that declare it should always
455
+ * set `structuredContent`; codemode scripts then receive it instead of the text content.
456
+ */
457
+ outputSchema?: TSchema;
458
+ /**
459
+ * How the model reaches the tool. Default: `"direct"`. See {@link ToolExposure}.
460
+ */
461
+ exposure?: ToolExposure;
462
+ /** Group the tool belongs to, for example its MCP server. */
463
+ namespace?: ToolNamespace;
464
+ /** Hints about what the tool does, for example from an MCP server. */
465
+ annotations?: ToolAnnotations;
466
+ /**
467
+ * Whether registering the tool activates it. Default: `true` for `direct` and `model-only` tools;
468
+ * other exposures are never activated on registration. A tool with `defaultActive: false` is
469
+ * activated by naming it in `--tools` or the `defaultTools` setting, or with `setActiveTools()`.
470
+ */
471
+ defaultActive?: boolean;
472
+ /**
473
+ * Adjust how the loadout is presented to the model while this tool is active. Called whenever
474
+ * the active tools change. Tools that orchestrate other tools use it, for example to list the
475
+ * callable tools in their own description.
476
+ */
477
+ prepareLoadout?: (loadout: ToolLoadout) => ToolLoadoutChanges | undefined;
364
478
  /**
365
479
  * Per-tool execution mode override.
366
480
  * - "sequential": this tool must execute one at a time with other tool calls.
@@ -370,7 +484,7 @@ export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = un
370
484
  */
371
485
  executionMode?: ToolExecutionMode;
372
486
  /** Execute the tool. */
373
- execute(toolCallId: string, params: Static<TParams>, signal: AbortSignal | undefined, onUpdate: AgentToolUpdateCallback<TDetails> | undefined, ctx: ExtensionContext): Promise<AgentToolResult<TDetails>>;
487
+ execute(toolCallId: string, params: Static<TParams>, signal: AbortSignal | undefined, onUpdate: AgentToolUpdateCallback<TDetails> | undefined, ctx: ExtensionToolContext): Promise<AgentToolResult<TDetails>>;
374
488
  /** Custom rendering for tool call display */
375
489
  renderCall?: (args: Static<TParams>, theme: Theme, context: ToolRenderContext<TState, Static<TParams>>) => Component;
376
490
  /** Custom rendering for tool result display */
@@ -413,6 +527,17 @@ export interface ResourcesDiscoverResult {
413
527
  promptPaths?: string[];
414
528
  themePaths?: string[];
415
529
  }
530
+ /**
531
+ * Fired when an extension registers or unregisters an MCP server after the extensions are bound
532
+ * (see {@link ExtensionAPI.registerMcpServer}). Servers registered while extensions load are read
533
+ * with `pi.getMcpServers()` on `session_start`. Handling this event marks an extension as the one
534
+ * that connects registered servers.
535
+ */
536
+ export interface McpServersChangeEvent {
537
+ type: "mcp_servers_change";
538
+ /** Every registered server after the change. */
539
+ servers: RegisteredMcpServer[];
540
+ }
416
541
  /** Fired when a session is started, loaded, or reloaded */
417
542
  export interface SessionStartEvent {
418
543
  type: "session_start";
@@ -551,6 +676,14 @@ export interface AfterProviderResponseEvent {
551
676
  status: number;
552
677
  headers: Record<string, string>;
553
678
  }
679
+ /** Fired for a parsed provider stream event before Pi normalizes it. */
680
+ export interface ProviderStreamEvent {
681
+ type: "provider_stream_event";
682
+ provider: ProviderId;
683
+ api: Api;
684
+ model: string;
685
+ data: unknown;
686
+ }
554
687
  /** Fired after user submits prompt but before agent loop. */
555
688
  export interface BeforeAgentStartEvent {
556
689
  type: "before_agent_start";
@@ -676,6 +809,8 @@ export interface ToolExecutionStartEvent {
676
809
  toolCallId: string;
677
810
  toolName: string;
678
811
  args: any;
812
+ /** Set when another tool (for example a codemode script) made this call. */
813
+ parentToolCallId?: string;
679
814
  }
680
815
  /** Fired during tool execution with partial/streaming output */
681
816
  export interface ToolExecutionUpdateEvent {
@@ -684,6 +819,8 @@ export interface ToolExecutionUpdateEvent {
684
819
  toolName: string;
685
820
  args: any;
686
821
  partialResult: any;
822
+ /** Set when another tool (for example a codemode script) made this call. */
823
+ parentToolCallId?: string;
687
824
  }
688
825
  /** Fired when a tool finishes executing */
689
826
  export interface ToolExecutionEndEvent {
@@ -692,6 +829,8 @@ export interface ToolExecutionEndEvent {
692
829
  toolName: string;
693
830
  result: any;
694
831
  isError: boolean;
832
+ /** Set when another tool (for example a codemode script) made this call. */
833
+ parentToolCallId?: string;
695
834
  }
696
835
  export type ModelSelectSource = "set" | "cycle" | "restore";
697
836
  /** Fired when a new model is selected */
@@ -743,7 +882,14 @@ export type InputEventResult = {
743
882
  };
744
883
  interface ToolCallEventBase {
745
884
  type: "tool_call";
885
+ /**
886
+ * The call's id. For calls another tool made (with `parentToolCallId` set), pi assigns
887
+ * `<parent id>/<n>`; such ids never appear as tool calls or tool results in the transcript, only
888
+ * in the parent result's `nestedCalls` record.
889
+ */
746
890
  toolCallId: string;
891
+ /** Set when another tool (for example a codemode script) issued this call. */
892
+ parentToolCallId?: string;
747
893
  }
748
894
  export interface BashToolCallEvent extends ToolCallEventBase {
749
895
  toolName: "bash";
@@ -790,9 +936,17 @@ export interface CustomToolCallEvent extends ToolCallEventBase {
790
936
  export type ToolCallEvent = BashToolCallEvent | PowerShellToolCallEvent | ReadToolCallEvent | EditToolCallEvent | WriteToolCallEvent | GrepToolCallEvent | FindToolCallEvent | LsToolCallEvent | CustomToolCallEvent;
791
937
  interface ToolResultEventBase {
792
938
  type: "tool_result";
939
+ /** The call's id; `<parent id>/<n>` for nested calls, see `ToolCallEvent`. */
793
940
  toolCallId: string;
941
+ /** Set when another tool (for example a codemode script) issued this call. */
942
+ parentToolCallId?: string;
794
943
  input: Record<string, unknown>;
795
944
  content: (TextContent | ImageContent)[];
945
+ /**
946
+ * Machine-readable result for tools that declare an `outputSchema`. Handlers that redact
947
+ * `content` should also replace this; replacing `content` alone drops it.
948
+ */
949
+ structuredContent?: JsonValue;
796
950
  isError: boolean;
797
951
  /** Usage from the tool execution itself, if available. */
798
952
  usage?: Usage;
@@ -876,7 +1030,7 @@ export declare function isToolCallEventType<TName extends string, TInput extends
876
1030
  input: TInput;
877
1031
  };
878
1032
  /** Union of all event types */
879
- export type ExtensionEvent = ProjectTrustEvent | ResourcesDiscoverEvent | SessionEvent | ContextEvent | ContextWithSystemEvent | CacheWarmingDecisionEvent | BeforeProviderRequestEvent | BeforeProviderHeadersEvent | AfterProviderResponseEvent | BeforeAgentStartEvent | AgentStartEvent | AgentEndEvent | AgentBeforeSettleEvent | AgentSettledEvent | UIPromptStartEvent | UIPromptEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | ModelSelectEvent | ThinkingLevelSelectEvent | UserBashEvent | InputEvent | ToolCallEvent | ToolResultEvent;
1033
+ export type ExtensionEvent = ProjectTrustEvent | ResourcesDiscoverEvent | McpServersChangeEvent | SessionEvent | ContextEvent | ContextWithSystemEvent | CacheWarmingDecisionEvent | BeforeProviderRequestEvent | BeforeProviderHeadersEvent | AfterProviderResponseEvent | ProviderStreamEvent | BeforeAgentStartEvent | AgentStartEvent | AgentEndEvent | AgentBeforeSettleEvent | AgentSettledEvent | UIPromptStartEvent | UIPromptEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | ModelSelectEvent | ThinkingLevelSelectEvent | UserBashEvent | InputEvent | ToolCallEvent | ToolResultEvent;
880
1034
  export interface ContextEventResult {
881
1035
  messages?: AgentMessage[];
882
1036
  }
@@ -904,9 +1058,15 @@ export type UserBashEventResult = {
904
1058
  /** Full replacement: extension handled execution, use this result */
905
1059
  result: BashResult;
906
1060
  };
1061
+ /**
1062
+ * Changes a `tool_result` handler makes. Omitted fields stay as they are, except that replacing
1063
+ * `content` without returning `structuredContent` drops the structured content, because it may no
1064
+ * longer match. Return it along with `content` to keep it.
1065
+ */
907
1066
  export interface ToolResultEventResult {
908
1067
  content?: (TextContent | ImageContent)[];
909
1068
  details?: unknown;
1069
+ structuredContent?: JsonValue;
910
1070
  isError?: boolean;
911
1071
  usage?: Usage;
912
1072
  }
@@ -986,6 +1146,7 @@ export interface ExtensionAPI {
986
1146
  on(event: "session_compact", handler: ExtensionHandler<SessionCompactEvent>): () => void;
987
1147
  on(event: "session_compact_failed", handler: ExtensionHandler<SessionCompactFailedEvent>): () => void;
988
1148
  on(event: "session_shutdown", handler: ExtensionHandler<SessionShutdownEvent>): () => void;
1149
+ on(event: "mcp_servers_change", handler: ExtensionHandler<McpServersChangeEvent>): () => void;
989
1150
  on(event: "session_before_tree", handler: ExtensionHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>): () => void;
990
1151
  on(event: "session_tree", handler: ExtensionHandler<SessionTreeEvent>): () => void;
991
1152
  on(event: "context", handler: ExtensionHandler<ContextEvent, ContextEventResult>): () => void;
@@ -994,6 +1155,7 @@ export interface ExtensionAPI {
994
1155
  on(event: "before_provider_request", handler: ExtensionHandler<BeforeProviderRequestEvent, BeforeProviderRequestEventResult>): () => void;
995
1156
  on(event: "before_provider_headers", handler: ExtensionHandler<BeforeProviderHeadersEvent>): () => void;
996
1157
  on(event: "after_provider_response", handler: ExtensionHandler<AfterProviderResponseEvent>): () => void;
1158
+ on(event: "provider_stream_event", handler: ExtensionHandler<ProviderStreamEvent>): () => void;
997
1159
  on(event: "before_agent_start", handler: ExtensionHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>): () => void;
998
1160
  on(event: "agent_start", handler: ExtensionHandler<AgentStartEvent>): () => void;
999
1161
  on(event: "agent_end", handler: ExtensionHandler<AgentEndEvent>): () => void;
@@ -1066,11 +1228,16 @@ export interface ExtensionAPI {
1066
1228
  setLabel(entryId: string, label: string | undefined): void;
1067
1229
  /** Execute a shell command. */
1068
1230
  exec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;
1069
- /** Get the list of currently active tool names. */
1231
+ /** Get the names of the active tools, which are the tools declared to the model. */
1070
1232
  getActiveTools(): string[];
1071
- /** Get all configured tools with parameter schema, prompt guidelines, and source metadata. */
1233
+ /** Get all configured tools with parameter schema, prompt guidelines, exposure, and source metadata. */
1072
1234
  getAllTools(): ToolInfo[];
1073
- /** Set the active tools by name. */
1235
+ /** Get a copy of the effective settings (global and project settings merged, with overrides). */
1236
+ getSettings(): Settings;
1237
+ /**
1238
+ * Set the active tools by name. Unknown and `hidden` tools are ignored. Tools with `codemode` or
1239
+ * `deferred` exposure stay callable from codemode scripts whether active or not.
1240
+ */
1074
1241
  setActiveTools(toolNames: string[]): void;
1075
1242
  /** Get available slash commands in the current session. */
1076
1243
  getCommands(): SlashCommandInfo[];
@@ -1154,9 +1321,45 @@ export interface ExtensionAPI {
1154
1321
  * pi.unregisterProvider("my-proxy");
1155
1322
  */
1156
1323
  unregisterProvider(name: string): void;
1324
+ /**
1325
+ * Register an MCP server for this session, with the same config as an `mcpServers` entry in
1326
+ * `mcp.json`. The server connects next to the configured servers: on `session_start` when
1327
+ * registered during extension load, right away when registered later. Registering a name again
1328
+ * replaces the extension's earlier registration.
1329
+ *
1330
+ * The registration is not saved; register again on every load. A server of the same name in
1331
+ * `mcp.json` takes precedence. Throws for invalid configs and for names another extension
1332
+ * registered. When no loaded extension handles MCP servers (for example because another MCP
1333
+ * extension replaced the built-in one), the registration is reported as an extension error.
1334
+ *
1335
+ * @example
1336
+ * pi.registerMcpServer("jira", { url: "https://mcp.example.com/jira" });
1337
+ */
1338
+ registerMcpServer(name: string, config: McpServerConfig): void;
1339
+ /** Remove an MCP server this extension registered and close its connection. */
1340
+ unregisterMcpServer(name: string): void;
1341
+ /** Every MCP server registered by extensions. For extensions that connect MCP servers. */
1342
+ getMcpServers(): RegisteredMcpServer[];
1343
+ /**
1344
+ * Register a virtual model: a selectable catalog entry that routes each request to a physical
1345
+ * model. The selection (`ctx.model`, `model_change` entries) names the virtual model; assistant
1346
+ * messages record the physical model and thinking level the router picked.
1347
+ *
1348
+ * `provider` may be any provider id, including one with physical models, and may list several
1349
+ * virtual models. Registering the same provider and id again replaces the virtual model. See
1350
+ * docs/virtual-models.md.
1351
+ */
1352
+ registerVirtualModel<TState = unknown>(model: ExtensionVirtualModel<TState>): void;
1353
+ /** Remove a virtual model registered with `registerVirtualModel()`. */
1354
+ unregisterVirtualModel(provider: string, id: string): void;
1157
1355
  /** Shared event bus for extension communication. */
1158
1356
  events: EventBus;
1159
1357
  }
1358
+ /** Virtual model registered via pi.registerVirtualModel(). */
1359
+ export interface ExtensionVirtualModel<TState = unknown> extends Omit<VirtualModelDefinition<TState>, "route"> {
1360
+ /** Like `VirtualModelDefinition.route`, with an extension context. */
1361
+ route(request: ModelRouteRequest<TState>, ctx: ExtensionContext): ModelRoute<TState> | Promise<ModelRoute<TState>>;
1362
+ }
1160
1363
  /** Configuration for registering a provider via pi.registerProvider(). */
1161
1364
  export interface ProviderConfig {
1162
1365
  /** Display name for the provider in UI. */
@@ -1173,9 +1376,15 @@ export interface ProviderConfig {
1173
1376
  * (`getCurrentSystemPrompt(context.messages)`, `getCurrentTools(context.messages)`).
1174
1377
  * Implementations must invoke `options.onPayload` before sending the provider request and use any
1175
1378
  * returned replacement payload. They must invoke `options.onResponse` after receiving the response
1176
- * and before consuming its body, matching built-in providers.
1379
+ * and before consuming its body, matching built-in providers. Implementations may invoke
1380
+ * `options.onProviderStreamEvent(data, model)` with parsed stream events before normalization.
1381
+ * Event data is adapter-owned and must be treated as read-only.
1177
1382
  */
1178
1383
  streamSimple?: (model: Model<Api>, context: TranscriptContext, options?: SimpleStreamOptions) => AssistantMessageEventStream;
1384
+ /** Image-generation implementations keyed by image API. */
1385
+ images?: Partial<Record<ImageApi, ProviderImages>>;
1386
+ /** Classifier implementations keyed by classifier API. */
1387
+ classifiers?: Partial<Record<ClassifierApi, ProviderClassifier>>;
1179
1388
  /** Custom headers to include in requests. */
1180
1389
  headers?: Record<string, string>;
1181
1390
  /** If true, adds Authorization: Bearer header with the resolved API key. */
@@ -1205,45 +1414,84 @@ export interface ProviderConfig {
1205
1414
  modifyModels?(models: Model<Api>[], credentials: OAuthCredentials): Model<Api>[];
1206
1415
  };
1207
1416
  }
1208
- /** Configuration for a model within a provider. */
1209
- export interface ProviderModelConfig {
1210
- /** Model ID (e.g., "claude-sonnet-4-20250514"). */
1417
+ interface ProviderModelConfigBase {
1418
+ /** Model ID. */
1211
1419
  id: string;
1212
- /** Display name (e.g., "Claude 4 Sonnet"). */
1420
+ /** Display name. */
1213
1421
  name: string;
1214
1422
  /** API type override for this model. */
1215
- api?: Api;
1423
+ api?: string;
1216
1424
  /** API endpoint URL override for this model. */
1217
1425
  baseUrl?: string;
1218
- /** Whether the model supports extended thinking. */
1219
- reasoning: boolean;
1220
- /** Maps pi thinking levels to provider/model-specific values; null marks a level unsupported. */
1221
- thinkingLevelMap?: Model<Api>["thinkingLevelMap"];
1222
1426
  /** Supported input types. */
1223
1427
  input: ("text" | "image")[];
1224
1428
  /** Provider input limits and cache-safe image preprocessing metadata. */
1225
- inputLimits?: Model<Api>["inputLimits"];
1429
+ inputLimits?: AnyModel["inputLimits"];
1226
1430
  /** Per-million-token cost rates and optional request-wide input pricing tiers. */
1227
- cost: Model<Api>["cost"];
1431
+ cost: AnyModel["cost"];
1432
+ /** Custom headers for this model. */
1433
+ headers?: Record<string, string>;
1434
+ }
1435
+ /** Chat model configuration. Omitted `type` is normalized to `"chat"`. */
1436
+ export interface ProviderChatModelConfig extends ProviderModelConfigBase {
1437
+ type?: "chat";
1438
+ api?: Api;
1439
+ /** Whether the model supports extended thinking. */
1440
+ reasoning: boolean;
1441
+ /** Maps pi thinking levels to provider/model-specific values; null marks a level unsupported. */
1442
+ thinkingLevelMap?: Model<Api>["thinkingLevelMap"];
1228
1443
  /** Best-effort prompt cache lifetime in seconds per retention tier. Unset disables cache warming. */
1229
1444
  promptCache?: Model<Api>["promptCache"];
1230
1445
  /** Maximum context window size in tokens. */
1231
1446
  contextWindow: number;
1232
1447
  /** Maximum output tokens. */
1233
1448
  maxTokens: number;
1234
- /** Custom headers for this model. */
1235
- headers?: Record<string, string>;
1449
+ samplingParams?: Record<string, unknown>;
1236
1450
  /** OpenAI compatibility settings. */
1237
1451
  compat?: Model<Api>["compat"];
1238
1452
  }
1453
+ /** Image-generation model configuration. */
1454
+ export interface ProviderImageModelConfig extends ProviderModelConfigBase {
1455
+ type: "image";
1456
+ api?: ImageApi;
1457
+ output: ("text" | "image")[];
1458
+ }
1459
+ /** Structured classifier model configuration. */
1460
+ export interface ProviderClassifierModelConfig extends ProviderModelConfigBase {
1461
+ type: "classifier";
1462
+ api?: ClassifierApi;
1463
+ contextWindow: number;
1464
+ }
1465
+ /** Configuration for a model within a provider. */
1466
+ export type ProviderModelConfig = ProviderChatModelConfig | ProviderImageModelConfig | ProviderClassifierModelConfig;
1239
1467
  /** Extension factory function type. Supports both sync and async initialization. */
1240
1468
  export type ExtensionFactory = (pi: ExtensionAPI) => void | Promise<void>;
1241
1469
  export type InlineExtension = ExtensionFactory | {
1242
- /** Display name shown as `<inline:name>` in the startup Extensions list. */
1470
+ /**
1471
+ * Display name shown as `<inline:name>` in the startup Extensions list and errors. With
1472
+ * `builtin`, the extension is named `builtin:name` in errors and diagnostics.
1473
+ */
1243
1474
  name: string;
1244
1475
  factory: ExtensionFactory;
1245
1476
  /** Omit this extension from the startup Extensions list. */
1246
1477
  hidden?: boolean;
1478
+ /**
1479
+ * Leave this extension out when another extension registers a tool, command, or flag with a
1480
+ * name it registers during loading, instead of reporting a conflict. The CLI's built-in MCP,
1481
+ * codemode, and tool search extensions use it, so for example an MCP extension that registers
1482
+ * `/mcp` replaces the built-in MCP support. The factory still runs, so it should only register
1483
+ * tools, commands, flags, and event handlers.
1484
+ */
1485
+ replaceable?: boolean;
1486
+ /**
1487
+ * Supply the code of the `builtin:<name>` extension instead of loading as an inline extension.
1488
+ * `builtin:<name>` is an extension resource like a file: it loads by default, `pi config` lists
1489
+ * it, `-builtin:<name>` in the `extensions` setting and `--no-extensions` disable it, and
1490
+ * `-e builtin:<name>` loads it explicitly. It is hidden from the startup Extensions list and
1491
+ * loads after project trust is resolved, so it cannot handle `project_trust`. The CLI's built-in
1492
+ * extensions use it.
1493
+ */
1494
+ builtin?: boolean;
1247
1495
  };
1248
1496
  export interface RegisteredTool {
1249
1497
  definition: ToolDefinition;
@@ -1277,9 +1525,13 @@ export type GetSessionNameHandler = () => string | undefined;
1277
1525
  export type GetActiveToolsHandler = () => string[];
1278
1526
  /** Tool info with name, description, parameter schema, prompt guidelines, and source metadata. */
1279
1527
  export type ToolInfo = Pick<ToolDefinition, "name" | "description" | "parameters" | "promptGuidelines"> & {
1528
+ exposure: ToolExposure;
1529
+ namespace?: ToolNamespace;
1530
+ annotations?: ToolAnnotations;
1280
1531
  sourceInfo: SourceInfo;
1281
1532
  };
1282
1533
  export type GetAllToolsHandler = () => ToolInfo[];
1534
+ export type GetSettingsHandler = () => Settings;
1283
1535
  export type GetCommandsHandler = () => SlashCommandInfo[];
1284
1536
  export type SetActiveToolsHandler = (toolNames: string[]) => void;
1285
1537
  export type RefreshToolsHandler = () => void;
@@ -1304,6 +1556,13 @@ export interface ExtensionRuntimeState {
1304
1556
  provider: Provider;
1305
1557
  extensionPath: string;
1306
1558
  }>;
1559
+ /** Virtual model registrations queued during extension loading, processed when runner binds. */
1560
+ pendingVirtualModelRegistrations: Array<{
1561
+ definition: VirtualModelDefinition;
1562
+ extensionPath: string;
1563
+ }>;
1564
+ /** Create an extension context. Throws before the runner binds. */
1565
+ createContext: () => ExtensionContext;
1307
1566
  /** Throws when this extension instance is stale after runtime replacement. */
1308
1567
  assertActive: () => void;
1309
1568
  /** Marks this extension instance as stale after runtime replacement or reload. */
@@ -1319,6 +1578,10 @@ export interface ExtensionRuntimeState {
1319
1578
  registerProvider: (name: string, config: ProviderConfig, extensionPath?: string) => void;
1320
1579
  registerNativeProvider: (provider: Provider, extensionPath?: string) => void;
1321
1580
  unregisterProvider: (name: string, extensionPath?: string) => void;
1581
+ /** Servers registered with `pi.registerMcpServer()`. */
1582
+ mcpServers: McpServerRegistry;
1583
+ registerVirtualModel: (definition: VirtualModelDefinition, extensionPath?: string) => void;
1584
+ unregisterVirtualModel: (provider: string, id: string) => void;
1322
1585
  }
1323
1586
  /**
1324
1587
  * Action implementations for pi.* API methods.
@@ -1333,6 +1596,7 @@ export interface ExtensionActions {
1333
1596
  setLabel: SetLabelHandler;
1334
1597
  getActiveTools: GetActiveToolsHandler;
1335
1598
  getAllTools: GetAllToolsHandler;
1599
+ getSettings: GetSettingsHandler;
1336
1600
  setActiveTools: SetActiveToolsHandler;
1337
1601
  refreshTools: RefreshToolsHandler;
1338
1602
  getCommands: GetCommandsHandler;
@@ -1357,6 +1621,10 @@ export interface ExtensionContextActions {
1357
1621
  compact: (options?: CompactOptions) => void;
1358
1622
  getSystemPrompt: () => string;
1359
1623
  getSystemPromptOptions?: () => BuildSystemPromptOptions;
1624
+ /** Backs `ExtensionToolContext.executeTool()`. Without it, nested calls fail. */
1625
+ executeTool?: (callerId: string, name: string, args: unknown, options: ExecuteToolOptions) => Promise<AgentToolCallOutcome>;
1626
+ /** Backs `ExtensionToolContext.tools`. */
1627
+ getCallableTools?: () => readonly AgentTool[];
1360
1628
  }
1361
1629
  /**
1362
1630
  * Actions for ExtensionCommandContext (ctx.* in command handlers).
@@ -1403,6 +1671,8 @@ export interface Extension {
1403
1671
  path: string;
1404
1672
  resolvedPath: string;
1405
1673
  hidden?: boolean;
1674
+ /** See {@link InlineExtension}. */
1675
+ replaceable?: boolean;
1406
1676
  sourceInfo: SourceInfo;
1407
1677
  handlers: Map<string, HandlerFn[]>;
1408
1678
  tools: Map<string, RegisteredTool>;
@@ -1420,6 +1690,10 @@ export interface LoadExtensionsResult {
1420
1690
  path: string;
1421
1691
  error: string;
1422
1692
  }>;
1693
+ warnings?: Array<{
1694
+ path: string;
1695
+ warning: string;
1696
+ }>;
1423
1697
  /** Shared runtime - actions are throwing stubs until runner.initialize() */
1424
1698
  runtime: ExtensionRuntime;
1425
1699
  }