@astralyn/pi 0.83.0 → 0.84.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/dist/bun/cli.d.ts.map +1 -1
  3. package/dist/bun/cli.js.map +1 -1
  4. package/dist/bun/register-bedrock.d.ts.map +1 -1
  5. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  6. package/dist/bun/restore-sandbox-env.js.map +1 -1
  7. package/dist/cli/args.d.ts +2 -0
  8. package/dist/cli/args.d.ts.map +1 -1
  9. package/dist/cli/args.js +22 -3
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/auth-check.d.ts +19 -0
  12. package/dist/cli/auth-check.d.ts.map +1 -0
  13. package/dist/cli/auth-check.js +50 -0
  14. package/dist/cli/auth-check.js.map +1 -0
  15. package/dist/cli/auth-command.d.ts +24 -0
  16. package/dist/cli/auth-command.d.ts.map +1 -0
  17. package/dist/cli/auth-command.js +104 -0
  18. package/dist/cli/auth-command.js.map +1 -0
  19. package/dist/cli/config-selector.d.ts.map +1 -1
  20. package/dist/cli/config-selector.js +2 -2
  21. package/dist/cli/config-selector.js.map +1 -1
  22. package/dist/cli/credential-print.d.ts +5 -15
  23. package/dist/cli/credential-print.d.ts.map +1 -1
  24. package/dist/cli/credential-print.js +42 -82
  25. package/dist/cli/credential-print.js.map +1 -1
  26. package/dist/cli/experimental/auth.d.ts +16 -0
  27. package/dist/cli/experimental/auth.d.ts.map +1 -0
  28. package/dist/cli/experimental/auth.js +13 -0
  29. package/dist/cli/experimental/auth.js.map +1 -0
  30. package/dist/cli/experimental/cli.d.ts +6 -0
  31. package/dist/cli/experimental/cli.d.ts.map +1 -0
  32. package/dist/cli/experimental/cli.js +5 -0
  33. package/dist/cli/experimental/cli.js.map +1 -0
  34. package/dist/cli/experimental/command-options.d.ts +17 -0
  35. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  36. package/dist/cli/experimental/command-options.js +35 -0
  37. package/dist/cli/experimental/command-options.js.map +1 -0
  38. package/dist/cli/experimental/command.d.ts +63 -0
  39. package/dist/cli/experimental/command.d.ts.map +1 -0
  40. package/dist/cli/experimental/command.js +127 -0
  41. package/dist/cli/experimental/command.js.map +1 -0
  42. package/dist/cli/experimental/commands/client.d.ts +13 -0
  43. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  44. package/dist/cli/experimental/commands/client.js +25 -0
  45. package/dist/cli/experimental/commands/client.js.map +1 -0
  46. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  47. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  48. package/dist/cli/experimental/commands/pi.js +28 -0
  49. package/dist/cli/experimental/commands/pi.js.map +1 -0
  50. package/dist/cli/experimental/commands/server.d.ts +13 -0
  51. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  52. package/dist/cli/experimental/commands/server.js +25 -0
  53. package/dist/cli/experimental/commands/server.js.map +1 -0
  54. package/dist/cli/experimental/transport-address.d.ts +10 -0
  55. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  56. package/dist/cli/experimental/transport-address.js +38 -0
  57. package/dist/cli/experimental/transport-address.js.map +1 -0
  58. package/dist/cli/file-processor.d.ts.map +1 -1
  59. package/dist/cli/file-processor.js.map +1 -1
  60. package/dist/cli/initial-message.d.ts +1 -1
  61. package/dist/cli/initial-message.d.ts.map +1 -1
  62. package/dist/cli/initial-message.js.map +1 -1
  63. package/dist/cli/list-models.d.ts +1 -1
  64. package/dist/cli/list-models.d.ts.map +1 -1
  65. package/dist/cli/list-models.js +2 -2
  66. package/dist/cli/list-models.js.map +1 -1
  67. package/dist/cli/project-trust.d.ts.map +1 -1
  68. package/dist/cli/project-trust.js.map +1 -1
  69. package/dist/cli/session-picker.d.ts.map +1 -1
  70. package/dist/cli/session-picker.js.map +1 -1
  71. package/dist/cli/startup-ui.d.ts +1 -1
  72. package/dist/cli/startup-ui.d.ts.map +1 -1
  73. package/dist/cli/startup-ui.js +2 -2
  74. package/dist/cli/startup-ui.js.map +1 -1
  75. package/dist/cli.d.ts.map +1 -1
  76. package/dist/cli.js +1 -0
  77. package/dist/cli.js.map +1 -1
  78. package/dist/client/index.d.ts +3 -0
  79. package/dist/client/index.d.ts.map +1 -0
  80. package/dist/client/index.js +3 -0
  81. package/dist/client/index.js.map +1 -0
  82. package/dist/client/remote-session.d.ts +53 -0
  83. package/dist/client/remote-session.d.ts.map +1 -0
  84. package/dist/client/remote-session.js +340 -0
  85. package/dist/client/remote-session.js.map +1 -0
  86. package/dist/client/transcript.d.ts +12 -0
  87. package/dist/client/transcript.d.ts.map +1 -0
  88. package/dist/client/transcript.js +98 -0
  89. package/dist/client/transcript.js.map +1 -0
  90. package/dist/config.d.ts.map +1 -1
  91. package/dist/config.js.map +1 -1
  92. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  93. package/dist/core/agent-session-runtime.js +0 -8
  94. package/dist/core/agent-session-runtime.js.map +1 -1
  95. package/dist/core/agent-session-services.d.ts +1 -0
  96. package/dist/core/agent-session-services.d.ts.map +1 -1
  97. package/dist/core/agent-session-services.js +1 -0
  98. package/dist/core/agent-session-services.js.map +1 -1
  99. package/dist/core/agent-session.d.ts +30 -10
  100. package/dist/core/agent-session.d.ts.map +1 -1
  101. package/dist/core/agent-session.js +177 -187
  102. package/dist/core/agent-session.js.map +1 -1
  103. package/dist/core/auth-guidance.d.ts.map +1 -1
  104. package/dist/core/auth-guidance.js.map +1 -1
  105. package/dist/core/auth-storage.d.ts +25 -9
  106. package/dist/core/auth-storage.d.ts.map +1 -1
  107. package/dist/core/auth-storage.js +235 -42
  108. package/dist/core/auth-storage.js.map +1 -1
  109. package/dist/core/bash-executor.d.ts.map +1 -1
  110. package/dist/core/bash-executor.js.map +1 -1
  111. package/dist/core/cache-stats.d.ts.map +1 -1
  112. package/dist/core/cache-stats.js.map +1 -1
  113. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  114. package/dist/core/compaction/branch-summarization.js.map +1 -1
  115. package/dist/core/compaction/compaction.d.ts.map +1 -1
  116. package/dist/core/compaction/compaction.js.map +1 -1
  117. package/dist/core/compaction/index.d.ts.map +1 -1
  118. package/dist/core/compaction/utils.d.ts.map +1 -1
  119. package/dist/core/compaction/utils.js.map +1 -1
  120. package/dist/core/defaults.d.ts.map +1 -1
  121. package/dist/core/diagnostics.d.ts.map +1 -1
  122. package/dist/core/event-bus.d.ts.map +1 -1
  123. package/dist/core/event-bus.js.map +1 -1
  124. package/dist/core/exec.d.ts.map +1 -1
  125. package/dist/core/exec.js.map +1 -1
  126. package/dist/core/experimental.d.ts.map +1 -1
  127. package/dist/core/experimental.js.map +1 -1
  128. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  129. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  130. package/dist/core/export-html/index.d.ts.map +1 -1
  131. package/dist/core/export-html/index.js.map +1 -1
  132. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  133. package/dist/core/export-html/tool-renderer.js.map +1 -1
  134. package/dist/core/extensions/index.d.ts +1 -1
  135. package/dist/core/extensions/index.d.ts.map +1 -1
  136. package/dist/core/extensions/index.js.map +1 -1
  137. package/dist/core/extensions/loader.d.ts.map +1 -1
  138. package/dist/core/extensions/loader.js +43 -20
  139. package/dist/core/extensions/loader.js.map +1 -1
  140. package/dist/core/extensions/runner.d.ts +2 -1
  141. package/dist/core/extensions/runner.d.ts.map +1 -1
  142. package/dist/core/extensions/runner.js +25 -29
  143. package/dist/core/extensions/runner.js.map +1 -1
  144. package/dist/core/extensions/types.d.ts +26 -3
  145. package/dist/core/extensions/types.d.ts.map +1 -1
  146. package/dist/core/extensions/types.js.map +1 -1
  147. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  148. package/dist/core/extensions/wrapper.js.map +1 -1
  149. package/dist/core/footer-data-provider.d.ts.map +1 -1
  150. package/dist/core/footer-data-provider.js +17 -18
  151. package/dist/core/footer-data-provider.js.map +1 -1
  152. package/dist/core/http-dispatcher.d.ts.map +1 -1
  153. package/dist/core/http-dispatcher.js +5 -0
  154. package/dist/core/http-dispatcher.js.map +1 -1
  155. package/dist/core/index.d.ts.map +1 -1
  156. package/dist/core/keybindings.d.ts +165 -125
  157. package/dist/core/keybindings.d.ts.map +1 -1
  158. package/dist/core/keybindings.js +0 -1
  159. package/dist/core/keybindings.js.map +1 -1
  160. package/dist/core/messages.d.ts.map +1 -1
  161. package/dist/core/messages.js.map +1 -1
  162. package/dist/core/model-config.d.ts +37 -13
  163. package/dist/core/model-config.d.ts.map +1 -1
  164. package/dist/core/model-config.js +4 -2
  165. package/dist/core/model-config.js.map +1 -1
  166. package/dist/core/model-registry.d.ts +5 -3
  167. package/dist/core/model-registry.d.ts.map +1 -1
  168. package/dist/core/model-registry.js +13 -11
  169. package/dist/core/model-registry.js.map +1 -1
  170. package/dist/core/model-resolver.d.ts +4 -3
  171. package/dist/core/model-resolver.d.ts.map +1 -1
  172. package/dist/core/model-resolver.js +42 -10
  173. package/dist/core/model-resolver.js.map +1 -1
  174. package/dist/core/model-runtime.d.ts +30 -13
  175. package/dist/core/model-runtime.d.ts.map +1 -1
  176. package/dist/core/model-runtime.js +241 -91
  177. package/dist/core/model-runtime.js.map +1 -1
  178. package/dist/core/models-store.d.ts +12 -7
  179. package/dist/core/models-store.d.ts.map +1 -1
  180. package/dist/core/models-store.js +84 -16
  181. package/dist/core/models-store.js.map +1 -1
  182. package/dist/core/output-guard.d.ts.map +1 -1
  183. package/dist/core/output-guard.js.map +1 -1
  184. package/dist/core/package-manager.d.ts +4 -1
  185. package/dist/core/package-manager.d.ts.map +1 -1
  186. package/dist/core/package-manager.js +63 -42
  187. package/dist/core/package-manager.js.map +1 -1
  188. package/dist/core/pi-manifest.d.ts +8 -0
  189. package/dist/core/pi-manifest.d.ts.map +1 -0
  190. package/dist/core/pi-manifest.js +25 -0
  191. package/dist/core/pi-manifest.js.map +1 -0
  192. package/dist/core/project-trust.d.ts.map +1 -1
  193. package/dist/core/project-trust.js.map +1 -1
  194. package/dist/core/prompt-templates.d.ts.map +1 -1
  195. package/dist/core/prompt-templates.js.map +1 -1
  196. package/dist/core/provider-attribution.d.ts.map +1 -1
  197. package/dist/core/provider-attribution.js.map +1 -1
  198. package/dist/core/provider-composer.d.ts +4 -1
  199. package/dist/core/provider-composer.d.ts.map +1 -1
  200. package/dist/core/provider-composer.js +36 -15
  201. package/dist/core/provider-composer.js.map +1 -1
  202. package/dist/core/radius.d.ts.map +1 -1
  203. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  204. package/dist/core/remote-catalog-provider.js +73 -67
  205. package/dist/core/remote-catalog-provider.js.map +1 -1
  206. package/dist/core/resolve-config-value.d.ts.map +1 -1
  207. package/dist/core/resolve-config-value.js.map +1 -1
  208. package/dist/core/resource-loader.d.ts.map +1 -1
  209. package/dist/core/resource-loader.js +2 -46
  210. package/dist/core/resource-loader.js.map +1 -1
  211. package/dist/core/runtime-credentials.d.ts +5 -5
  212. package/dist/core/runtime-credentials.d.ts.map +1 -1
  213. package/dist/core/runtime-credentials.js +12 -10
  214. package/dist/core/runtime-credentials.js.map +1 -1
  215. package/dist/core/sdk.d.ts.map +1 -1
  216. package/dist/core/sdk.js.map +1 -1
  217. package/dist/core/session-cwd.d.ts.map +1 -1
  218. package/dist/core/session-cwd.js +0 -1
  219. package/dist/core/session-cwd.js.map +1 -1
  220. package/dist/core/session-manager.d.ts.map +1 -1
  221. package/dist/core/session-manager.js +10 -12
  222. package/dist/core/session-manager.js.map +1 -1
  223. package/dist/core/settings-manager.d.ts +12 -0
  224. package/dist/core/settings-manager.d.ts.map +1 -1
  225. package/dist/core/settings-manager.js +47 -33
  226. package/dist/core/settings-manager.js.map +1 -1
  227. package/dist/core/skills.d.ts.map +1 -1
  228. package/dist/core/skills.js.map +1 -1
  229. package/dist/core/slash-commands.d.ts.map +1 -1
  230. package/dist/core/source-info.d.ts.map +1 -1
  231. package/dist/core/source-info.js.map +1 -1
  232. package/dist/core/system-prompt.d.ts.map +1 -1
  233. package/dist/core/system-prompt.js.map +1 -1
  234. package/dist/core/telemetry.d.ts.map +1 -1
  235. package/dist/core/telemetry.js.map +1 -1
  236. package/dist/core/timings.d.ts.map +1 -1
  237. package/dist/core/timings.js.map +1 -1
  238. package/dist/core/tools/bash.d.ts +4 -0
  239. package/dist/core/tools/bash.d.ts.map +1 -1
  240. package/dist/core/tools/bash.js +18 -14
  241. package/dist/core/tools/bash.js.map +1 -1
  242. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  243. package/dist/core/tools/edit-diff.js.map +1 -1
  244. package/dist/core/tools/edit.d.ts +4 -0
  245. package/dist/core/tools/edit.d.ts.map +1 -1
  246. package/dist/core/tools/edit.js +15 -10
  247. package/dist/core/tools/edit.js.map +1 -1
  248. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  249. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  250. package/dist/core/tools/find.d.ts +7 -0
  251. package/dist/core/tools/find.d.ts.map +1 -1
  252. package/dist/core/tools/find.js +18 -17
  253. package/dist/core/tools/find.js.map +1 -1
  254. package/dist/core/tools/grep.d.ts +4 -0
  255. package/dist/core/tools/grep.d.ts.map +1 -1
  256. package/dist/core/tools/grep.js +5 -1
  257. package/dist/core/tools/grep.js.map +1 -1
  258. package/dist/core/tools/index.d.ts.map +1 -1
  259. package/dist/core/tools/index.js.map +1 -1
  260. package/dist/core/tools/ls.d.ts +4 -0
  261. package/dist/core/tools/ls.d.ts.map +1 -1
  262. package/dist/core/tools/ls.js +5 -1
  263. package/dist/core/tools/ls.js.map +1 -1
  264. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  265. package/dist/core/tools/output-accumulator.js +12 -18
  266. package/dist/core/tools/output-accumulator.js.map +1 -1
  267. package/dist/core/tools/path-utils.d.ts.map +1 -1
  268. package/dist/core/tools/path-utils.js.map +1 -1
  269. package/dist/core/tools/read.d.ts +4 -0
  270. package/dist/core/tools/read.d.ts.map +1 -1
  271. package/dist/core/tools/read.js +7 -3
  272. package/dist/core/tools/read.js.map +1 -1
  273. package/dist/core/tools/render-utils.d.ts.map +1 -1
  274. package/dist/core/tools/render-utils.js.map +1 -1
  275. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  276. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  277. package/dist/core/tools/truncate.d.ts.map +1 -1
  278. package/dist/core/tools/truncate.js.map +1 -1
  279. package/dist/core/tools/write.d.ts +4 -0
  280. package/dist/core/tools/write.d.ts.map +1 -1
  281. package/dist/core/tools/write.js +6 -3
  282. package/dist/core/tools/write.js.map +1 -1
  283. package/dist/core/trust-manager.d.ts.map +1 -1
  284. package/dist/core/trust-manager.js +0 -1
  285. package/dist/core/trust-manager.js.map +1 -1
  286. package/dist/core/usage-totals.d.ts.map +1 -1
  287. package/dist/core/usage-totals.js.map +1 -1
  288. package/dist/extensions/biu/index.d.ts +19 -0
  289. package/dist/extensions/biu/index.d.ts.map +1 -0
  290. package/dist/extensions/biu/index.js +350 -0
  291. package/dist/extensions/biu/index.js.map +1 -0
  292. package/dist/extensions/biu/prompts.d.ts +26 -0
  293. package/dist/extensions/biu/prompts.d.ts.map +1 -0
  294. package/dist/extensions/biu/prompts.js +260 -0
  295. package/dist/extensions/biu/prompts.js.map +1 -0
  296. package/dist/extensions/biu/workspace.d.ts +122 -0
  297. package/dist/extensions/biu/workspace.d.ts.map +1 -0
  298. package/dist/extensions/biu/workspace.js +404 -0
  299. package/dist/extensions/biu/workspace.js.map +1 -0
  300. package/dist/extensions/deepwiki/client.d.ts.map +1 -1
  301. package/dist/extensions/deepwiki/client.js.map +1 -1
  302. package/dist/extensions/deepwiki/constants.d.ts.map +1 -1
  303. package/dist/extensions/deepwiki/constants.js.map +1 -1
  304. package/dist/extensions/deepwiki/contents.d.ts.map +1 -1
  305. package/dist/extensions/deepwiki/contents.js.map +1 -1
  306. package/dist/extensions/deepwiki/execute.d.ts.map +1 -1
  307. package/dist/extensions/deepwiki/execute.js.map +1 -1
  308. package/dist/extensions/deepwiki/http.d.ts.map +1 -1
  309. package/dist/extensions/deepwiki/http.js.map +1 -1
  310. package/dist/extensions/deepwiki/index.d.ts.map +1 -1
  311. package/dist/extensions/deepwiki/index.js.map +1 -1
  312. package/dist/extensions/deepwiki/render.d.ts.map +1 -1
  313. package/dist/extensions/deepwiki/render.js.map +1 -1
  314. package/dist/extensions/deepwiki/schema.d.ts +1 -1
  315. package/dist/extensions/deepwiki/schema.d.ts.map +1 -1
  316. package/dist/extensions/deepwiki/schema.js.map +1 -1
  317. package/dist/extensions/index.d.ts.map +1 -1
  318. package/dist/extensions/index.js +2 -0
  319. package/dist/extensions/index.js.map +1 -1
  320. package/dist/extensions/llama/client.d.ts.map +1 -1
  321. package/dist/extensions/llama/client.js +0 -2
  322. package/dist/extensions/llama/client.js.map +1 -1
  323. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  324. package/dist/extensions/llama/huggingface.js +0 -2
  325. package/dist/extensions/llama/huggingface.js.map +1 -1
  326. package/dist/extensions/llama/index.d.ts.map +1 -1
  327. package/dist/extensions/llama/index.js +11 -2
  328. package/dist/extensions/llama/index.js.map +1 -1
  329. package/dist/extensions/llama/provider.d.ts.map +1 -1
  330. package/dist/extensions/llama/provider.js +21 -7
  331. package/dist/extensions/llama/provider.js.map +1 -1
  332. package/dist/extensions/llama/ui.d.ts.map +1 -1
  333. package/dist/extensions/llama/ui.js +12 -28
  334. package/dist/extensions/llama/ui.js.map +1 -1
  335. package/dist/extensions/question/constants.d.ts.map +1 -1
  336. package/dist/extensions/question/constants.js.map +1 -1
  337. package/dist/extensions/question/dialog-primitives.d.ts.map +1 -1
  338. package/dist/extensions/question/dialog-primitives.js.map +1 -1
  339. package/dist/extensions/question/dialog.d.ts.map +1 -1
  340. package/dist/extensions/question/dialog.js.map +1 -1
  341. package/dist/extensions/question/index.d.ts.map +1 -1
  342. package/dist/extensions/question/index.js.map +1 -1
  343. package/dist/extensions/question/limits.d.ts.map +1 -1
  344. package/dist/extensions/question/render-cache.d.ts.map +1 -1
  345. package/dist/extensions/question/render-cache.js +3 -4
  346. package/dist/extensions/question/render-cache.js.map +1 -1
  347. package/dist/extensions/question/render.d.ts.map +1 -1
  348. package/dist/extensions/question/render.js.map +1 -1
  349. package/dist/extensions/question/results.d.ts.map +1 -1
  350. package/dist/extensions/question/results.js.map +1 -1
  351. package/dist/extensions/question/schema.d.ts.map +1 -1
  352. package/dist/extensions/question/schema.js.map +1 -1
  353. package/dist/extensions/question/state.d.ts.map +1 -1
  354. package/dist/extensions/question/state.js.map +1 -1
  355. package/dist/extensions/question/types.d.ts.map +1 -1
  356. package/dist/extensions/rewind/anchor.d.ts.map +1 -1
  357. package/dist/extensions/rewind/anchor.js.map +1 -1
  358. package/dist/extensions/rewind/config.d.ts.map +1 -1
  359. package/dist/extensions/rewind/config.js.map +1 -1
  360. package/dist/extensions/rewind/engine.d.ts.map +1 -1
  361. package/dist/extensions/rewind/engine.js.map +1 -1
  362. package/dist/extensions/rewind/gc.d.ts.map +1 -1
  363. package/dist/extensions/rewind/gc.js.map +1 -1
  364. package/dist/extensions/rewind/index.d.ts.map +1 -1
  365. package/dist/extensions/rewind/index.js.map +1 -1
  366. package/dist/extensions/rewind/menu.d.ts.map +1 -1
  367. package/dist/extensions/rewind/menu.js.map +1 -1
  368. package/dist/extensions/rewind/paths.d.ts.map +1 -1
  369. package/dist/extensions/rewind/paths.js.map +1 -1
  370. package/dist/extensions/rewind/restore.d.ts.map +1 -1
  371. package/dist/extensions/rewind/restore.js.map +1 -1
  372. package/dist/extensions/rewind/snapshot.d.ts.map +1 -1
  373. package/dist/extensions/rewind/snapshot.js.map +1 -1
  374. package/dist/extensions/rewind/storage.d.ts.map +1 -1
  375. package/dist/extensions/rewind/storage.js.map +1 -1
  376. package/dist/extensions/rewind/text.d.ts.map +1 -1
  377. package/dist/extensions/rewind/text.js.map +1 -1
  378. package/dist/extensions/rewind/tool-path.d.ts.map +1 -1
  379. package/dist/extensions/rewind/tool-path.js.map +1 -1
  380. package/dist/extensions/router/constants.d.ts +3 -0
  381. package/dist/extensions/router/constants.d.ts.map +1 -1
  382. package/dist/extensions/router/constants.js +3 -0
  383. package/dist/extensions/router/constants.js.map +1 -1
  384. package/dist/extensions/router/dialog.d.ts +14 -7
  385. package/dist/extensions/router/dialog.d.ts.map +1 -1
  386. package/dist/extensions/router/dialog.js +70 -132
  387. package/dist/extensions/router/dialog.js.map +1 -1
  388. package/dist/extensions/router/index.d.ts.map +1 -1
  389. package/dist/extensions/router/index.js.map +1 -1
  390. package/dist/extensions/router/presets.d.ts +8 -3
  391. package/dist/extensions/router/presets.d.ts.map +1 -1
  392. package/dist/extensions/router/presets.js +33 -17
  393. package/dist/extensions/router/presets.js.map +1 -1
  394. package/dist/extensions/router/probe.d.ts.map +1 -1
  395. package/dist/extensions/router/probe.js.map +1 -1
  396. package/dist/extensions/router/register.d.ts +3 -3
  397. package/dist/extensions/router/register.d.ts.map +1 -1
  398. package/dist/extensions/router/register.js.map +1 -1
  399. package/dist/extensions/router/store.d.ts.map +1 -1
  400. package/dist/extensions/router/store.js.map +1 -1
  401. package/dist/extensions/router/stream.d.ts.map +1 -1
  402. package/dist/extensions/router/stream.js.map +1 -1
  403. package/dist/extensions/router/types.d.ts.map +1 -1
  404. package/dist/extensions/router/ui.d.ts +11 -2
  405. package/dist/extensions/router/ui.d.ts.map +1 -1
  406. package/dist/extensions/router/ui.js +316 -171
  407. package/dist/extensions/router/ui.js.map +1 -1
  408. package/dist/extensions/statusline/index.d.ts.map +1 -1
  409. package/dist/extensions/statusline/index.js +17 -9
  410. package/dist/extensions/statusline/index.js.map +1 -1
  411. package/dist/extensions/subagent/activity.d.ts.map +1 -1
  412. package/dist/extensions/subagent/activity.js.map +1 -1
  413. package/dist/extensions/subagent/agents.d.ts.map +1 -1
  414. package/dist/extensions/subagent/agents.js.map +1 -1
  415. package/dist/extensions/subagent/constants.d.ts.map +1 -1
  416. package/dist/extensions/subagent/index.d.ts +3 -0
  417. package/dist/extensions/subagent/index.d.ts.map +1 -1
  418. package/dist/extensions/subagent/index.js +83 -12
  419. package/dist/extensions/subagent/index.js.map +1 -1
  420. package/dist/extensions/subagent/picker.d.ts.map +1 -1
  421. package/dist/extensions/subagent/picker.js +2 -9
  422. package/dist/extensions/subagent/picker.js.map +1 -1
  423. package/dist/extensions/subagent/render.d.ts.map +1 -1
  424. package/dist/extensions/subagent/render.js +33 -9
  425. package/dist/extensions/subagent/render.js.map +1 -1
  426. package/dist/extensions/subagent/resolve.d.ts.map +1 -1
  427. package/dist/extensions/subagent/resolve.js.map +1 -1
  428. package/dist/extensions/subagent/retry.d.ts.map +1 -1
  429. package/dist/extensions/subagent/retry.js.map +1 -1
  430. package/dist/extensions/subagent/runner.d.ts +2 -1
  431. package/dist/extensions/subagent/runner.d.ts.map +1 -1
  432. package/dist/extensions/subagent/runner.js +10 -12
  433. package/dist/extensions/subagent/runner.js.map +1 -1
  434. package/dist/extensions/subagent/schema.d.ts.map +1 -1
  435. package/dist/extensions/subagent/schema.js.map +1 -1
  436. package/dist/extensions/subagent/sdk-runner.d.ts.map +1 -1
  437. package/dist/extensions/subagent/sdk-runner.js +41 -1
  438. package/dist/extensions/subagent/sdk-runner.js.map +1 -1
  439. package/dist/extensions/subagent/settings.d.ts.map +1 -1
  440. package/dist/extensions/subagent/settings.js +46 -36
  441. package/dist/extensions/subagent/settings.js.map +1 -1
  442. package/dist/extensions/subagent/types.d.ts +0 -1
  443. package/dist/extensions/subagent/types.d.ts.map +1 -1
  444. package/dist/extensions/subagent/types.js.map +1 -1
  445. package/dist/extensions/todo/constants.d.ts.map +1 -1
  446. package/dist/extensions/todo/constants.js.map +1 -1
  447. package/dist/extensions/todo/index.d.ts.map +1 -1
  448. package/dist/extensions/todo/index.js.map +1 -1
  449. package/dist/extensions/todo/overlay.d.ts.map +1 -1
  450. package/dist/extensions/todo/overlay.js +6 -10
  451. package/dist/extensions/todo/overlay.js.map +1 -1
  452. package/dist/extensions/todo/schema.d.ts +2 -2
  453. package/dist/extensions/todo/schema.d.ts.map +1 -1
  454. package/dist/extensions/todo/state.d.ts.map +1 -1
  455. package/dist/extensions/todo/state.js.map +1 -1
  456. package/dist/extensions/todo/view.d.ts.map +1 -1
  457. package/dist/extensions/todo/view.js.map +1 -1
  458. package/dist/index.d.ts +4 -4
  459. package/dist/index.d.ts.map +1 -1
  460. package/dist/index.js +1 -1
  461. package/dist/index.js.map +1 -1
  462. package/dist/main.d.ts.map +1 -1
  463. package/dist/main.js +70 -25
  464. package/dist/main.js.map +1 -1
  465. package/dist/migrations.d.ts.map +1 -1
  466. package/dist/migrations.js.map +1 -1
  467. package/dist/modes/index.d.ts +1 -0
  468. package/dist/modes/index.d.ts.map +1 -1
  469. package/dist/modes/index.js.map +1 -1
  470. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/armin.js +6 -10
  472. package/dist/modes/interactive/components/armin.js.map +1 -1
  473. package/dist/modes/interactive/components/assistant-message.d.ts +5 -2
  474. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  475. package/dist/modes/interactive/components/assistant-message.js +13 -11
  476. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  477. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  478. package/dist/modes/interactive/components/bash-execution.js +4 -10
  479. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  480. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  481. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  482. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  483. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  484. package/dist/modes/interactive/components/branch-summary-message.js +1 -3
  485. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  486. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  487. package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
  488. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  489. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  490. package/dist/modes/interactive/components/config-selector.js +5 -22
  491. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  492. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  493. package/dist/modes/interactive/components/countdown-timer.js +1 -7
  494. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  495. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  496. package/dist/modes/interactive/components/custom-editor.js +8 -8
  497. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  498. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  499. package/dist/modes/interactive/components/custom-entry.js +1 -4
  500. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  501. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  502. package/dist/modes/interactive/components/custom-message.js +1 -7
  503. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  504. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  505. package/dist/modes/interactive/components/daxnuts.js +6 -8
  506. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  507. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  508. package/dist/modes/interactive/components/diff.js.map +1 -1
  509. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  510. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  511. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  512. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  513. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  514. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  515. package/dist/modes/interactive/components/extension-editor.js +1 -7
  516. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  517. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/extension-input.js +2 -8
  519. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  520. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  521. package/dist/modes/interactive/components/extension-selector.js +1 -9
  522. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  523. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  524. package/dist/modes/interactive/components/first-time-setup.js +2 -4
  525. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  526. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  527. package/dist/modes/interactive/components/footer.js +2 -4
  528. package/dist/modes/interactive/components/footer.js.map +1 -1
  529. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  530. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  531. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  532. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/login-dialog.js +3 -9
  534. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  535. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  536. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  537. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  538. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  539. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  540. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  541. package/dist/modes/interactive/components/mermaid.js +75 -0
  542. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  543. package/dist/modes/interactive/components/model-selector.d.ts +1 -1
  544. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  545. package/dist/modes/interactive/components/model-selector.js +28 -29
  546. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  547. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  548. package/dist/modes/interactive/components/oauth-selector.js +3 -11
  549. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  550. package/dist/modes/interactive/components/scoped-models-selector.d.ts +4 -0
  551. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  552. package/dist/modes/interactive/components/scoped-models-selector.js +34 -13
  553. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  554. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  555. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  556. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  557. package/dist/modes/interactive/components/session-selector.js +35 -60
  558. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  559. package/dist/modes/interactive/components/settings-selector.d.ts +8 -2
  560. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  561. package/dist/modes/interactive/components/settings-selector.js +30 -14
  562. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  563. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  564. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  565. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  566. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  567. package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
  568. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  569. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  570. package/dist/modes/interactive/components/status-indicator.js +0 -2
  571. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  572. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  573. package/dist/modes/interactive/components/theme-selector.js +0 -2
  574. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  575. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  576. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  577. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  578. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  579. package/dist/modes/interactive/components/tool-execution.js +18 -36
  580. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  581. package/dist/modes/interactive/components/tool-group.d.ts.map +1 -1
  582. package/dist/modes/interactive/components/tool-group.js +2 -3
  583. package/dist/modes/interactive/components/tool-group.js.map +1 -1
  584. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  585. package/dist/modes/interactive/components/tree-selector.js +19 -39
  586. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  587. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  588. package/dist/modes/interactive/components/trust-selector.js +0 -6
  589. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  590. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  591. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  592. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  593. package/dist/modes/interactive/components/user-message.d.ts +3 -1
  594. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  595. package/dist/modes/interactive/components/user-message.js +8 -5
  596. package/dist/modes/interactive/components/user-message.js.map +1 -1
  597. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  598. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  599. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  600. package/dist/modes/interactive/external-editor.js.map +1 -1
  601. package/dist/modes/interactive/interactive-mode.d.ts +46 -5
  602. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  603. package/dist/modes/interactive/interactive-mode.js +538 -282
  604. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  605. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  606. package/dist/modes/interactive/model-search.js.map +1 -1
  607. package/dist/modes/interactive/theme/dark.json +1 -0
  608. package/dist/modes/interactive/theme/light.json +1 -0
  609. package/dist/modes/interactive/theme/theme-controller.d.ts +3 -0
  610. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  611. package/dist/modes/interactive/theme/theme-controller.js +11 -8
  612. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  613. package/dist/modes/interactive/theme/theme-schema.json +5 -1
  614. package/dist/modes/interactive/theme/theme.d.ts +4 -4
  615. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  616. package/dist/modes/interactive/theme/theme.js +24 -12
  617. package/dist/modes/interactive/theme/theme.js.map +1 -1
  618. package/dist/modes/json-event.d.ts +28 -0
  619. package/dist/modes/json-event.d.ts.map +1 -0
  620. package/dist/modes/json-event.js +12 -0
  621. package/dist/modes/json-event.js.map +1 -0
  622. package/dist/modes/print-mode.d.ts.map +1 -1
  623. package/dist/modes/print-mode.js +12 -2
  624. package/dist/modes/print-mode.js.map +1 -1
  625. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  626. package/dist/modes/rpc/jsonl.js.map +1 -1
  627. package/dist/modes/rpc/rpc-client.d.ts +5 -4
  628. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  629. package/dist/modes/rpc/rpc-client.js +7 -8
  630. package/dist/modes/rpc/rpc-client.js.map +1 -1
  631. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  632. package/dist/modes/rpc/rpc-mode.js +4 -3
  633. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  634. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  635. package/dist/package-manager-cli.d.ts.map +1 -1
  636. package/dist/package-manager-cli.js +11 -9
  637. package/dist/package-manager-cli.js.map +1 -1
  638. package/dist/rpc-entry.d.ts.map +1 -1
  639. package/dist/rpc-entry.js +1 -0
  640. package/dist/rpc-entry.js.map +1 -1
  641. package/dist/server/create-harness.d.ts +26 -0
  642. package/dist/server/create-harness.d.ts.map +1 -0
  643. package/dist/server/create-harness.js +104 -0
  644. package/dist/server/create-harness.js.map +1 -0
  645. package/dist/utils/abort.d.ts +5 -0
  646. package/dist/utils/abort.d.ts.map +1 -0
  647. package/dist/utils/abort.js +48 -0
  648. package/dist/utils/abort.js.map +1 -0
  649. package/dist/utils/ansi.d.ts.map +1 -1
  650. package/dist/utils/ansi.js.map +1 -1
  651. package/dist/utils/changelog.d.ts.map +1 -1
  652. package/dist/utils/changelog.js.map +1 -1
  653. package/dist/utils/child-process.d.ts.map +1 -1
  654. package/dist/utils/child-process.js.map +1 -1
  655. package/dist/utils/clipboard-image.d.ts.map +1 -1
  656. package/dist/utils/clipboard-image.js.map +1 -1
  657. package/dist/utils/clipboard-native.d.ts.map +1 -1
  658. package/dist/utils/clipboard-native.js.map +1 -1
  659. package/dist/utils/clipboard.d.ts +1 -1
  660. package/dist/utils/clipboard.d.ts.map +1 -1
  661. package/dist/utils/clipboard.js +22 -2
  662. package/dist/utils/clipboard.js.map +1 -1
  663. package/dist/utils/coalescing-terminal.d.ts +20 -4
  664. package/dist/utils/coalescing-terminal.d.ts.map +1 -1
  665. package/dist/utils/coalescing-terminal.js +48 -12
  666. package/dist/utils/coalescing-terminal.js.map +1 -1
  667. package/dist/utils/deprecation.d.ts.map +1 -1
  668. package/dist/utils/deprecation.js.map +1 -1
  669. package/dist/utils/exif-orientation.d.ts.map +1 -1
  670. package/dist/utils/exif-orientation.js.map +1 -1
  671. package/dist/utils/frontmatter.d.ts.map +1 -1
  672. package/dist/utils/frontmatter.js.map +1 -1
  673. package/dist/utils/fs-watch.d.ts.map +1 -1
  674. package/dist/utils/fs-watch.js.map +1 -1
  675. package/dist/utils/git.d.ts.map +1 -1
  676. package/dist/utils/git.js.map +1 -1
  677. package/dist/utils/html.d.ts.map +1 -1
  678. package/dist/utils/html.js.map +1 -1
  679. package/dist/utils/image-convert.d.ts.map +1 -1
  680. package/dist/utils/image-convert.js.map +1 -1
  681. package/dist/utils/image-process.d.ts.map +1 -1
  682. package/dist/utils/image-process.js.map +1 -1
  683. package/dist/utils/image-resize-core.d.ts.map +1 -1
  684. package/dist/utils/image-resize-core.js.map +1 -1
  685. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  686. package/dist/utils/image-resize-worker.js.map +1 -1
  687. package/dist/utils/image-resize.d.ts.map +1 -1
  688. package/dist/utils/image-resize.js.map +1 -1
  689. package/dist/utils/json.d.ts.map +1 -1
  690. package/dist/utils/json.js.map +1 -1
  691. package/dist/utils/management-http.d.ts +23 -0
  692. package/dist/utils/management-http.d.ts.map +1 -0
  693. package/dist/utils/management-http.js +50 -0
  694. package/dist/utils/management-http.js.map +1 -0
  695. package/dist/utils/mime.d.ts.map +1 -1
  696. package/dist/utils/mime.js.map +1 -1
  697. package/dist/utils/open-browser.d.ts.map +1 -1
  698. package/dist/utils/open-browser.js.map +1 -1
  699. package/dist/utils/paths.d.ts +3 -0
  700. package/dist/utils/paths.d.ts.map +1 -1
  701. package/dist/utils/paths.js +23 -1
  702. package/dist/utils/paths.js.map +1 -1
  703. package/dist/utils/photon.d.ts.map +1 -1
  704. package/dist/utils/photon.js.map +1 -1
  705. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  706. package/dist/utils/pi-user-agent.js.map +1 -1
  707. package/dist/utils/shell.d.ts.map +1 -1
  708. package/dist/utils/shell.js.map +1 -1
  709. package/dist/utils/sleep.d.ts.map +1 -1
  710. package/dist/utils/sleep.js.map +1 -1
  711. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  712. package/dist/utils/syntax-highlight.js.map +1 -1
  713. package/dist/utils/tool-result-images.d.ts +19 -0
  714. package/dist/utils/tool-result-images.d.ts.map +1 -0
  715. package/dist/utils/tool-result-images.js +45 -0
  716. package/dist/utils/tool-result-images.js.map +1 -0
  717. package/dist/utils/tools-manager.d.ts.map +1 -1
  718. package/dist/utils/tools-manager.js +4 -6
  719. package/dist/utils/tools-manager.js.map +1 -1
  720. package/dist/utils/version-check.d.ts +4 -0
  721. package/dist/utils/version-check.d.ts.map +1 -1
  722. package/dist/utils/version-check.js +20 -2
  723. package/dist/utils/version-check.js.map +1 -1
  724. package/dist/utils/windows-self-update.d.ts.map +1 -1
  725. package/dist/utils/windows-self-update.js.map +1 -1
  726. package/docs/bundled/README.md +1 -0
  727. package/docs/bundled/extensions/biu.md +63 -0
  728. package/docs/bundled/extensions/router.md +20 -14
  729. package/docs/bundled/extensions/statusline.md +7 -5
  730. package/docs/custom-provider.md +123 -2
  731. package/docs/development.md +83 -0
  732. package/docs/docs.json +8 -4
  733. package/docs/extensions.md +30 -5
  734. package/docs/json.md +21 -2
  735. package/docs/keybindings.md +46 -14
  736. package/docs/models.md +21 -3
  737. package/docs/providers.md +9 -1
  738. package/docs/quickstart.md +2 -0
  739. package/docs/rpc.md +12 -11
  740. package/docs/sdk.md +46 -0
  741. package/docs/security.md +1 -1
  742. package/docs/settings.md +4 -1
  743. package/docs/themes.md +7 -5
  744. package/docs/usage.md +8 -0
  745. package/examples/extensions/custom-compaction.ts +1 -16
  746. package/examples/extensions/custom-provider-anthropic/index.ts +2 -1
  747. package/examples/extensions/custom-provider-anthropic/package-lock.json +5 -5
  748. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  749. package/examples/extensions/custom-provider-gitlab-duo/index.ts +2 -1
  750. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  751. package/examples/extensions/doom-overlay/wad-finder.ts +7 -3
  752. package/examples/extensions/dynamic-resources/dynamic.json +1 -1
  753. package/examples/extensions/gondolin/package-lock.json +2 -2
  754. package/examples/extensions/gondolin/package.json +1 -1
  755. package/examples/extensions/handoff.ts +2 -11
  756. package/examples/extensions/qna.ts +3 -7
  757. package/examples/extensions/sandbox/package-lock.json +3 -3
  758. package/examples/extensions/sandbox/package.json +1 -1
  759. package/examples/extensions/summarize.ts +8 -18
  760. package/examples/extensions/with-deps/package-lock.json +4 -4
  761. package/examples/extensions/with-deps/package.json +1 -1
  762. package/examples/rpc-extension-ui.ts +11 -2
  763. package/examples/sdk/02-custom-model.ts +1 -2
  764. package/examples/sdk/09-api-keys-and-oauth.ts +1 -1
  765. package/examples/sdk/12-full-control.ts +1 -1
  766. package/examples/sdk/README.md +1 -0
  767. package/npm-shrinkwrap.json +193 -264
  768. package/package.json +15 -8
package/docs/models.md CHANGED
@@ -244,6 +244,7 @@ A `models` entry supplies a complete custom model definition with useful default
244
244
  | `input` | No | `["text"]` | Supported input kinds: `text` and `image`. |
245
245
  | `contextWindow` | No | `128000` | Context window in tokens. |
246
246
  | `maxTokens` | No | `16384` | Maximum generated tokens. |
247
+ | `samplingParams` | No | omitted | Free-form sampling parameters merged verbatim into every request body; see [Sampling Parameters](#sampling-parameters). |
247
248
  | `cost` | No | all rates `0` | Per-million-token rates and optional request-wide price tiers. |
248
249
  | `headers` | No | omitted | Model-specific request headers; see [Custom Headers](#custom-headers). |
249
250
  | `compat` | No | provider `compat` | Compatibility refinements merged with provider defaults. |
@@ -272,6 +273,23 @@ When `cost` is supplied on a `models` entry, it must contain all four base rates
272
273
  }
273
274
  ```
274
275
 
276
+ ### Sampling Parameters
277
+
278
+ `samplingParams` is a free-form object merged verbatim into every request body for the model, after the fields pi sets itself, so its keys win. Use it to send sampling parameters pi does not model — including server-specific ones like llama.cpp's `min_p` or vLLM's `top_k`:
279
+
280
+ ```json
281
+ {
282
+ "id": "deepseek-v4-flash",
283
+ "samplingParams": {
284
+ "temperature": 1.0,
285
+ "top_p": 0.95,
286
+ "top_k": 0,
287
+ "min_p": 0.0
288
+ }
289
+ }
290
+ ```
291
+
292
+ Only OpenAI-compatible APIs apply it (`openai-completions`, `openai-responses`, `azure-openai-responses`); other APIs ignore it. Keys override pi's named request fields (for example a `temperature` key here beats the request-level temperature), so prefer it as the single source of sampling truth for a model. In `modelOverrides`, `samplingParams` merges per key with the base model's value.
275
293
  ### Thinking Level Map
276
294
 
277
295
  `thinkingLevelMap` uses these Pi levels: `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. It only affects a model with `reasoning: true`; a non-reasoning model exposes `off` only.
@@ -369,9 +387,7 @@ The built-in models remain. A new custom `id` is added, while a matching ID is r
369
387
  }
370
388
  ```
371
389
 
372
- An override supports `name`, `reasoning`, `thinkingLevelMap`, `input`, `cost`, `contextWindow`, `maxTokens`, `headers`, and `compat`. Its `cost` base rates are individually optional and retain omitted values; a supplied `tiers` array replaces the existing array. Thinking maps merge by level. `compat` merges by field, and its `openRouterRouting`, `vercelGatewayRouting`, and `chatTemplateKwargs` objects merge by key.
373
-
374
- If an override and a `models` entry use the same ID, the override still changes the final model. For headers only, the `models` entry wins on a duplicate header name as described in [Custom Headers](#custom-headers). Overrides also apply to matching extension-registered models; see [Custom Providers: Composition, Updates, and Removal](custom-provider.md#composition-updates-and-removal).
390
+ An override supports `name`, `reasoning`, `thinkingLevelMap`, `input`, `cost`, `contextWindow`, `maxTokens`, `samplingParams` (merged per key), `headers`, and `compat`. Its `cost` base rates are individually optional and retain omitted values; a supplied `tiers` array replaces the existing array. Thinking maps merge by level. `compat` merges by field, and its `openRouterRouting`, `vercelGatewayRouting`, and `chatTemplateKwargs` objects merge by key.
375
391
 
376
392
  Direct OpenAI GPT-5.6 Sol, Terra, and Luna default to a `272000` context window so requests remain within OpenAI's short-context pricing tier. To use the 1.05M context window, override each model you use:
377
393
 
@@ -450,6 +466,7 @@ For `api: "openai-completions"`, Pi auto-detects many defaults from the provider
450
466
  | `supportsDeveloperRole` | Uses `developer` rather than `system` for reasoning models. Default: URL-detected. |
451
467
  | `supportsReasoningEffort` | Accepts `reasoning_effort` when the selected thinking format uses it. Default: URL-detected. |
452
468
  | `supportsUsageInStreaming` | Accepts `stream_options: { "include_usage": true }`. Default: `true`. |
469
+ | `supportsFinishReason` | Whether streamed responses include `finish_reason`. When `false`, Pi infers `stop` or `toolUse` when the stream ends. Default: `true`. |
453
470
  | `maxTokensField` | Selects `max_completion_tokens` or `max_tokens`. Default: URL-detected. |
454
471
  | `requiresToolResultName` | Requires `name` on tool-result messages. Default: URL-detected. |
455
472
  | `requiresAssistantAfterToolResult` | Requires an assistant message before a user message following tool results. Default: URL-detected. |
@@ -457,6 +474,7 @@ For `api: "openai-completions"`, Pi auto-detects many defaults from the provider
457
474
  | `requiresReasoningContentOnAssistantMessages` | Includes empty `reasoning_content` on replayed assistant messages when reasoning is enabled. Default: URL-detected. |
458
475
  | `thinkingFormat` | One of `openai`, `openrouter`, `deepseek`, `together`, `zai`, `qwen`, `chat-template`, `qwen-chat-template`, `string-thinking`, or `ant-ling`. Default: `openai` unless URL detection selects a known provider format. |
459
476
  | `chatTemplateKwargs` | `chat_template_kwargs` for `thinkingFormat: "chat-template"`. Values may be strings, numbers, booleans, `null`, or `{ "$var": "thinking.enabled" | "thinking.effort", "omitWhenOff"?: true }`. |
477
+ | `chatTemplateArgs` | `chat_template_args` for `thinkingFormat: "baseten"`. Values may be strings, numbers, booleans, `null`, or `{ "$var": "thinking.enabled" | "thinking.effort", "omitWhenOff"?: true }`. |
460
478
  | `zaiToolStream` | Sends top-level `tool_stream: true` when tools are present. Default: `false`; use only for Z.AI-compatible endpoints that require it. |
461
479
  | `cacheControlFormat` | `anthropic` applies Anthropic-style `cache_control` markers to the system prompt, last tool definition, and final text content when caching is enabled. |
462
480
  | `sendSessionAffinityHeaders` | Sends session-affinity headers from the session ID when caching is enabled. Default: `false`. |
package/docs/providers.md CHANGED
@@ -92,10 +92,12 @@ pi
92
92
  | Hugging Face | `HF_TOKEN` | `huggingface` |
93
93
  | Fireworks | `FIREWORKS_API_KEY` | `fireworks` |
94
94
  | Together AI | `TOGETHER_API_KEY` | `together` |
95
+ | Baseten | `BASETEN_API_KEY` | `baseten` |
95
96
  | Kimi For Coding | `KIMI_API_KEY` | `kimi-coding` |
96
97
  | MiniMax | `MINIMAX_API_KEY` | `minimax` |
97
98
  | MiniMax (China) | `MINIMAX_CN_API_KEY` | `minimax-cn` |
98
- | Qwen Token Plan | `QWEN_TOKEN_PLAN_API_KEY` | `qwen-token-plan` |
99
+ | Qwen Token Plan (existing catalog) | `QWEN_TOKEN_PLAN_API_KEY` | `qwen-token-plan` |
100
+ | Qwen Token Plan (Individual) | `QWEN_TOKEN_PLAN_API_KEY` | `qwen-token-plan-individual` |
99
101
  | Qwen Token Plan (China) | `QWEN_TOKEN_PLAN_CN_API_KEY` | `qwen-token-plan-cn` |
100
102
  | Xiaomi MiMo | `XIAOMI_API_KEY` | `xiaomi` |
101
103
  | Xiaomi MiMo Token Plan (China) | `XIAOMI_TOKEN_PLAN_CN_API_KEY` | `xiaomi-token-plan-cn` |
@@ -120,6 +122,7 @@ Store credentials in `~/.pi/agent/auth.json`:
120
122
  "opencode-go": { "type": "api_key", "key": "..." },
121
123
  "together": { "type": "api_key", "key": "..." },
122
124
  "qwen-token-plan": { "type": "api_key", "key": "sk-sp-..." },
125
+ "qwen-token-plan-individual": { "type": "api_key", "key": "sk-sp-..." },
123
126
  "qwen-token-plan-cn": { "type": "api_key", "key": "sk-sp-..." },
124
127
  "xiaomi": { "type": "api_key", "key": "..." },
125
128
  "xiaomi-token-plan-cn": { "type": "api_key", "key": "..." },
@@ -128,6 +131,11 @@ Store credentials in `~/.pi/agent/auth.json`:
128
131
  }
129
132
  ```
130
133
 
134
+ `qwen-token-plan-individual` uses the same international endpoint and `QWEN_TOKEN_PLAN_API_KEY` as
135
+ `qwen-token-plan`, but limits the picker to the models documented for Individual subscriptions. The existing
136
+ provider keeps its broader catalog for backward compatibility. When using `auth.json`, store the
137
+ credential under the provider you select; an environment variable is shared by both international providers.
138
+
131
139
  The file is created with `0600` permissions (user read/write only). Auth file credentials take priority over environment variables.
132
140
 
133
141
  API key credentials can also include provider-scoped environment values. These values are used before process environment variables when resolving the credential key, provider/model headers, and provider configuration such as Cloudflare account IDs, Azure OpenAI settings, Vertex project/location, Bedrock settings, `PI_CACHE_RETENTION`, and `HTTP_PROXY`/`HTTPS_PROXY`.
@@ -100,6 +100,8 @@ Pi loads:
100
100
  - `~/.pi/agent/AGENTS.md` for global instructions
101
101
  - `AGENTS.md` or `CLAUDE.md` from parent directories and the current directory
102
102
 
103
+ If a directory contains `AGENTS.override.md`, Pi loads it instead of `AGENTS.md` or `CLAUDE.md` from that directory.
104
+
103
105
  Restart pi, or run `/reload`, after changing context files.
104
106
 
105
107
  ## Common things to try
package/docs/rpc.md CHANGED
@@ -949,17 +949,15 @@ Emitted when a message begins and completes. The `message` field contains an `Ag
949
949
 
950
950
  ### message_update (Streaming)
951
951
 
952
- Emitted during streaming of assistant messages. Contains both the partial message and a streaming delta event.
952
+ Emitted during streaming of assistant messages. Contains a delta event without a cumulative message snapshot.
953
953
 
954
954
  ```json
955
955
  {
956
956
  "type": "message_update",
957
- "message": {...},
958
957
  "assistantMessageEvent": {
959
958
  "type": "text_delta",
960
959
  "contentIndex": 0,
961
- "delta": "Hello ",
962
- "partial": {...}
960
+ "delta": "Hello "
963
961
  }
964
962
  }
965
963
  ```
@@ -968,7 +966,6 @@ The `assistantMessageEvent` field contains one of these delta types:
968
966
 
969
967
  | Type | Description |
970
968
  |------|-------------|
971
- | `start` | Message generation started |
972
969
  | `text_start` | Text content block started |
973
970
  | `text_delta` | Text content chunk |
974
971
  | `text_end` | Text content block ended |
@@ -978,17 +975,21 @@ The `assistantMessageEvent` field contains one of these delta types:
978
975
  | `toolcall_start` | Tool call started |
979
976
  | `toolcall_delta` | Tool call arguments chunk |
980
977
  | `toolcall_end` | Tool call ended (includes full `toolCall` object) |
981
- | `done` | Message complete (reason: `"stop"`, `"length"`, `"toolUse"`) |
982
- | `error` | Error occurred (reason: `"aborted"`, `"error"`) |
983
978
 
984
979
  Example streaming a text response:
985
980
  ```json
986
- {"type":"message_update","message":{...},"assistantMessageEvent":{"type":"text_start","contentIndex":0,"partial":{...}}}
987
- {"type":"message_update","message":{...},"assistantMessageEvent":{"type":"text_delta","contentIndex":0,"delta":"Hello","partial":{...}}}
988
- {"type":"message_update","message":{...},"assistantMessageEvent":{"type":"text_delta","contentIndex":0,"delta":" world","partial":{...}}}
989
- {"type":"message_update","message":{...},"assistantMessageEvent":{"type":"text_end","contentIndex":0,"content":"Hello world","partial":{...}}}
981
+ {"type":"message_update","assistantMessageEvent":{"type":"text_start","contentIndex":0}}
982
+ {"type":"message_update","assistantMessageEvent":{"type":"text_delta","contentIndex":0,"delta":"Hello"}}
983
+ {"type":"message_update","assistantMessageEvent":{"type":"text_delta","contentIndex":0,"delta":" world"}}
984
+ {"type":"message_update","assistantMessageEvent":{"type":"text_end","contentIndex":0,"content":"Hello world"}}
990
985
  ```
991
986
 
987
+ `message_update` intentionally omits the former cumulative `message` field and
988
+ `assistantMessageEvent.partial`. Clients that need a live partial message must assemble it
989
+ from `message_start` and subsequent events using `contentIndex`. Treat `message_end.message`
990
+ as authoritative. For tool calls, buffer `toolcall_delta.delta`; `toolcall_end.toolCall`
991
+ contains the completed call.
992
+
992
993
  ### bash_execution_update
993
994
 
994
995
  Emitted once for each output chunk from a direct `bash` command. `id` matches the command's `id`, allowing clients to associate output with the correct command.
package/docs/sdk.md CHANGED
@@ -179,6 +179,33 @@ session = runtime.session;
179
179
  unsubscribe = session.subscribe(() => {});
180
180
  ```
181
181
 
182
+ ### Experimental Remote Sessions
183
+
184
+ The `@astralyn/pi/client` subpath provides a lifecycle controller and transcript reducers for applications that connect to a remote Pi server. Transport and protocol primitives come from the exact `@earendil-works/pi-client` and `@earendil-works/pi-protocol` dependencies.
185
+
186
+ ```typescript
187
+ import { PiClient } from "@earendil-works/pi-client";
188
+ import { createUnixTransportFactory } from "@earendil-works/pi-client/unix";
189
+ import { RemoteSession } from "@astralyn/pi/client";
190
+
191
+ await using client = await PiClient.connect({
192
+ transportFactory: createUnixTransportFactory({ path: "/tmp/pi.sock" }),
193
+ });
194
+ await using session = await RemoteSession.create(client, {
195
+ cwd: "/workspace/project",
196
+ });
197
+
198
+ const unsubscribe = session.subscribe(({ lifecycle, snapshot, transcript }) => {
199
+ console.log(lifecycle.status, snapshot?.phase, transcript.length);
200
+ });
201
+ await session.submit("Inspect this project");
202
+ unsubscribe();
203
+ ```
204
+
205
+ Use `RemoteSession.open(client, sessionId)` to acquire an existing session. The controller serializes open/create/submit/model/thinking operations, selects prompt versus steering behavior from the remote phase, supports abort and reconnect, and releases its exclusive session lease on disposal. `createTranscriptState()`, `applyTranscriptSnapshot()`, `applyTranscriptProgress()`, and `selectTranscript()` are also exported for lower-level clients that manage transcript state directly.
206
+
207
+ This API is experimental. Match client and server protocol versions, bound transport queues and frame sizes, authenticate the transport, and treat peers as untrusted.
208
+
182
209
  ### Prompting and Message Queueing
183
210
 
184
211
  `PromptOptions` controls prompt expansion, queueing behavior while streaming, and prompt preflight notifications:
@@ -479,6 +506,24 @@ const { session } = await createAgentSession({
479
506
  });
480
507
  ```
481
508
 
509
+ `login()`, `logout()`, `setRuntimeApiKey()`, and `removeRuntimeApiKey()` resolve after the affected provider's cached/built-in catalog, composition, and availability snapshot are locally consistent. They do not wait for remote catalog freshness. If credentials were committed but local synchronization fails, they reject with the exported `CredentialSynchronizationError`; inspect its `providerId`, `operation`, `credential`, and `cause` fields instead of retrying the credential mutation blindly.
510
+
511
+ Public model/auth operations and `ModelRuntime.create({ signal })` accept optional abort signals and are unbounded when omitted. SDK applications own deadline policy for remote catalog freshness:
512
+
513
+ ```typescript
514
+ const signal = AbortSignal.timeout(15_000);
515
+ const result = await modelRuntime.refresh({
516
+ providers: ["anthropic"],
517
+ signal,
518
+ });
519
+ if (result.aborted) console.warn("Catalog refresh timed out; using cached models");
520
+ for (const [providerId, error] of result.errors) {
521
+ console.warn(`Could not refresh ${providerId}:`, error);
522
+ }
523
+ ```
524
+
525
+ A failed or timed-out network refresh does not undo a successful credential operation. `refresh()` starts a new provider generation, so it does not wait behind an older stalled refresh and stale generations cannot publish afterward.
526
+
482
527
  > See [examples/sdk/09-api-keys-and-oauth.ts](../examples/sdk/09-api-keys-and-oauth.ts)
483
528
 
484
529
  ### System Prompt
@@ -1086,6 +1131,7 @@ AgentSessionRuntime
1086
1131
  // Auth and Models
1087
1132
  ModelRuntime // implements pi-ai Models and owns credential storage
1088
1133
  ModelRegistry // synchronous extension compatibility facade
1134
+ CredentialSynchronizationError
1089
1135
  resolveCliModel
1090
1136
  resolveModelScopeWithDiagnostics
1091
1137
 
package/docs/security.md CHANGED
@@ -24,7 +24,7 @@ Trusting a project allows pi to load project resources that require trust, inclu
24
24
  - missing project packages configured through project settings
25
25
  - project-local extensions and project package-managed extensions
26
26
 
27
- Declining trust skips protected resources. `AGENTS.md` and `CLAUDE.md` context files are loaded regardless of project trust unless context loading is disabled. Before trust is resolved, pi only loads context files, user/global extensions, and CLI `-e` extensions. User/global and CLI extensions can handle the `project_trust` event; the first extension that returns a yes/no decision owns the decision.
27
+ Declining trust skips protected resources. Context files such as `AGENTS.override.md`, `AGENTS.md`, and `CLAUDE.md` are loaded regardless of project trust unless context loading is disabled. Before trust is resolved, pi only loads context files, user/global extensions, and CLI `-e` extensions. User/global and CLI extensions can handle the `project_trust` event; the first extension that returns a yes/no decision owns the decision.
28
28
 
29
29
  Non-interactive modes (`-p`, `--mode json`, and `--mode rpc`) do not show a trust prompt. Without an applicable saved trust decision, `defaultProjectTrust: "ask"` and `"never"` ignore such resources, while `"always"` trusts them. Use `--approve`/`-a` or `--no-approve`/`-na` to override project trust for one run.
30
30
 
package/docs/settings.md CHANGED
@@ -65,6 +65,8 @@ Use `/trust` in interactive mode to save a project trust decision for future ses
65
65
  | `outputPad` | number | `1` | Horizontal padding for user messages, assistant messages, and thinking (0 or 1) |
66
66
  | `autocompleteMaxVisible` | number | `5` | Max visible items in autocomplete dropdown (3-20) |
67
67
  | `showHardwareCursor` | boolean | `false` | Show the terminal cursor while TUI positions it for IME support |
68
+ | `tuiMode` | string | `"regular"` | Interactive TUI mode: `"regular"` or experimental `"fullscreen"`. Changes from `/settings` apply immediately; `--tui-mode` overrides this setting at startup |
69
+ | `fullscreenScrollbar` | string | `"auto"` | Fullscreen transcript scrollbar: `"auto"` shows it temporarily while scrolling, `"always"` reserves the rightmost column and keeps it visible, and `"hidden"` hides it. Has no effect in regular TUI mode |
68
70
 
69
71
  For VS Code, include `--wait` so pi resumes after the editor exits:
70
72
 
@@ -178,7 +180,7 @@ Keep `retry.provider.maxRetries` at `0` unless provider-level retries are explic
178
180
  | `terminal.showImages` | boolean | `true` | Show images in terminal (if supported) |
179
181
  | `terminal.imageWidthCells` | number | `60` | Preferred inline image width in terminal cells |
180
182
  | `terminal.clearOnShrink` | boolean | `false` | Clear empty rows when content shrinks (can cause flicker) |
181
- | `images.autoResize` | boolean | `true` | Resize images to 2000x2000 max |
183
+ | `images.autoResize` | boolean | `true` | Resize images to 2000x2000 max. Applies to `@file` attachments, `read`, and images returned by tools |
182
184
  | `images.blockImages` | boolean | `false` | Block all images from being sent to LLM |
183
185
 
184
186
  ### Shell
@@ -226,6 +228,7 @@ When multiple sources specify a session directory, precedence is `--session-dir`
226
228
  | Setting | Type | Default | Description |
227
229
  |---------|------|---------|-------------|
228
230
  | `markdown.codeBlockIndent` | string | `" "` | Indentation for code blocks |
231
+ | `markdown.mermaid` | string | `"streaming"` | Mermaid rendering mode: `"off"`, `"final"`, or `"streaming"` |
229
232
 
230
233
  ### Resources
231
234
 
package/docs/themes.md CHANGED
@@ -52,7 +52,7 @@ vim ~/.pi/agent/themes/my-theme.json
52
52
 
53
53
  ```json
54
54
  {
55
- "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
55
+ "$schema": "https://raw.githubusercontent.com/ming-kang/pi/main/src/modes/interactive/theme/theme-schema.json",
56
56
  "name": "my-theme",
57
57
  "vars": {
58
58
  "primary": "#00aaff",
@@ -71,6 +71,7 @@ vim ~/.pi/agent/themes/my-theme.json
71
71
  "text": "",
72
72
  "thinkingText": "secondary",
73
73
  "selectedBg": "#2d2d30",
74
+ "scrollbarThumb": "#555566",
74
75
  "userMessageBg": "#2d2d30",
75
76
  "userMessageText": "",
76
77
  "customMessageBg": "#2d2d30",
@@ -123,7 +124,7 @@ vim ~/.pi/agent/themes/my-theme.json
123
124
 
124
125
  ```json
125
126
  {
126
- "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
127
+ "$schema": "https://raw.githubusercontent.com/ming-kang/pi/main/src/modes/interactive/theme/theme-schema.json",
127
128
  "name": "my-theme",
128
129
  "vars": {
129
130
  "blue": "#0066cc",
@@ -140,13 +141,13 @@ vim ~/.pi/agent/themes/my-theme.json
140
141
 
141
142
  - `name` is required, must be unique, and must not contain `/`.
142
143
  - `vars` is optional. Define reusable colors here, then reference them in `colors`.
143
- - `colors` must define all 51 required tokens. `thinkingMax` is optional and falls back to `thinkingXhigh`.
144
+ - `colors` must define all 51 required tokens. `thinkingMax` is optional and falls back to `thinkingXhigh`; `scrollbarThumb` is optional and falls back to `selectedBg`.
144
145
 
145
146
  The `$schema` field enables editor auto-completion and validation.
146
147
 
147
148
  ## Color Tokens
148
149
 
149
- Every theme must define all 51 required color tokens. `thinkingMax` is optional for compatibility with existing themes; when omitted, it uses `thinkingXhigh`.
150
+ Every theme must define all 51 required color tokens. `thinkingMax` and `scrollbarThumb` are optional for compatibility with existing themes; when omitted, they use `thinkingXhigh` and `selectedBg`, respectively.
150
151
 
151
152
  ### Core UI (11 colors)
152
153
 
@@ -164,11 +165,12 @@ Every theme must define all 51 required color tokens. `thinkingMax` is optional
164
165
  | `text` | Default text (usually `""`) |
165
166
  | `thinkingText` | Thinking block text |
166
167
 
167
- ### Backgrounds & Content (11 colors)
168
+ ### Backgrounds & Content (11 required, 1 optional)
168
169
 
169
170
  | Token | Purpose |
170
171
  |-------|---------|
171
172
  | `selectedBg` | Selected line background |
173
+ | `scrollbarThumb` | Fullscreen scrollbar thumb background; optional, falls back to `selectedBg` |
172
174
  | `userMessageBg` | User message background |
173
175
  | `userMessageText` | User message text |
174
176
  | `customMessageBg` | Extension message background |
package/docs/usage.md CHANGED
@@ -37,6 +37,7 @@ Type `/` in the editor to open command completion. Extensions can register custo
37
37
  | Command | Description |
38
38
  |---------|-------------|
39
39
  | `/login`, `/logout` | Manage OAuth or API-key credentials |
40
+ | [`/biu`](bundled/extensions/biu.md) | Toggle the TUI-only Biu workflow; inside the mode, open its menu |
40
41
  | [`/llama`](llama-cpp.md) | Download, load, and unload llama.cpp router models |
41
42
  | `/model` | Switch models |
42
43
  | `/scoped-models` | Enable/disable models for Ctrl+P cycling |
@@ -95,6 +96,8 @@ Pi loads `AGENTS.md` or `CLAUDE.md` at startup from:
95
96
  - parent directories, walking up from the current working directory
96
97
  - the current directory
97
98
 
99
+ If a directory contains `AGENTS.override.md`, Pi loads it instead of `AGENTS.md` or `CLAUDE.md` from that directory. Context files from other directories still layer normally.
100
+
98
101
  Use context files for project conventions, commands, safety rules, and preferences. Disable loading with `--no-context-files` or `-nc`.
99
102
 
100
103
  ### System Prompt Files
@@ -231,12 +234,17 @@ pi --no-extensions -e ./my-extension.ts
231
234
  |--------|-------------|
232
235
  | `--system-prompt <text>` | Replace default prompt; context files and skills are still appended |
233
236
  | `--append-system-prompt <text>` | Append to system prompt |
237
+ | `--tui-mode <mode>` | TUI mode: `regular` (default) or experimental `fullscreen` |
234
238
  | `--verbose` | Force verbose startup |
235
239
  | `-a`, `--approve` | Trust project-local files for this run |
236
240
  | `-na`, `--no-approve` | Ignore project-local files for this run |
237
241
  | `-h`, `--help` | Show help |
238
242
  | `-v`, `--version` | Show version |
239
243
 
244
+ In `fullscreen` mode, the transcript scrolls inside the terminal viewport while queued messages, working status, extension widgets, editor, and footer remain fixed at the bottom. Mouse/trackpad input scrolls the region under the pointer; keyboard viewport actions always remain available. Inline images work in terminals that support the Kitty graphics protocol, including Kitty and Ghostty. In iTerm2 they render as text placeholders because its inline-image protocol cannot delete or crop placements during application-owned scrolling. In `regular` mode, pi uses the main screen and terminal-owned scrollback, and iTerm2 inline images continue to render normally.
245
+
246
+ Set **TUI mode** in `/settings` to switch between `regular` and `fullscreen` immediately and choose the default for future sessions.
247
+
240
248
  ### File Arguments
241
249
 
242
250
  Prefix files with `@` to include them in the message:
@@ -16,7 +16,6 @@
16
16
  import type { ExtensionAPI } from "@astralyn/pi";
17
17
  import { convertToLlm, serializeConversation } from "@astralyn/pi";
18
18
  import { uuidv7 } from "@earendil-works/pi-ai";
19
- import { complete } from "@earendil-works/pi-ai/compat";
20
19
 
21
20
  export default function (pi: ExtensionAPI) {
22
21
  pi.on("session_before_compact", async (event, ctx) => {
@@ -32,17 +31,6 @@ export default function (pi: ExtensionAPI) {
32
31
  return;
33
32
  }
34
33
 
35
- // Resolve request auth for the summarization model
36
- const auth = await ctx.modelRegistry.getApiKeyAndHeaders(model);
37
- if (!auth.ok) {
38
- ctx.ui.notify(`Compaction auth failed: ${auth.error}`, "warning");
39
- return;
40
- }
41
- if (!auth.apiKey) {
42
- ctx.ui.notify(`No API key for ${model.provider}, using default compaction`, "warning");
43
- return;
44
- }
45
-
46
34
  // Combine all messages for full summary
47
35
  const allMessages = [...messagesToSummarize, ...turnPrefixMessages];
48
36
 
@@ -88,13 +76,10 @@ ${conversationText}
88
76
 
89
77
  try {
90
78
  // Pass signal to honor abort requests (e.g., user cancels compaction)
91
- const response = await complete(
79
+ const response = await ctx.modelRegistry.complete(
92
80
  model,
93
81
  { messages: summaryMessages },
94
82
  {
95
- apiKey: auth.apiKey,
96
- headers: auth.headers,
97
- env: auth.env,
98
83
  maxTokens: 8192,
99
84
  signal,
100
85
  cacheRetention: "none",
@@ -124,7 +124,7 @@ async function loginAnthropic(callbacks: OAuthLoginCallbacks): Promise<OAuthCred
124
124
  };
125
125
  }
126
126
 
127
- async function refreshAnthropicToken(credentials: OAuthCredentials): Promise<OAuthCredentials> {
127
+ async function refreshAnthropicToken(credentials: OAuthCredentials, signal: AbortSignal): Promise<OAuthCredentials> {
128
128
  const response = await fetch(TOKEN_URL, {
129
129
  method: "POST",
130
130
  headers: { "Content-Type": "application/json" },
@@ -133,6 +133,7 @@ async function refreshAnthropicToken(credentials: OAuthCredentials): Promise<OAu
133
133
  client_id: CLIENT_ID,
134
134
  refresh_token: credentials.refresh,
135
135
  }),
136
+ signal,
136
137
  });
137
138
 
138
139
  if (!response.ok) {
@@ -1,14 +1,14 @@
1
1
  {
2
- "name": "pi-extension-custom-provider-anthropic",
3
- "version": "0.82.0",
2
+ "name": "pi-extension-custom-provider",
3
+ "version": "0.84.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
- "name": "pi-extension-custom-provider-anthropic",
9
- "version": "0.82.0",
8
+ "name": "pi-extension-custom-provider",
9
+ "version": "0.84.1",
10
10
  "dependencies": {
11
- "@anthropic-ai/sdk": "0.52.0"
11
+ "@anthropic-ai/sdk": "^0.52.0"
12
12
  }
13
13
  },
14
14
  "node_modules/@anthropic-ai/sdk": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-anthropic",
3
3
  "private": true,
4
- "version": "0.82.0",
4
+ "version": "0.84.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -274,7 +274,7 @@ async function loginGitLab(callbacks: OAuthLoginCallbacks): Promise<OAuthCredent
274
274
  };
275
275
  }
276
276
 
277
- async function refreshGitLabToken(credentials: OAuthCredentials): Promise<OAuthCredentials> {
277
+ async function refreshGitLabToken(credentials: OAuthCredentials, signal: AbortSignal): Promise<OAuthCredentials> {
278
278
  const response = await fetch(`${GITLAB_COM_URL}/oauth/token`, {
279
279
  method: "POST",
280
280
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
@@ -283,6 +283,7 @@ async function refreshGitLabToken(credentials: OAuthCredentials): Promise<OAuthC
283
283
  grant_type: "refresh_token",
284
284
  refresh_token: credentials.refresh,
285
285
  }).toString(),
286
+ signal,
286
287
  });
287
288
  if (!response.ok) throw new Error(`Token refresh failed: ${await response.text()}`);
288
289
  const data = (await response.json()) as {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-gitlab-duo",
3
3
  "private": true,
4
- "version": "0.82.0",
4
+ "version": "0.84.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,11 +1,12 @@
1
1
  import { existsSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join, resolve } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
+ import { gunzipSync } from "node:zlib";
4
5
 
5
6
  // Get the bundled WAD path (relative to this module)
6
7
  const __dirname = dirname(fileURLToPath(import.meta.url));
7
8
  const BUNDLED_WAD = join(__dirname, "doom1.wad");
8
- const WAD_URL = "https://distro.ibiblio.org/slitaz/sources/packages/d/doom1.wad";
9
+ const WAD_URL = "https://www.gamers.org/pub/idgames/idstuff/doom/doom-1.8.wad.gz";
9
10
 
10
11
  const DEFAULT_WAD_PATHS = ["./doom1.wad", "./DOOM1.WAD", "~/doom1.wad", "~/.doom/doom1.wad"];
11
12
 
@@ -42,8 +43,11 @@ export async function ensureWadFile(): Promise<string | null> {
42
43
  if (!response.ok) {
43
44
  throw new Error(`HTTP ${response.status}`);
44
45
  }
45
- const buffer = await response.arrayBuffer();
46
- writeFileSync(BUNDLED_WAD, Buffer.from(buffer));
46
+ const wad = gunzipSync(Buffer.from(await response.arrayBuffer()));
47
+ if (wad.subarray(0, 4).toString("ascii") !== "IWAD") {
48
+ throw new Error("Downloaded file is not a valid IWAD");
49
+ }
50
+ writeFileSync(BUNDLED_WAD, wad);
47
51
  return BUNDLED_WAD;
48
52
  } catch {
49
53
  return null;
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
2
+ "$schema": "https://raw.githubusercontent.com/ming-kang/pi/main/src/modes/interactive/theme/theme-schema.json",
3
3
  "name": "dynamic-resources",
4
4
  "vars": {
5
5
  "cyan": "#00d7ff",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
- "version": "0.82.0",
3
+ "version": "0.84.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-gondolin",
9
- "version": "0.82.0",
9
+ "version": "0.84.1",
10
10
  "dependencies": {
11
11
  "@earendil-works/gondolin": "0.12.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
3
  "private": true,
4
- "version": "0.82.0",
4
+ "version": "0.84.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -15,8 +15,7 @@
15
15
  import type { ExtensionAPI, SessionEntry } from "@astralyn/pi";
16
16
  import { BorderedLoader, convertToLlm, serializeConversation } from "@astralyn/pi";
17
17
  import type { AgentMessage } from "@earendil-works/pi-agent-core";
18
- import { uuidv7 } from "@earendil-works/pi-ai";
19
- import { complete, type Message } from "@earendil-works/pi-ai/compat";
18
+ import { type Message, uuidv7 } from "@earendil-works/pi-ai";
20
19
 
21
20
  const SYSTEM_PROMPT = `You are a context transfer assistant. Given a conversation history and the user's goal for a new thread, generate a focused prompt that:
22
21
 
@@ -118,11 +117,6 @@ export default function (pi: ExtensionAPI) {
118
117
  loader.onAbort = () => done(null);
119
118
 
120
119
  const doGenerate = async () => {
121
- const auth = await ctx.modelRegistry.getApiKeyAndHeaders(ctx.model!);
122
- if (!auth.ok || !auth.apiKey) {
123
- throw new Error(auth.ok ? `No API key for ${ctx.model!.provider}` : auth.error);
124
- }
125
-
126
120
  const userMessage: Message = {
127
121
  role: "user",
128
122
  content: [
@@ -134,13 +128,10 @@ export default function (pi: ExtensionAPI) {
134
128
  timestamp: Date.now(),
135
129
  };
136
130
 
137
- const response = await complete(
131
+ const response = await ctx.modelRegistry.complete(
138
132
  ctx.model!,
139
133
  { systemPrompt: SYSTEM_PROMPT, messages: [userMessage] },
140
134
  {
141
- apiKey: auth.apiKey,
142
- headers: auth.headers,
143
- env: auth.env,
144
135
  signal: loader.signal,
145
136
  cacheRetention: "none",
146
137
  sessionId: uuidv7(),
@@ -9,7 +9,7 @@
9
9
 
10
10
  import type { ExtensionAPI } from "@astralyn/pi";
11
11
  import { BorderedLoader } from "@astralyn/pi";
12
- import { complete, type UserMessage } from "@earendil-works/pi-ai/compat";
12
+ import type { UserMessage } from "@earendil-works/pi-ai";
13
13
 
14
14
  const SYSTEM_PROMPT = `You are a question extractor. Given text from a conversation, extract any questions that need answering and format them for the user to fill in.
15
15
 
@@ -77,20 +77,16 @@ export default function (pi: ExtensionAPI) {
77
77
 
78
78
  // Do the work
79
79
  const doExtract = async () => {
80
- const auth = await ctx.modelRegistry.getApiKeyAndHeaders(ctx.model!);
81
- if (!auth.ok || !auth.apiKey) {
82
- throw new Error(auth.ok ? `No API key for ${ctx.model!.provider}` : auth.error);
83
- }
84
80
  const userMessage: UserMessage = {
85
81
  role: "user",
86
82
  content: [{ type: "text", text: lastAssistantText! }],
87
83
  timestamp: Date.now(),
88
84
  };
89
85
 
90
- const response = await complete(
86
+ const response = await ctx.modelRegistry.complete(
91
87
  ctx.model!,
92
88
  { systemPrompt: SYSTEM_PROMPT, messages: [userMessage] },
93
- { apiKey: auth.apiKey, headers: auth.headers, env: auth.env, signal: loader.signal },
89
+ { signal: loader.signal },
94
90
  );
95
91
 
96
92
  if (response.stopReason === "aborted") {
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "1.12.0",
3
+ "version": "1.14.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "1.12.0",
9
+ "version": "1.14.1",
10
10
  "dependencies": {
11
- "@anthropic-ai/sandbox-runtime": "0.0.26"
11
+ "@anthropic-ai/sandbox-runtime": "^0.0.26"
12
12
  }
13
13
  },
14
14
  "node_modules/@anthropic-ai/sandbox-runtime": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
3
  "private": true,
4
- "version": "1.12.0",
4
+ "version": "1.14.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",