@astralyn/pi 0.82.7 → 0.84.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 (781) hide show
  1. package/CHANGELOG.md +78 -5099
  2. package/README.md +12 -111
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/register-bedrock.d.ts.map +1 -1
  6. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  7. package/dist/bun/restore-sandbox-env.js.map +1 -1
  8. package/dist/cli/args.d.ts +2 -0
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js +28 -2
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/config-selector.d.ts.map +1 -1
  13. package/dist/cli/config-selector.js +2 -2
  14. package/dist/cli/config-selector.js.map +1 -1
  15. package/dist/cli/credential-print.d.ts +23 -0
  16. package/dist/cli/credential-print.d.ts.map +1 -0
  17. package/dist/cli/credential-print.js +117 -0
  18. package/dist/cli/credential-print.js.map +1 -0
  19. package/dist/cli/experimental/auth.d.ts +16 -0
  20. package/dist/cli/experimental/auth.d.ts.map +1 -0
  21. package/dist/cli/experimental/auth.js +13 -0
  22. package/dist/cli/experimental/auth.js.map +1 -0
  23. package/dist/cli/experimental/cli.d.ts +6 -0
  24. package/dist/cli/experimental/cli.d.ts.map +1 -0
  25. package/dist/cli/experimental/cli.js +5 -0
  26. package/dist/cli/experimental/cli.js.map +1 -0
  27. package/dist/cli/experimental/command-options.d.ts +17 -0
  28. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  29. package/dist/cli/experimental/command-options.js +35 -0
  30. package/dist/cli/experimental/command-options.js.map +1 -0
  31. package/dist/cli/experimental/command.d.ts +63 -0
  32. package/dist/cli/experimental/command.d.ts.map +1 -0
  33. package/dist/cli/experimental/command.js +127 -0
  34. package/dist/cli/experimental/command.js.map +1 -0
  35. package/dist/cli/experimental/commands/client.d.ts +13 -0
  36. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  37. package/dist/cli/experimental/commands/client.js +25 -0
  38. package/dist/cli/experimental/commands/client.js.map +1 -0
  39. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  40. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  41. package/dist/cli/experimental/commands/pi.js +28 -0
  42. package/dist/cli/experimental/commands/pi.js.map +1 -0
  43. package/dist/cli/experimental/commands/server.d.ts +13 -0
  44. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  45. package/dist/cli/experimental/commands/server.js +25 -0
  46. package/dist/cli/experimental/commands/server.js.map +1 -0
  47. package/dist/cli/experimental/transport-address.d.ts +10 -0
  48. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  49. package/dist/cli/experimental/transport-address.js +38 -0
  50. package/dist/cli/experimental/transport-address.js.map +1 -0
  51. package/dist/cli/file-processor.d.ts.map +1 -1
  52. package/dist/cli/file-processor.js.map +1 -1
  53. package/dist/cli/initial-message.d.ts +1 -1
  54. package/dist/cli/initial-message.d.ts.map +1 -1
  55. package/dist/cli/initial-message.js.map +1 -1
  56. package/dist/cli/list-models.d.ts +1 -1
  57. package/dist/cli/list-models.d.ts.map +1 -1
  58. package/dist/cli/list-models.js +2 -2
  59. package/dist/cli/list-models.js.map +1 -1
  60. package/dist/cli/project-trust.d.ts.map +1 -1
  61. package/dist/cli/project-trust.js.map +1 -1
  62. package/dist/cli/session-picker.d.ts.map +1 -1
  63. package/dist/cli/session-picker.js.map +1 -1
  64. package/dist/cli/startup-ui.d.ts +1 -1
  65. package/dist/cli/startup-ui.d.ts.map +1 -1
  66. package/dist/cli/startup-ui.js +2 -2
  67. package/dist/cli/startup-ui.js.map +1 -1
  68. package/dist/cli.d.ts.map +1 -1
  69. package/dist/cli.js +1 -0
  70. package/dist/cli.js.map +1 -1
  71. package/dist/client/index.d.ts +3 -0
  72. package/dist/client/index.d.ts.map +1 -0
  73. package/dist/client/index.js +3 -0
  74. package/dist/client/index.js.map +1 -0
  75. package/dist/client/remote-session.d.ts +53 -0
  76. package/dist/client/remote-session.d.ts.map +1 -0
  77. package/dist/client/remote-session.js +340 -0
  78. package/dist/client/remote-session.js.map +1 -0
  79. package/dist/client/transcript.d.ts +12 -0
  80. package/dist/client/transcript.d.ts.map +1 -0
  81. package/dist/client/transcript.js +98 -0
  82. package/dist/client/transcript.js.map +1 -0
  83. package/dist/config.d.ts.map +1 -1
  84. package/dist/config.js.map +1 -1
  85. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  86. package/dist/core/agent-session-runtime.js +3 -8
  87. package/dist/core/agent-session-runtime.js.map +1 -1
  88. package/dist/core/agent-session-services.d.ts +1 -0
  89. package/dist/core/agent-session-services.d.ts.map +1 -1
  90. package/dist/core/agent-session-services.js +1 -0
  91. package/dist/core/agent-session-services.js.map +1 -1
  92. package/dist/core/agent-session.d.ts +31 -11
  93. package/dist/core/agent-session.d.ts.map +1 -1
  94. package/dist/core/agent-session.js +189 -192
  95. package/dist/core/agent-session.js.map +1 -1
  96. package/dist/core/auth-guidance.d.ts.map +1 -1
  97. package/dist/core/auth-guidance.js.map +1 -1
  98. package/dist/core/auth-storage.d.ts +15 -9
  99. package/dist/core/auth-storage.d.ts.map +1 -1
  100. package/dist/core/auth-storage.js +159 -41
  101. package/dist/core/auth-storage.js.map +1 -1
  102. package/dist/core/bash-executor.d.ts.map +1 -1
  103. package/dist/core/bash-executor.js.map +1 -1
  104. package/dist/core/cache-stats.d.ts.map +1 -1
  105. package/dist/core/cache-stats.js.map +1 -1
  106. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  107. package/dist/core/compaction/branch-summarization.js.map +1 -1
  108. package/dist/core/compaction/compaction.d.ts.map +1 -1
  109. package/dist/core/compaction/compaction.js.map +1 -1
  110. package/dist/core/compaction/index.d.ts.map +1 -1
  111. package/dist/core/compaction/utils.d.ts.map +1 -1
  112. package/dist/core/compaction/utils.js.map +1 -1
  113. package/dist/core/defaults.d.ts.map +1 -1
  114. package/dist/core/diagnostics.d.ts.map +1 -1
  115. package/dist/core/event-bus.d.ts.map +1 -1
  116. package/dist/core/event-bus.js.map +1 -1
  117. package/dist/core/exec.d.ts.map +1 -1
  118. package/dist/core/exec.js.map +1 -1
  119. package/dist/core/experimental.d.ts.map +1 -1
  120. package/dist/core/experimental.js.map +1 -1
  121. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  122. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  123. package/dist/core/export-html/index.d.ts.map +1 -1
  124. package/dist/core/export-html/index.js.map +1 -1
  125. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  126. package/dist/core/export-html/tool-renderer.js.map +1 -1
  127. package/dist/core/extensions/index.d.ts +1 -1
  128. package/dist/core/extensions/index.d.ts.map +1 -1
  129. package/dist/core/extensions/index.js.map +1 -1
  130. package/dist/core/extensions/loader.d.ts.map +1 -1
  131. package/dist/core/extensions/loader.js +43 -20
  132. package/dist/core/extensions/loader.js.map +1 -1
  133. package/dist/core/extensions/runner.d.ts +3 -1
  134. package/dist/core/extensions/runner.d.ts.map +1 -1
  135. package/dist/core/extensions/runner.js +31 -28
  136. package/dist/core/extensions/runner.js.map +1 -1
  137. package/dist/core/extensions/types.d.ts +28 -3
  138. package/dist/core/extensions/types.d.ts.map +1 -1
  139. package/dist/core/extensions/types.js.map +1 -1
  140. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  141. package/dist/core/extensions/wrapper.js.map +1 -1
  142. package/dist/core/footer-data-provider.d.ts +10 -0
  143. package/dist/core/footer-data-provider.d.ts.map +1 -1
  144. package/dist/core/footer-data-provider.js +18 -19
  145. package/dist/core/footer-data-provider.js.map +1 -1
  146. package/dist/core/http-dispatcher.d.ts.map +1 -1
  147. package/dist/core/http-dispatcher.js +5 -0
  148. package/dist/core/http-dispatcher.js.map +1 -1
  149. package/dist/core/index.d.ts.map +1 -1
  150. package/dist/core/keybindings.d.ts +157 -125
  151. package/dist/core/keybindings.d.ts.map +1 -1
  152. package/dist/core/keybindings.js +0 -1
  153. package/dist/core/keybindings.js.map +1 -1
  154. package/dist/core/messages.d.ts.map +1 -1
  155. package/dist/core/messages.js.map +1 -1
  156. package/dist/core/model-config.d.ts +37 -13
  157. package/dist/core/model-config.d.ts.map +1 -1
  158. package/dist/core/model-config.js +4 -2
  159. package/dist/core/model-config.js.map +1 -1
  160. package/dist/core/model-registry.d.ts +5 -3
  161. package/dist/core/model-registry.d.ts.map +1 -1
  162. package/dist/core/model-registry.js +13 -11
  163. package/dist/core/model-registry.js.map +1 -1
  164. package/dist/core/model-resolver.d.ts +4 -3
  165. package/dist/core/model-resolver.d.ts.map +1 -1
  166. package/dist/core/model-resolver.js +41 -10
  167. package/dist/core/model-resolver.js.map +1 -1
  168. package/dist/core/model-runtime.d.ts +30 -13
  169. package/dist/core/model-runtime.d.ts.map +1 -1
  170. package/dist/core/model-runtime.js +239 -91
  171. package/dist/core/model-runtime.js.map +1 -1
  172. package/dist/core/models-store.d.ts +12 -7
  173. package/dist/core/models-store.d.ts.map +1 -1
  174. package/dist/core/models-store.js +84 -16
  175. package/dist/core/models-store.js.map +1 -1
  176. package/dist/core/output-guard.d.ts.map +1 -1
  177. package/dist/core/output-guard.js.map +1 -1
  178. package/dist/core/package-manager.d.ts +4 -1
  179. package/dist/core/package-manager.d.ts.map +1 -1
  180. package/dist/core/package-manager.js +76 -48
  181. package/dist/core/package-manager.js.map +1 -1
  182. package/dist/core/pi-manifest.d.ts +8 -0
  183. package/dist/core/pi-manifest.d.ts.map +1 -0
  184. package/dist/core/pi-manifest.js +25 -0
  185. package/dist/core/pi-manifest.js.map +1 -0
  186. package/dist/core/project-trust.d.ts.map +1 -1
  187. package/dist/core/project-trust.js.map +1 -1
  188. package/dist/core/prompt-templates.d.ts.map +1 -1
  189. package/dist/core/prompt-templates.js.map +1 -1
  190. package/dist/core/provider-attribution.d.ts.map +1 -1
  191. package/dist/core/provider-attribution.js.map +1 -1
  192. package/dist/core/provider-composer.d.ts +4 -1
  193. package/dist/core/provider-composer.d.ts.map +1 -1
  194. package/dist/core/provider-composer.js +36 -15
  195. package/dist/core/provider-composer.js.map +1 -1
  196. package/dist/core/radius.d.ts.map +1 -1
  197. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  198. package/dist/core/remote-catalog-provider.js +73 -67
  199. package/dist/core/remote-catalog-provider.js.map +1 -1
  200. package/dist/core/resolve-config-value.d.ts.map +1 -1
  201. package/dist/core/resolve-config-value.js.map +1 -1
  202. package/dist/core/resource-loader.d.ts +15 -0
  203. package/dist/core/resource-loader.d.ts.map +1 -1
  204. package/dist/core/resource-loader.js +68 -51
  205. package/dist/core/resource-loader.js.map +1 -1
  206. package/dist/core/runtime-credentials.d.ts +5 -5
  207. package/dist/core/runtime-credentials.d.ts.map +1 -1
  208. package/dist/core/runtime-credentials.js +12 -10
  209. package/dist/core/runtime-credentials.js.map +1 -1
  210. package/dist/core/sdk.d.ts.map +1 -1
  211. package/dist/core/sdk.js.map +1 -1
  212. package/dist/core/session-cwd.d.ts.map +1 -1
  213. package/dist/core/session-cwd.js +0 -1
  214. package/dist/core/session-cwd.js.map +1 -1
  215. package/dist/core/session-manager.d.ts.map +1 -1
  216. package/dist/core/session-manager.js +10 -12
  217. package/dist/core/session-manager.js.map +1 -1
  218. package/dist/core/settings-manager.d.ts +12 -0
  219. package/dist/core/settings-manager.d.ts.map +1 -1
  220. package/dist/core/settings-manager.js +47 -33
  221. package/dist/core/settings-manager.js.map +1 -1
  222. package/dist/core/skills.d.ts.map +1 -1
  223. package/dist/core/skills.js.map +1 -1
  224. package/dist/core/slash-commands.d.ts.map +1 -1
  225. package/dist/core/source-info.d.ts.map +1 -1
  226. package/dist/core/source-info.js.map +1 -1
  227. package/dist/core/system-prompt.d.ts.map +1 -1
  228. package/dist/core/system-prompt.js.map +1 -1
  229. package/dist/core/telemetry.d.ts.map +1 -1
  230. package/dist/core/telemetry.js.map +1 -1
  231. package/dist/core/timings.d.ts.map +1 -1
  232. package/dist/core/timings.js.map +1 -1
  233. package/dist/core/tools/bash.d.ts.map +1 -1
  234. package/dist/core/tools/bash.js +12 -10
  235. package/dist/core/tools/bash.js.map +1 -1
  236. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  237. package/dist/core/tools/edit-diff.js.map +1 -1
  238. package/dist/core/tools/edit.d.ts.map +1 -1
  239. package/dist/core/tools/edit.js +4 -3
  240. package/dist/core/tools/edit.js.map +1 -1
  241. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  242. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  243. package/dist/core/tools/find.d.ts +3 -0
  244. package/dist/core/tools/find.d.ts.map +1 -1
  245. package/dist/core/tools/find.js +47 -20
  246. package/dist/core/tools/find.js.map +1 -1
  247. package/dist/core/tools/grep.d.ts.map +1 -1
  248. package/dist/core/tools/grep.js.map +1 -1
  249. package/dist/core/tools/index.d.ts.map +1 -1
  250. package/dist/core/tools/index.js.map +1 -1
  251. package/dist/core/tools/ls.d.ts.map +1 -1
  252. package/dist/core/tools/ls.js.map +1 -1
  253. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  254. package/dist/core/tools/output-accumulator.js +12 -18
  255. package/dist/core/tools/output-accumulator.js.map +1 -1
  256. package/dist/core/tools/path-utils.d.ts.map +1 -1
  257. package/dist/core/tools/path-utils.js.map +1 -1
  258. package/dist/core/tools/read.d.ts.map +1 -1
  259. package/dist/core/tools/read.js +1 -1
  260. package/dist/core/tools/read.js.map +1 -1
  261. package/dist/core/tools/render-utils.d.ts.map +1 -1
  262. package/dist/core/tools/render-utils.js.map +1 -1
  263. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  264. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  265. package/dist/core/tools/truncate.d.ts.map +1 -1
  266. package/dist/core/tools/truncate.js.map +1 -1
  267. package/dist/core/tools/write.d.ts.map +1 -1
  268. package/dist/core/tools/write.js +0 -1
  269. package/dist/core/tools/write.js.map +1 -1
  270. package/dist/core/trust-manager.d.ts.map +1 -1
  271. package/dist/core/trust-manager.js +48 -10
  272. package/dist/core/trust-manager.js.map +1 -1
  273. package/dist/core/usage-totals.d.ts.map +1 -1
  274. package/dist/core/usage-totals.js.map +1 -1
  275. package/dist/extensions/biu/index.d.ts +19 -0
  276. package/dist/extensions/biu/index.d.ts.map +1 -0
  277. package/dist/extensions/biu/index.js +350 -0
  278. package/dist/extensions/biu/index.js.map +1 -0
  279. package/dist/extensions/biu/prompts.d.ts +26 -0
  280. package/dist/extensions/biu/prompts.d.ts.map +1 -0
  281. package/dist/extensions/biu/prompts.js +260 -0
  282. package/dist/extensions/biu/prompts.js.map +1 -0
  283. package/dist/extensions/biu/workspace.d.ts +122 -0
  284. package/dist/extensions/biu/workspace.d.ts.map +1 -0
  285. package/dist/extensions/biu/workspace.js +404 -0
  286. package/dist/extensions/biu/workspace.js.map +1 -0
  287. package/dist/extensions/deepwiki/client.d.ts.map +1 -1
  288. package/dist/extensions/deepwiki/client.js.map +1 -1
  289. package/dist/extensions/deepwiki/constants.d.ts.map +1 -1
  290. package/dist/extensions/deepwiki/constants.js.map +1 -1
  291. package/dist/extensions/deepwiki/contents.d.ts.map +1 -1
  292. package/dist/extensions/deepwiki/contents.js.map +1 -1
  293. package/dist/extensions/deepwiki/execute.d.ts.map +1 -1
  294. package/dist/extensions/deepwiki/execute.js.map +1 -1
  295. package/dist/extensions/deepwiki/http.d.ts.map +1 -1
  296. package/dist/extensions/deepwiki/http.js.map +1 -1
  297. package/dist/extensions/deepwiki/index.d.ts.map +1 -1
  298. package/dist/extensions/deepwiki/index.js.map +1 -1
  299. package/dist/extensions/deepwiki/render.d.ts.map +1 -1
  300. package/dist/extensions/deepwiki/render.js.map +1 -1
  301. package/dist/extensions/deepwiki/schema.d.ts +1 -1
  302. package/dist/extensions/deepwiki/schema.d.ts.map +1 -1
  303. package/dist/extensions/deepwiki/schema.js.map +1 -1
  304. package/dist/extensions/index.d.ts.map +1 -1
  305. package/dist/extensions/index.js +2 -2
  306. package/dist/extensions/index.js.map +1 -1
  307. package/dist/extensions/llama/client.d.ts.map +1 -1
  308. package/dist/extensions/llama/client.js +0 -2
  309. package/dist/extensions/llama/client.js.map +1 -1
  310. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  311. package/dist/extensions/llama/huggingface.js +0 -2
  312. package/dist/extensions/llama/huggingface.js.map +1 -1
  313. package/dist/extensions/llama/index.d.ts.map +1 -1
  314. package/dist/extensions/llama/index.js +11 -2
  315. package/dist/extensions/llama/index.js.map +1 -1
  316. package/dist/extensions/llama/provider.d.ts.map +1 -1
  317. package/dist/extensions/llama/provider.js +22 -8
  318. package/dist/extensions/llama/provider.js.map +1 -1
  319. package/dist/extensions/llama/ui.d.ts.map +1 -1
  320. package/dist/extensions/llama/ui.js +12 -28
  321. package/dist/extensions/llama/ui.js.map +1 -1
  322. package/dist/extensions/question/constants.d.ts.map +1 -1
  323. package/dist/extensions/question/constants.js.map +1 -1
  324. package/dist/extensions/question/dialog-primitives.d.ts.map +1 -1
  325. package/dist/extensions/question/dialog-primitives.js.map +1 -1
  326. package/dist/extensions/question/dialog.d.ts.map +1 -1
  327. package/dist/extensions/question/dialog.js.map +1 -1
  328. package/dist/extensions/question/index.d.ts.map +1 -1
  329. package/dist/extensions/question/index.js.map +1 -1
  330. package/dist/extensions/question/limits.d.ts.map +1 -1
  331. package/dist/extensions/question/render-cache.d.ts.map +1 -1
  332. package/dist/extensions/question/render-cache.js +3 -4
  333. package/dist/extensions/question/render-cache.js.map +1 -1
  334. package/dist/extensions/question/render.d.ts.map +1 -1
  335. package/dist/extensions/question/render.js.map +1 -1
  336. package/dist/extensions/question/results.d.ts.map +1 -1
  337. package/dist/extensions/question/results.js.map +1 -1
  338. package/dist/extensions/question/schema.d.ts.map +1 -1
  339. package/dist/extensions/question/schema.js.map +1 -1
  340. package/dist/extensions/question/state.d.ts.map +1 -1
  341. package/dist/extensions/question/state.js.map +1 -1
  342. package/dist/extensions/question/types.d.ts.map +1 -1
  343. package/dist/extensions/rewind/anchor.d.ts.map +1 -1
  344. package/dist/extensions/rewind/anchor.js.map +1 -1
  345. package/dist/extensions/rewind/config.d.ts.map +1 -1
  346. package/dist/extensions/rewind/config.js.map +1 -1
  347. package/dist/extensions/rewind/engine.d.ts.map +1 -1
  348. package/dist/extensions/rewind/engine.js.map +1 -1
  349. package/dist/extensions/rewind/gc.d.ts.map +1 -1
  350. package/dist/extensions/rewind/gc.js.map +1 -1
  351. package/dist/extensions/rewind/index.d.ts.map +1 -1
  352. package/dist/extensions/rewind/index.js.map +1 -1
  353. package/dist/extensions/rewind/menu.d.ts.map +1 -1
  354. package/dist/extensions/rewind/menu.js.map +1 -1
  355. package/dist/extensions/rewind/paths.d.ts.map +1 -1
  356. package/dist/extensions/rewind/paths.js.map +1 -1
  357. package/dist/extensions/rewind/restore.d.ts.map +1 -1
  358. package/dist/extensions/rewind/restore.js.map +1 -1
  359. package/dist/extensions/rewind/snapshot.d.ts.map +1 -1
  360. package/dist/extensions/rewind/snapshot.js.map +1 -1
  361. package/dist/extensions/rewind/storage.d.ts.map +1 -1
  362. package/dist/extensions/rewind/storage.js.map +1 -1
  363. package/dist/extensions/rewind/text.d.ts.map +1 -1
  364. package/dist/extensions/rewind/text.js.map +1 -1
  365. package/dist/extensions/rewind/tool-path.d.ts.map +1 -1
  366. package/dist/extensions/rewind/tool-path.js.map +1 -1
  367. package/dist/extensions/router/constants.d.ts +3 -0
  368. package/dist/extensions/router/constants.d.ts.map +1 -1
  369. package/dist/extensions/router/constants.js +3 -0
  370. package/dist/extensions/router/constants.js.map +1 -1
  371. package/dist/extensions/router/dialog.d.ts +14 -7
  372. package/dist/extensions/router/dialog.d.ts.map +1 -1
  373. package/dist/extensions/router/dialog.js +70 -132
  374. package/dist/extensions/router/dialog.js.map +1 -1
  375. package/dist/extensions/router/index.d.ts.map +1 -1
  376. package/dist/extensions/router/index.js.map +1 -1
  377. package/dist/extensions/router/presets.d.ts +8 -3
  378. package/dist/extensions/router/presets.d.ts.map +1 -1
  379. package/dist/extensions/router/presets.js +33 -17
  380. package/dist/extensions/router/presets.js.map +1 -1
  381. package/dist/extensions/router/probe.d.ts.map +1 -1
  382. package/dist/extensions/router/probe.js.map +1 -1
  383. package/dist/extensions/router/register.d.ts +3 -3
  384. package/dist/extensions/router/register.d.ts.map +1 -1
  385. package/dist/extensions/router/register.js.map +1 -1
  386. package/dist/extensions/router/store.d.ts.map +1 -1
  387. package/dist/extensions/router/store.js.map +1 -1
  388. package/dist/extensions/router/stream.d.ts.map +1 -1
  389. package/dist/extensions/router/stream.js.map +1 -1
  390. package/dist/extensions/router/types.d.ts.map +1 -1
  391. package/dist/extensions/router/ui.d.ts +11 -2
  392. package/dist/extensions/router/ui.d.ts.map +1 -1
  393. package/dist/extensions/router/ui.js +316 -171
  394. package/dist/extensions/router/ui.js.map +1 -1
  395. package/dist/extensions/statusline/index.d.ts.map +1 -1
  396. package/dist/extensions/statusline/index.js +17 -9
  397. package/dist/extensions/statusline/index.js.map +1 -1
  398. package/dist/extensions/subagent/activity.d.ts.map +1 -1
  399. package/dist/extensions/subagent/activity.js.map +1 -1
  400. package/dist/extensions/subagent/agents.d.ts.map +1 -1
  401. package/dist/extensions/subagent/agents.js.map +1 -1
  402. package/dist/extensions/subagent/constants.d.ts.map +1 -1
  403. package/dist/extensions/subagent/index.d.ts +3 -0
  404. package/dist/extensions/subagent/index.d.ts.map +1 -1
  405. package/dist/extensions/subagent/index.js +83 -12
  406. package/dist/extensions/subagent/index.js.map +1 -1
  407. package/dist/extensions/subagent/picker.d.ts.map +1 -1
  408. package/dist/extensions/subagent/picker.js +2 -9
  409. package/dist/extensions/subagent/picker.js.map +1 -1
  410. package/dist/extensions/subagent/render.d.ts.map +1 -1
  411. package/dist/extensions/subagent/render.js +33 -9
  412. package/dist/extensions/subagent/render.js.map +1 -1
  413. package/dist/extensions/subagent/resolve.d.ts.map +1 -1
  414. package/dist/extensions/subagent/resolve.js.map +1 -1
  415. package/dist/extensions/subagent/retry.d.ts.map +1 -1
  416. package/dist/extensions/subagent/retry.js.map +1 -1
  417. package/dist/extensions/subagent/runner.d.ts +2 -1
  418. package/dist/extensions/subagent/runner.d.ts.map +1 -1
  419. package/dist/extensions/subagent/runner.js +10 -12
  420. package/dist/extensions/subagent/runner.js.map +1 -1
  421. package/dist/extensions/subagent/schema.d.ts.map +1 -1
  422. package/dist/extensions/subagent/schema.js.map +1 -1
  423. package/dist/extensions/subagent/sdk-runner.d.ts.map +1 -1
  424. package/dist/extensions/subagent/sdk-runner.js +41 -1
  425. package/dist/extensions/subagent/sdk-runner.js.map +1 -1
  426. package/dist/extensions/subagent/settings.d.ts.map +1 -1
  427. package/dist/extensions/subagent/settings.js +46 -36
  428. package/dist/extensions/subagent/settings.js.map +1 -1
  429. package/dist/extensions/subagent/types.d.ts +0 -1
  430. package/dist/extensions/subagent/types.d.ts.map +1 -1
  431. package/dist/extensions/subagent/types.js.map +1 -1
  432. package/dist/extensions/todo/constants.d.ts.map +1 -1
  433. package/dist/extensions/todo/constants.js.map +1 -1
  434. package/dist/extensions/todo/index.d.ts.map +1 -1
  435. package/dist/extensions/todo/index.js.map +1 -1
  436. package/dist/extensions/todo/overlay.d.ts.map +1 -1
  437. package/dist/extensions/todo/overlay.js +6 -10
  438. package/dist/extensions/todo/overlay.js.map +1 -1
  439. package/dist/extensions/todo/schema.d.ts +2 -2
  440. package/dist/extensions/todo/schema.d.ts.map +1 -1
  441. package/dist/extensions/todo/state.d.ts.map +1 -1
  442. package/dist/extensions/todo/state.js.map +1 -1
  443. package/dist/extensions/todo/view.d.ts.map +1 -1
  444. package/dist/extensions/todo/view.js.map +1 -1
  445. package/dist/index.d.ts +4 -4
  446. package/dist/index.d.ts.map +1 -1
  447. package/dist/index.js +1 -1
  448. package/dist/index.js.map +1 -1
  449. package/dist/main.d.ts.map +1 -1
  450. package/dist/main.js +57 -5
  451. package/dist/main.js.map +1 -1
  452. package/dist/migrations.d.ts.map +1 -1
  453. package/dist/migrations.js.map +1 -1
  454. package/dist/modes/index.d.ts +1 -0
  455. package/dist/modes/index.d.ts.map +1 -1
  456. package/dist/modes/index.js.map +1 -1
  457. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  458. package/dist/modes/interactive/components/armin.js +6 -10
  459. package/dist/modes/interactive/components/armin.js.map +1 -1
  460. package/dist/modes/interactive/components/assistant-message.d.ts +5 -2
  461. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  462. package/dist/modes/interactive/components/assistant-message.js +13 -11
  463. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  464. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  465. package/dist/modes/interactive/components/bash-execution.js +4 -10
  466. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  467. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  468. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  469. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  470. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/branch-summary-message.js +1 -3
  472. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  473. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  474. package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
  475. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  476. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  477. package/dist/modes/interactive/components/config-selector.js +5 -22
  478. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  479. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  480. package/dist/modes/interactive/components/countdown-timer.js +1 -7
  481. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  482. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  483. package/dist/modes/interactive/components/custom-editor.js +8 -8
  484. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  485. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  486. package/dist/modes/interactive/components/custom-entry.js +1 -4
  487. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  488. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  489. package/dist/modes/interactive/components/custom-message.js +1 -7
  490. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  491. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  492. package/dist/modes/interactive/components/daxnuts.js +6 -8
  493. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  494. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  495. package/dist/modes/interactive/components/diff.js.map +1 -1
  496. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  497. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  498. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  499. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  500. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  501. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  502. package/dist/modes/interactive/components/extension-editor.js +1 -7
  503. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  504. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  505. package/dist/modes/interactive/components/extension-input.js +2 -8
  506. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  507. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  508. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  509. package/dist/modes/interactive/components/extension-selector.js +1 -9
  510. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  511. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  512. package/dist/modes/interactive/components/first-time-setup.js +2 -4
  513. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  514. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  515. package/dist/modes/interactive/components/footer.js +2 -4
  516. package/dist/modes/interactive/components/footer.js.map +1 -1
  517. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  519. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  520. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  521. package/dist/modes/interactive/components/login-dialog.js +3 -9
  522. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  523. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  524. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  525. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  526. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  527. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  528. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  529. package/dist/modes/interactive/components/mermaid.js +75 -0
  530. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  531. package/dist/modes/interactive/components/model-selector.d.ts +1 -1
  532. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/model-selector.js +32 -30
  534. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  535. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  536. package/dist/modes/interactive/components/oauth-selector.js +3 -11
  537. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  538. package/dist/modes/interactive/components/scoped-models-selector.d.ts +4 -0
  539. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  540. package/dist/modes/interactive/components/scoped-models-selector.js +34 -13
  541. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  542. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  543. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  544. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  545. package/dist/modes/interactive/components/session-selector.js +35 -60
  546. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  547. package/dist/modes/interactive/components/settings-selector.d.ts +8 -2
  548. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  549. package/dist/modes/interactive/components/settings-selector.js +30 -14
  550. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  551. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  552. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  553. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  554. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  555. package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
  556. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  557. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  558. package/dist/modes/interactive/components/status-indicator.js +0 -2
  559. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  560. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  561. package/dist/modes/interactive/components/theme-selector.js +0 -2
  562. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  563. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  564. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  565. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  566. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  567. package/dist/modes/interactive/components/tool-execution.js +18 -36
  568. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  569. package/dist/modes/interactive/components/tool-group.d.ts.map +1 -1
  570. package/dist/modes/interactive/components/tool-group.js +2 -3
  571. package/dist/modes/interactive/components/tool-group.js.map +1 -1
  572. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  573. package/dist/modes/interactive/components/tree-selector.js +19 -39
  574. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  575. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  576. package/dist/modes/interactive/components/trust-selector.js +0 -6
  577. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  578. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  579. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  580. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  581. package/dist/modes/interactive/components/user-message.d.ts +3 -1
  582. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  583. package/dist/modes/interactive/components/user-message.js +8 -5
  584. package/dist/modes/interactive/components/user-message.js.map +1 -1
  585. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  586. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  587. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  588. package/dist/modes/interactive/external-editor.js +40 -3
  589. package/dist/modes/interactive/external-editor.js.map +1 -1
  590. package/dist/modes/interactive/interactive-mode.d.ts +46 -4
  591. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  592. package/dist/modes/interactive/interactive-mode.js +538 -275
  593. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  594. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  595. package/dist/modes/interactive/model-search.js.map +1 -1
  596. package/dist/modes/interactive/theme/dark.json +1 -0
  597. package/dist/modes/interactive/theme/light.json +1 -0
  598. package/dist/modes/interactive/theme/theme-controller.d.ts +3 -0
  599. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  600. package/dist/modes/interactive/theme/theme-controller.js +11 -8
  601. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  602. package/dist/modes/interactive/theme/theme-schema.json +5 -1
  603. package/dist/modes/interactive/theme/theme.d.ts +4 -4
  604. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  605. package/dist/modes/interactive/theme/theme.js +13 -9
  606. package/dist/modes/interactive/theme/theme.js.map +1 -1
  607. package/dist/modes/json-event.d.ts +28 -0
  608. package/dist/modes/json-event.d.ts.map +1 -0
  609. package/dist/modes/json-event.js +12 -0
  610. package/dist/modes/json-event.js.map +1 -0
  611. package/dist/modes/print-mode.d.ts.map +1 -1
  612. package/dist/modes/print-mode.js +12 -2
  613. package/dist/modes/print-mode.js.map +1 -1
  614. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  615. package/dist/modes/rpc/jsonl.js.map +1 -1
  616. package/dist/modes/rpc/rpc-client.d.ts +5 -4
  617. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  618. package/dist/modes/rpc/rpc-client.js +7 -8
  619. package/dist/modes/rpc/rpc-client.js.map +1 -1
  620. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  621. package/dist/modes/rpc/rpc-mode.js +17 -3
  622. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  623. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  624. package/dist/package-manager-cli.d.ts.map +1 -1
  625. package/dist/package-manager-cli.js +11 -9
  626. package/dist/package-manager-cli.js.map +1 -1
  627. package/dist/rpc-entry.d.ts.map +1 -1
  628. package/dist/rpc-entry.js +1 -0
  629. package/dist/rpc-entry.js.map +1 -1
  630. package/dist/utils/abort.d.ts +5 -0
  631. package/dist/utils/abort.d.ts.map +1 -0
  632. package/dist/utils/abort.js +48 -0
  633. package/dist/utils/abort.js.map +1 -0
  634. package/dist/utils/ansi.d.ts.map +1 -1
  635. package/dist/utils/ansi.js.map +1 -1
  636. package/dist/utils/changelog.d.ts.map +1 -1
  637. package/dist/utils/changelog.js.map +1 -1
  638. package/dist/utils/child-process.d.ts.map +1 -1
  639. package/dist/utils/child-process.js.map +1 -1
  640. package/dist/utils/clipboard-image.d.ts.map +1 -1
  641. package/dist/utils/clipboard-image.js.map +1 -1
  642. package/dist/utils/clipboard-native.d.ts.map +1 -1
  643. package/dist/utils/clipboard-native.js.map +1 -1
  644. package/dist/utils/clipboard.d.ts +1 -1
  645. package/dist/utils/clipboard.d.ts.map +1 -1
  646. package/dist/utils/clipboard.js +22 -2
  647. package/dist/utils/clipboard.js.map +1 -1
  648. package/dist/utils/coalescing-terminal.d.ts +1 -0
  649. package/dist/utils/coalescing-terminal.d.ts.map +1 -1
  650. package/dist/utils/coalescing-terminal.js +16 -8
  651. package/dist/utils/coalescing-terminal.js.map +1 -1
  652. package/dist/utils/deprecation.d.ts.map +1 -1
  653. package/dist/utils/deprecation.js.map +1 -1
  654. package/dist/utils/exif-orientation.d.ts.map +1 -1
  655. package/dist/utils/exif-orientation.js.map +1 -1
  656. package/dist/utils/frontmatter.d.ts.map +1 -1
  657. package/dist/utils/frontmatter.js.map +1 -1
  658. package/dist/utils/fs-watch.d.ts.map +1 -1
  659. package/dist/utils/fs-watch.js.map +1 -1
  660. package/dist/utils/git.d.ts.map +1 -1
  661. package/dist/utils/git.js.map +1 -1
  662. package/dist/utils/html.d.ts.map +1 -1
  663. package/dist/utils/html.js.map +1 -1
  664. package/dist/utils/image-convert.d.ts.map +1 -1
  665. package/dist/utils/image-convert.js.map +1 -1
  666. package/dist/utils/image-process.d.ts.map +1 -1
  667. package/dist/utils/image-process.js.map +1 -1
  668. package/dist/utils/image-resize-core.d.ts.map +1 -1
  669. package/dist/utils/image-resize-core.js.map +1 -1
  670. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  671. package/dist/utils/image-resize-worker.js.map +1 -1
  672. package/dist/utils/image-resize.d.ts.map +1 -1
  673. package/dist/utils/image-resize.js.map +1 -1
  674. package/dist/utils/json.d.ts.map +1 -1
  675. package/dist/utils/json.js.map +1 -1
  676. package/dist/utils/management-http.d.ts +23 -0
  677. package/dist/utils/management-http.d.ts.map +1 -0
  678. package/dist/utils/management-http.js +50 -0
  679. package/dist/utils/management-http.js.map +1 -0
  680. package/dist/utils/mime.d.ts.map +1 -1
  681. package/dist/utils/mime.js.map +1 -1
  682. package/dist/utils/open-browser.d.ts.map +1 -1
  683. package/dist/utils/open-browser.js.map +1 -1
  684. package/dist/utils/paths.d.ts +5 -3
  685. package/dist/utils/paths.d.ts.map +1 -1
  686. package/dist/utils/paths.js +25 -4
  687. package/dist/utils/paths.js.map +1 -1
  688. package/dist/utils/photon.d.ts.map +1 -1
  689. package/dist/utils/photon.js.map +1 -1
  690. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  691. package/dist/utils/pi-user-agent.js.map +1 -1
  692. package/dist/utils/shell.d.ts.map +1 -1
  693. package/dist/utils/shell.js.map +1 -1
  694. package/dist/utils/sleep.d.ts.map +1 -1
  695. package/dist/utils/sleep.js.map +1 -1
  696. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  697. package/dist/utils/syntax-highlight.js.map +1 -1
  698. package/dist/utils/tool-result-images.d.ts +19 -0
  699. package/dist/utils/tool-result-images.d.ts.map +1 -0
  700. package/dist/utils/tool-result-images.js +45 -0
  701. package/dist/utils/tool-result-images.js.map +1 -0
  702. package/dist/utils/tools-manager.d.ts.map +1 -1
  703. package/dist/utils/tools-manager.js +4 -6
  704. package/dist/utils/tools-manager.js.map +1 -1
  705. package/dist/utils/version-check.d.ts +4 -0
  706. package/dist/utils/version-check.d.ts.map +1 -1
  707. package/dist/utils/version-check.js +20 -2
  708. package/dist/utils/version-check.js.map +1 -1
  709. package/dist/utils/windows-self-update.d.ts.map +1 -1
  710. package/dist/utils/windows-self-update.js.map +1 -1
  711. package/docs/bundled/README.md +14 -16
  712. package/docs/bundled/extensions/biu.md +63 -0
  713. package/docs/bundled/extensions/router.md +20 -14
  714. package/docs/bundled/extensions/statusline.md +7 -5
  715. package/docs/bundled/themes.md +1 -1
  716. package/docs/compaction.md +25 -30
  717. package/docs/custom-provider.md +303 -467
  718. package/docs/development.md +83 -0
  719. package/docs/docs.json +6 -10
  720. package/docs/extensions.md +139 -119
  721. package/docs/index.md +18 -74
  722. package/docs/json.md +40 -15
  723. package/docs/keybindings.md +38 -10
  724. package/docs/models.md +210 -150
  725. package/docs/providers.md +3 -1
  726. package/docs/quickstart.md +5 -3
  727. package/docs/rpc.md +177 -134
  728. package/docs/sdk.md +165 -178
  729. package/docs/security.md +2 -2
  730. package/docs/session-format.md +139 -119
  731. package/docs/settings.md +4 -1
  732. package/docs/skills.md +0 -1
  733. package/docs/themes.md +5 -3
  734. package/docs/tui.md +411 -549
  735. package/docs/usage.md +11 -11
  736. package/examples/README.md +6 -1
  737. package/examples/extensions/README.md +13 -33
  738. package/examples/extensions/custom-compaction.ts +1 -16
  739. package/examples/extensions/custom-provider-anthropic/index.ts +11 -4
  740. package/examples/extensions/custom-provider-gitlab-duo/index.ts +2 -1
  741. package/examples/extensions/doom-overlay/wad-finder.ts +7 -3
  742. package/examples/extensions/handoff.ts +2 -11
  743. package/examples/extensions/qna.ts +3 -7
  744. package/examples/extensions/summarize.ts +8 -18
  745. package/examples/extensions/truncated-tool.ts +2 -2
  746. package/examples/rpc-extension-ui.ts +11 -2
  747. package/examples/sdk/02-custom-model.ts +1 -2
  748. package/examples/sdk/09-api-keys-and-oauth.ts +1 -1
  749. package/examples/sdk/12-full-control.ts +3 -1
  750. package/examples/sdk/README.md +1 -0
  751. package/npm-shrinkwrap.json +199 -270
  752. package/package.json +16 -9
  753. package/dist/extensions/plan/constants.d.ts +0 -68
  754. package/dist/extensions/plan/constants.d.ts.map +0 -1
  755. package/dist/extensions/plan/constants.js +0 -100
  756. package/dist/extensions/plan/constants.js.map +0 -1
  757. package/dist/extensions/plan/index.d.ts +0 -30
  758. package/dist/extensions/plan/index.d.ts.map +0 -1
  759. package/dist/extensions/plan/index.js +0 -429
  760. package/dist/extensions/plan/index.js.map +0 -1
  761. package/dist/extensions/plan/schema.d.ts +0 -20
  762. package/dist/extensions/plan/schema.d.ts.map +0 -1
  763. package/dist/extensions/plan/schema.js +0 -13
  764. package/dist/extensions/plan/schema.js.map +0 -1
  765. package/dist/extensions/plan/state.d.ts +0 -38
  766. package/dist/extensions/plan/state.d.ts.map +0 -1
  767. package/dist/extensions/plan/state.js +0 -96
  768. package/dist/extensions/plan/state.js.map +0 -1
  769. package/dist/extensions/plan/storage.d.ts +0 -26
  770. package/dist/extensions/plan/storage.d.ts.map +0 -1
  771. package/dist/extensions/plan/storage.js +0 -83
  772. package/dist/extensions/plan/storage.js.map +0 -1
  773. package/dist/extensions/plan/view.d.ts +0 -44
  774. package/dist/extensions/plan/view.d.ts.map +0 -1
  775. package/dist/extensions/plan/view.js +0 -149
  776. package/dist/extensions/plan/view.js.map +0 -1
  777. package/docs/bundled/extensions/README.md +0 -19
  778. package/docs/bundled/extensions/plan.md +0 -34
  779. package/examples/extensions/plan-mode/README.md +0 -66
  780. package/examples/extensions/plan-mode/index.ts +0 -390
  781. package/examples/extensions/plan-mode/utils.ts +0 -168
package/docs/sdk.md CHANGED
@@ -53,11 +53,10 @@ The main factory function for a single `AgentSession`.
53
53
  import { createAgentSession, SessionManager } from "@astralyn/pi";
54
54
 
55
55
  // Minimal: defaults with DefaultResourceLoader
56
- const { session } = await createAgentSession();
56
+ const { session: defaultSession } = await createAgentSession();
57
57
 
58
58
  // Custom: override specific options
59
- const { session } = await createAgentSession({
60
- model: myModel,
59
+ const { session: customSession } = await createAgentSession({
61
60
  tools: ["read", "bash"],
62
61
  sessionManager: SessionManager.inMemory(),
63
62
  });
@@ -65,18 +64,18 @@ const { session } = await createAgentSession({
65
64
 
66
65
  ### AgentSession
67
66
 
68
- The session manages agent lifecycle, message history, model state, compaction, and event streaming.
67
+ The session manages agent lifecycle, message history, model state, compaction, and event streaming. Common API members include:
69
68
 
70
69
  ```typescript
71
70
  interface AgentSession {
72
71
  // Send a prompt and wait for completion
73
72
  prompt(text: string, options?: PromptOptions): Promise<void>;
74
73
 
75
- // Queue messages during streaming
76
- steer(text: string): Promise<void>;
77
- followUp(text: string): Promise<void>;
74
+ // Queue messages, optionally with image attachments
75
+ steer(text: string, images?: ImageContent[]): Promise<void>;
76
+ followUp(text: string, images?: ImageContent[]): Promise<void>;
78
77
 
79
- // Subscribe to events (returns unsubscribe function)
78
+ // Subscribe to events (returns an unsubscribe function)
80
79
  subscribe(listener: (event: AgentSessionEvent) => void): () => void;
81
80
 
82
81
  // Session info
@@ -86,7 +85,7 @@ interface AgentSession {
86
85
  // Model control
87
86
  setModel(model: Model): Promise<void>;
88
87
  setThinkingLevel(level: ThinkingLevel): void;
89
- cycleModel(): Promise<ModelCycleResult | undefined>;
88
+ cycleModel(direction?: "forward" | "backward"): Promise<ModelCycleResult | undefined>;
90
89
  cycleThinkingLevel(): ThinkingLevel | undefined;
91
90
 
92
91
  // State access
@@ -97,13 +96,16 @@ interface AgentSession {
97
96
  isStreaming: boolean;
98
97
 
99
98
  // In-place tree navigation within the current session file
100
- navigateTree(targetId: string, options?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string }): Promise<{ editorText?: string; cancelled: boolean }>;
101
-
102
- // Compaction
99
+ navigateTree(targetId: string, options?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string }): Promise<{
100
+ editorText?: string;
101
+ cancelled: boolean;
102
+ aborted?: boolean;
103
+ summaryEntry?: BranchSummaryEntry;
104
+ }>;
105
+
106
+ // Compaction and cancellation
103
107
  compact(customInstructions?: string): Promise<CompactionResult>;
104
108
  abortCompaction(): void;
105
-
106
- // Abort current operation
107
109
  abort(): Promise<void>;
108
110
 
109
111
  // Cleanup
@@ -130,8 +132,8 @@ import {
130
132
  SessionManager,
131
133
  } from "@astralyn/pi";
132
134
 
133
- const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
134
- const services = await createAgentSessionServices({ cwd });
135
+ const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, agentDir, sessionManager, sessionStartEvent }) => {
136
+ const services = await createAgentSessionServices({ cwd, agentDir });
135
137
  return {
136
138
  ...(await createAgentSessionFromServices({
137
139
  services,
@@ -161,8 +163,8 @@ const runtime = await createAgentSessionRuntime(createRuntime, {
161
163
  Important behavior:
162
164
 
163
165
  - `runtime.session` changes after those operations
164
- - event subscriptions are attached to a specific `AgentSession`, so re-subscribe after replacement
165
- - if you use extensions, call `runtime.session.bindExtensions(...)` again for the new session
166
+ - event subscriptions are attached to a specific `AgentSession`, so re-subscribe after replacement (or use `runtime.setRebindSession()`)
167
+ - if you use extensions, bind them again for the new session (or do so from the rebind callback)
166
168
  - creation returns diagnostics on `runtime.diagnostics`
167
169
  - if runtime creation or replacement fails, the method throws and the caller decides how to handle it
168
170
 
@@ -177,6 +179,33 @@ session = runtime.session;
177
179
  unsubscribe = session.subscribe(() => {});
178
180
  ```
179
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
+
180
209
  ### Prompting and Message Queueing
181
210
 
182
211
  `PromptOptions` controls prompt expansion, queueing behavior while streaming, and prompt preflight notifications:
@@ -196,7 +225,7 @@ interface PromptOptions {
196
225
  - `true` when the prompt was accepted, queued, or handled immediately
197
226
  - `false` when prompt preflight rejected before acceptance
198
227
 
199
- It fires before `prompt()` resolves. `prompt()` still resolves only after the full accepted run finishes, including retries. Failures after acceptance are reported through the normal event and message stream, not through `preflightResult(false)`.
228
+ It fires before `prompt()` resolves. A prompt that starts a run resolves after the full accepted run finishes, including retries; a queued or immediately handled prompt resolves after acceptance or handling. Failures after acceptance are reported through the normal event and message stream, not through `preflightResult(false)`.
200
229
 
201
230
  The `prompt()` method handles prompt templates, extension commands, and message sending:
202
231
 
@@ -206,7 +235,7 @@ await session.prompt("What files are here?");
206
235
 
207
236
  // With images
208
237
  await session.prompt("What's in this image?", {
209
- images: [{ type: "image", source: { type: "base64", mediaType: "image/png", data: "..." } }]
238
+ images: [{ type: "image", mimeType: "image/png", data: "..." }],
210
239
  });
211
240
 
212
241
  // During streaming: must specify how to queue the message
@@ -218,17 +247,17 @@ await session.prompt("After you're done, also check X", { streamingBehavior: "fo
218
247
  - **Extension commands** (e.g., `/mycommand`): Execute immediately, even during streaming. They manage their own LLM interaction via `pi.sendMessage()`.
219
248
  - **File-based prompt templates** (from `.md` files): Expanded to their content before sending or queueing.
220
249
  - **During streaming without `streamingBehavior`**: Throws an error. Use `steer()` or `followUp()` directly, or specify the option.
221
- - **`preflightResult(true)`**: Means the prompt was accepted, queued, or handled immediately.
222
- - **`preflightResult(false)`**: Means preflight rejected before acceptance.
223
250
 
224
251
  For explicit queueing during streaming:
225
252
 
226
253
  ```typescript
254
+ const image = { type: "image" as const, mimeType: "image/png", data: "..." };
255
+
227
256
  // Queue a steering message for delivery after the current assistant turn finishes its tool calls
228
- await session.steer("New instruction");
257
+ await session.steer("New instruction", [image]);
229
258
 
230
- // Wait for agent to finish (delivered only when agent stops)
231
- await session.followUp("After you're done, also do this");
259
+ // Queue a follow-up for when there are no more tool calls or steering messages
260
+ await session.followUp("After you're done, also do this", [image]);
232
261
  ```
233
262
 
234
263
  Both `steer()` and `followUp()` expand file-based prompt templates but error on extension commands (extension commands cannot be queued).
@@ -302,6 +331,9 @@ session.subscribe((event) => {
302
331
  case "agent_end":
303
332
  // Agent finished (event.messages contains new messages)
304
333
  break;
334
+ case "agent_settled":
335
+ // Agent, retries, compaction, and queued continuations have settled
336
+ break;
305
337
 
306
338
  // Turn lifecycle (one LLM response + tool calls)
307
339
  case "turn_start":
@@ -311,7 +343,7 @@ session.subscribe((event) => {
311
343
  // event.toolResults: tool results from this turn
312
344
  break;
313
345
 
314
- // Session events (queue, compaction, retry)
346
+ // Session events (queue, compaction, retry, and persisted state)
315
347
  case "queue_update":
316
348
  console.log(event.steering, event.followUp);
317
349
  break;
@@ -322,6 +354,10 @@ session.subscribe((event) => {
322
354
  case "summarization_retry_scheduled":
323
355
  case "summarization_retry_attempt_start":
324
356
  case "summarization_retry_finished":
357
+ case "entry_appended":
358
+ case "session_info_changed":
359
+ case "thinking_level_changed":
360
+ case "bash_execution_update":
325
361
  break;
326
362
  }
327
363
  });
@@ -347,7 +383,7 @@ const { session } = await createAgentSession({
347
383
  - `.pi/skills/`
348
384
  - `.agents/skills/` in `cwd` and ancestor directories (up to git repo root, or filesystem root when not in a repo)
349
385
  - Project prompts (`.pi/prompts/`)
350
- - Context files (`AGENTS.md` walking up from cwd)
386
+ - Context files (`AGENTS.md` or `CLAUDE.md`, walking up from cwd)
351
387
  - Session directory naming
352
388
 
353
389
  `agentDir` is used by `DefaultResourceLoader` for:
@@ -356,7 +392,7 @@ const { session } = await createAgentSession({
356
392
  - `skills/` under `agentDir` (for example `~/.pi/agent/skills/`)
357
393
  - `~/.agents/skills/`
358
394
  - Global prompts (`prompts/`)
359
- - Global context file (`AGENTS.md`)
395
+ - Global context file (`AGENTS.md` or `CLAUDE.md`)
360
396
  - Settings (`settings.json`)
361
397
  - Custom models (`models.json`)
362
398
  - Credentials (`auth.json`)
@@ -367,32 +403,33 @@ When you pass a custom `ResourceLoader`, `cwd` and `agentDir` no longer control
367
403
  ### Model
368
404
 
369
405
  ```typescript
370
- import { getModel } from "@earendil-works/pi-ai";
371
- import { ModelRuntime } from "@astralyn/pi";
406
+ import { getModel } from "@earendil-works/pi-ai/compat";
407
+ import { createAgentSession, ModelRuntime } from "@astralyn/pi";
372
408
 
373
409
  const modelRuntime = await ModelRuntime.create();
374
410
 
375
- // Find specific built-in model (doesn't check if API key exists)
411
+ // Find specific built-in models (doesn't check whether API keys exist)
376
412
  const opus = getModel("anthropic", "claude-opus-4-5");
377
- if (!opus) throw new Error("Model not found");
413
+ const sonnet = getModel("anthropic", "claude-sonnet-4-5");
414
+ if (!opus || !sonnet) throw new Error("Model not found");
378
415
 
379
416
  // Find any model by provider/id, including custom models from models.json
380
- // (doesn't check if API key exists)
417
+ // (doesn't check whether API keys exist)
381
418
  const customModel = modelRuntime.getModel("my-provider", "my-model");
382
419
 
383
- // Get only models that have valid authentication configured
420
+ // Get only models that have configured authentication
384
421
  const available = await modelRuntime.getAvailable();
385
422
 
386
423
  const { session } = await createAgentSession({
387
424
  model: opus,
388
425
  thinkingLevel: "medium", // off, minimal, low, medium, high, xhigh, max
389
-
426
+
390
427
  // Models for cycling (Ctrl+P in interactive mode)
391
428
  scopedModels: [
392
429
  { model: opus, thinkingLevel: "high" },
393
- { model: haiku, thinkingLevel: "off" },
430
+ { model: sonnet, thinkingLevel: "off" },
394
431
  ],
395
-
432
+
396
433
  modelRuntime,
397
434
  });
398
435
  ```
@@ -400,7 +437,7 @@ const { session } = await createAgentSession({
400
437
  If no model is provided:
401
438
  1. Tries to restore from session (if continuing)
402
439
  2. Uses default from settings
403
- 3. Falls back to first available model
440
+ 3. Prefers a known provider default among available models, then falls back to the first available model
404
441
 
405
442
  To match CLI model parsing, use the exported resolver helpers:
406
443
 
@@ -452,7 +489,7 @@ for (const provider of modelRuntime.getProviders()) {
452
489
  }
453
490
 
454
491
  // Runtime API key override (not persisted to disk)
455
- modelRuntime.setRuntimeApiKey("anthropic", "sk-my-temp-key");
492
+ await modelRuntime.setRuntimeApiKey("anthropic", "sk-my-temp-key");
456
493
 
457
494
  // Custom credential and model locations
458
495
  const customRuntime = await ModelRuntime.create({
@@ -465,10 +502,28 @@ const credentials = new InMemoryCredentialStore();
465
502
  const inMemoryRuntime = await ModelRuntime.create({ credentials });
466
503
 
467
504
  const { session } = await createAgentSession({
468
- modelRuntime: customRuntime,
505
+ modelRuntime: inMemoryRuntime,
506
+ });
507
+ ```
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,
469
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
+ }
470
523
  ```
471
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
+
472
527
  > See [examples/sdk/09-api-keys-and-oauth.ts](../examples/sdk/09-api-keys-and-oauth.ts)
473
528
 
474
529
  ### System Prompt
@@ -476,9 +531,11 @@ const { session } = await createAgentSession({
476
531
  Use a `ResourceLoader` to override the system prompt:
477
532
 
478
533
  ```typescript
479
- import { createAgentSession, DefaultResourceLoader } from "@astralyn/pi";
534
+ import { createAgentSession, DefaultResourceLoader, getAgentDir } from "@astralyn/pi";
480
535
 
481
536
  const loader = new DefaultResourceLoader({
537
+ cwd: process.cwd(),
538
+ agentDir: getAgentDir(),
482
539
  systemPromptOverride: () => "You are a helpful assistant.",
483
540
  });
484
541
  await loader.reload();
@@ -504,17 +561,17 @@ The `edit` tool returns `details.diff` for Pi's TUI display and `details.patch`
504
561
  import { createAgentSession } from "@astralyn/pi";
505
562
 
506
563
  // Read-only mode
507
- const { session } = await createAgentSession({
564
+ const { session: readOnlySession } = await createAgentSession({
508
565
  tools: ["read", "grep", "find", "ls"],
509
566
  });
510
567
 
511
568
  // Pick specific tools
512
- const { session } = await createAgentSession({
569
+ const { session: selectedToolsSession } = await createAgentSession({
513
570
  tools: ["read", "bash", "grep"],
514
571
  });
515
572
 
516
573
  // Disable one tool while keeping the rest available
517
- const { session } = await createAgentSession({
574
+ const { session: excludedToolsSession } = await createAgentSession({
518
575
  excludeTools: ["ask_question"],
519
576
  });
520
577
  ```
@@ -583,9 +640,11 @@ If you pass `tools`, include each custom or extension tool name you want enabled
583
640
  Extensions are loaded by the `ResourceLoader`. `DefaultResourceLoader` discovers extensions from `~/.pi/agent/extensions/`, `.pi/extensions/`, and settings.json extension sources.
584
641
 
585
642
  ```typescript
586
- import { createAgentSession, DefaultResourceLoader } from "@astralyn/pi";
643
+ import { createAgentSession, DefaultResourceLoader, getAgentDir } from "@astralyn/pi";
587
644
 
588
645
  const loader = new DefaultResourceLoader({
646
+ cwd: process.cwd(),
647
+ agentDir: getAgentDir(),
589
648
  additionalExtensionPaths: ["/path/to/my-extension.ts"],
590
649
  extensionFactories: [
591
650
  (pi) => {
@@ -605,7 +664,7 @@ Extensions can register tools, subscribe to events, add commands, and more. See
605
664
  **Named inline extensions:** By default, inline factories display as `<inline:1>`, `<inline:2>`, etc. in the startup Extensions list. To show a descriptive name instead, wrap the factory:
606
665
 
607
666
  ```typescript
608
- import type { InlineExtension } from "@astralyn/pi";
667
+ import { DefaultResourceLoader, getAgentDir, type InlineExtension } from "@astralyn/pi";
609
668
 
610
669
  const myProvider: InlineExtension = {
611
670
  name: "my-provider",
@@ -617,8 +676,11 @@ const myProvider: InlineExtension = {
617
676
  };
618
677
 
619
678
  const loader = new DefaultResourceLoader({
679
+ cwd: process.cwd(),
680
+ agentDir: getAgentDir(),
620
681
  extensionFactories: [myProvider],
621
682
  });
683
+ await loader.reload();
622
684
  ```
623
685
 
624
686
  This displays as `<inline:my-provider>` instead of `<inline:1>`. Bare factory functions are still accepted for backward compatibility.
@@ -626,10 +688,12 @@ This displays as `<inline:my-provider>` instead of `<inline:1>`. Bare factory fu
626
688
  **Event Bus:** Extensions can communicate via `pi.events`. Pass a shared `eventBus` to `DefaultResourceLoader` if you need to emit or listen from outside:
627
689
 
628
690
  ```typescript
629
- import { createEventBus, DefaultResourceLoader } from "@astralyn/pi";
691
+ import { createEventBus, DefaultResourceLoader, getAgentDir } from "@astralyn/pi";
630
692
 
631
693
  const eventBus = createEventBus();
632
694
  const loader = new DefaultResourceLoader({
695
+ cwd: process.cwd(),
696
+ agentDir: getAgentDir(),
633
697
  eventBus,
634
698
  });
635
699
  await loader.reload();
@@ -644,7 +708,9 @@ eventBus.on("my-extension:status", (data) => console.log(data));
644
708
  ```typescript
645
709
  import {
646
710
  createAgentSession,
711
+ createSyntheticSourceInfo,
647
712
  DefaultResourceLoader,
713
+ getAgentDir,
648
714
  type Skill,
649
715
  } from "@astralyn/pi";
650
716
 
@@ -653,10 +719,13 @@ const customSkill: Skill = {
653
719
  description: "Custom instructions",
654
720
  filePath: "/path/to/SKILL.md",
655
721
  baseDir: "/path/to",
656
- source: "custom",
722
+ sourceInfo: createSyntheticSourceInfo("/path/to/SKILL.md", { source: "sdk" }),
723
+ disableModelInvocation: false,
657
724
  };
658
725
 
659
726
  const loader = new DefaultResourceLoader({
727
+ cwd: process.cwd(),
728
+ agentDir: getAgentDir(),
660
729
  skillsOverride: (current) => ({
661
730
  skills: [...current.skills, customSkill],
662
731
  diagnostics: current.diagnostics,
@@ -672,9 +741,11 @@ const { session } = await createAgentSession({ resourceLoader: loader });
672
741
  ### Context Files
673
742
 
674
743
  ```typescript
675
- import { createAgentSession, DefaultResourceLoader } from "@astralyn/pi";
744
+ import { createAgentSession, DefaultResourceLoader, getAgentDir } from "@astralyn/pi";
676
745
 
677
746
  const loader = new DefaultResourceLoader({
747
+ cwd: process.cwd(),
748
+ agentDir: getAgentDir(),
678
749
  agentsFilesOverride: (current) => ({
679
750
  agentsFiles: [
680
751
  ...current.agentsFiles,
@@ -694,18 +765,23 @@ const { session } = await createAgentSession({ resourceLoader: loader });
694
765
  ```typescript
695
766
  import {
696
767
  createAgentSession,
768
+ createSyntheticSourceInfo,
697
769
  DefaultResourceLoader,
770
+ getAgentDir,
698
771
  type PromptTemplate,
699
772
  } from "@astralyn/pi";
700
773
 
701
774
  const customCommand: PromptTemplate = {
702
775
  name: "deploy",
703
776
  description: "Deploy the application",
704
- source: "(custom)",
777
+ filePath: "/virtual/prompts/deploy.md",
778
+ sourceInfo: createSyntheticSourceInfo("/virtual/prompts/deploy.md", { source: "sdk" }),
705
779
  content: "# Deploy\n\n1. Build\n2. Test\n3. Deploy",
706
780
  };
707
781
 
708
782
  const loader = new DefaultResourceLoader({
783
+ cwd: process.cwd(),
784
+ agentDir: getAgentDir(),
709
785
  promptsOverride: (current) => ({
710
786
  prompts: [...current.prompts, customCommand],
711
787
  diagnostics: current.diagnostics,
@@ -723,15 +799,7 @@ const { session } = await createAgentSession({ resourceLoader: loader });
723
799
  Sessions use a tree structure with `id`/`parentId` linking, enabling in-place branching.
724
800
 
725
801
  ```typescript
726
- import {
727
- type CreateAgentSessionRuntimeFactory,
728
- createAgentSession,
729
- createAgentSessionFromServices,
730
- createAgentSessionRuntime,
731
- createAgentSessionServices,
732
- getAgentDir,
733
- SessionManager,
734
- } from "@astralyn/pi";
802
+ import { createAgentSession, SessionManager } from "@astralyn/pi";
735
803
 
736
804
  // In-memory (no persistence)
737
805
  const { session } = await createAgentSession({
@@ -758,28 +826,12 @@ const { session: opened } = await createAgentSession({
758
826
 
759
827
  // List sessions
760
828
  const currentProjectSessions = await SessionManager.list(process.cwd());
761
- const allSessions = await SessionManager.listAll(process.cwd());
762
-
763
- // Session replacement API for /new, /resume, /fork, /clone, and import flows.
764
- const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
765
- const services = await createAgentSessionServices({ cwd });
766
- return {
767
- ...(await createAgentSessionFromServices({
768
- services,
769
- sessionManager,
770
- sessionStartEvent,
771
- })),
772
- services,
773
- diagnostics: services.diagnostics,
774
- };
775
- };
829
+ const allSessions = await SessionManager.listAll();
830
+ ```
776
831
 
777
- const runtime = await createAgentSessionRuntime(createRuntime, {
778
- cwd: process.cwd(),
779
- agentDir: getAgentDir(),
780
- sessionManager: SessionManager.create(process.cwd()),
781
- });
832
+ For active-session replacement, construct `runtime` as shown in [createAgentSessionRuntime() and AgentSessionRuntime](#createagentsessionruntime-and-agentsessionruntime), then use its replacement methods:
782
833
 
834
+ ```typescript
783
835
  // Replace the active session with a fresh one
784
836
  await runtime.newSession();
785
837
 
@@ -800,24 +852,28 @@ const sm = SessionManager.open("/path/to/session.jsonl");
800
852
 
801
853
  // Session listing
802
854
  const currentProjectSessions = await SessionManager.list(process.cwd());
803
- const allSessions = await SessionManager.listAll(process.cwd());
855
+ const allSessions = await SessionManager.listAll();
804
856
 
805
857
  // Tree traversal
806
858
  const entries = sm.getEntries(); // All entries (excludes header)
807
859
  const tree = sm.getTree(); // Full tree structure
808
- const path = sm.getPath(); // Path from root to current leaf
860
+ const path = sm.getBranch(); // Path from root to current leaf
809
861
  const leaf = sm.getLeafEntry(); // Current leaf entry
810
- const entry = sm.getEntry(id); // Get entry by ID
811
- const children = sm.getChildren(id); // Direct children of entry
812
862
 
813
- // Labels
814
- const label = sm.getLabel(id); // Get label for entry
815
- sm.appendLabelChange(id, "checkpoint"); // Set label
863
+ if (leaf) {
864
+ const entryId = leaf.id;
865
+ const entry = sm.getEntry(entryId); // Get entry by ID
866
+ const children = sm.getChildren(entryId); // Direct children of entry
867
+
868
+ // Labels
869
+ const label = sm.getLabel(entryId); // Get label for entry
870
+ sm.appendLabelChange(entryId, "checkpoint"); // Set label
816
871
 
817
- // Branching
818
- sm.branch(entryId); // Move leaf to earlier entry
819
- sm.branchWithSummary(id, "Summary..."); // Branch with context summary
820
- sm.createBranchedSession(leafId); // Extract path to new file
872
+ // Branching
873
+ sm.branch(entryId); // Move leaf to earlier entry
874
+ sm.branchWithSummary(entryId, "Summary..."); // Branch with context summary
875
+ const sessionFile = sm.createBranchedSession(entryId); // Path, or undefined in memory
876
+ }
821
877
  ```
822
878
 
823
879
  > See [examples/sdk/11-sessions.ts](../examples/sdk/11-sessions.ts) and [Session Format](session-format.md)
@@ -828,20 +884,20 @@ sm.createBranchedSession(leafId); // Extract path to new file
828
884
  import { createAgentSession, SettingsManager, SessionManager } from "@astralyn/pi";
829
885
 
830
886
  // Default: loads from files (global + project merged)
831
- const { session } = await createAgentSession({
832
- settingsManager: SettingsManager.create(),
887
+ const { session: defaultSettingsSession } = await createAgentSession({
888
+ settingsManager: SettingsManager.create(process.cwd()),
833
889
  });
834
890
 
835
891
  // With overrides
836
- const settingsManager = SettingsManager.create();
892
+ const settingsManager = SettingsManager.create(process.cwd());
837
893
  settingsManager.applyOverrides({
838
894
  compaction: { enabled: false },
839
895
  retry: { enabled: true, maxRetries: 5 },
840
896
  });
841
- const { session } = await createAgentSession({ settingsManager });
897
+ const { session: customSettingsSession } = await createAgentSession({ settingsManager });
842
898
 
843
899
  // In-memory (no file I/O, for testing)
844
- const { session } = await createAgentSession({
900
+ const { session: inMemorySettingsSession } = await createAgentSession({
845
901
  settingsManager: SettingsManager.inMemory({ compaction: { enabled: false } }),
846
902
  sessionManager: SessionManager.inMemory(),
847
903
  });
@@ -853,12 +909,12 @@ const { session } = await createAgentSession({
853
909
  ```
854
910
 
855
911
  **Static factories:**
856
- - `SettingsManager.create(cwd?, agentDir?)` - Load from files
912
+ - `SettingsManager.create(cwd, agentDir?)` - Load from files
857
913
  - `SettingsManager.inMemory(settings?)` - No file I/O
858
914
 
859
915
  **Project-specific settings:**
860
916
 
861
- Settings load from two locations and merge:
917
+ For a trusted project, settings load from two locations and merge:
862
918
  1. Global: `~/.pi/agent/settings.json`
863
919
  2. Project: `<cwd>/.pi/settings.json`
864
920
 
@@ -883,6 +939,7 @@ import {
883
939
  getAgentDir,
884
940
  } from "@astralyn/pi";
885
941
 
942
+ const cwd = process.cwd();
886
943
  const loader = new DefaultResourceLoader({
887
944
  cwd,
888
945
  agentDir: getAgentDir(),
@@ -922,7 +979,7 @@ interface LoadExtensionsResult {
922
979
  ## Complete Example
923
980
 
924
981
  ```typescript
925
- import { getModel } from "@earendil-works/pi-ai";
982
+ import { getModel } from "@earendil-works/pi-ai/compat";
926
983
  import { Type } from "typebox";
927
984
  import {
928
985
  createAgentSession,
@@ -938,7 +995,7 @@ const modelRuntime = await ModelRuntime.create({
938
995
  modelsPath: "/custom/agent/models.json",
939
996
  });
940
997
  if (process.env.MY_KEY) {
941
- modelRuntime.setRuntimeApiKey("anthropic", process.env.MY_KEY);
998
+ await modelRuntime.setRuntimeApiKey("anthropic", process.env.MY_KEY);
942
999
  }
943
1000
 
944
1001
  // Inline tool
@@ -997,43 +1054,17 @@ await session.prompt("Get status and list files.");
997
1054
 
998
1055
  ## Run Modes
999
1056
 
1000
- The SDK exports run mode utilities for building custom interfaces on top of `createAgentSession()`:
1057
+ The SDK exports run mode utilities that operate on an `AgentSessionRuntime`. Start with the [session-runtime example](../examples/sdk/13-session-runtime.ts) to create the runtime and rebind session-local work after replacement.
1001
1058
 
1002
1059
  ### InteractiveMode
1003
1060
 
1004
1061
  Full TUI interactive mode with editor, chat history, and all built-in commands:
1005
1062
 
1006
1063
  ```typescript
1007
- import {
1008
- type CreateAgentSessionRuntimeFactory,
1009
- createAgentSessionFromServices,
1010
- createAgentSessionRuntime,
1011
- createAgentSessionServices,
1012
- getAgentDir,
1013
- InteractiveMode,
1014
- SessionManager,
1015
- } from "@astralyn/pi";
1016
-
1017
- const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
1018
- const services = await createAgentSessionServices({ cwd });
1019
- return {
1020
- ...(await createAgentSessionFromServices({ services, sessionManager, sessionStartEvent })),
1021
- services,
1022
- diagnostics: services.diagnostics,
1023
- };
1024
- };
1025
- const runtime = await createAgentSessionRuntime(createRuntime, {
1026
- cwd: process.cwd(),
1027
- agentDir: getAgentDir(),
1028
- sessionManager: SessionManager.create(process.cwd()),
1029
- });
1064
+ import { InteractiveMode } from "@astralyn/pi";
1030
1065
 
1031
1066
  const mode = new InteractiveMode(runtime, {
1032
- migratedProviders: [],
1033
- modelFallbackMessage: undefined,
1034
1067
  initialMessage: "Hello",
1035
- initialImages: [],
1036
- initialMessages: [],
1037
1068
  });
1038
1069
 
1039
1070
  await mode.run();
@@ -1041,34 +1072,12 @@ await mode.run();
1041
1072
 
1042
1073
  ### runPrintMode
1043
1074
 
1044
- Single-shot mode: send prompts, output result, exit:
1075
+ Single-shot mode: send prompts, output the result, dispose the runtime, and return an exit code:
1045
1076
 
1046
1077
  ```typescript
1047
- import {
1048
- type CreateAgentSessionRuntimeFactory,
1049
- createAgentSessionFromServices,
1050
- createAgentSessionRuntime,
1051
- createAgentSessionServices,
1052
- getAgentDir,
1053
- runPrintMode,
1054
- SessionManager,
1055
- } from "@astralyn/pi";
1056
-
1057
- const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
1058
- const services = await createAgentSessionServices({ cwd });
1059
- return {
1060
- ...(await createAgentSessionFromServices({ services, sessionManager, sessionStartEvent })),
1061
- services,
1062
- diagnostics: services.diagnostics,
1063
- };
1064
- };
1065
- const runtime = await createAgentSessionRuntime(createRuntime, {
1066
- cwd: process.cwd(),
1067
- agentDir: getAgentDir(),
1068
- sessionManager: SessionManager.create(process.cwd()),
1069
- });
1078
+ import { runPrintMode } from "@astralyn/pi";
1070
1079
 
1071
- await runPrintMode(runtime, {
1080
+ const exitCode = await runPrintMode(runtime, {
1072
1081
  mode: "text",
1073
1082
  initialMessage: "Hello",
1074
1083
  initialImages: [],
@@ -1078,32 +1087,10 @@ await runPrintMode(runtime, {
1078
1087
 
1079
1088
  ### runRpcMode
1080
1089
 
1081
- JSON-RPC mode for subprocess integration:
1090
+ JSON-RPC mode for subprocess integration. It owns standard input/output and does not return normally:
1082
1091
 
1083
1092
  ```typescript
1084
- import {
1085
- type CreateAgentSessionRuntimeFactory,
1086
- createAgentSessionFromServices,
1087
- createAgentSessionRuntime,
1088
- createAgentSessionServices,
1089
- getAgentDir,
1090
- runRpcMode,
1091
- SessionManager,
1092
- } from "@astralyn/pi";
1093
-
1094
- const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => {
1095
- const services = await createAgentSessionServices({ cwd });
1096
- return {
1097
- ...(await createAgentSessionFromServices({ services, sessionManager, sessionStartEvent })),
1098
- services,
1099
- diagnostics: services.diagnostics,
1100
- };
1101
- };
1102
- const runtime = await createAgentSessionRuntime(createRuntime, {
1103
- cwd: process.cwd(),
1104
- agentDir: getAgentDir(),
1105
- sessionManager: SessionManager.create(process.cwd()),
1106
- });
1093
+ import { runRpcMode } from "@astralyn/pi";
1107
1094
 
1108
1095
  await runRpcMode(runtime);
1109
1096
  ```
@@ -1133,7 +1120,7 @@ RPC mode is preferred when:
1133
1120
 
1134
1121
  ## Exports
1135
1122
 
1136
- The main entry point exports:
1123
+ Selected SDK exports from the main entry point include:
1137
1124
 
1138
1125
  ```typescript
1139
1126
  // Factory
@@ -1144,6 +1131,7 @@ AgentSessionRuntime
1144
1131
  // Auth and Models
1145
1132
  ModelRuntime // implements pi-ai Models and owns credential storage
1146
1133
  ModelRegistry // synchronous extension compatibility facade
1134
+ CredentialSynchronizationError
1147
1135
  resolveCliModel
1148
1136
  resolveModelScopeWithDiagnostics
1149
1137
 
@@ -1180,7 +1168,6 @@ type ExtensionAPI
1180
1168
  type ToolDefinition
1181
1169
  type Skill
1182
1170
  type PromptTemplate
1183
- type Tool
1184
1171
  ```
1185
1172
 
1186
1173
  For extension types, see [extensions.md](extensions.md) for the full API.