pi-namespace-patch 0.87.1-namespace.1 → 1.0.0-namespace.2

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