@astralyn/pi 0.87.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (924) hide show
  1. package/CHANGELOG.md +69 -9
  2. package/README.md +3 -3
  3. package/dist/bun/runtime-setup.js +4 -1
  4. package/dist/bun/runtime-setup.js.map +1 -1
  5. package/dist/bundle/chunks/anthropic-messages-CG2BSDQS.js +6 -0
  6. package/dist/bundle/chunks/anthropic.js +2 -2
  7. package/dist/bundle/chunks/azure-openai-responses-PBA4QKCM.js +2 -0
  8. package/dist/bundle/chunks/bedrock-converse-stream.js +8 -8
  9. package/dist/bundle/chunks/{chunk-NW5FIDD7.js → chunk-6UFFVA7M.js} +3 -3
  10. package/dist/bundle/chunks/chunk-G4RY3GN7.js +11 -0
  11. package/dist/bundle/chunks/chunk-GCKVOFWP.js +2 -0
  12. package/dist/bundle/chunks/chunk-GIG5IHES.js +2 -0
  13. package/dist/bundle/chunks/{chunk-4W4Q2H6W.js → chunk-HESRDUKO.js} +1000 -625
  14. package/dist/bundle/chunks/chunk-MPDALHNJ.js +2 -0
  15. package/dist/bundle/chunks/chunk-OO6DJ3CL.js +31 -0
  16. package/dist/bundle/chunks/{chunk-LPQCB2VJ.js → chunk-PFZKRUMO.js} +2 -2
  17. package/dist/bundle/chunks/chunk-SGLYRVQL.js +2 -0
  18. package/dist/bundle/chunks/chunk-TRHTWM3C.js +2 -0
  19. package/dist/bundle/chunks/chunk-V66VGGOM.js +2 -0
  20. package/dist/bundle/chunks/chunk-Z2RKSI3O.js +2 -0
  21. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-YB7XPPP4.js +2 -0
  22. package/dist/bundle/chunks/codemode-worker.js +354 -0
  23. package/dist/bundle/chunks/github-copilot.js +1 -1
  24. package/dist/bundle/chunks/google-generative-ai-V5ZM5MCL.js +2 -0
  25. package/dist/bundle/chunks/google-vertex-22THOFP5.js +2 -0
  26. package/dist/bundle/chunks/llama-cpp-classify-R7DQLTQN.js +22 -0
  27. package/dist/bundle/chunks/meta.js +2 -0
  28. package/dist/bundle/chunks/mistral-conversations-WHSCJJWP.js +5 -0
  29. package/dist/bundle/chunks/openai-chatgpt.js +75 -0
  30. package/dist/bundle/chunks/openai-codex-responses-N7GDPBPP.js +10 -0
  31. package/dist/bundle/chunks/openai-codex.js +2 -2
  32. package/dist/bundle/chunks/openai-completions-RGGQK5UW.js +7 -0
  33. package/dist/bundle/chunks/openai-responses-3ZLD5JYI.js +3 -0
  34. package/dist/bundle/chunks/{openrouter-images-6XDE2CEW.js → openrouter-images-YP3YVB54.js} +1 -1
  35. package/dist/bundle/chunks/openrouter.js +2 -2
  36. package/dist/bundle/chunks/{pi-messages-MQMPIPNC.js → pi-messages-HZZ7GEEW.js} +2 -2
  37. package/dist/bundle/chunks/radius.js +2 -2
  38. package/dist/bundle/chunks/typesafe-system-one-RREJAKWB.js +2 -0
  39. package/dist/bundle/chunks/virtual-modules-4RQ2L6W4.js +2 -0
  40. package/dist/bundle/cli.js +1 -1
  41. package/dist/bundle/index.js +1 -1
  42. package/dist/bundle/rpc-entry.js +1 -1
  43. package/dist/cli/args.d.ts.map +1 -1
  44. package/dist/cli/args.js +5 -4
  45. package/dist/cli/args.js.map +1 -1
  46. package/dist/cli/startup-ui.d.ts.map +1 -1
  47. package/dist/cli/startup-ui.js +38 -30
  48. package/dist/cli/startup-ui.js.map +1 -1
  49. package/dist/config.d.ts +15 -4
  50. package/dist/config.d.ts.map +1 -1
  51. package/dist/config.js +33 -4
  52. package/dist/config.js.map +1 -1
  53. package/dist/core/agent-session-runtime.d.ts +1 -1
  54. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  55. package/dist/core/agent-session-runtime.js +13 -13
  56. package/dist/core/agent-session-runtime.js.map +1 -1
  57. package/dist/core/agent-session-services.d.ts +2 -2
  58. package/dist/core/agent-session-services.d.ts.map +1 -1
  59. package/dist/core/agent-session-services.js +14 -1
  60. package/dist/core/agent-session-services.js.map +1 -1
  61. package/dist/core/agent-session.d.ts +121 -36
  62. package/dist/core/agent-session.d.ts.map +1 -1
  63. package/dist/core/agent-session.js +518 -203
  64. package/dist/core/agent-session.js.map +1 -1
  65. package/dist/core/bug-report.js +1 -1
  66. package/dist/core/bug-report.js.map +1 -1
  67. package/dist/core/compaction/compaction.d.ts.map +1 -1
  68. package/dist/core/compaction/compaction.js +1 -22
  69. package/dist/core/compaction/compaction.js.map +1 -1
  70. package/dist/core/compaction/utils.d.ts +2 -1
  71. package/dist/core/compaction/utils.d.ts.map +1 -1
  72. package/dist/core/compaction/utils.js +25 -18
  73. package/dist/core/compaction/utils.js.map +1 -1
  74. package/dist/core/crash-log.d.ts.map +1 -1
  75. package/dist/core/crash-log.js +2 -1
  76. package/dist/core/crash-log.js.map +1 -1
  77. package/dist/core/export-html/template.css +10 -0
  78. package/dist/core/export-html/template.js +66 -17
  79. package/dist/core/extensions/distribution-api.d.ts +1 -1
  80. package/dist/core/extensions/distribution-api.d.ts.map +1 -1
  81. package/dist/core/extensions/distribution-api.js.map +1 -1
  82. package/dist/core/extensions/index.d.ts +2 -2
  83. package/dist/core/extensions/index.d.ts.map +1 -1
  84. package/dist/core/extensions/index.js.map +1 -1
  85. package/dist/core/extensions/loader.d.ts.map +1 -1
  86. package/dist/core/extensions/loader.js +67 -5
  87. package/dist/core/extensions/loader.js.map +1 -1
  88. package/dist/core/extensions/runner.d.ts +22 -3
  89. package/dist/core/extensions/runner.d.ts.map +1 -1
  90. package/dist/core/extensions/runner.js +124 -8
  91. package/dist/core/extensions/runner.js.map +1 -1
  92. package/dist/core/extensions/types.d.ts +310 -25
  93. package/dist/core/extensions/types.d.ts.map +1 -1
  94. package/dist/core/extensions/types.js.map +1 -1
  95. package/dist/core/extensions/wrapper.d.ts +2 -2
  96. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  97. package/dist/core/extensions/wrapper.js +3 -3
  98. package/dist/core/extensions/wrapper.js.map +1 -1
  99. package/dist/core/keybindings.d.ts +70 -5
  100. package/dist/core/keybindings.d.ts.map +1 -1
  101. package/dist/core/keybindings.js +15 -1
  102. package/dist/core/keybindings.js.map +1 -1
  103. package/dist/core/mcp-servers.d.ts +125 -0
  104. package/dist/core/mcp-servers.d.ts.map +1 -0
  105. package/dist/core/mcp-servers.js +199 -0
  106. package/dist/core/mcp-servers.js.map +1 -0
  107. package/dist/core/model-registry.d.ts +15 -1
  108. package/dist/core/model-registry.d.ts.map +1 -1
  109. package/dist/core/model-registry.js +29 -0
  110. package/dist/core/model-registry.js.map +1 -1
  111. package/dist/core/model-resolver.d.ts +2 -2
  112. package/dist/core/model-resolver.d.ts.map +1 -1
  113. package/dist/core/model-resolver.js +5 -5
  114. package/dist/core/model-resolver.js.map +1 -1
  115. package/dist/core/model-runtime.d.ts +47 -3
  116. package/dist/core/model-runtime.d.ts.map +1 -1
  117. package/dist/core/model-runtime.js +189 -35
  118. package/dist/core/model-runtime.js.map +1 -1
  119. package/dist/core/nested-tool-calls.d.ts +102 -0
  120. package/dist/core/nested-tool-calls.d.ts.map +1 -0
  121. package/dist/core/nested-tool-calls.js +177 -0
  122. package/dist/core/nested-tool-calls.js.map +1 -0
  123. package/dist/core/package-manager.d.ts +4 -0
  124. package/dist/core/package-manager.d.ts.map +1 -1
  125. package/dist/core/package-manager.js +58 -12
  126. package/dist/core/package-manager.js.map +1 -1
  127. package/dist/core/provider-composer.d.ts +40 -21
  128. package/dist/core/provider-composer.d.ts.map +1 -1
  129. package/dist/core/provider-composer.js +92 -40
  130. package/dist/core/provider-composer.js.map +1 -1
  131. package/dist/core/radius.d.ts +2 -0
  132. package/dist/core/radius.d.ts.map +1 -1
  133. package/dist/core/radius.js +2 -0
  134. package/dist/core/radius.js.map +1 -1
  135. package/dist/core/remote-catalog-provider.d.ts +8 -1
  136. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  137. package/dist/core/remote-catalog-provider.js +21 -11
  138. package/dist/core/remote-catalog-provider.js.map +1 -1
  139. package/dist/core/resource-loader.d.ts +7 -1
  140. package/dist/core/resource-loader.d.ts.map +1 -1
  141. package/dist/core/resource-loader.js +160 -35
  142. package/dist/core/resource-loader.js.map +1 -1
  143. package/dist/core/sdk.d.ts +3 -3
  144. package/dist/core/sdk.d.ts.map +1 -1
  145. package/dist/core/sdk.js +26 -7
  146. package/dist/core/sdk.js.map +1 -1
  147. package/dist/core/session-manager.d.ts +9 -0
  148. package/dist/core/session-manager.d.ts.map +1 -1
  149. package/dist/core/session-manager.js +22 -22
  150. package/dist/core/session-manager.js.map +1 -1
  151. package/dist/core/settings-manager.d.ts +41 -4
  152. package/dist/core/settings-manager.d.ts.map +1 -1
  153. package/dist/core/settings-manager.js +110 -3
  154. package/dist/core/settings-manager.js.map +1 -1
  155. package/dist/core/slash-commands.d.ts.map +1 -1
  156. package/dist/core/slash-commands.js +1 -0
  157. package/dist/core/slash-commands.js.map +1 -1
  158. package/dist/core/source-info.d.ts +8 -0
  159. package/dist/core/source-info.d.ts.map +1 -1
  160. package/dist/core/source-info.js +16 -0
  161. package/dist/core/source-info.js.map +1 -1
  162. package/dist/core/system-prompt.js +1 -1
  163. package/dist/core/system-prompt.js.map +1 -1
  164. package/dist/core/tasks/delivery.d.ts +40 -0
  165. package/dist/core/tasks/delivery.d.ts.map +1 -0
  166. package/dist/core/tasks/delivery.js +157 -0
  167. package/dist/core/tasks/delivery.js.map +1 -0
  168. package/dist/core/tasks/format.d.ts +7 -0
  169. package/dist/core/tasks/format.d.ts.map +1 -0
  170. package/dist/core/tasks/format.js +14 -0
  171. package/dist/core/tasks/format.js.map +1 -0
  172. package/dist/core/tasks/history.d.ts +4 -0
  173. package/dist/core/tasks/history.d.ts.map +1 -0
  174. package/dist/core/{background → tasks}/history.js +8 -51
  175. package/dist/core/tasks/history.js.map +1 -0
  176. package/dist/core/{background → tasks}/output.d.ts +12 -4
  177. package/dist/core/tasks/output.d.ts.map +1 -0
  178. package/dist/core/{background → tasks}/output.js +30 -11
  179. package/dist/core/tasks/output.js.map +1 -0
  180. package/dist/core/tasks/presentation.d.ts +7 -0
  181. package/dist/core/tasks/presentation.d.ts.map +1 -0
  182. package/dist/core/tasks/presentation.js +226 -0
  183. package/dist/core/tasks/presentation.js.map +1 -0
  184. package/dist/core/tasks/runtime.d.ts +74 -0
  185. package/dist/core/tasks/runtime.d.ts.map +1 -0
  186. package/dist/core/tasks/runtime.js +580 -0
  187. package/dist/core/tasks/runtime.js.map +1 -0
  188. package/dist/core/tasks/session.d.ts +49 -0
  189. package/dist/core/tasks/session.d.ts.map +1 -0
  190. package/dist/core/tasks/session.js +138 -0
  191. package/dist/core/tasks/session.js.map +1 -0
  192. package/dist/core/tasks/store.d.ts +46 -0
  193. package/dist/core/tasks/store.d.ts.map +1 -0
  194. package/dist/core/tasks/store.js +162 -0
  195. package/dist/core/tasks/store.js.map +1 -0
  196. package/dist/core/{background → tasks}/types.d.ts +64 -86
  197. package/dist/core/tasks/types.d.ts.map +1 -0
  198. package/dist/core/tasks/types.js +27 -0
  199. package/dist/core/tasks/types.js.map +1 -0
  200. package/dist/core/tools/bash.d.ts +8 -93
  201. package/dist/core/tools/bash.d.ts.map +1 -1
  202. package/dist/core/tools/bash.js +8 -240
  203. package/dist/core/tools/bash.js.map +1 -1
  204. package/dist/core/tools/grep.d.ts +2 -0
  205. package/dist/core/tools/grep.d.ts.map +1 -1
  206. package/dist/core/tools/grep.js +2 -0
  207. package/dist/core/tools/grep.js.map +1 -1
  208. package/dist/core/tools/index.d.ts +2 -1
  209. package/dist/core/tools/index.d.ts.map +1 -1
  210. package/dist/core/tools/index.js +9 -0
  211. package/dist/core/tools/index.js.map +1 -1
  212. package/dist/core/tools/output-accumulator.d.ts +11 -0
  213. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  214. package/dist/core/tools/output-accumulator.js +36 -0
  215. package/dist/core/tools/output-accumulator.js.map +1 -1
  216. package/dist/core/tools/powershell.d.ts +6 -2
  217. package/dist/core/tools/powershell.d.ts.map +1 -1
  218. package/dist/core/tools/powershell.js +1 -1
  219. package/dist/core/tools/powershell.js.map +1 -1
  220. package/dist/core/tools/render-utils.d.ts +6 -0
  221. package/dist/core/tools/render-utils.d.ts.map +1 -1
  222. package/dist/core/tools/render-utils.js +26 -0
  223. package/dist/core/tools/render-utils.js.map +1 -1
  224. package/dist/core/tools/renderers/bash.d.ts +1 -1
  225. package/dist/core/tools/renderers/bash.d.ts.map +1 -1
  226. package/dist/core/tools/renderers/bash.js +11 -35
  227. package/dist/core/tools/renderers/bash.js.map +1 -1
  228. package/dist/core/tools/renderers/index.d.ts.map +1 -1
  229. package/dist/core/tools/renderers/index.js +5 -7
  230. package/dist/core/tools/renderers/index.js.map +1 -1
  231. package/dist/core/tools/renderers/read.d.ts.map +1 -1
  232. package/dist/core/tools/renderers/read.js +3 -2
  233. package/dist/core/tools/renderers/read.js.map +1 -1
  234. package/dist/core/tools/shell-execution.d.ts +4 -6
  235. package/dist/core/tools/shell-execution.d.ts.map +1 -1
  236. package/dist/core/tools/shell-execution.js +22 -13
  237. package/dist/core/tools/shell-execution.js.map +1 -1
  238. package/dist/core/tools/shell-tool.d.ts +93 -0
  239. package/dist/core/tools/shell-tool.d.ts.map +1 -0
  240. package/dist/core/tools/shell-tool.js +249 -0
  241. package/dist/core/tools/shell-tool.js.map +1 -0
  242. package/dist/core/tools/tasks/actions.d.ts +12 -0
  243. package/dist/core/tools/tasks/actions.d.ts.map +1 -0
  244. package/dist/{extensions/background → core/tools/tasks}/actions.js +44 -29
  245. package/dist/core/tools/tasks/actions.js.map +1 -0
  246. package/dist/core/tools/tasks/constants.d.ts +20 -0
  247. package/dist/core/tools/tasks/constants.d.ts.map +1 -0
  248. package/dist/core/tools/tasks/constants.js +20 -0
  249. package/dist/core/tools/tasks/constants.js.map +1 -0
  250. package/dist/{extensions/background → core/tools/tasks}/schema.d.ts +7 -7
  251. package/dist/core/tools/tasks/schema.d.ts.map +1 -0
  252. package/dist/{extensions/background → core/tools/tasks}/schema.js +21 -20
  253. package/dist/core/tools/tasks/schema.js.map +1 -0
  254. package/dist/core/tools/tasks/types.d.ts +53 -0
  255. package/dist/core/tools/tasks/types.d.ts.map +1 -0
  256. package/dist/core/tools/tasks/types.js +12 -0
  257. package/dist/core/tools/tasks/types.js.map +1 -0
  258. package/dist/core/tools/tasks.d.ts +14 -0
  259. package/dist/core/tools/tasks.d.ts.map +1 -0
  260. package/dist/core/tools/tasks.js +40 -0
  261. package/dist/core/tools/tasks.js.map +1 -0
  262. package/dist/core/tools/tool-definition-wrapper.d.ts +4 -3
  263. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  264. package/dist/core/tools/tool-definition-wrapper.js +4 -2
  265. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  266. package/dist/core/tools/truncate.d.ts +14 -0
  267. package/dist/core/tools/truncate.d.ts.map +1 -1
  268. package/dist/core/tools/truncate.js +29 -0
  269. package/dist/core/tools/truncate.js.map +1 -1
  270. package/dist/core/trust-manager.d.ts.map +1 -1
  271. package/dist/core/trust-manager.js +1 -0
  272. package/dist/core/trust-manager.js.map +1 -1
  273. package/dist/core/usage-totals.d.ts +5 -3
  274. package/dist/core/usage-totals.d.ts.map +1 -1
  275. package/dist/core/usage-totals.js +27 -4
  276. package/dist/core/usage-totals.js.map +1 -1
  277. package/dist/core/virtual-models.d.ts +117 -0
  278. package/dist/core/virtual-models.d.ts.map +1 -0
  279. package/dist/core/virtual-models.js +124 -0
  280. package/dist/core/virtual-models.js.map +1 -0
  281. package/dist/extensions/btw/agent.d.ts +17 -8
  282. package/dist/extensions/btw/agent.d.ts.map +1 -1
  283. package/dist/extensions/btw/agent.js +74 -76
  284. package/dist/extensions/btw/agent.js.map +1 -1
  285. package/dist/extensions/btw/controller.d.ts +0 -1
  286. package/dist/extensions/btw/controller.d.ts.map +1 -1
  287. package/dist/extensions/btw/controller.js +26 -33
  288. package/dist/extensions/btw/controller.js.map +1 -1
  289. package/dist/extensions/btw/panel.d.ts +13 -14
  290. package/dist/extensions/btw/panel.d.ts.map +1 -1
  291. package/dist/extensions/btw/panel.js +38 -29
  292. package/dist/extensions/btw/panel.js.map +1 -1
  293. package/dist/extensions/codemode/execute.d.ts +16 -0
  294. package/dist/extensions/codemode/execute.d.ts.map +1 -0
  295. package/dist/extensions/codemode/execute.js +536 -0
  296. package/dist/extensions/codemode/execute.js.map +1 -0
  297. package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
  298. package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
  299. package/dist/extensions/codemode/execute.lazy.js +3 -0
  300. package/dist/extensions/codemode/execute.lazy.js.map +1 -0
  301. package/dist/extensions/codemode/index.d.ts +21 -0
  302. package/dist/extensions/codemode/index.d.ts.map +1 -0
  303. package/dist/extensions/codemode/index.js +36 -0
  304. package/dist/extensions/codemode/index.js.map +1 -0
  305. package/dist/extensions/codemode/renderer.d.ts +12 -0
  306. package/dist/extensions/codemode/renderer.d.ts.map +1 -0
  307. package/dist/extensions/codemode/renderer.js +137 -0
  308. package/dist/extensions/codemode/renderer.js.map +1 -0
  309. package/dist/extensions/codemode/search.d.ts +33 -0
  310. package/dist/extensions/codemode/search.d.ts.map +1 -0
  311. package/dist/extensions/codemode/search.js +117 -0
  312. package/dist/extensions/codemode/search.js.map +1 -0
  313. package/dist/extensions/codemode/tool.d.ts +123 -0
  314. package/dist/extensions/codemode/tool.d.ts.map +1 -0
  315. package/dist/extensions/codemode/tool.js +268 -0
  316. package/dist/extensions/codemode/tool.js.map +1 -0
  317. package/dist/extensions/codemode/worker.d.ts +7 -0
  318. package/dist/extensions/codemode/worker.d.ts.map +1 -0
  319. package/dist/extensions/codemode/worker.js +7 -0
  320. package/dist/extensions/codemode/worker.js.map +1 -0
  321. package/dist/extensions/deepwiki/schema.d.ts +1 -1
  322. package/dist/extensions/index.js +13 -13
  323. package/dist/extensions/index.js.map +1 -1
  324. package/dist/extensions/llama/provider.d.ts +1 -1
  325. package/dist/extensions/llama/provider.d.ts.map +1 -1
  326. package/dist/extensions/llama/provider.js +65 -13
  327. package/dist/extensions/llama/provider.js.map +1 -1
  328. package/dist/extensions/mcp/cli.d.ts +21 -0
  329. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  330. package/dist/extensions/mcp/cli.js +500 -0
  331. package/dist/extensions/mcp/cli.js.map +1 -0
  332. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  333. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  334. package/dist/extensions/mcp/cli.lazy.js +3 -0
  335. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  336. package/dist/extensions/mcp/config.d.ts +72 -0
  337. package/dist/extensions/mcp/config.d.ts.map +1 -0
  338. package/dist/extensions/mcp/config.js +158 -0
  339. package/dist/extensions/mcp/config.js.map +1 -0
  340. package/dist/extensions/mcp/index.d.ts +76 -0
  341. package/dist/extensions/mcp/index.d.ts.map +1 -0
  342. package/dist/extensions/mcp/index.js +1078 -0
  343. package/dist/extensions/mcp/index.js.map +1 -0
  344. package/dist/extensions/mcp/log.d.ts +16 -0
  345. package/dist/extensions/mcp/log.d.ts.map +1 -0
  346. package/dist/extensions/mcp/log.js +64 -0
  347. package/dist/extensions/mcp/log.js.map +1 -0
  348. package/dist/extensions/mcp/oauth.d.ts +97 -0
  349. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  350. package/dist/extensions/mcp/oauth.js +355 -0
  351. package/dist/extensions/mcp/oauth.js.map +1 -0
  352. package/dist/extensions/mcp/resources.d.ts +43 -0
  353. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  354. package/dist/extensions/mcp/resources.js +262 -0
  355. package/dist/extensions/mcp/resources.js.map +1 -0
  356. package/dist/extensions/mcp/runtime.d.ts +98 -0
  357. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  358. package/dist/extensions/mcp/runtime.js +379 -0
  359. package/dist/extensions/mcp/runtime.js.map +1 -0
  360. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  361. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  362. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  363. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  364. package/dist/extensions/mcp/tools.d.ts +84 -0
  365. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  366. package/dist/extensions/mcp/tools.js +251 -0
  367. package/dist/extensions/mcp/tools.js.map +1 -0
  368. package/dist/extensions/mcp/ui.d.ts +60 -0
  369. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  370. package/dist/extensions/mcp/ui.js +168 -0
  371. package/dist/extensions/mcp/ui.js.map +1 -0
  372. package/dist/extensions/provider/catalog.d.ts +8 -1
  373. package/dist/extensions/provider/catalog.d.ts.map +1 -1
  374. package/dist/extensions/provider/catalog.js +31 -0
  375. package/dist/extensions/provider/catalog.js.map +1 -1
  376. package/dist/extensions/provider/connection.d.ts +4 -1
  377. package/dist/extensions/provider/connection.d.ts.map +1 -1
  378. package/dist/extensions/provider/connection.js +1 -5
  379. package/dist/extensions/provider/connection.js.map +1 -1
  380. package/dist/extensions/provider/editing.d.ts +36 -0
  381. package/dist/extensions/provider/editing.d.ts.map +1 -0
  382. package/dist/extensions/provider/editing.js +99 -0
  383. package/dist/extensions/provider/editing.js.map +1 -0
  384. package/dist/extensions/provider/json-fields.d.ts +5 -0
  385. package/dist/extensions/provider/json-fields.d.ts.map +1 -0
  386. package/dist/extensions/provider/json-fields.js +31 -0
  387. package/dist/extensions/provider/json-fields.js.map +1 -0
  388. package/dist/extensions/provider/store.d.ts +1 -4
  389. package/dist/extensions/provider/store.d.ts.map +1 -1
  390. package/dist/extensions/provider/store.js +2 -30
  391. package/dist/extensions/provider/store.js.map +1 -1
  392. package/dist/extensions/provider/ui/builtin-data.d.ts +0 -2
  393. package/dist/extensions/provider/ui/builtin-data.d.ts.map +1 -1
  394. package/dist/extensions/provider/ui/builtin-data.js +14 -79
  395. package/dist/extensions/provider/ui/builtin-data.js.map +1 -1
  396. package/dist/extensions/provider/ui/compat.d.ts.map +1 -1
  397. package/dist/extensions/provider/ui/compat.js +6 -9
  398. package/dist/extensions/provider/ui/compat.js.map +1 -1
  399. package/dist/extensions/provider/ui/controls.d.ts +48 -0
  400. package/dist/extensions/provider/ui/controls.d.ts.map +1 -0
  401. package/dist/extensions/provider/ui/controls.js +108 -0
  402. package/dist/extensions/provider/ui/controls.js.map +1 -0
  403. package/dist/extensions/provider/ui/dictionary.d.ts.map +1 -1
  404. package/dist/extensions/provider/ui/dictionary.js +6 -9
  405. package/dist/extensions/provider/ui/dictionary.js.map +1 -1
  406. package/dist/extensions/provider/ui/editor.d.ts +3 -3
  407. package/dist/extensions/provider/ui/editor.d.ts.map +1 -1
  408. package/dist/extensions/provider/ui/editor.js +35 -140
  409. package/dist/extensions/provider/ui/editor.js.map +1 -1
  410. package/dist/extensions/provider/ui/fetch-models.d.ts +0 -3
  411. package/dist/extensions/provider/ui/fetch-models.d.ts.map +1 -1
  412. package/dist/extensions/provider/ui/fetch-models.js +49 -44
  413. package/dist/extensions/provider/ui/fetch-models.js.map +1 -1
  414. package/dist/extensions/provider/ui/model-fields.d.ts.map +1 -1
  415. package/dist/extensions/provider/ui/model-fields.js +11 -14
  416. package/dist/extensions/provider/ui/model-fields.js.map +1 -1
  417. package/dist/extensions/provider/ui/model-options.d.ts +4 -34
  418. package/dist/extensions/provider/ui/model-options.d.ts.map +1 -1
  419. package/dist/extensions/provider/ui/model-options.js +90 -271
  420. package/dist/extensions/provider/ui/model-options.js.map +1 -1
  421. package/dist/extensions/provider/ui/pane.d.ts +4 -18
  422. package/dist/extensions/provider/ui/pane.d.ts.map +1 -1
  423. package/dist/extensions/provider/ui/pane.js.map +1 -1
  424. package/dist/extensions/provider/ui/provider-fields.d.ts +2 -19
  425. package/dist/extensions/provider/ui/provider-fields.d.ts.map +1 -1
  426. package/dist/extensions/provider/ui/provider-fields.js +58 -171
  427. package/dist/extensions/provider/ui/provider-fields.js.map +1 -1
  428. package/dist/extensions/provider/ui/thinking-map.d.ts.map +1 -1
  429. package/dist/extensions/provider/ui/thinking-map.js +6 -9
  430. package/dist/extensions/provider/ui/thinking-map.js.map +1 -1
  431. package/dist/extensions/question/detail-pane.d.ts +7 -2
  432. package/dist/extensions/question/detail-pane.d.ts.map +1 -1
  433. package/dist/extensions/question/detail-pane.js +16 -5
  434. package/dist/extensions/question/detail-pane.js.map +1 -1
  435. package/dist/extensions/question/dialog-view.d.ts +41 -0
  436. package/dist/extensions/question/dialog-view.d.ts.map +1 -0
  437. package/dist/extensions/question/dialog-view.js +329 -0
  438. package/dist/extensions/question/dialog-view.js.map +1 -0
  439. package/dist/extensions/question/dialog.d.ts +3 -3
  440. package/dist/extensions/question/dialog.d.ts.map +1 -1
  441. package/dist/extensions/question/dialog.js +220 -634
  442. package/dist/extensions/question/dialog.js.map +1 -1
  443. package/dist/extensions/question/index.d.ts.map +1 -1
  444. package/dist/extensions/question/index.js +2 -3
  445. package/dist/extensions/question/index.js.map +1 -1
  446. package/dist/extensions/question/render.d.ts.map +1 -1
  447. package/dist/extensions/question/render.js +22 -32
  448. package/dist/extensions/question/render.js.map +1 -1
  449. package/dist/extensions/question/results.d.ts.map +1 -1
  450. package/dist/extensions/question/results.js +56 -12
  451. package/dist/extensions/question/results.js.map +1 -1
  452. package/dist/extensions/question/schema.d.ts +21 -6
  453. package/dist/extensions/question/schema.d.ts.map +1 -1
  454. package/dist/extensions/question/schema.js.map +1 -1
  455. package/dist/extensions/question/state.d.ts +9 -7
  456. package/dist/extensions/question/state.d.ts.map +1 -1
  457. package/dist/extensions/question/state.js +63 -54
  458. package/dist/extensions/question/state.js.map +1 -1
  459. package/dist/extensions/question/types.d.ts +41 -18
  460. package/dist/extensions/question/types.d.ts.map +1 -1
  461. package/dist/extensions/question/types.js.map +1 -1
  462. package/dist/extensions/statusline/index.d.ts +4 -0
  463. package/dist/extensions/statusline/index.d.ts.map +1 -1
  464. package/dist/extensions/statusline/index.js +18 -355
  465. package/dist/extensions/statusline/index.js.map +1 -1
  466. package/dist/extensions/statusline/render.d.ts +19 -0
  467. package/dist/extensions/statusline/render.d.ts.map +1 -0
  468. package/dist/extensions/statusline/render.js +163 -0
  469. package/dist/extensions/statusline/render.js.map +1 -0
  470. package/dist/extensions/statusline/usage.d.ts +12 -0
  471. package/dist/extensions/statusline/usage.d.ts.map +1 -0
  472. package/dist/extensions/statusline/usage.js +36 -0
  473. package/dist/extensions/statusline/usage.js.map +1 -0
  474. package/dist/extensions/tool-search/index.d.ts +12 -0
  475. package/dist/extensions/tool-search/index.d.ts.map +1 -0
  476. package/dist/extensions/tool-search/index.js +20 -0
  477. package/dist/extensions/tool-search/index.js.map +1 -0
  478. package/dist/extensions/tool-search/tool.d.ts +73 -0
  479. package/dist/extensions/tool-search/tool.d.ts.map +1 -0
  480. package/dist/extensions/tool-search/tool.js +187 -0
  481. package/dist/extensions/tool-search/tool.js.map +1 -0
  482. package/dist/extensions/web-search/execute.d.ts +1 -5
  483. package/dist/extensions/web-search/execute.d.ts.map +1 -1
  484. package/dist/extensions/web-search/execute.js +4 -9
  485. package/dist/extensions/web-search/execute.js.map +1 -1
  486. package/dist/extensions/web-search/format.d.ts +12 -3
  487. package/dist/extensions/web-search/format.d.ts.map +1 -1
  488. package/dist/extensions/web-search/format.js +33 -25
  489. package/dist/extensions/web-search/format.js.map +1 -1
  490. package/dist/extensions/web-search/index.d.ts.map +1 -1
  491. package/dist/extensions/web-search/index.js +6 -29
  492. package/dist/extensions/web-search/index.js.map +1 -1
  493. package/dist/extensions/web-search/providers/deepseek.d.ts.map +1 -1
  494. package/dist/extensions/web-search/providers/deepseek.js +0 -1
  495. package/dist/extensions/web-search/providers/deepseek.js.map +1 -1
  496. package/dist/extensions/web-search/providers/http.d.ts +1 -1
  497. package/dist/extensions/web-search/providers/http.d.ts.map +1 -1
  498. package/dist/extensions/web-search/providers/http.js.map +1 -1
  499. package/dist/extensions/web-search/providers/minimax.d.ts.map +1 -1
  500. package/dist/extensions/web-search/providers/minimax.js +0 -1
  501. package/dist/extensions/web-search/providers/minimax.js.map +1 -1
  502. package/dist/extensions/web-search/render.d.ts +7 -2
  503. package/dist/extensions/web-search/render.d.ts.map +1 -1
  504. package/dist/extensions/web-search/render.js +32 -4
  505. package/dist/extensions/web-search/render.js.map +1 -1
  506. package/dist/extensions/web-search/results.d.ts.map +1 -1
  507. package/dist/extensions/web-search/results.js +3 -8
  508. package/dist/extensions/web-search/results.js.map +1 -1
  509. package/dist/extensions/web-search/types.d.ts +4 -2
  510. package/dist/extensions/web-search/types.d.ts.map +1 -1
  511. package/dist/extensions/web-search/types.js.map +1 -1
  512. package/dist/index.d.ts +12 -5
  513. package/dist/index.d.ts.map +1 -1
  514. package/dist/index.js +6 -1
  515. package/dist/index.js.map +1 -1
  516. package/dist/main.d.ts.map +1 -1
  517. package/dist/main.js +16 -0
  518. package/dist/main.js.map +1 -1
  519. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  520. package/dist/modes/interactive/components/config-selector.js +13 -3
  521. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  522. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  523. package/dist/modes/interactive/components/custom-message.js +3 -1
  524. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  525. package/dist/modes/interactive/components/first-time-setup.d.ts +4 -4
  526. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  527. package/dist/modes/interactive/components/first-time-setup.js +8 -2
  528. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  529. package/dist/modes/interactive/components/footer.d.ts +7 -0
  530. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  531. package/dist/modes/interactive/components/footer.js +42 -3
  532. package/dist/modes/interactive/components/footer.js.map +1 -1
  533. package/dist/modes/interactive/components/oauth-selector.d.ts +8 -2
  534. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  535. package/dist/modes/interactive/components/oauth-selector.js +24 -21
  536. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  537. package/dist/modes/interactive/components/pi-logo-animation.d.ts +68 -0
  538. package/dist/modes/interactive/components/pi-logo-animation.d.ts.map +1 -0
  539. package/dist/modes/interactive/components/pi-logo-animation.js +1076 -0
  540. package/dist/modes/interactive/components/pi-logo-animation.js.map +1 -0
  541. package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts +7 -0
  542. package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts.map +1 -0
  543. package/dist/modes/interactive/components/pi-logo-animation.lazy.js +12 -0
  544. package/dist/modes/interactive/components/pi-logo-animation.lazy.js.map +1 -0
  545. package/dist/modes/interactive/components/pi-logo.d.ts +19 -0
  546. package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -0
  547. package/dist/modes/interactive/components/pi-logo.js +37 -0
  548. package/dist/modes/interactive/components/pi-logo.js.map +1 -0
  549. package/dist/modes/interactive/components/radius-login-selector.d.ts +15 -0
  550. package/dist/modes/interactive/components/radius-login-selector.d.ts.map +1 -0
  551. package/dist/modes/interactive/components/radius-login-selector.js +83 -0
  552. package/dist/modes/interactive/components/radius-login-selector.js.map +1 -0
  553. package/dist/modes/interactive/components/settings-selector.d.ts +6 -4
  554. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  555. package/dist/modes/interactive/components/settings-selector.js +33 -11
  556. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  557. package/dist/modes/interactive/components/status-marker.d.ts +2 -4
  558. package/dist/modes/interactive/components/status-marker.d.ts.map +1 -1
  559. package/dist/modes/interactive/components/status-marker.js +2 -6
  560. package/dist/modes/interactive/components/status-marker.js.map +1 -1
  561. package/dist/modes/interactive/components/themed-text.d.ts +17 -0
  562. package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
  563. package/dist/modes/interactive/components/themed-text.js +28 -0
  564. package/dist/modes/interactive/components/themed-text.js.map +1 -0
  565. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  566. package/dist/modes/interactive/components/user-message.js +5 -4
  567. package/dist/modes/interactive/components/user-message.js.map +1 -1
  568. package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
  569. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  570. package/dist/modes/interactive/components/visual-truncate.js +36 -6
  571. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  572. package/dist/modes/interactive/interactive-mode.d.ts +12 -4
  573. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  574. package/dist/modes/interactive/interactive-mode.js +377 -199
  575. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  576. package/dist/modes/interactive/tasks/completion-render.d.ts +8 -0
  577. package/dist/modes/interactive/tasks/completion-render.d.ts.map +1 -0
  578. package/dist/{extensions/background → modes/interactive/tasks}/completion-render.js +41 -91
  579. package/dist/modes/interactive/tasks/completion-render.js.map +1 -0
  580. package/dist/modes/interactive/tasks/index.d.ts +12 -0
  581. package/dist/modes/interactive/tasks/index.d.ts.map +1 -0
  582. package/dist/modes/interactive/tasks/index.js +102 -0
  583. package/dist/modes/interactive/tasks/index.js.map +1 -0
  584. package/dist/modes/interactive/tasks/inspector.d.ts +35 -0
  585. package/dist/modes/interactive/tasks/inspector.d.ts.map +1 -0
  586. package/dist/modes/interactive/tasks/inspector.js +93 -0
  587. package/dist/modes/interactive/tasks/inspector.js.map +1 -0
  588. package/dist/modes/interactive/tasks/layout.d.ts +40 -0
  589. package/dist/modes/interactive/tasks/layout.d.ts.map +1 -0
  590. package/dist/modes/interactive/tasks/layout.js +212 -0
  591. package/dist/modes/interactive/tasks/layout.js.map +1 -0
  592. package/dist/modes/interactive/tasks/list.d.ts +21 -0
  593. package/dist/modes/interactive/tasks/list.d.ts.map +1 -0
  594. package/dist/modes/interactive/tasks/list.js +96 -0
  595. package/dist/modes/interactive/tasks/list.js.map +1 -0
  596. package/dist/modes/interactive/tasks/manager.d.ts +60 -0
  597. package/dist/modes/interactive/tasks/manager.d.ts.map +1 -0
  598. package/dist/modes/interactive/tasks/manager.js +380 -0
  599. package/dist/modes/interactive/tasks/manager.js.map +1 -0
  600. package/dist/modes/interactive/tasks/model.d.ts +21 -0
  601. package/dist/modes/interactive/tasks/model.d.ts.map +1 -0
  602. package/dist/modes/interactive/tasks/model.js +41 -0
  603. package/dist/modes/interactive/tasks/model.js.map +1 -0
  604. package/dist/modes/interactive/tasks/render.d.ts +28 -0
  605. package/dist/modes/interactive/tasks/render.d.ts.map +1 -0
  606. package/dist/modes/interactive/tasks/render.js +141 -0
  607. package/dist/modes/interactive/tasks/render.js.map +1 -0
  608. package/dist/modes/interactive/tasks/task-view.d.ts +13 -0
  609. package/dist/modes/interactive/tasks/task-view.d.ts.map +1 -0
  610. package/dist/modes/interactive/tasks/task-view.js +20 -0
  611. package/dist/modes/interactive/tasks/task-view.js.map +1 -0
  612. package/dist/modes/interactive/tasks/text.d.ts +6 -0
  613. package/dist/modes/interactive/tasks/text.d.ts.map +1 -0
  614. package/dist/modes/interactive/tasks/text.js +16 -0
  615. package/dist/modes/interactive/tasks/text.js.map +1 -0
  616. package/dist/modes/interactive/tasks/viewport.d.ts +17 -0
  617. package/dist/modes/interactive/tasks/viewport.d.ts.map +1 -0
  618. package/dist/modes/interactive/tasks/viewport.js +59 -0
  619. package/dist/modes/interactive/tasks/viewport.js.map +1 -0
  620. package/dist/modes/interactive/tasks/views.d.ts +9 -0
  621. package/dist/modes/interactive/tasks/views.d.ts.map +1 -0
  622. package/dist/modes/interactive/tasks/views.js +42 -0
  623. package/dist/modes/interactive/tasks/views.js.map +1 -0
  624. package/dist/modes/interactive/theme/dark.json +59 -72
  625. package/dist/modes/interactive/theme/light.json +57 -69
  626. package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
  627. package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
  628. package/dist/modes/interactive/theme/system-theme.js +546 -0
  629. package/dist/modes/interactive/theme/system-theme.js.map +1 -0
  630. package/dist/modes/interactive/theme/theme-controller.d.ts +46 -6
  631. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  632. package/dist/modes/interactive/theme/theme-controller.js +125 -47
  633. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  634. package/dist/modes/interactive/theme/theme-json.d.ts +1 -0
  635. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -1
  636. package/dist/modes/interactive/theme/theme-json.js +3 -1
  637. package/dist/modes/interactive/theme/theme-json.js.map +1 -1
  638. package/dist/modes/interactive/theme/theme-schema.json +7 -2
  639. package/dist/modes/interactive/theme/theme.d.ts +70 -39
  640. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  641. package/dist/modes/interactive/theme/theme.js +247 -313
  642. package/dist/modes/interactive/theme/theme.js.map +1 -1
  643. package/dist/modes/interactive/tool-view/fallback.d.ts +1 -1
  644. package/dist/modes/interactive/tool-view/fallback.d.ts.map +1 -1
  645. package/dist/modes/interactive/tool-view/fallback.js +4 -1
  646. package/dist/modes/interactive/tool-view/fallback.js.map +1 -1
  647. package/dist/modes/interactive/tool-view/tool-execution.js +2 -2
  648. package/dist/modes/interactive/tool-view/tool-execution.js.map +1 -1
  649. package/dist/modes/interactive/tui-renderer.d.ts +2 -1
  650. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -1
  651. package/dist/modes/interactive/tui-renderer.js +1 -0
  652. package/dist/modes/interactive/tui-renderer.js.map +1 -1
  653. package/dist/modes/rpc/rpc-client.d.ts +6 -6
  654. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  655. package/dist/modes/rpc/rpc-client.js +12 -8
  656. package/dist/modes/rpc/rpc-client.js.map +1 -1
  657. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  658. package/dist/modes/rpc/rpc-mode.js +7 -9
  659. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  660. package/dist/modes/rpc/rpc-types.d.ts +10 -1
  661. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  662. package/dist/modes/rpc/rpc-types.js.map +1 -1
  663. package/dist/package-manager-cli.d.ts.map +1 -1
  664. package/dist/package-manager-cli.js +6 -2
  665. package/dist/package-manager-cli.js.map +1 -1
  666. package/dist/utils/clipboard-image.d.ts.map +1 -1
  667. package/dist/utils/clipboard-image.js +14 -17
  668. package/dist/utils/clipboard-image.js.map +1 -1
  669. package/dist/utils/clipboard.d.ts +2 -0
  670. package/dist/utils/clipboard.d.ts.map +1 -1
  671. package/dist/utils/clipboard.js +5 -0
  672. package/dist/utils/clipboard.js.map +1 -1
  673. package/dist/utils/paths.d.ts +3 -3
  674. package/dist/utils/paths.d.ts.map +1 -1
  675. package/dist/utils/paths.js +5 -4
  676. package/dist/utils/paths.js.map +1 -1
  677. package/dist/utils/shell.d.ts +1 -3
  678. package/dist/utils/shell.d.ts.map +1 -1
  679. package/dist/utils/shell.js +3 -30
  680. package/dist/utils/shell.js.map +1 -1
  681. package/docs/bundled/README.md +22 -9
  682. package/docs/bundled/extensions/question.md +2 -2
  683. package/docs/bundled/extensions/statusline.md +26 -17
  684. package/docs/bundled/tasks.md +127 -0
  685. package/docs/bundled/tool-presentation.md +1 -1
  686. package/docs/codemode.md +207 -0
  687. package/docs/custom-provider.md +44 -0
  688. package/docs/docs.json +14 -10
  689. package/docs/environment-variables.md +1 -1
  690. package/docs/extensions.md +94 -93
  691. package/docs/index.md +2 -1
  692. package/docs/keybindings.md +17 -9
  693. package/docs/llama-cpp.md +12 -1
  694. package/docs/mcp.md +248 -0
  695. package/docs/models.md +56 -0
  696. package/docs/packages.md +4 -0
  697. package/docs/providers.md +14 -0
  698. package/docs/rpc.md +5 -3
  699. package/docs/sdk.md +26 -16
  700. package/docs/security.md +4 -0
  701. package/docs/session-format.md +20 -23
  702. package/docs/settings.md +29 -3
  703. package/docs/themes.md +27 -5
  704. package/docs/tui.md +21 -1
  705. package/docs/usage.md +52 -4
  706. package/docs/virtual-models.md +114 -0
  707. package/docs/windows.md +2 -0
  708. package/examples/README.md +2 -2
  709. package/examples/extensions/README.md +3 -2
  710. package/examples/extensions/built-in-tool-renderer.ts +16 -40
  711. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  712. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  713. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  714. package/examples/extensions/custom-provider-gitlab-duo/test.ts +4 -4
  715. package/examples/extensions/debug-provider.ts +90 -0
  716. package/examples/extensions/gondolin/package-lock.json +2 -2
  717. package/examples/extensions/gondolin/package.json +1 -1
  718. package/examples/extensions/jev-router.ts +113 -0
  719. package/examples/extensions/minimal-mode.ts +24 -96
  720. package/examples/extensions/sandbox/package-lock.json +2 -2
  721. package/examples/extensions/sandbox/package.json +1 -1
  722. package/examples/extensions/with-deps/package-lock.json +2 -2
  723. package/examples/extensions/with-deps/package.json +1 -1
  724. package/examples/rpc-client.ts +1 -1
  725. package/examples/rpc-extension-ui.ts +1 -1
  726. package/examples/sdk/14-codemode-mcp.ts +61 -0
  727. package/examples/sdk/README.md +1 -0
  728. package/npm-shrinkwrap.json +420 -423
  729. package/package.json +14 -10
  730. package/dist/bundle/chunks/anthropic-messages-XWFTZP2N.js +0 -6
  731. package/dist/bundle/chunks/azure-openai-responses-HS35BQV6.js +0 -2
  732. package/dist/bundle/chunks/chunk-2IO5GDBS.js +0 -11
  733. package/dist/bundle/chunks/chunk-EDBLK2JQ.js +0 -2
  734. package/dist/bundle/chunks/chunk-I5IVW2WS.js +0 -2
  735. package/dist/bundle/chunks/chunk-IORR2FW4.js +0 -2
  736. package/dist/bundle/chunks/chunk-NUHFSC37.js +0 -25
  737. package/dist/bundle/chunks/chunk-UUSTLCVC.js +0 -2
  738. package/dist/bundle/chunks/google-generative-ai-NOVAJBFC.js +0 -2
  739. package/dist/bundle/chunks/google-vertex-4VHCZJV5.js +0 -2
  740. package/dist/bundle/chunks/mistral-conversations-WC6A2WCJ.js +0 -5
  741. package/dist/bundle/chunks/openai-codex-responses-XCDG75W2.js +0 -10
  742. package/dist/bundle/chunks/openai-completions-SHS3CAEL.js +0 -7
  743. package/dist/bundle/chunks/openai-responses-UT6XFKC7.js +0 -2
  744. package/dist/bundle/chunks/virtual-modules-KUEIEAZN.js +0 -2
  745. package/dist/core/background/history.d.ts +0 -4
  746. package/dist/core/background/history.d.ts.map +0 -1
  747. package/dist/core/background/history.js.map +0 -1
  748. package/dist/core/background/output.d.ts.map +0 -1
  749. package/dist/core/background/output.js.map +0 -1
  750. package/dist/core/background/presentation.d.ts +0 -9
  751. package/dist/core/background/presentation.d.ts.map +0 -1
  752. package/dist/core/background/presentation.js +0 -311
  753. package/dist/core/background/presentation.js.map +0 -1
  754. package/dist/core/background/service.d.ts +0 -68
  755. package/dist/core/background/service.d.ts.map +0 -1
  756. package/dist/core/background/service.js +0 -641
  757. package/dist/core/background/service.js.map +0 -1
  758. package/dist/core/background/session.d.ts +0 -67
  759. package/dist/core/background/session.d.ts.map +0 -1
  760. package/dist/core/background/session.js +0 -248
  761. package/dist/core/background/session.js.map +0 -1
  762. package/dist/core/background/types.d.ts.map +0 -1
  763. package/dist/core/background/types.js +0 -31
  764. package/dist/core/background/types.js.map +0 -1
  765. package/dist/extensions/background/actions.d.ts +0 -11
  766. package/dist/extensions/background/actions.d.ts.map +0 -1
  767. package/dist/extensions/background/actions.js.map +0 -1
  768. package/dist/extensions/background/completion-render.d.ts +0 -8
  769. package/dist/extensions/background/completion-render.d.ts.map +0 -1
  770. package/dist/extensions/background/completion-render.js.map +0 -1
  771. package/dist/extensions/background/constants.d.ts +0 -24
  772. package/dist/extensions/background/constants.d.ts.map +0 -1
  773. package/dist/extensions/background/constants.js +0 -24
  774. package/dist/extensions/background/constants.js.map +0 -1
  775. package/dist/extensions/background/index.d.ts +0 -7
  776. package/dist/extensions/background/index.d.ts.map +0 -1
  777. package/dist/extensions/background/index.js +0 -135
  778. package/dist/extensions/background/index.js.map +0 -1
  779. package/dist/extensions/background/keybindings.d.ts +0 -10
  780. package/dist/extensions/background/keybindings.d.ts.map +0 -1
  781. package/dist/extensions/background/keybindings.js +0 -14
  782. package/dist/extensions/background/keybindings.js.map +0 -1
  783. package/dist/extensions/background/manager.d.ts +0 -80
  784. package/dist/extensions/background/manager.d.ts.map +0 -1
  785. package/dist/extensions/background/manager.js +0 -673
  786. package/dist/extensions/background/manager.js.map +0 -1
  787. package/dist/extensions/background/render.d.ts +0 -42
  788. package/dist/extensions/background/render.d.ts.map +0 -1
  789. package/dist/extensions/background/render.js +0 -225
  790. package/dist/extensions/background/render.js.map +0 -1
  791. package/dist/extensions/background/schema.d.ts.map +0 -1
  792. package/dist/extensions/background/schema.js.map +0 -1
  793. package/dist/extensions/background/task-view.d.ts +0 -53
  794. package/dist/extensions/background/task-view.d.ts.map +0 -1
  795. package/dist/extensions/background/task-view.js +0 -60
  796. package/dist/extensions/background/task-view.js.map +0 -1
  797. package/dist/extensions/background/text.d.ts +0 -12
  798. package/dist/extensions/background/text.d.ts.map +0 -1
  799. package/dist/extensions/background/text.js +0 -39
  800. package/dist/extensions/background/text.js.map +0 -1
  801. package/dist/extensions/background/types.d.ts +0 -85
  802. package/dist/extensions/background/types.d.ts.map +0 -1
  803. package/dist/extensions/background/types.js +0 -17
  804. package/dist/extensions/background/types.js.map +0 -1
  805. package/dist/extensions/subagent/activity.d.ts +0 -34
  806. package/dist/extensions/subagent/activity.d.ts.map +0 -1
  807. package/dist/extensions/subagent/activity.js +0 -192
  808. package/dist/extensions/subagent/activity.js.map +0 -1
  809. package/dist/extensions/subagent/agents-command.d.ts +0 -4
  810. package/dist/extensions/subagent/agents-command.d.ts.map +0 -1
  811. package/dist/extensions/subagent/agents-command.js +0 -230
  812. package/dist/extensions/subagent/agents-command.js.map +0 -1
  813. package/dist/extensions/subagent/agents.d.ts +0 -6
  814. package/dist/extensions/subagent/agents.d.ts.map +0 -1
  815. package/dist/extensions/subagent/agents.js +0 -53
  816. package/dist/extensions/subagent/agents.js.map +0 -1
  817. package/dist/extensions/subagent/budget.d.ts +0 -15
  818. package/dist/extensions/subagent/budget.d.ts.map +0 -1
  819. package/dist/extensions/subagent/budget.js +0 -123
  820. package/dist/extensions/subagent/budget.js.map +0 -1
  821. package/dist/extensions/subagent/cancellation.d.ts +0 -29
  822. package/dist/extensions/subagent/cancellation.d.ts.map +0 -1
  823. package/dist/extensions/subagent/cancellation.js +0 -91
  824. package/dist/extensions/subagent/cancellation.js.map +0 -1
  825. package/dist/extensions/subagent/constants.d.ts +0 -25
  826. package/dist/extensions/subagent/constants.d.ts.map +0 -1
  827. package/dist/extensions/subagent/constants.js +0 -50
  828. package/dist/extensions/subagent/constants.js.map +0 -1
  829. package/dist/extensions/subagent/index.d.ts +0 -3
  830. package/dist/extensions/subagent/index.d.ts.map +0 -1
  831. package/dist/extensions/subagent/index.js +0 -151
  832. package/dist/extensions/subagent/index.js.map +0 -1
  833. package/dist/extensions/subagent/model-selection.d.ts +0 -16
  834. package/dist/extensions/subagent/model-selection.d.ts.map +0 -1
  835. package/dist/extensions/subagent/model-selection.js +0 -51
  836. package/dist/extensions/subagent/model-selection.js.map +0 -1
  837. package/dist/extensions/subagent/render.d.ts +0 -24
  838. package/dist/extensions/subagent/render.d.ts.map +0 -1
  839. package/dist/extensions/subagent/render.js +0 -336
  840. package/dist/extensions/subagent/render.js.map +0 -1
  841. package/dist/extensions/subagent/resolve.d.ts +0 -31
  842. package/dist/extensions/subagent/resolve.d.ts.map +0 -1
  843. package/dist/extensions/subagent/resolve.js +0 -111
  844. package/dist/extensions/subagent/resolve.js.map +0 -1
  845. package/dist/extensions/subagent/runner.d.ts +0 -35
  846. package/dist/extensions/subagent/runner.d.ts.map +0 -1
  847. package/dist/extensions/subagent/runner.js +0 -255
  848. package/dist/extensions/subagent/runner.js.map +0 -1
  849. package/dist/extensions/subagent/schema.d.ts +0 -28
  850. package/dist/extensions/subagent/schema.d.ts.map +0 -1
  851. package/dist/extensions/subagent/schema.js +0 -58
  852. package/dist/extensions/subagent/schema.js.map +0 -1
  853. package/dist/extensions/subagent/sdk-runner.d.ts +0 -33
  854. package/dist/extensions/subagent/sdk-runner.d.ts.map +0 -1
  855. package/dist/extensions/subagent/sdk-runner.js +0 -331
  856. package/dist/extensions/subagent/sdk-runner.js.map +0 -1
  857. package/dist/extensions/subagent/settings.d.ts +0 -8
  858. package/dist/extensions/subagent/settings.d.ts.map +0 -1
  859. package/dist/extensions/subagent/settings.js +0 -206
  860. package/dist/extensions/subagent/settings.js.map +0 -1
  861. package/dist/extensions/subagent/state.d.ts +0 -102
  862. package/dist/extensions/subagent/state.d.ts.map +0 -1
  863. package/dist/extensions/subagent/state.js +0 -383
  864. package/dist/extensions/subagent/state.js.map +0 -1
  865. package/dist/extensions/subagent/text.d.ts +0 -6
  866. package/dist/extensions/subagent/text.d.ts.map +0 -1
  867. package/dist/extensions/subagent/text.js +0 -66
  868. package/dist/extensions/subagent/text.js.map +0 -1
  869. package/dist/extensions/subagent/types.d.ts +0 -91
  870. package/dist/extensions/subagent/types.d.ts.map +0 -1
  871. package/dist/extensions/subagent/types.js +0 -2
  872. package/dist/extensions/subagent/types.js.map +0 -1
  873. package/dist/extensions/subagent/ui/agents-dialog.d.ts +0 -4
  874. package/dist/extensions/subagent/ui/agents-dialog.d.ts.map +0 -1
  875. package/dist/extensions/subagent/ui/agents-dialog.js +0 -84
  876. package/dist/extensions/subagent/ui/agents-dialog.js.map +0 -1
  877. package/dist/extensions/subagent/ui/choice-menu.d.ts +0 -39
  878. package/dist/extensions/subagent/ui/choice-menu.d.ts.map +0 -1
  879. package/dist/extensions/subagent/ui/choice-menu.js +0 -93
  880. package/dist/extensions/subagent/ui/choice-menu.js.map +0 -1
  881. package/dist/extensions/subagent/ui/choices.d.ts +0 -36
  882. package/dist/extensions/subagent/ui/choices.d.ts.map +0 -1
  883. package/dist/extensions/subagent/ui/choices.js +0 -54
  884. package/dist/extensions/subagent/ui/choices.js.map +0 -1
  885. package/dist/extensions/subagent/ui/model-list.d.ts +0 -66
  886. package/dist/extensions/subagent/ui/model-list.d.ts.map +0 -1
  887. package/dist/extensions/subagent/ui/model-list.js +0 -235
  888. package/dist/extensions/subagent/ui/model-list.js.map +0 -1
  889. package/dist/extensions/subagent/ui/model-picker.d.ts +0 -47
  890. package/dist/extensions/subagent/ui/model-picker.d.ts.map +0 -1
  891. package/dist/extensions/subagent/ui/model-picker.js +0 -143
  892. package/dist/extensions/subagent/ui/model-picker.js.map +0 -1
  893. package/dist/extensions/subagent/ui/profile-settings-menu.d.ts +0 -41
  894. package/dist/extensions/subagent/ui/profile-settings-menu.d.ts.map +0 -1
  895. package/dist/extensions/subagent/ui/profile-settings-menu.js +0 -98
  896. package/dist/extensions/subagent/ui/profile-settings-menu.js.map +0 -1
  897. package/dist/extensions/todo/constants.d.ts +0 -16
  898. package/dist/extensions/todo/constants.d.ts.map +0 -1
  899. package/dist/extensions/todo/constants.js +0 -30
  900. package/dist/extensions/todo/constants.js.map +0 -1
  901. package/dist/extensions/todo/index.d.ts +0 -3
  902. package/dist/extensions/todo/index.d.ts.map +0 -1
  903. package/dist/extensions/todo/index.js +0 -98
  904. package/dist/extensions/todo/index.js.map +0 -1
  905. package/dist/extensions/todo/schema.d.ts +0 -60
  906. package/dist/extensions/todo/schema.d.ts.map +0 -1
  907. package/dist/extensions/todo/schema.js +0 -56
  908. package/dist/extensions/todo/schema.js.map +0 -1
  909. package/dist/extensions/todo/state.d.ts +0 -34
  910. package/dist/extensions/todo/state.d.ts.map +0 -1
  911. package/dist/extensions/todo/state.js +0 -425
  912. package/dist/extensions/todo/state.js.map +0 -1
  913. package/dist/extensions/todo/view.d.ts +0 -36
  914. package/dist/extensions/todo/view.d.ts.map +0 -1
  915. package/dist/extensions/todo/view.js +0 -580
  916. package/dist/extensions/todo/view.js.map +0 -1
  917. package/dist/extensions/todo/widget.d.ts +0 -15
  918. package/dist/extensions/todo/widget.d.ts.map +0 -1
  919. package/dist/extensions/todo/widget.js +0 -50
  920. package/dist/extensions/todo/widget.js.map +0 -1
  921. package/docs/bundled/extensions/background.md +0 -132
  922. package/docs/bundled/extensions/subagent.md +0 -148
  923. package/docs/bundled/extensions/todo.md +0 -104
  924. package/examples/extensions/todo.ts +0 -297
@@ -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,17 +19,20 @@ 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";
32
- import type { BackgroundContext, ContextSnapshot, EditorHost, ModelRuntime } from "./distribution-api.ts";
34
+ import type { ModelRoute, ModelRouteRequest, VirtualModelDefinition } from "../virtual-models.ts";
35
+ import type { ContextSnapshot, EditorHost, ModelRuntime, TasksContext } from "./distribution-api.ts";
33
36
  export type { ExecOptions, ExecResult } from "../exec.ts";
34
37
  export type { BuildSystemPromptOptions, NormalizedBuildSystemPromptOptions } from "../system-prompt.ts";
35
38
  export type { ContextSnapshot, EditorHost, EditorSubmitEvent, EditorSubmitHandler } from "./distribution-api.ts";
@@ -213,6 +216,10 @@ export interface CompactOptions {
213
216
  */
214
217
  export type ExtensionMode = "tui" | "rpc" | "json" | "print";
215
218
  export interface ExtensionContext {
219
+ /** Read detached global JSON settings for an extension namespace. */
220
+ getExtensionSettings(namespace: string): Record<string, unknown>;
221
+ /** Replace one global namespace; rejects on invalid data or failed persistence. */
222
+ setExtensionSettings(namespace: string, value: Record<string, unknown>): Promise<void>;
216
223
  /** UI methods for user interaction */
217
224
  ui: ExtensionUIContext;
218
225
  /** Current run mode. Use "tui" to guard terminal-only UI such as custom components. */
@@ -228,7 +235,7 @@ export interface ExtensionContext {
228
235
  /** Canonical model and authentication runtime shared by the current session. */
229
236
  readonly modelRuntime: ModelRuntime;
230
237
  /** Session-owned execution capability; disabled unless the host explicitly enables it. */
231
- readonly background: BackgroundContext;
238
+ readonly tasks: TasksContext;
232
239
  /** Capture detached, stable model input and request settings without writing to the session. */
233
240
  getContextSnapshot(): Promise<ContextSnapshot>;
234
241
  /** Current model (may be undefined) */
@@ -259,6 +266,34 @@ export interface ExtensionContext {
259
266
  /** Get the current effective system prompt. */
260
267
  getSystemPrompt(): string;
261
268
  }
269
+ /** Options for {@link ExtensionToolContext.executeTool}. */
270
+ export interface ExecuteToolOptions {
271
+ /** Defaults to the calling tool's signal. */
272
+ signal?: AbortSignal;
273
+ /** Receives partial results of the nested tool, in addition to `tool_execution_update` events. */
274
+ onUpdate?: AgentToolUpdateCallback;
275
+ }
276
+ /**
277
+ * Context passed to tool `execute()` in a session: the extension context plus `executeTool()`
278
+ * for running other tools through the same validation, hooks, and permission checks as
279
+ * model-issued calls.
280
+ *
281
+ * A tool wrapped with `wrapToolDefinition()` without a context factory, such as a built-in tool
282
+ * created with `createBashTool()` and run in a plain `Agent` or called directly, gets no context.
283
+ */
284
+ export interface ExtensionToolContext extends ExtensionContext {
285
+ /** Tools {@link executeTool} can call. */
286
+ readonly tools: readonly AgentTool[];
287
+ /**
288
+ * Run another tool. The call gets the id `<calling id>/<n>`, and the `tool_call`, `tool_result`,
289
+ * and `tool_execution_*` events carry `parentToolCallId`. It does not appear in the transcript;
290
+ * a bounded record of it is kept as `nestedCalls` on the calling tool's result message.
291
+ *
292
+ * Never rejects for tool failures: unknown tools, validation errors, blocked calls, and thrown
293
+ * errors come back as `isError: true`.
294
+ */
295
+ executeTool(name: string, args: unknown, options?: ExecuteToolOptions): Promise<AgentToolCallOutcome>;
296
+ }
262
297
  /**
263
298
  * Extended context for command handlers.
264
299
  * Includes session control methods only safe in user-initiated commands.
@@ -355,6 +390,69 @@ export interface ToolRenderContext<TState = any, TArgs = any, TDetails = unknown
355
390
  /** Whether the current result is an error. */
356
391
  isError: boolean;
357
392
  }
393
+ /**
394
+ * How the model reaches a tool. "Callable" means callable from other tools through
395
+ * `ctx.executeTool()`, as the `codemode` tool does.
396
+ *
397
+ * - `direct`: declared to the model while active, and callable while active.
398
+ * - `model-only`: declared to the model while active, never callable. Use it for orchestrating or
399
+ * interactive tools.
400
+ * - `codemode`: callable whenever registered. Not declared to the model unless explicitly
401
+ * activated. Codemode tools list it in their description.
402
+ * - `deferred`: like `codemode`, but codemode tools do not list it; tool search can find it.
403
+ * - `hidden`: registered but unreachable. Activating it has no effect.
404
+ *
405
+ * `direct` and `model-only` tools are activated when they are registered; the others are not.
406
+ * The active tool set (`getActiveTools`/`setActiveTools`) is the set declared to the model.
407
+ */
408
+ export type ToolExposure = "direct" | "model-only" | "codemode" | "deferred" | "hidden";
409
+ /**
410
+ * Hints about what a tool does, with the meaning of MCP tool annotations. They come from the tool's
411
+ * author and are not verified; permission extensions can use them to decide which calls to confirm.
412
+ */
413
+ export interface ToolAnnotations {
414
+ /** The tool does not modify its environment. */
415
+ readOnlyHint?: boolean;
416
+ /** The tool may delete or overwrite data, rather than only add to it. Meaningful when not read-only. */
417
+ destructiveHint?: boolean;
418
+ /** Repeating a call with the same arguments has no further effect. Meaningful when not read-only. */
419
+ idempotentHint?: boolean;
420
+ /** The tool reaches an open world of external entities, such as the web, rather than a closed domain. */
421
+ openWorldHint?: boolean;
422
+ }
423
+ /** A group of related tools, such as the tools of one MCP server. Codemode tools list them together. */
424
+ export interface ToolNamespace {
425
+ /** For example `mcp__docs`. */
426
+ name: string;
427
+ /** Short summary shown once with the group in model-facing tool listings. */
428
+ description?: string;
429
+ /**
430
+ * Longer usage guidance, such as MCP server instructions. Not part of tool listings; tools that
431
+ * describe the namespace on request (codemode's `describeNamespace()`) return it.
432
+ */
433
+ instructions?: string;
434
+ }
435
+ /** The tools of a session as {@link ToolDefinition.prepareLoadout} sees them. */
436
+ export interface ToolLoadout {
437
+ /** Tools declared to the model (the active tools), in order, with their original descriptions. */
438
+ readonly declared: readonly AgentTool[];
439
+ /** Tools callable through `ctx.executeTool()`. */
440
+ readonly callable: readonly AgentTool[];
441
+ /** Every registered tool. */
442
+ readonly registered: readonly AgentTool[];
443
+ getExposure(name: string): ToolExposure;
444
+ getNamespace(name: string): ToolNamespace | undefined;
445
+ }
446
+ /** Changes {@link ToolDefinition.prepareLoadout} makes to what the model sees. */
447
+ export interface ToolLoadoutChanges {
448
+ /** Model-facing descriptions of declared tools, by tool name. */
449
+ descriptions?: Readonly<Record<string, string>>;
450
+ /**
451
+ * Declared tools whose declarations requests leave out. They stay active and callable, and the
452
+ * transcript still declares them, so the active set survives `/tree` and resume.
453
+ */
454
+ hiddenDeclarations?: readonly string[];
455
+ }
358
456
  /**
359
457
  * Tool definition for registerTool().
360
458
  */
@@ -377,6 +475,31 @@ export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = un
377
475
  renderShell?: "default" | "self";
378
476
  /** Optional compatibility shim to prepare raw tool call arguments before schema validation. Must return an object conforming to TParams. */
379
477
  prepareArguments?: (args: unknown) => Static<TParams>;
478
+ /**
479
+ * JSON Schema of `structuredContent` in successful results. Tools that declare it should always
480
+ * set `structuredContent`; codemode scripts then receive it instead of the text content.
481
+ */
482
+ outputSchema?: TSchema;
483
+ /**
484
+ * How the model reaches the tool. Default: `"direct"`. See {@link ToolExposure}.
485
+ */
486
+ exposure?: ToolExposure;
487
+ /** Group the tool belongs to, for example its MCP server. */
488
+ namespace?: ToolNamespace;
489
+ /** Hints about what the tool does, for example from an MCP server. */
490
+ annotations?: ToolAnnotations;
491
+ /**
492
+ * Whether registering the tool activates it. Default: `true` for `direct` and `model-only` tools;
493
+ * other exposures are never activated on registration. A tool with `defaultActive: false` is
494
+ * activated by naming it in `--tools` or the `defaultTools` setting, or with `setActiveTools()`.
495
+ */
496
+ defaultActive?: boolean;
497
+ /**
498
+ * Adjust how the loadout is presented to the model while this tool is active. Called whenever
499
+ * the active tools change. Tools that orchestrate other tools use it, for example to list the
500
+ * callable tools in their own description.
501
+ */
502
+ prepareLoadout?: (loadout: ToolLoadout) => ToolLoadoutChanges | undefined;
380
503
  /**
381
504
  * Per-tool execution mode override.
382
505
  * - "sequential": this tool must execute one at a time with other tool calls.
@@ -386,7 +509,7 @@ export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = un
386
509
  */
387
510
  executionMode?: ToolExecutionMode;
388
511
  /** Execute the tool. */
389
- execute(toolCallId: string, params: Static<TParams>, signal: AbortSignal | undefined, onUpdate: AgentToolUpdateCallback<TDetails> | undefined, ctx: ExtensionContext): Promise<AgentToolResult<TDetails>>;
512
+ execute(toolCallId: string, params: Static<TParams>, signal: AbortSignal | undefined, onUpdate: AgentToolUpdateCallback<TDetails> | undefined, ctx: ExtensionToolContext): Promise<AgentToolResult<TDetails>>;
390
513
  /** Custom rendering for tool call display */
391
514
  renderCall?: (args: Static<TParams>, theme: Theme, context: ToolRenderContext<TState, Static<TParams>, TDetails>) => Component;
392
515
  /** Custom rendering for tool result display */
@@ -429,6 +552,17 @@ export interface ResourcesDiscoverResult {
429
552
  promptPaths?: string[];
430
553
  themePaths?: string[];
431
554
  }
555
+ /**
556
+ * Fired when an extension registers or unregisters an MCP server after the extensions are bound
557
+ * (see {@link ExtensionAPI.registerMcpServer}). Servers registered while extensions load are read
558
+ * with `pi.getMcpServers()` on `session_start`. Handling this event marks an extension as the one
559
+ * that connects registered servers.
560
+ */
561
+ export interface McpServersChangeEvent {
562
+ type: "mcp_servers_change";
563
+ /** Every registered server after the change. */
564
+ servers: RegisteredMcpServer[];
565
+ }
432
566
  /** Fired when a session is started, loaded, or reloaded */
433
567
  export interface SessionStartEvent {
434
568
  type: "session_start";
@@ -567,6 +701,14 @@ export interface AfterProviderResponseEvent {
567
701
  status: number;
568
702
  headers: Record<string, string>;
569
703
  }
704
+ /** Fired for a parsed provider stream event before Pi normalizes it. */
705
+ export interface ProviderStreamEvent {
706
+ type: "provider_stream_event";
707
+ provider: ProviderId;
708
+ api: Api;
709
+ model: string;
710
+ data: unknown;
711
+ }
570
712
  /** Fired after user submits prompt but before agent loop. */
571
713
  export interface BeforeAgentStartEvent {
572
714
  type: "before_agent_start";
@@ -692,6 +834,8 @@ export interface ToolExecutionStartEvent {
692
834
  toolCallId: string;
693
835
  toolName: string;
694
836
  args: any;
837
+ /** Set when another tool (for example a codemode script) made this call. */
838
+ parentToolCallId?: string;
695
839
  }
696
840
  /** Fired during tool execution with partial/streaming output */
697
841
  export interface ToolExecutionUpdateEvent {
@@ -700,6 +844,8 @@ export interface ToolExecutionUpdateEvent {
700
844
  toolName: string;
701
845
  args: any;
702
846
  partialResult: any;
847
+ /** Set when another tool (for example a codemode script) made this call. */
848
+ parentToolCallId?: string;
703
849
  }
704
850
  /** Fired when a tool finishes executing */
705
851
  export interface ToolExecutionEndEvent {
@@ -708,6 +854,8 @@ export interface ToolExecutionEndEvent {
708
854
  toolName: string;
709
855
  result: any;
710
856
  isError: boolean;
857
+ /** Set when another tool (for example a codemode script) made this call. */
858
+ parentToolCallId?: string;
711
859
  }
712
860
  export type ModelSelectSource = "set" | "cycle" | "restore";
713
861
  /** Fired when a new model is selected */
@@ -759,7 +907,14 @@ export type InputEventResult = {
759
907
  };
760
908
  interface ToolCallEventBase {
761
909
  type: "tool_call";
910
+ /**
911
+ * The call's id. For calls another tool made (with `parentToolCallId` set), pi assigns
912
+ * `<parent id>/<n>`; such ids never appear as tool calls or tool results in the transcript, only
913
+ * in the parent result's `nestedCalls` record.
914
+ */
762
915
  toolCallId: string;
916
+ /** Set when another tool (for example a codemode script) issued this call. */
917
+ parentToolCallId?: string;
763
918
  }
764
919
  export interface BashToolCallEvent extends ToolCallEventBase {
765
920
  toolName: "bash";
@@ -806,9 +961,17 @@ export interface CustomToolCallEvent extends ToolCallEventBase {
806
961
  export type ToolCallEvent = BashToolCallEvent | PowerShellToolCallEvent | ReadToolCallEvent | EditToolCallEvent | WriteToolCallEvent | GrepToolCallEvent | FindToolCallEvent | LsToolCallEvent | CustomToolCallEvent;
807
962
  interface ToolResultEventBase {
808
963
  type: "tool_result";
964
+ /** The call's id; `<parent id>/<n>` for nested calls, see `ToolCallEvent`. */
809
965
  toolCallId: string;
966
+ /** Set when another tool (for example a codemode script) issued this call. */
967
+ parentToolCallId?: string;
810
968
  input: Record<string, unknown>;
811
969
  content: (TextContent | ImageContent)[];
970
+ /**
971
+ * Machine-readable result for tools that declare an `outputSchema`. Handlers that redact
972
+ * `content` should also replace this; replacing `content` alone drops it.
973
+ */
974
+ structuredContent?: JsonValue;
812
975
  isError: boolean;
813
976
  /** Usage from the tool execution itself, if available. */
814
977
  usage?: Usage;
@@ -892,7 +1055,7 @@ export declare function isToolCallEventType<TName extends string, TInput extends
892
1055
  input: TInput;
893
1056
  };
894
1057
  /** Union of all event types */
895
- 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;
1058
+ 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;
896
1059
  export interface ContextEventResult {
897
1060
  messages?: AgentMessage[];
898
1061
  }
@@ -920,9 +1083,15 @@ export type UserBashEventResult = {
920
1083
  /** Full replacement: extension handled execution, use this result */
921
1084
  result: BashResult;
922
1085
  };
1086
+ /**
1087
+ * Changes a `tool_result` handler makes. Omitted fields stay as they are, except that replacing
1088
+ * `content` without returning `structuredContent` drops the structured content, because it may no
1089
+ * longer match. Return it along with `content` to keep it.
1090
+ */
923
1091
  export interface ToolResultEventResult {
924
1092
  content?: (TextContent | ImageContent)[];
925
1093
  details?: unknown;
1094
+ structuredContent?: JsonValue;
926
1095
  isError?: boolean;
927
1096
  usage?: Usage;
928
1097
  }
@@ -1002,6 +1171,7 @@ export interface ExtensionAPI {
1002
1171
  on(event: "session_compact", handler: ExtensionHandler<SessionCompactEvent>): () => void;
1003
1172
  on(event: "session_compact_failed", handler: ExtensionHandler<SessionCompactFailedEvent>): () => void;
1004
1173
  on(event: "session_shutdown", handler: ExtensionHandler<SessionShutdownEvent>): () => void;
1174
+ on(event: "mcp_servers_change", handler: ExtensionHandler<McpServersChangeEvent>): () => void;
1005
1175
  on(event: "session_before_tree", handler: ExtensionHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>): () => void;
1006
1176
  on(event: "session_tree", handler: ExtensionHandler<SessionTreeEvent>): () => void;
1007
1177
  on(event: "context", handler: ExtensionHandler<ContextEvent, ContextEventResult>): () => void;
@@ -1010,6 +1180,7 @@ export interface ExtensionAPI {
1010
1180
  on(event: "before_provider_request", handler: ExtensionHandler<BeforeProviderRequestEvent, BeforeProviderRequestEventResult>): () => void;
1011
1181
  on(event: "before_provider_headers", handler: ExtensionHandler<BeforeProviderHeadersEvent>): () => void;
1012
1182
  on(event: "after_provider_response", handler: ExtensionHandler<AfterProviderResponseEvent>): () => void;
1183
+ on(event: "provider_stream_event", handler: ExtensionHandler<ProviderStreamEvent>): () => void;
1013
1184
  on(event: "before_agent_start", handler: ExtensionHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>): () => void;
1014
1185
  on(event: "agent_start", handler: ExtensionHandler<AgentStartEvent>): () => void;
1015
1186
  on(event: "agent_end", handler: ExtensionHandler<AgentEndEvent>): () => void;
@@ -1082,11 +1253,16 @@ export interface ExtensionAPI {
1082
1253
  setLabel(entryId: string, label: string | undefined): void;
1083
1254
  /** Execute a shell command. */
1084
1255
  exec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;
1085
- /** Get the list of currently active tool names. */
1256
+ /** Get the names of the active tools, which are the tools declared to the model. */
1086
1257
  getActiveTools(): string[];
1087
- /** Get all configured tools with parameter schema, prompt guidelines, and source metadata. */
1258
+ /** Get all configured tools with parameter schema, prompt guidelines, exposure, and source metadata. */
1088
1259
  getAllTools(): ToolInfo[];
1089
- /** Set the active tools by name. */
1260
+ /** Get a copy of the effective settings (global and project settings merged, with overrides). */
1261
+ getSettings(): Settings;
1262
+ /**
1263
+ * Set the active tools by name. Unknown and `hidden` tools are ignored. Tools with `codemode` or
1264
+ * `deferred` exposure stay callable from codemode scripts whether active or not.
1265
+ */
1090
1266
  setActiveTools(toolNames: string[]): void;
1091
1267
  /** Get available slash commands in the current session. */
1092
1268
  getCommands(): SlashCommandInfo[];
@@ -1170,9 +1346,45 @@ export interface ExtensionAPI {
1170
1346
  * pi.unregisterProvider("my-proxy");
1171
1347
  */
1172
1348
  unregisterProvider(name: string): void;
1349
+ /**
1350
+ * Register an MCP server for this session, with the same config as an `mcpServers` entry in
1351
+ * `mcp.json`. The server connects next to the configured servers: on `session_start` when
1352
+ * registered during extension load, right away when registered later. Registering a name again
1353
+ * replaces the extension's earlier registration.
1354
+ *
1355
+ * The registration is not saved; register again on every load. A server of the same name in
1356
+ * `mcp.json` takes precedence. Throws for invalid configs and for names another extension
1357
+ * registered. When no loaded extension handles MCP servers (for example because another MCP
1358
+ * extension replaced the built-in one), the registration is reported as an extension error.
1359
+ *
1360
+ * @example
1361
+ * pi.registerMcpServer("jira", { url: "https://mcp.example.com/jira" });
1362
+ */
1363
+ registerMcpServer(name: string, config: McpServerConfig): void;
1364
+ /** Remove an MCP server this extension registered and close its connection. */
1365
+ unregisterMcpServer(name: string): void;
1366
+ /** Every MCP server registered by extensions. For extensions that connect MCP servers. */
1367
+ getMcpServers(): RegisteredMcpServer[];
1368
+ /**
1369
+ * Register a virtual model: a selectable catalog entry that routes each request to a physical
1370
+ * model. The selection (`ctx.model`, `model_change` entries) names the virtual model; assistant
1371
+ * messages record the physical model and thinking level the router picked.
1372
+ *
1373
+ * `provider` may be any provider id, including one with physical models, and may list several
1374
+ * virtual models. Registering the same provider and id again replaces the virtual model. See
1375
+ * docs/virtual-models.md.
1376
+ */
1377
+ registerVirtualModel<TState = unknown>(model: ExtensionVirtualModel<TState>): void;
1378
+ /** Remove a virtual model registered with `registerVirtualModel()`. */
1379
+ unregisterVirtualModel(provider: string, id: string): void;
1173
1380
  /** Shared event bus for extension communication. */
1174
1381
  events: EventBus;
1175
1382
  }
1383
+ /** Virtual model registered via pi.registerVirtualModel(). */
1384
+ export interface ExtensionVirtualModel<TState = unknown> extends Omit<VirtualModelDefinition<TState>, "route"> {
1385
+ /** Like `VirtualModelDefinition.route`, with an extension context. */
1386
+ route(request: ModelRouteRequest<TState>, ctx: ExtensionContext): ModelRoute<TState> | Promise<ModelRoute<TState>>;
1387
+ }
1176
1388
  /** Configuration for registering a provider via pi.registerProvider(). */
1177
1389
  export interface ProviderConfig {
1178
1390
  /** Display name for the provider in UI. */
@@ -1189,9 +1401,15 @@ export interface ProviderConfig {
1189
1401
  * (`getCurrentSystemPrompt(context.messages)`, `getCurrentTools(context.messages)`).
1190
1402
  * Implementations must invoke `options.onPayload` before sending the provider request and use any
1191
1403
  * returned replacement payload. They must invoke `options.onResponse` after receiving the response
1192
- * and before consuming its body, matching built-in providers.
1404
+ * and before consuming its body, matching built-in providers. Implementations may invoke
1405
+ * `options.onProviderStreamEvent(data, model)` with parsed stream events before normalization.
1406
+ * Event data is adapter-owned and must be treated as read-only.
1193
1407
  */
1194
1408
  streamSimple?: (model: Model<Api>, context: TranscriptContext, options?: SimpleStreamOptions) => AssistantMessageEventStream;
1409
+ /** Image-generation implementations keyed by image API. */
1410
+ images?: Partial<Record<ImageApi, ProviderImages>>;
1411
+ /** Classifier implementations keyed by classifier API. */
1412
+ classifiers?: Partial<Record<ClassifierApi, ProviderClassifier>>;
1195
1413
  /** Custom headers to include in requests. */
1196
1414
  headers?: Record<string, string>;
1197
1415
  /** If true, adds Authorization: Bearer header with the resolved API key. */
@@ -1221,45 +1439,84 @@ export interface ProviderConfig {
1221
1439
  modifyModels?(models: Model<Api>[], credentials: OAuthCredentials): Model<Api>[];
1222
1440
  };
1223
1441
  }
1224
- /** Configuration for a model within a provider. */
1225
- export interface ProviderModelConfig {
1226
- /** Model ID (e.g., "claude-sonnet-4-20250514"). */
1442
+ interface ProviderModelConfigBase {
1443
+ /** Model ID. */
1227
1444
  id: string;
1228
- /** Display name (e.g., "Claude 4 Sonnet"). */
1445
+ /** Display name. */
1229
1446
  name: string;
1230
1447
  /** API type override for this model. */
1231
- api?: Api;
1448
+ api?: string;
1232
1449
  /** API endpoint URL override for this model. */
1233
1450
  baseUrl?: string;
1234
- /** Whether the model supports extended thinking. */
1235
- reasoning: boolean;
1236
- /** Maps pi thinking levels to provider/model-specific values; null marks a level unsupported. */
1237
- thinkingLevelMap?: Model<Api>["thinkingLevelMap"];
1238
1451
  /** Supported input types. */
1239
1452
  input: ("text" | "image")[];
1240
1453
  /** Provider input limits and cache-safe image preprocessing metadata. */
1241
- inputLimits?: Model<Api>["inputLimits"];
1454
+ inputLimits?: AnyModel["inputLimits"];
1242
1455
  /** Per-million-token cost rates and optional request-wide input pricing tiers. */
1243
- cost: Model<Api>["cost"];
1456
+ cost: AnyModel["cost"];
1457
+ /** Custom headers for this model. */
1458
+ headers?: Record<string, string>;
1459
+ }
1460
+ /** Chat model configuration. Omitted `type` is normalized to `"chat"`. */
1461
+ export interface ProviderChatModelConfig extends ProviderModelConfigBase {
1462
+ type?: "chat";
1463
+ api?: Api;
1464
+ /** Whether the model supports extended thinking. */
1465
+ reasoning: boolean;
1466
+ /** Maps pi thinking levels to provider/model-specific values; null marks a level unsupported. */
1467
+ thinkingLevelMap?: Model<Api>["thinkingLevelMap"];
1244
1468
  /** Best-effort prompt cache lifetime in seconds per retention tier. Unset disables cache warming. */
1245
1469
  promptCache?: Model<Api>["promptCache"];
1246
1470
  /** Maximum context window size in tokens. */
1247
1471
  contextWindow: number;
1248
1472
  /** Maximum output tokens. */
1249
1473
  maxTokens: number;
1250
- /** Custom headers for this model. */
1251
- headers?: Record<string, string>;
1474
+ samplingParams?: Record<string, unknown>;
1252
1475
  /** OpenAI compatibility settings. */
1253
1476
  compat?: Model<Api>["compat"];
1254
1477
  }
1478
+ /** Image-generation model configuration. */
1479
+ export interface ProviderImageModelConfig extends ProviderModelConfigBase {
1480
+ type: "image";
1481
+ api?: ImageApi;
1482
+ output: ("text" | "image")[];
1483
+ }
1484
+ /** Structured classifier model configuration. */
1485
+ export interface ProviderClassifierModelConfig extends ProviderModelConfigBase {
1486
+ type: "classifier";
1487
+ api?: ClassifierApi;
1488
+ contextWindow: number;
1489
+ }
1490
+ /** Configuration for a model within a provider. */
1491
+ export type ProviderModelConfig = ProviderChatModelConfig | ProviderImageModelConfig | ProviderClassifierModelConfig;
1255
1492
  /** Extension factory function type. Supports both sync and async initialization. */
1256
1493
  export type ExtensionFactory = (pi: ExtensionAPI) => void | Promise<void>;
1257
1494
  export type InlineExtension = ExtensionFactory | {
1258
- /** Display name shown as `<inline:name>` in the startup Extensions list. */
1495
+ /**
1496
+ * Display name shown as `<inline:name>` in the startup Extensions list and errors. With
1497
+ * `builtin`, the extension is named `builtin:name` in errors and diagnostics.
1498
+ */
1259
1499
  name: string;
1260
1500
  factory: ExtensionFactory;
1261
1501
  /** Omit this extension from the startup Extensions list. */
1262
1502
  hidden?: boolean;
1503
+ /**
1504
+ * Leave this extension out when another extension registers a tool, command, or flag with a
1505
+ * name it registers during loading, instead of reporting a conflict. The CLI's built-in MCP,
1506
+ * codemode, and tool search extensions use it, so for example an MCP extension that registers
1507
+ * `/mcp` replaces the built-in MCP support. The factory still runs, so it should only register
1508
+ * tools, commands, flags, and event handlers.
1509
+ */
1510
+ replaceable?: boolean;
1511
+ /**
1512
+ * Supply the code of the `builtin:<name>` extension instead of loading as an inline extension.
1513
+ * `builtin:<name>` is an extension resource like a file: it loads by default, `pi config` lists
1514
+ * it, `-builtin:<name>` in the `extensions` setting and `--no-extensions` disable it, and
1515
+ * `-e builtin:<name>` loads it explicitly. It is hidden from the startup Extensions list and
1516
+ * loads after project trust is resolved, so it cannot handle `project_trust`. The CLI's built-in
1517
+ * extensions use it.
1518
+ */
1519
+ builtin?: boolean;
1263
1520
  };
1264
1521
  export interface RegisteredTool {
1265
1522
  definition: ToolDefinition;
@@ -1293,9 +1550,13 @@ export type GetSessionNameHandler = () => string | undefined;
1293
1550
  export type GetActiveToolsHandler = () => string[];
1294
1551
  /** Tool info with name, description, parameter schema, prompt guidelines, and source metadata. */
1295
1552
  export type ToolInfo = Pick<ToolDefinition, "name" | "description" | "parameters" | "promptGuidelines"> & {
1553
+ exposure: ToolExposure;
1554
+ namespace?: ToolNamespace;
1555
+ annotations?: ToolAnnotations;
1296
1556
  sourceInfo: SourceInfo;
1297
1557
  };
1298
1558
  export type GetAllToolsHandler = () => ToolInfo[];
1559
+ export type GetSettingsHandler = () => Settings;
1299
1560
  export type GetCommandsHandler = () => SlashCommandInfo[];
1300
1561
  export type SetActiveToolsHandler = (toolNames: string[]) => void;
1301
1562
  export type RefreshToolsHandler = () => void;
@@ -1320,6 +1581,13 @@ export interface ExtensionRuntimeState {
1320
1581
  provider: Provider;
1321
1582
  extensionPath: string;
1322
1583
  }>;
1584
+ /** Virtual model registrations queued during extension loading, processed when runner binds. */
1585
+ pendingVirtualModelRegistrations: Array<{
1586
+ definition: VirtualModelDefinition;
1587
+ extensionPath: string;
1588
+ }>;
1589
+ /** Create an extension context. Throws before the runner binds. */
1590
+ createContext: () => ExtensionContext;
1323
1591
  /** Throws when this extension instance is stale after runtime replacement. */
1324
1592
  assertActive: () => void;
1325
1593
  /** Marks this extension instance as stale after runtime replacement or reload. */
@@ -1335,6 +1603,10 @@ export interface ExtensionRuntimeState {
1335
1603
  registerProvider: (name: string, config: ProviderConfig, extensionPath?: string) => void;
1336
1604
  registerNativeProvider: (provider: Provider, extensionPath?: string) => void;
1337
1605
  unregisterProvider: (name: string, extensionPath?: string) => void;
1606
+ /** Servers registered with `pi.registerMcpServer()`. */
1607
+ mcpServers: McpServerRegistry;
1608
+ registerVirtualModel: (definition: VirtualModelDefinition, extensionPath?: string) => void;
1609
+ unregisterVirtualModel: (provider: string, id: string) => void;
1338
1610
  }
1339
1611
  /**
1340
1612
  * Action implementations for pi.* API methods.
@@ -1349,6 +1621,7 @@ export interface ExtensionActions {
1349
1621
  setLabel: SetLabelHandler;
1350
1622
  getActiveTools: GetActiveToolsHandler;
1351
1623
  getAllTools: GetAllToolsHandler;
1624
+ getSettings: GetSettingsHandler;
1352
1625
  setActiveTools: SetActiveToolsHandler;
1353
1626
  refreshTools: RefreshToolsHandler;
1354
1627
  getCommands: GetCommandsHandler;
@@ -1361,7 +1634,9 @@ export interface ExtensionActions {
1361
1634
  * Required by all modes.
1362
1635
  */
1363
1636
  export interface ExtensionContextActions {
1364
- getBackground?: () => BackgroundContext;
1637
+ getExtensionSettings?: ExtensionContext["getExtensionSettings"];
1638
+ setExtensionSettings?: ExtensionContext["setExtensionSettings"];
1639
+ getTasks?: () => TasksContext;
1365
1640
  getModel: () => Model<any> | undefined;
1366
1641
  getScopedModels: () => readonly ScopedModel[];
1367
1642
  isIdle: () => boolean;
@@ -1375,6 +1650,10 @@ export interface ExtensionContextActions {
1375
1650
  compact: (options?: CompactOptions) => void;
1376
1651
  getSystemPrompt: () => string;
1377
1652
  getSystemPromptOptions?: () => BuildSystemPromptOptions;
1653
+ /** Backs `ExtensionToolContext.executeTool()`. Without it, nested calls fail. */
1654
+ executeTool?: (callerId: string, name: string, args: unknown, options: ExecuteToolOptions) => Promise<AgentToolCallOutcome>;
1655
+ /** Backs `ExtensionToolContext.tools`. */
1656
+ getCallableTools?: () => readonly AgentTool[];
1378
1657
  }
1379
1658
  /**
1380
1659
  * Actions for ExtensionCommandContext (ctx.* in command handlers).
@@ -1421,6 +1700,8 @@ export interface Extension {
1421
1700
  path: string;
1422
1701
  resolvedPath: string;
1423
1702
  hidden?: boolean;
1703
+ /** See {@link InlineExtension}. */
1704
+ replaceable?: boolean;
1424
1705
  sourceInfo: SourceInfo;
1425
1706
  handlers: Map<string, HandlerFn[]>;
1426
1707
  tools: Map<string, RegisteredTool>;
@@ -1438,6 +1719,10 @@ export interface LoadExtensionsResult {
1438
1719
  path: string;
1439
1720
  error: string;
1440
1721
  }>;
1722
+ warnings?: Array<{
1723
+ path: string;
1724
+ warning: string;
1725
+ }>;
1441
1726
  /** Shared runtime - actions are throwing stubs until runner.initialize() */
1442
1727
  runtime: ExtensionRuntime;
1443
1728
  }