@astralyn/pi 0.84.15 → 0.85.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 (437) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/bun/cli.js +10 -7
  3. package/dist/bun/cli.js.map +1 -1
  4. package/dist/bun/runtime-setup.d.ts +2 -0
  5. package/dist/bun/runtime-setup.d.ts.map +1 -0
  6. package/dist/bun/runtime-setup.js +9 -0
  7. package/dist/bun/runtime-setup.js.map +1 -0
  8. package/dist/cli/args.d.ts.map +1 -1
  9. package/dist/cli/args.js +2 -0
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/config-selector.d.ts.map +1 -1
  12. package/dist/cli/config-selector.js +2 -1
  13. package/dist/cli/config-selector.js.map +1 -1
  14. package/dist/cli/experimental/cli.d.ts +7 -3
  15. package/dist/cli/experimental/cli.d.ts.map +1 -1
  16. package/dist/cli/experimental/cli.js +6 -2
  17. package/dist/cli/experimental/cli.js.map +1 -1
  18. package/dist/cli/experimental/command-options.d.ts +23 -12
  19. package/dist/cli/experimental/command-options.d.ts.map +1 -1
  20. package/dist/cli/experimental/command-options.js +69 -20
  21. package/dist/cli/experimental/command-options.js.map +1 -1
  22. package/dist/cli/experimental/command.d.ts +10 -3
  23. package/dist/cli/experimental/command.d.ts.map +1 -1
  24. package/dist/cli/experimental/command.js +28 -14
  25. package/dist/cli/experimental/command.js.map +1 -1
  26. package/dist/cli/experimental/commands/client.d.ts +8 -2
  27. package/dist/cli/experimental/commands/client.d.ts.map +1 -1
  28. package/dist/cli/experimental/commands/client.js +43 -5
  29. package/dist/cli/experimental/commands/client.js.map +1 -1
  30. package/dist/cli/experimental/commands/server.d.ts +7 -3
  31. package/dist/cli/experimental/commands/server.d.ts.map +1 -1
  32. package/dist/cli/experimental/commands/server.js +27 -8
  33. package/dist/cli/experimental/commands/server.js.map +1 -1
  34. package/dist/cli.js +2541 -18
  35. package/dist/cli.js.map +1 -1
  36. package/dist/client/index.d.ts +1 -2
  37. package/dist/client/index.d.ts.map +1 -1
  38. package/dist/client/index.js +1 -2
  39. package/dist/client/index.js.map +1 -1
  40. package/dist/config.d.ts +1 -0
  41. package/dist/config.d.ts.map +1 -1
  42. package/dist/config.js +1 -0
  43. package/dist/config.js.map +1 -1
  44. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  45. package/dist/core/agent-session-runtime.js +15 -7
  46. package/dist/core/agent-session-runtime.js.map +1 -1
  47. package/dist/core/agent-session.d.ts +2 -6
  48. package/dist/core/agent-session.d.ts.map +1 -1
  49. package/dist/core/agent-session.js +14 -6
  50. package/dist/core/agent-session.js.map +1 -1
  51. package/dist/core/compaction/branch-summarization.d.ts +1 -1
  52. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  53. package/dist/core/compaction/branch-summarization.js +2 -1
  54. package/dist/core/compaction/branch-summarization.js.map +1 -1
  55. package/dist/core/extensions/loader.d.ts.map +1 -1
  56. package/dist/core/extensions/loader.js +1 -2
  57. package/dist/core/extensions/loader.js.map +1 -1
  58. package/dist/core/extensions/types.d.ts +8 -2
  59. package/dist/core/extensions/types.d.ts.map +1 -1
  60. package/dist/core/extensions/types.js.map +1 -1
  61. package/dist/core/http-dispatcher.d.ts.map +1 -1
  62. package/dist/core/http-dispatcher.js +2 -0
  63. package/dist/core/http-dispatcher.js.map +1 -1
  64. package/dist/core/messages.d.ts +1 -1
  65. package/dist/core/messages.d.ts.map +1 -1
  66. package/dist/core/messages.js.map +1 -1
  67. package/dist/core/model-config.d.ts +15 -0
  68. package/dist/core/model-config.d.ts.map +1 -1
  69. package/dist/core/model-config.js +3 -0
  70. package/dist/core/model-config.js.map +1 -1
  71. package/dist/core/model-runtime.d.ts +1 -0
  72. package/dist/core/model-runtime.d.ts.map +1 -1
  73. package/dist/core/model-runtime.js +5 -2
  74. package/dist/core/model-runtime.js.map +1 -1
  75. package/dist/core/provider-composer.d.ts.map +1 -1
  76. package/dist/core/provider-composer.js +8 -2
  77. package/dist/core/provider-composer.js.map +1 -1
  78. package/dist/core/session-manager.d.ts +3 -2
  79. package/dist/core/session-manager.d.ts.map +1 -1
  80. package/dist/core/session-manager.js +40 -13
  81. package/dist/core/session-manager.js.map +1 -1
  82. package/dist/core/settings-manager.js.map +1 -1
  83. package/dist/core/skills.d.ts +1 -1
  84. package/dist/core/skills.d.ts.map +1 -1
  85. package/dist/core/skills.js +4 -2
  86. package/dist/core/skills.js.map +1 -1
  87. package/dist/core/system-prompt.d.ts.map +1 -1
  88. package/dist/core/system-prompt.js +8 -9
  89. package/dist/core/system-prompt.js.map +1 -1
  90. package/dist/core/tools/bash.d.ts.map +1 -1
  91. package/dist/core/tools/bash.js +3 -161
  92. package/dist/core/tools/bash.js.map +1 -1
  93. package/dist/core/tools/edit.d.ts +1 -11
  94. package/dist/core/tools/edit.d.ts.map +1 -1
  95. package/dist/core/tools/edit.js +5 -173
  96. package/dist/core/tools/edit.js.map +1 -1
  97. package/dist/core/tools/find.d.ts.map +1 -1
  98. package/dist/core/tools/find.js +4 -54
  99. package/dist/core/tools/find.js.map +1 -1
  100. package/dist/core/tools/grep.d.ts.map +1 -1
  101. package/dist/core/tools/grep.js +4 -68
  102. package/dist/core/tools/grep.js.map +1 -1
  103. package/dist/core/tools/ls.d.ts.map +1 -1
  104. package/dist/core/tools/ls.js +4 -48
  105. package/dist/core/tools/ls.js.map +1 -1
  106. package/dist/core/tools/read.d.ts.map +1 -1
  107. package/dist/core/tools/read.js +5 -121
  108. package/dist/core/tools/read.js.map +1 -1
  109. package/dist/core/tools/renderers/bash.d.ts +13 -0
  110. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  111. package/dist/core/tools/renderers/bash.js +174 -0
  112. package/dist/core/tools/renderers/bash.js.map +1 -0
  113. package/dist/core/tools/renderers/edit.d.ts +22 -0
  114. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  115. package/dist/core/tools/renderers/edit.js +177 -0
  116. package/dist/core/tools/renderers/edit.js.map +1 -0
  117. package/dist/core/tools/renderers/find.d.ts +10 -0
  118. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  119. package/dist/core/tools/renderers/find.js +63 -0
  120. package/dist/core/tools/renderers/find.js.map +1 -0
  121. package/dist/core/tools/renderers/grep.d.ts +10 -0
  122. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  123. package/dist/core/tools/renderers/grep.js +77 -0
  124. package/dist/core/tools/renderers/grep.js.map +1 -0
  125. package/dist/core/tools/renderers/index.d.ts +28 -0
  126. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  127. package/dist/core/tools/renderers/index.js +47 -0
  128. package/dist/core/tools/renderers/index.js.map +1 -0
  129. package/dist/core/tools/renderers/ls.d.ts +10 -0
  130. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  131. package/dist/core/tools/renderers/ls.js +57 -0
  132. package/dist/core/tools/renderers/ls.js.map +1 -0
  133. package/dist/core/tools/renderers/read.d.ts +11 -0
  134. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  135. package/dist/core/tools/renderers/read.js +131 -0
  136. package/dist/core/tools/renderers/read.js.map +1 -0
  137. package/dist/core/tools/renderers/write.d.ts +10 -0
  138. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  139. package/dist/core/tools/renderers/write.js +151 -0
  140. package/dist/core/tools/renderers/write.js.map +1 -0
  141. package/dist/core/tools/write.d.ts.map +1 -1
  142. package/dist/core/tools/write.js +5 -144
  143. package/dist/core/tools/write.js.map +1 -1
  144. package/dist/experimental/client-runtime.d.ts +43 -0
  145. package/dist/experimental/client-runtime.d.ts.map +1 -0
  146. package/dist/experimental/client-runtime.js +183 -0
  147. package/dist/experimental/client-runtime.js.map +1 -0
  148. package/dist/experimental/client-tui-chat.d.ts +14 -0
  149. package/dist/experimental/client-tui-chat.d.ts.map +1 -0
  150. package/dist/experimental/client-tui-chat.js +176 -0
  151. package/dist/experimental/client-tui-chat.js.map +1 -0
  152. package/dist/experimental/client-tui.d.ts +37 -0
  153. package/dist/experimental/client-tui.d.ts.map +1 -0
  154. package/dist/experimental/client-tui.js +702 -0
  155. package/dist/experimental/client-tui.js.map +1 -0
  156. package/dist/experimental/client.d.ts +25 -0
  157. package/dist/experimental/client.d.ts.map +1 -0
  158. package/dist/experimental/client.js +99 -0
  159. package/dist/experimental/client.js.map +1 -0
  160. package/dist/experimental/coordinator-entry.d.ts +3 -0
  161. package/dist/experimental/coordinator-entry.d.ts.map +1 -0
  162. package/dist/experimental/coordinator-entry.js +11 -0
  163. package/dist/experimental/coordinator-entry.js.map +1 -0
  164. package/dist/experimental/coordinator.d.ts +38 -0
  165. package/dist/experimental/coordinator.d.ts.map +1 -0
  166. package/dist/experimental/coordinator.js +572 -0
  167. package/dist/experimental/coordinator.js.map +1 -0
  168. package/dist/experimental/mini/main.d.ts +7 -0
  169. package/dist/experimental/mini/main.d.ts.map +1 -0
  170. package/dist/experimental/mini/main.js +21 -0
  171. package/dist/experimental/mini/main.js.map +1 -0
  172. package/dist/experimental/mini/server/entry.d.ts +3 -0
  173. package/dist/experimental/mini/server/entry.d.ts.map +1 -0
  174. package/dist/experimental/mini/server/entry.js +11 -0
  175. package/dist/experimental/mini/server/entry.js.map +1 -0
  176. package/dist/experimental/mini/server/run.d.ts +13 -0
  177. package/dist/experimental/mini/server/run.d.ts.map +1 -0
  178. package/dist/experimental/mini/server/run.js +150 -0
  179. package/dist/experimental/mini/server/run.js.map +1 -0
  180. package/dist/experimental/mini/shared/protocol.d.ts +127 -0
  181. package/dist/experimental/mini/shared/protocol.d.ts.map +1 -0
  182. package/dist/experimental/mini/shared/protocol.js +13 -0
  183. package/dist/experimental/mini/shared/protocol.js.map +1 -0
  184. package/dist/experimental/mini/shared/rpc.d.ts +49 -0
  185. package/dist/experimental/mini/shared/rpc.d.ts.map +1 -0
  186. package/dist/experimental/mini/shared/rpc.js +171 -0
  187. package/dist/experimental/mini/shared/rpc.js.map +1 -0
  188. package/dist/experimental/mini/shared/transport.d.ts +35 -0
  189. package/dist/experimental/mini/shared/transport.d.ts.map +1 -0
  190. package/dist/experimental/mini/shared/transport.js +94 -0
  191. package/dist/experimental/mini/shared/transport.js.map +1 -0
  192. package/dist/experimental/mini/tui/run.d.ts +9 -0
  193. package/dist/experimental/mini/tui/run.d.ts.map +1 -0
  194. package/dist/experimental/mini/tui/run.js +62 -0
  195. package/dist/experimental/mini/tui/run.js.map +1 -0
  196. package/dist/experimental/mini/tui/session.d.ts +26 -0
  197. package/dist/experimental/mini/tui/session.d.ts.map +1 -0
  198. package/dist/experimental/mini/tui/session.js +94 -0
  199. package/dist/experimental/mini/tui/session.js.map +1 -0
  200. package/dist/experimental/mini/tui/view.d.ts +10 -0
  201. package/dist/experimental/mini/tui/view.d.ts.map +1 -0
  202. package/dist/experimental/mini/tui/view.js +461 -0
  203. package/dist/experimental/mini/tui/view.js.map +1 -0
  204. package/dist/experimental/mini/worker/entry.d.ts +3 -0
  205. package/dist/experimental/mini/worker/entry.d.ts.map +1 -0
  206. package/dist/experimental/mini/worker/entry.js +10 -0
  207. package/dist/experimental/mini/worker/entry.js.map +1 -0
  208. package/dist/experimental/mini/worker/lane-service.d.ts +44 -0
  209. package/dist/experimental/mini/worker/lane-service.d.ts.map +1 -0
  210. package/dist/experimental/mini/worker/lane-service.js +97 -0
  211. package/dist/experimental/mini/worker/lane-service.js.map +1 -0
  212. package/dist/experimental/mini/worker/models-service.d.ts +19 -0
  213. package/dist/experimental/mini/worker/models-service.d.ts.map +1 -0
  214. package/dist/experimental/mini/worker/models-service.js +136 -0
  215. package/dist/experimental/mini/worker/models-service.js.map +1 -0
  216. package/dist/experimental/mini/worker/run.d.ts +14 -0
  217. package/dist/experimental/mini/worker/run.d.ts.map +1 -0
  218. package/dist/experimental/mini/worker/run.js +88 -0
  219. package/dist/experimental/mini/worker/run.js.map +1 -0
  220. package/dist/experimental/plugin.d.ts +4 -0
  221. package/dist/experimental/plugin.d.ts.map +1 -0
  222. package/dist/experimental/plugin.js +4 -0
  223. package/dist/experimental/plugin.js.map +1 -0
  224. package/dist/experimental/plugins/bundled.d.ts +7 -0
  225. package/dist/experimental/plugins/bundled.d.ts.map +1 -0
  226. package/dist/experimental/plugins/bundled.js +51 -0
  227. package/dist/experimental/plugins/bundled.js.map +1 -0
  228. package/dist/experimental/plugins/package.d.ts +18 -0
  229. package/dist/experimental/plugins/package.d.ts.map +1 -0
  230. package/dist/experimental/plugins/package.js +113 -0
  231. package/dist/experimental/plugins/package.js.map +1 -0
  232. package/dist/experimental/process.d.ts +20 -0
  233. package/dist/experimental/process.d.ts.map +1 -0
  234. package/dist/experimental/process.js +85 -0
  235. package/dist/experimental/process.js.map +1 -0
  236. package/dist/experimental/radius-auth.d.ts +17 -0
  237. package/dist/experimental/radius-auth.d.ts.map +1 -0
  238. package/dist/experimental/radius-auth.js +52 -0
  239. package/dist/experimental/radius-auth.js.map +1 -0
  240. package/dist/experimental/radius-relay.d.ts +90 -0
  241. package/dist/experimental/radius-relay.d.ts.map +1 -0
  242. package/dist/experimental/radius-relay.js +582 -0
  243. package/dist/experimental/radius-relay.js.map +1 -0
  244. package/dist/experimental/server.d.ts +75 -0
  245. package/dist/experimental/server.d.ts.map +1 -0
  246. package/dist/experimental/server.js +682 -0
  247. package/dist/experimental/server.js.map +1 -0
  248. package/dist/experimental/services/agent-controller-provider.d.ts +4 -0
  249. package/dist/experimental/services/agent-controller-provider.d.ts.map +1 -0
  250. package/dist/experimental/services/agent-controller-provider.js +84 -0
  251. package/dist/experimental/services/agent-controller-provider.js.map +1 -0
  252. package/dist/experimental/services/agent-controller.d.ts +57 -0
  253. package/dist/experimental/services/agent-controller.d.ts.map +1 -0
  254. package/dist/experimental/services/agent-controller.js +3 -0
  255. package/dist/experimental/services/agent-controller.js.map +1 -0
  256. package/dist/experimental/services/connection.d.ts +40 -0
  257. package/dist/experimental/services/connection.d.ts.map +1 -0
  258. package/dist/experimental/services/connection.js +301 -0
  259. package/dist/experimental/services/connection.js.map +1 -0
  260. package/dist/experimental/services/models-provider.d.ts +16 -0
  261. package/dist/experimental/services/models-provider.d.ts.map +1 -0
  262. package/dist/experimental/services/models-provider.js +116 -0
  263. package/dist/experimental/services/models-provider.js.map +1 -0
  264. package/dist/experimental/services/models.d.ts +36 -0
  265. package/dist/experimental/services/models.d.ts.map +1 -0
  266. package/dist/experimental/services/models.js +3 -0
  267. package/dist/experimental/services/models.js.map +1 -0
  268. package/dist/experimental/services/plugins.d.ts +16 -0
  269. package/dist/experimental/services/plugins.d.ts.map +1 -0
  270. package/dist/experimental/services/plugins.js +4 -0
  271. package/dist/experimental/services/plugins.js.map +1 -0
  272. package/dist/experimental/services/presentation-ui.d.ts +13 -0
  273. package/dist/experimental/services/presentation-ui.d.ts.map +1 -0
  274. package/dist/experimental/services/presentation-ui.js +3 -0
  275. package/dist/experimental/services/presentation-ui.js.map +1 -0
  276. package/dist/experimental/services/server.d.ts +19 -0
  277. package/dist/experimental/services/server.d.ts.map +1 -0
  278. package/dist/experimental/services/server.js +104 -0
  279. package/dist/experimental/services/server.js.map +1 -0
  280. package/dist/experimental/services/sessions.d.ts +28 -0
  281. package/dist/experimental/services/sessions.d.ts.map +1 -0
  282. package/dist/experimental/services/sessions.js +4 -0
  283. package/dist/experimental/services/sessions.js.map +1 -0
  284. package/dist/experimental/services/slash-commands-provider.d.ts +14 -0
  285. package/dist/experimental/services/slash-commands-provider.d.ts.map +1 -0
  286. package/dist/experimental/services/slash-commands-provider.js +200 -0
  287. package/dist/experimental/services/slash-commands-provider.js.map +1 -0
  288. package/dist/experimental/services/slash-commands.d.ts +24 -0
  289. package/dist/experimental/services/slash-commands.d.ts.map +1 -0
  290. package/dist/experimental/services/slash-commands.js +3 -0
  291. package/dist/experimental/services/slash-commands.js.map +1 -0
  292. package/dist/experimental/services/transcript-provider.d.ts +12 -0
  293. package/dist/experimental/services/transcript-provider.d.ts.map +1 -0
  294. package/dist/experimental/services/transcript-provider.js +109 -0
  295. package/dist/experimental/services/transcript-provider.js.map +1 -0
  296. package/dist/experimental/services/transcript.d.ts +13 -0
  297. package/dist/experimental/services/transcript.d.ts.map +1 -0
  298. package/dist/experimental/services/transcript.js +3 -0
  299. package/dist/experimental/services/transcript.js.map +1 -0
  300. package/dist/experimental/services/worker.d.ts +28 -0
  301. package/dist/experimental/services/worker.d.ts.map +1 -0
  302. package/dist/experimental/services/worker.js +107 -0
  303. package/dist/experimental/services/worker.js.map +1 -0
  304. package/dist/experimental/session-worker-manager.d.ts +24 -0
  305. package/dist/experimental/session-worker-manager.d.ts.map +1 -0
  306. package/dist/experimental/session-worker-manager.js +699 -0
  307. package/dist/experimental/session-worker-manager.js.map +1 -0
  308. package/dist/experimental/session-worker.d.ts +188 -0
  309. package/dist/experimental/session-worker.d.ts.map +1 -0
  310. package/dist/experimental/session-worker.js +785 -0
  311. package/dist/experimental/session-worker.js.map +1 -0
  312. package/dist/experimental/source-resolver.d.ts +2 -0
  313. package/dist/experimental/source-resolver.d.ts.map +1 -0
  314. package/dist/experimental/source-resolver.js +71 -0
  315. package/dist/experimental/source-resolver.js.map +1 -0
  316. package/dist/extensions/background/index.d.ts +5 -4
  317. package/dist/extensions/background/index.d.ts.map +1 -1
  318. package/dist/extensions/background/index.js +9 -5
  319. package/dist/extensions/background/index.js.map +1 -1
  320. package/dist/extensions/subagent/render.d.ts.map +1 -1
  321. package/dist/extensions/subagent/render.js +9 -2
  322. package/dist/extensions/subagent/render.js.map +1 -1
  323. package/dist/image-resize-worker.js +2 -0
  324. package/dist/index.d.ts +1 -1
  325. package/dist/index.d.ts.map +1 -1
  326. package/dist/index.js.map +1 -1
  327. package/dist/main.d.ts.map +1 -1
  328. package/dist/main.js +126 -1
  329. package/dist/main.js.map +1 -1
  330. package/dist/modes/interactive/chat-viewport.d.ts +20 -0
  331. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  332. package/dist/modes/interactive/chat-viewport.js +28 -0
  333. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  334. package/dist/modes/interactive/components/assistant-message.d.ts +1 -0
  335. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  336. package/dist/modes/interactive/components/assistant-message.js +18 -10
  337. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  338. package/dist/modes/interactive/components/custom-editor.d.ts +10 -1
  339. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  340. package/dist/modes/interactive/components/custom-editor.js +37 -1
  341. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  342. package/dist/modes/interactive/components/index.d.ts +1 -1
  343. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  344. package/dist/modes/interactive/components/index.js.map +1 -1
  345. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  346. package/dist/modes/interactive/components/model-selector.js +5 -14
  347. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  348. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  349. package/dist/modes/interactive/components/scoped-models-selector.js +13 -15
  350. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  351. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  352. package/dist/modes/interactive/components/settings-selector.js +14 -10
  353. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  354. package/dist/modes/interactive/components/status-indicator.d.ts +3 -1
  355. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  356. package/dist/modes/interactive/components/status-indicator.js +10 -3
  357. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  358. package/dist/modes/interactive/components/thinking-selector.js +2 -2
  359. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  360. package/dist/modes/interactive/components/tool-execution.d.ts +22 -4
  361. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  362. package/dist/modes/interactive/components/tool-execution.js +31 -30
  363. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  364. package/dist/modes/interactive/components/trust-selector.js +2 -2
  365. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  366. package/dist/modes/interactive/interactive-mode.d.ts +8 -15
  367. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  368. package/dist/modes/interactive/interactive-mode.js +95 -80
  369. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  370. package/dist/modes/interactive/session-share.d.ts.map +1 -1
  371. package/dist/modes/interactive/session-share.js +8 -12
  372. package/dist/modes/interactive/session-share.js.map +1 -1
  373. package/dist/modes/interactive/theme/dark.json +2 -1
  374. package/dist/modes/interactive/theme/light.json +2 -1
  375. package/dist/modes/interactive/theme/theme-controller.d.ts +1 -0
  376. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  377. package/dist/modes/interactive/theme/theme-controller.js +5 -0
  378. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  379. package/dist/modes/interactive/theme/theme-json.d.ts +84 -0
  380. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
  381. package/dist/modes/interactive/theme/theme-json.js +130 -0
  382. package/dist/modes/interactive/theme/theme-json.js.map +1 -0
  383. package/dist/modes/interactive/theme/theme-schema.json +6 -2
  384. package/dist/modes/interactive/theme/theme.d.ts +14 -5
  385. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  386. package/dist/modes/interactive/theme/theme.js +18 -119
  387. package/dist/modes/interactive/theme/theme.js.map +1 -1
  388. package/dist/modes/interactive/tui-renderer.d.ts +21 -0
  389. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  390. package/dist/modes/interactive/tui-renderer.js +66 -0
  391. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  392. package/dist/rpc-entry.js +2541 -10
  393. package/dist/utils/exif-orientation.d.ts.map +1 -1
  394. package/dist/utils/exif-orientation.js +2 -3
  395. package/dist/utils/exif-orientation.js.map +1 -1
  396. package/dist/utils/tools-manager.d.ts +1 -0
  397. package/dist/utils/tools-manager.d.ts.map +1 -1
  398. package/dist/utils/tools-manager.js +41 -19
  399. package/dist/utils/tools-manager.js.map +1 -1
  400. package/docs/bundled/extensions/background.md +2 -2
  401. package/docs/bundled/extensions/subagent.md +1 -1
  402. package/docs/development.md +1 -1
  403. package/examples/plugins/pi-example-plugin/README.md +38 -0
  404. package/examples/plugins/pi-example-plugin/package.json +10 -0
  405. package/examples/plugins/pi-example-plugin/src/contract.ts +13 -0
  406. package/examples/plugins/pi-example-plugin/src/session.ts +23 -0
  407. package/examples/plugins/pi-example-plugin/src/tui.ts +31 -0
  408. package/npm-shrinkwrap.json +724 -212
  409. package/package.json +15 -7
  410. package/dist/bun/register-bedrock.d.ts +0 -2
  411. package/dist/bun/register-bedrock.d.ts.map +0 -1
  412. package/dist/bun/register-bedrock.js +0 -4
  413. package/dist/bun/register-bedrock.js.map +0 -1
  414. package/dist/cli/experimental/auth.d.ts +0 -16
  415. package/dist/cli/experimental/auth.d.ts.map +0 -1
  416. package/dist/cli/experimental/auth.js +0 -13
  417. package/dist/cli/experimental/auth.js.map +0 -1
  418. package/dist/cli/experimental/commands/pi.d.ts +0 -15
  419. package/dist/cli/experimental/commands/pi.d.ts.map +0 -1
  420. package/dist/cli/experimental/commands/pi.js +0 -28
  421. package/dist/cli/experimental/commands/pi.js.map +0 -1
  422. package/dist/cli/experimental/transport-address.d.ts +0 -10
  423. package/dist/cli/experimental/transport-address.d.ts.map +0 -1
  424. package/dist/cli/experimental/transport-address.js +0 -38
  425. package/dist/cli/experimental/transport-address.js.map +0 -1
  426. package/dist/client/remote-session.d.ts +0 -53
  427. package/dist/client/remote-session.d.ts.map +0 -1
  428. package/dist/client/remote-session.js +0 -340
  429. package/dist/client/remote-session.js.map +0 -1
  430. package/dist/client/transcript.d.ts +0 -12
  431. package/dist/client/transcript.d.ts.map +0 -1
  432. package/dist/client/transcript.js +0 -98
  433. package/dist/client/transcript.js.map +0 -1
  434. package/dist/server/create-harness.d.ts +0 -26
  435. package/dist/server/create-harness.d.ts.map +0 -1
  436. package/dist/server/create-harness.js +0 -106
  437. package/dist/server/create-harness.js.map +0 -1
@@ -7,7 +7,7 @@ import * as fs from "node:fs";
7
7
  import * as os from "node:os";
8
8
  import * as path from "node:path";
9
9
  import * as TuiLayouts from "@earendil-works/pi-tui";
10
- import { CombinedAutocompleteProvider, Container, fuzzyFilter, Markdown, matchesKey, ProcessTerminal, Spacer, setCapabilityOverrides, setKeybindings, Text, TruncatedText, TuiAltScreen, TuiMainScreen, visibleWidth, } from "@earendil-works/pi-tui";
10
+ import { CombinedAutocompleteProvider, Container, fuzzyFilter, Markdown, matchesKey, Spacer, setCapabilityOverrides, setKeybindings, Text, TruncatedText, TuiAltScreen, TuiMainScreen, visibleWidth, } from "@earendil-works/pi-tui";
11
11
  import chalk from "chalk";
12
12
  import { spawn } from "child_process";
13
13
  import { APP_NAME, APP_TITLE, CONFIG_DIR_NAME, getAgentDir, getAuthPath, getDebugLogPath, getDocsPath, INSTALL_TELEMETRY_URL, UPDATE_CHANGELOG_HINT, VERSION, } from "../../config.js";
@@ -26,18 +26,19 @@ import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../cor
26
26
  import { SessionManager, sessionEntryToContextMessages } from "../../core/session-manager.js";
27
27
  import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
28
28
  import { isInstallTelemetryEnabled } from "../../core/telemetry.js";
29
+ import { withBuiltInRenderers } from "../../core/tools/renderers/index.js";
29
30
  import { hasTrustRequiringProjectResources, ProjectTrustStore } from "../../core/trust-manager.js";
30
31
  import { getUsageCostBreakdown } from "../../core/usage-totals.js";
31
32
  import { getChangelogPath, getNewEntries, normalizeChangelogLinks, parseChangelog } from "../../utils/changelog.js";
32
33
  import { copyToClipboard, readClipboardText } from "../../utils/clipboard.js";
33
34
  import { extensionForImageMimeType, readClipboardImage } from "../../utils/clipboard-image.js";
34
35
  import { parseGitUrl } from "../../utils/git.js";
35
- import { openBrowser } from "../../utils/open-browser.js";
36
36
  import { getCwdRelativePath } from "../../utils/paths.js";
37
37
  import { getPiUserAgent } from "../../utils/pi-user-agent.js";
38
38
  import { killTrackedDetachedChildren } from "../../utils/shell.js";
39
39
  import { ensureTool } from "../../utils/tools-manager.js";
40
40
  import { checkForNewPiVersion } from "../../utils/version-check.js";
41
+ import { createChatViewport } from "./chat-viewport.js";
41
42
  import { ArminComponent } from "./components/armin.js";
42
43
  import { AssistantMessageComponent } from "./components/assistant-message.js";
43
44
  import { BashExecutionComponent } from "./components/bash-execution.js";
@@ -76,6 +77,14 @@ import { getModelSearchText } from "./model-search.js";
76
77
  import { shareSession } from "./session-share.js";
77
78
  import { getAvailableThemes, getAvailableThemesWithPaths, getEditorTheme, getMarkdownTheme, getThemeByName, onThemeChange, setRegisteredThemes, stopThemeWatcher, Theme, theme, } from "./theme/theme.js";
78
79
  import { InteractiveThemeController } from "./theme/theme-controller.js";
80
+ import { createInteractiveTui, createInteractiveTuiReference } from "./tui-renderer.js";
81
+ export { createInteractiveTui, createInteractiveTuiReference } from "./tui-renderer.js";
82
+ function isWorkingStatusEditor(editor) {
83
+ return ("embedWorkingStatus" in editor &&
84
+ editor.embedWorkingStatus === true &&
85
+ "setWorkingStatusIndicator" in editor &&
86
+ typeof editor.setWorkingStatusIndicator === "function");
87
+ }
79
88
  function isExpandable(obj) {
80
89
  return typeof obj === "object" && obj !== null && "setExpanded" in obj && typeof obj.setExpanded === "function";
81
90
  }
@@ -175,61 +184,6 @@ function formatLoginProviderCompletionDescription(provider) {
175
184
  const authTypes = provider.authTypes.map(formatAuthSelectorProviderType).join("/");
176
185
  return provider.name === provider.id ? authTypes : `${provider.name} · ${authTypes}`;
177
186
  }
178
- /** Composition root for selecting the interactive terminal renderer. */
179
- export function createInteractiveTui(options) {
180
- const terminal = options.terminal ?? new ProcessTerminal();
181
- if (options.tuiMode === "fullscreen") {
182
- const styleSearchMatch = (text) => theme.bg("searchMatchBg", theme.fg("searchMatchText", text));
183
- return new TuiAltScreen(terminal, options.showHardwareCursor, options.logDirectory, {
184
- searchMatchStyle: (text) => theme.underline(styleSearchMatch(text)),
185
- searchCurrentMatchStyle: (text) => theme.bold(theme.inverse(styleSearchMatch(text))),
186
- openUrl: openBrowser,
187
- onRightClickPaste: options.onRightClickPaste,
188
- copyOnSelect: options.fullscreenCopyOnSelect,
189
- copySelection: async (text) => {
190
- try {
191
- await copyToClipboard(text);
192
- return true;
193
- }
194
- catch {
195
- return false;
196
- }
197
- },
198
- });
199
- }
200
- return new TuiMainScreen(terminal, options.showHardwareCursor, options.logDirectory);
201
- }
202
- /** Stable reference for components while InteractiveMode replaces the active renderer. */
203
- export function createInteractiveTuiReference(getTui) {
204
- return new Proxy({}, {
205
- get: (_target, property) => {
206
- const tui = getTui();
207
- const value = Reflect.get(tui, property, tui);
208
- if (typeof value !== "function")
209
- return value;
210
- let methodTui = tui;
211
- let method = value;
212
- return (...args) => {
213
- const currentTui = getTui();
214
- if (currentTui !== methodTui) {
215
- const currentMethod = Reflect.get(currentTui, property, currentTui);
216
- if (typeof currentMethod !== "function") {
217
- throw new TypeError(`TUI property ${String(property)} is not callable`);
218
- }
219
- methodTui = currentTui;
220
- method = currentMethod;
221
- }
222
- return Reflect.apply(method, methodTui, args);
223
- };
224
- },
225
- set: (_target, property, value) => {
226
- const tui = getTui();
227
- return Reflect.set(tui, property, value, tui);
228
- },
229
- has: (_target, property) => Reflect.has(getTui(), property),
230
- getPrototypeOf: () => Reflect.getPrototypeOf(getTui()),
231
- });
232
- }
233
187
  /** Chat children that host tool presentation and share image display settings. */
234
188
  function isToolChatComponent(child) {
235
189
  return child instanceof ToolExecutionComponent || child instanceof ToolGroupComponent;
@@ -253,11 +207,12 @@ export class InteractiveMode {
253
207
  this.isInitialized = false;
254
208
  this.pendingUserInputs = [];
255
209
  this.activeStatusIndicator = undefined;
210
+ this.activeWorkingIndicatorEmbedded = false;
256
211
  this.idleStatus = new IdleStatus();
257
212
  this.workingMessage = undefined;
258
213
  this.workingVisible = true;
259
214
  this.workingIndicatorOptions = undefined;
260
- this.defaultWorkingMessage = "Working...";
215
+ this.defaultWorkingMessage = "Working";
261
216
  this.defaultHiddenThinkingLabel = "Thinking...";
262
217
  this.hiddenThinkingLabel = this.defaultHiddenThinkingLabel;
263
218
  this.lastSigintTime = 0;
@@ -359,6 +314,7 @@ export class InteractiveMode {
359
314
  this.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {
360
315
  paddingX: editorPaddingX,
361
316
  autocompleteMaxVisible,
317
+ embedWorkingStatus: true,
362
318
  });
363
319
  this.editor = this.defaultEditor;
364
320
  this.editorContainer = new Container();
@@ -630,25 +586,20 @@ export class InteractiveMode {
630
586
  }
631
587
  // Keep one component tree and remount it when changing renderers.
632
588
  this.renderWidgets(); // Initialize with default spacer
633
- this.transcriptScrollView = new TuiLayouts.ScrollView(this.documentContainer, {
634
- follow: "end",
635
- primary: true,
636
- overscroll: "chain",
589
+ const viewport = createChatViewport({
590
+ document: this.documentContainer,
591
+ pendingMessages: this.pendingMessagesContainer,
592
+ status: this.statusContainer,
593
+ widgetsAbove: this.widgetContainerAbove,
594
+ editor: this.editorContainer,
595
+ widgetsBelow: this.widgetContainerBelow,
596
+ footer: this.footerContainer,
637
597
  scrollbar: this.settingsManager.getFullscreenScrollbar(),
638
- scrollbarStyle: (text) => theme.bg("scrollbarThumb", text),
598
+ scrollbarTrackStyle: (text) => theme.fg("scrollbarTrack", text),
599
+ scrollbarThumbStyle: (text) => theme.fg("scrollbarThumb", text),
639
600
  });
640
- const dock = new TuiLayouts.VStack([
641
- { component: this.pendingMessagesContainer, shrink: 1, minSize: 0 },
642
- { component: this.statusContainer, shrink: 1, minSize: 0 },
643
- { component: this.widgetContainerAbove, shrink: 1, minSize: 0 },
644
- { component: this.editorContainer, shrink: 1, minSize: 3 },
645
- { component: this.widgetContainerBelow, shrink: 1, minSize: 0 },
646
- { component: this.footerContainer, shrink: 1, minSize: 1 },
647
- ]);
648
- this.fullscreenLayoutRoot = new TuiLayouts.VStack([
649
- { component: this.transcriptScrollView, basis: 0, grow: 1, shrink: 1, minSize: 1 },
650
- { component: dock, basis: "auto", grow: 0, shrink: 1, minSize: 1 },
651
- ]);
601
+ this.transcriptScrollView = viewport.transcript;
602
+ this.fullscreenLayoutRoot = viewport.root;
652
603
  this.mountInteractiveTui(this.renderer, [
653
604
  this.documentContainer,
654
605
  this.pendingMessagesContainer,
@@ -1573,8 +1524,12 @@ export class InteractiveMode {
1573
1524
  /**
1574
1525
  * Get a registered tool definition by name (for custom rendering).
1575
1526
  */
1527
+ /**
1528
+ * Extension-registered definition, falling back to the built-in one. The renderer components take
1529
+ * whatever this returns, so they never reach into the tool registry themselves.
1530
+ */
1576
1531
  getRegisteredToolDefinition(toolName) {
1577
- return this.session.getToolDefinition(toolName);
1532
+ return withBuiltInRenderers(toolName, this.session.getToolDefinition(toolName));
1578
1533
  }
1579
1534
  createToolExecutionComponent(toolName, toolCallId, args) {
1580
1535
  const component = new ToolExecutionComponent(toolName, toolCallId, args, {
@@ -1636,26 +1591,48 @@ export class InteractiveMode {
1636
1591
  this.footerDataProvider.setExtensionStatus(key, text);
1637
1592
  this.ui.requestRender();
1638
1593
  }
1594
+ setEditorWorkingStatusIndicator(indicator) {
1595
+ this.defaultEditor.setWorkingStatusIndicator(undefined);
1596
+ if (!isWorkingStatusEditor(this.editor))
1597
+ return false;
1598
+ this.editor.setWorkingStatusIndicator(indicator);
1599
+ return true;
1600
+ }
1639
1601
  showStatusIndicator(indicator) {
1640
1602
  this.activeStatusIndicator?.dispose();
1641
1603
  this.activeStatusIndicator = indicator;
1604
+ this.activeWorkingIndicatorEmbedded = false;
1642
1605
  this.statusContainer.clear();
1606
+ this.setEditorWorkingStatusIndicator(undefined);
1607
+ if (indicator instanceof WorkingStatusIndicator && this.setEditorWorkingStatusIndicator(indicator)) {
1608
+ this.activeWorkingIndicatorEmbedded = true;
1609
+ return;
1610
+ }
1643
1611
  this.statusContainer.addChild(indicator);
1644
1612
  }
1645
1613
  clearStatusIndicator(kind) {
1646
1614
  if (kind && this.activeStatusIndicator?.kind !== kind) {
1647
1615
  return;
1648
1616
  }
1649
- const hadActiveStatusIndicator = this.activeStatusIndicator !== undefined;
1650
- this.activeStatusIndicator?.dispose();
1617
+ const clearedIndicator = this.activeStatusIndicator;
1618
+ const clearedIndicatorWasEmbedded = clearedIndicator?.kind === "working" && this.activeWorkingIndicatorEmbedded;
1619
+ clearedIndicator?.dispose();
1651
1620
  this.activeStatusIndicator = undefined;
1621
+ this.activeWorkingIndicatorEmbedded = false;
1652
1622
  this.statusContainer.clear();
1653
- if (hadActiveStatusIndicator && this.options.tuiMode === "regular" && this.ui.getClearOnShrink()) {
1623
+ this.setEditorWorkingStatusIndicator(undefined);
1624
+ if (clearedIndicator &&
1625
+ !clearedIndicatorWasEmbedded &&
1626
+ this.options.tuiMode === "regular" &&
1627
+ this.ui.getClearOnShrink()) {
1654
1628
  this.statusContainer.addChild(this.idleStatus);
1655
1629
  }
1656
1630
  }
1657
1631
  showWorkingStatusIndicator() {
1658
- this.showStatusIndicator(new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.workingIndicatorOptions));
1632
+ const colorFn = isWorkingStatusEditor(this.editor)
1633
+ ? (text) => (this.editor.borderColor ?? theme.getThinkingBorderColor(this.session.thinkingLevel || "off"))(text)
1634
+ : undefined;
1635
+ this.showStatusIndicator(new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.workingIndicatorOptions, colorFn));
1659
1636
  }
1660
1637
  setWorkingVisible(visible) {
1661
1638
  this.workingVisible = visible;
@@ -2134,6 +2111,13 @@ export class InteractiveMode {
2134
2111
  this.editor = this.defaultEditor;
2135
2112
  }
2136
2113
  this.editorContainer.addChild(this.editor);
2114
+ if (this.activeStatusIndicator instanceof WorkingStatusIndicator) {
2115
+ this.statusContainer.clear();
2116
+ this.activeWorkingIndicatorEmbedded = this.setEditorWorkingStatusIndicator(this.activeStatusIndicator);
2117
+ if (!this.activeWorkingIndicatorEmbedded) {
2118
+ this.statusContainer.addChild(this.activeStatusIndicator);
2119
+ }
2120
+ }
2137
2121
  this.ui.setFocus(this.editor);
2138
2122
  this.ui.requestRender();
2139
2123
  }
@@ -2671,6 +2655,7 @@ export class InteractiveMode {
2671
2655
  for (const [, component] of this.pendingTools.entries()) {
2672
2656
  component.setArgsComplete();
2673
2657
  }
2658
+ this.maybeShowAssistantDiagnostics(this.streamingMessage);
2674
2659
  this.maybeShowCacheMissNotice(this.streamingMessage);
2675
2660
  }
2676
2661
  this.streamingComponent = undefined;
@@ -3026,6 +3011,7 @@ export class InteractiveMode {
3026
3011
  }
3027
3012
  }
3028
3013
  if (message.stopReason !== "aborted" && message.stopReason !== "error") {
3014
+ this.maybeShowAssistantDiagnostics(message);
3029
3015
  const miss = cacheMisses.get(message);
3030
3016
  if (miss)
3031
3017
  this.addCacheMissNotice(miss);
@@ -3082,6 +3068,32 @@ export class InteractiveMode {
3082
3068
  this.chatContainer.addChild(new Spacer(1));
3083
3069
  this.chatContainer.addChild(new Text(theme.fg("warning", `${label}: ${formatTokens(tokens)} tokens billed${cost}`), 1, 0));
3084
3070
  }
3071
+ maybeShowAssistantDiagnostics(message) {
3072
+ if (!this.settingsManager.getShowCacheMissNotices())
3073
+ return;
3074
+ for (const diagnostic of message.diagnostics ?? []) {
3075
+ if (diagnostic.type !== "anthropic_input_transformations")
3076
+ continue;
3077
+ const transformations = diagnostic.details?.transformations;
3078
+ if (!Array.isArray(transformations))
3079
+ continue;
3080
+ const dropped = transformations.flatMap((transformation) => {
3081
+ if (typeof transformation !== "object" || transformation === null)
3082
+ return [];
3083
+ const details = transformation;
3084
+ if (details.type !== "thinking_dropped")
3085
+ return [];
3086
+ const reason = typeof details.reason === "string" ? details.reason : "unknown reason";
3087
+ const location = typeof details.path === "string" ? ` at ${details.path}` : "";
3088
+ return [`${reason}${location}`];
3089
+ });
3090
+ if (dropped.length === 0)
3091
+ continue;
3092
+ const noun = dropped.length === 1 ? "thinking block" : `${dropped.length} thinking blocks`;
3093
+ this.chatContainer.addChild(new Spacer(1));
3094
+ this.chatContainer.addChild(new Text(theme.fg("warning", `Anthropic dropped ${noun}: ${dropped.join("; ")}`), 1, 0));
3095
+ }
3096
+ }
3085
3097
  /**
3086
3098
  * Show a transcript notice when a completed assistant message paid for a
3087
3099
  * significant cache miss. Only states observable facts: the miss itself,
@@ -3373,6 +3385,9 @@ export class InteractiveMode {
3373
3385
  const level = this.session.thinkingLevel || "off";
3374
3386
  this.editor.borderColor = theme.getThinkingBorderColor(level);
3375
3387
  }
3388
+ if (this.activeStatusIndicator?.kind === "working") {
3389
+ this.activeStatusIndicator.invalidate();
3390
+ }
3376
3391
  this.ui.requestRender();
3377
3392
  }
3378
3393
  cycleThinkingLevel() {