@earendil-works/pi-coding-agent 0.84.3 → 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 (533) hide show
  1. package/CHANGELOG.md +98 -2
  2. package/README.md +8 -5
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js +10 -7
  5. package/dist/bun/cli.js.map +1 -1
  6. package/dist/bun/runtime-setup.d.ts +2 -0
  7. package/dist/bun/runtime-setup.d.ts.map +1 -0
  8. package/dist/bun/runtime-setup.js +9 -0
  9. package/dist/bun/runtime-setup.js.map +1 -0
  10. package/dist/bundle/chunks/anthropic-messages-QAQLEQIY.js +6 -0
  11. package/dist/bundle/chunks/{azure-openai-responses-5ENVCQ7U.js → azure-openai-responses-Q7MJBRE6.js} +1 -1
  12. package/dist/bundle/chunks/bedrock-converse-stream.js +1 -1
  13. package/dist/bundle/chunks/{chunk-GPPBJGBU.js → chunk-2KVJKXS2.js} +1 -1
  14. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  15. package/dist/bundle/chunks/chunk-EQ6DR6XK.js +5 -0
  16. package/dist/bundle/chunks/{chunk-MNAIPA3J.js → chunk-IDDQWTHI.js} +1 -1
  17. package/dist/bundle/chunks/chunk-LZKJTKCT.js +2 -0
  18. package/dist/bundle/chunks/{chunk-NBBFIJUL.js → chunk-OUXLLA64.js} +2 -2
  19. package/dist/bundle/chunks/chunk-R7UUJ4C2.js +42 -0
  20. package/dist/bundle/chunks/chunk-USJZMAIR.js +2 -0
  21. package/dist/bundle/chunks/chunk-WBE4J4AU.js +9 -0
  22. package/dist/bundle/chunks/chunk-WZB2R5YO.js +1558 -0
  23. package/dist/bundle/chunks/github-copilot.js +1 -1
  24. package/dist/bundle/chunks/{google-generative-ai-XDKMGBCJ.js → google-generative-ai-BSMTYDAM.js} +1 -1
  25. package/dist/bundle/chunks/{google-vertex-D5FGEO3Y.js → google-vertex-5C3HASOJ.js} +1 -1
  26. package/dist/bundle/chunks/https-proxy-agent-2VXB7436.js +13 -0
  27. package/dist/bundle/chunks/image-resize-worker.js +1 -1
  28. package/dist/bundle/chunks/{mistral-conversations-YK73UAOZ.js → mistral-conversations-4M6BZBX6.js} +2 -2
  29. package/dist/bundle/chunks/node-EM5FIVUN.js +16 -0
  30. package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
  31. package/dist/bundle/chunks/openai-codex-responses-YJOO52RW.js +10 -0
  32. package/dist/bundle/chunks/openai-completions-QOT3QX7D.js +7 -0
  33. package/dist/bundle/chunks/openai-responses-U7LNPQN4.js +2 -0
  34. package/dist/bundle/chunks/{pi-messages-TPFH44NP.js → pi-messages-EGZIFQGG.js} +1 -1
  35. package/dist/bundle/cli.js +1 -1
  36. package/dist/bundle/client.js +1 -1
  37. package/dist/bundle/coordinator.js +3 -0
  38. package/dist/bundle/index.js +1 -1
  39. package/dist/bundle/rpc-entry.js +1 -1
  40. package/dist/cli/args.d.ts.map +1 -1
  41. package/dist/cli/args.js +2 -0
  42. package/dist/cli/args.js.map +1 -1
  43. package/dist/cli/config-selector.d.ts.map +1 -1
  44. package/dist/cli/config-selector.js +2 -1
  45. package/dist/cli/config-selector.js.map +1 -1
  46. package/dist/cli/experimental/cli.d.ts +7 -3
  47. package/dist/cli/experimental/cli.d.ts.map +1 -1
  48. package/dist/cli/experimental/cli.js +6 -2
  49. package/dist/cli/experimental/cli.js.map +1 -1
  50. package/dist/cli/experimental/command-options.d.ts +23 -12
  51. package/dist/cli/experimental/command-options.d.ts.map +1 -1
  52. package/dist/cli/experimental/command-options.js +69 -20
  53. package/dist/cli/experimental/command-options.js.map +1 -1
  54. package/dist/cli/experimental/command.d.ts +10 -3
  55. package/dist/cli/experimental/command.d.ts.map +1 -1
  56. package/dist/cli/experimental/command.js +28 -14
  57. package/dist/cli/experimental/command.js.map +1 -1
  58. package/dist/cli/experimental/commands/client.d.ts +8 -2
  59. package/dist/cli/experimental/commands/client.d.ts.map +1 -1
  60. package/dist/cli/experimental/commands/client.js +43 -5
  61. package/dist/cli/experimental/commands/client.js.map +1 -1
  62. package/dist/cli/experimental/commands/server.d.ts +7 -3
  63. package/dist/cli/experimental/commands/server.d.ts.map +1 -1
  64. package/dist/cli/experimental/commands/server.js +27 -8
  65. package/dist/cli/experimental/commands/server.js.map +1 -1
  66. package/dist/cli/startup-ui.d.ts.map +1 -1
  67. package/dist/cli/startup-ui.js +2 -1
  68. package/dist/cli/startup-ui.js.map +1 -1
  69. package/dist/cli.d.ts.map +1 -1
  70. package/dist/cli.js +23 -14
  71. package/dist/cli.js.map +1 -1
  72. package/dist/client/index.d.ts +1 -2
  73. package/dist/client/index.d.ts.map +1 -1
  74. package/dist/client/index.js +1 -2
  75. package/dist/client/index.js.map +1 -1
  76. package/dist/config.d.ts +1 -0
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/config.js +1 -0
  79. package/dist/config.js.map +1 -1
  80. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  81. package/dist/core/agent-session-runtime.js +15 -7
  82. package/dist/core/agent-session-runtime.js.map +1 -1
  83. package/dist/core/agent-session.d.ts +14 -7
  84. package/dist/core/agent-session.d.ts.map +1 -1
  85. package/dist/core/agent-session.js +91 -15
  86. package/dist/core/agent-session.js.map +1 -1
  87. package/dist/core/compaction/branch-summarization.d.ts +1 -1
  88. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  89. package/dist/core/compaction/branch-summarization.js +6 -4
  90. package/dist/core/compaction/branch-summarization.js.map +1 -1
  91. package/dist/core/compaction/compaction.d.ts +5 -0
  92. package/dist/core/compaction/compaction.d.ts.map +1 -1
  93. package/dist/core/compaction/compaction.js +19 -5
  94. package/dist/core/compaction/compaction.js.map +1 -1
  95. package/dist/core/extensions/index.d.ts +1 -1
  96. package/dist/core/extensions/index.d.ts.map +1 -1
  97. package/dist/core/extensions/index.js.map +1 -1
  98. package/dist/core/extensions/loader.d.ts.map +1 -1
  99. package/dist/core/extensions/loader.js +1 -2
  100. package/dist/core/extensions/loader.js.map +1 -1
  101. package/dist/core/extensions/runner.d.ts +5 -0
  102. package/dist/core/extensions/runner.d.ts.map +1 -1
  103. package/dist/core/extensions/runner.js +45 -1
  104. package/dist/core/extensions/runner.js.map +1 -1
  105. package/dist/core/extensions/types.d.ts +26 -3
  106. package/dist/core/extensions/types.d.ts.map +1 -1
  107. package/dist/core/extensions/types.js.map +1 -1
  108. package/dist/core/http-dispatcher.d.ts.map +1 -1
  109. package/dist/core/http-dispatcher.js +2 -0
  110. package/dist/core/http-dispatcher.js.map +1 -1
  111. package/dist/core/messages.d.ts +1 -1
  112. package/dist/core/messages.d.ts.map +1 -1
  113. package/dist/core/messages.js.map +1 -1
  114. package/dist/core/model-config.d.ts +15 -0
  115. package/dist/core/model-config.d.ts.map +1 -1
  116. package/dist/core/model-config.js +3 -0
  117. package/dist/core/model-config.js.map +1 -1
  118. package/dist/core/model-runtime.d.ts +1 -0
  119. package/dist/core/model-runtime.d.ts.map +1 -1
  120. package/dist/core/model-runtime.js +5 -2
  121. package/dist/core/model-runtime.js.map +1 -1
  122. package/dist/core/provider-composer.d.ts.map +1 -1
  123. package/dist/core/provider-composer.js +8 -2
  124. package/dist/core/provider-composer.js.map +1 -1
  125. package/dist/core/session-manager.d.ts +3 -2
  126. package/dist/core/session-manager.d.ts.map +1 -1
  127. package/dist/core/session-manager.js +44 -15
  128. package/dist/core/session-manager.js.map +1 -1
  129. package/dist/core/settings-manager.d.ts +8 -1
  130. package/dist/core/settings-manager.d.ts.map +1 -1
  131. package/dist/core/settings-manager.js +17 -0
  132. package/dist/core/settings-manager.js.map +1 -1
  133. package/dist/core/skills.d.ts +1 -1
  134. package/dist/core/skills.d.ts.map +1 -1
  135. package/dist/core/skills.js +4 -2
  136. package/dist/core/skills.js.map +1 -1
  137. package/dist/core/system-prompt.d.ts.map +1 -1
  138. package/dist/core/system-prompt.js +8 -9
  139. package/dist/core/system-prompt.js.map +1 -1
  140. package/dist/core/tools/bash.d.ts.map +1 -1
  141. package/dist/core/tools/bash.js +3 -117
  142. package/dist/core/tools/bash.js.map +1 -1
  143. package/dist/core/tools/edit.d.ts +1 -12
  144. package/dist/core/tools/edit.d.ts.map +1 -1
  145. package/dist/core/tools/edit.js +5 -163
  146. package/dist/core/tools/edit.js.map +1 -1
  147. package/dist/core/tools/find.d.ts.map +1 -1
  148. package/dist/core/tools/find.js +4 -55
  149. package/dist/core/tools/find.js.map +1 -1
  150. package/dist/core/tools/grep.d.ts.map +1 -1
  151. package/dist/core/tools/grep.js +4 -60
  152. package/dist/core/tools/grep.js.map +1 -1
  153. package/dist/core/tools/ls.d.ts.map +1 -1
  154. package/dist/core/tools/ls.js +4 -49
  155. package/dist/core/tools/ls.js.map +1 -1
  156. package/dist/core/tools/read.d.ts.map +1 -1
  157. package/dist/core/tools/read.js +4 -120
  158. package/dist/core/tools/read.js.map +1 -1
  159. package/dist/core/tools/renderers/bash.d.ts +12 -0
  160. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  161. package/dist/core/tools/renderers/bash.js +130 -0
  162. package/dist/core/tools/renderers/bash.js.map +1 -0
  163. package/dist/core/tools/renderers/edit.d.ts +23 -0
  164. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  165. package/dist/core/tools/renderers/edit.js +167 -0
  166. package/dist/core/tools/renderers/edit.js.map +1 -0
  167. package/dist/core/tools/renderers/find.d.ts +10 -0
  168. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  169. package/dist/core/tools/renderers/find.js +64 -0
  170. package/dist/core/tools/renderers/find.js.map +1 -0
  171. package/dist/core/tools/renderers/grep.d.ts +10 -0
  172. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  173. package/dist/core/tools/renderers/grep.js +69 -0
  174. package/dist/core/tools/renderers/grep.js.map +1 -0
  175. package/dist/core/tools/renderers/index.d.ts +28 -0
  176. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  177. package/dist/core/tools/renderers/index.js +47 -0
  178. package/dist/core/tools/renderers/index.js.map +1 -0
  179. package/dist/core/tools/renderers/ls.d.ts +10 -0
  180. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  181. package/dist/core/tools/renderers/ls.js +58 -0
  182. package/dist/core/tools/renderers/ls.js.map +1 -0
  183. package/dist/core/tools/renderers/read.d.ts +11 -0
  184. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  185. package/dist/core/tools/renderers/read.js +129 -0
  186. package/dist/core/tools/renderers/read.js.map +1 -0
  187. package/dist/core/tools/renderers/write.d.ts +10 -0
  188. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  189. package/dist/core/tools/renderers/write.js +153 -0
  190. package/dist/core/tools/renderers/write.js.map +1 -0
  191. package/dist/core/tools/write.d.ts.map +1 -1
  192. package/dist/core/tools/write.js +5 -146
  193. package/dist/core/tools/write.js.map +1 -1
  194. package/dist/experimental/client-runtime.d.ts +43 -0
  195. package/dist/experimental/client-runtime.d.ts.map +1 -0
  196. package/dist/experimental/client-runtime.js +183 -0
  197. package/dist/experimental/client-runtime.js.map +1 -0
  198. package/dist/experimental/client-tui-chat.d.ts +14 -0
  199. package/dist/experimental/client-tui-chat.d.ts.map +1 -0
  200. package/dist/experimental/client-tui-chat.js +171 -0
  201. package/dist/experimental/client-tui-chat.js.map +1 -0
  202. package/dist/experimental/client-tui.d.ts +37 -0
  203. package/dist/experimental/client-tui.d.ts.map +1 -0
  204. package/dist/experimental/client-tui.js +702 -0
  205. package/dist/experimental/client-tui.js.map +1 -0
  206. package/dist/experimental/client.d.ts +25 -0
  207. package/dist/experimental/client.d.ts.map +1 -0
  208. package/dist/experimental/client.js +99 -0
  209. package/dist/experimental/client.js.map +1 -0
  210. package/dist/experimental/coordinator-entry.d.ts +3 -0
  211. package/dist/experimental/coordinator-entry.d.ts.map +1 -0
  212. package/dist/experimental/coordinator-entry.js +11 -0
  213. package/dist/experimental/coordinator-entry.js.map +1 -0
  214. package/dist/experimental/coordinator.d.ts +38 -0
  215. package/dist/experimental/coordinator.d.ts.map +1 -0
  216. package/dist/experimental/coordinator.js +570 -0
  217. package/dist/experimental/coordinator.js.map +1 -0
  218. package/dist/experimental/mini/main.d.ts +7 -0
  219. package/dist/experimental/mini/main.d.ts.map +1 -0
  220. package/dist/experimental/mini/main.js +21 -0
  221. package/dist/experimental/mini/main.js.map +1 -0
  222. package/dist/experimental/mini/server/entry.d.ts +3 -0
  223. package/dist/experimental/mini/server/entry.d.ts.map +1 -0
  224. package/dist/experimental/mini/server/entry.js +11 -0
  225. package/dist/experimental/mini/server/entry.js.map +1 -0
  226. package/dist/experimental/mini/server/run.d.ts +13 -0
  227. package/dist/experimental/mini/server/run.d.ts.map +1 -0
  228. package/dist/experimental/mini/server/run.js +150 -0
  229. package/dist/experimental/mini/server/run.js.map +1 -0
  230. package/dist/experimental/mini/shared/protocol.d.ts +127 -0
  231. package/dist/experimental/mini/shared/protocol.d.ts.map +1 -0
  232. package/dist/experimental/mini/shared/protocol.js +13 -0
  233. package/dist/experimental/mini/shared/protocol.js.map +1 -0
  234. package/dist/experimental/mini/shared/rpc.d.ts +49 -0
  235. package/dist/experimental/mini/shared/rpc.d.ts.map +1 -0
  236. package/dist/experimental/mini/shared/rpc.js +171 -0
  237. package/dist/experimental/mini/shared/rpc.js.map +1 -0
  238. package/dist/experimental/mini/shared/transport.d.ts +35 -0
  239. package/dist/experimental/mini/shared/transport.d.ts.map +1 -0
  240. package/dist/experimental/mini/shared/transport.js +94 -0
  241. package/dist/experimental/mini/shared/transport.js.map +1 -0
  242. package/dist/experimental/mini/tui/run.d.ts +9 -0
  243. package/dist/experimental/mini/tui/run.d.ts.map +1 -0
  244. package/dist/experimental/mini/tui/run.js +62 -0
  245. package/dist/experimental/mini/tui/run.js.map +1 -0
  246. package/dist/experimental/mini/tui/session.d.ts +26 -0
  247. package/dist/experimental/mini/tui/session.d.ts.map +1 -0
  248. package/dist/experimental/mini/tui/session.js +94 -0
  249. package/dist/experimental/mini/tui/session.js.map +1 -0
  250. package/dist/experimental/mini/tui/view.d.ts +10 -0
  251. package/dist/experimental/mini/tui/view.d.ts.map +1 -0
  252. package/dist/experimental/mini/tui/view.js +459 -0
  253. package/dist/experimental/mini/tui/view.js.map +1 -0
  254. package/dist/experimental/mini/worker/entry.d.ts +3 -0
  255. package/dist/experimental/mini/worker/entry.d.ts.map +1 -0
  256. package/dist/experimental/mini/worker/entry.js +10 -0
  257. package/dist/experimental/mini/worker/entry.js.map +1 -0
  258. package/dist/experimental/mini/worker/lane-service.d.ts +44 -0
  259. package/dist/experimental/mini/worker/lane-service.d.ts.map +1 -0
  260. package/dist/experimental/mini/worker/lane-service.js +97 -0
  261. package/dist/experimental/mini/worker/lane-service.js.map +1 -0
  262. package/dist/experimental/mini/worker/models-service.d.ts +19 -0
  263. package/dist/experimental/mini/worker/models-service.d.ts.map +1 -0
  264. package/dist/experimental/mini/worker/models-service.js +136 -0
  265. package/dist/experimental/mini/worker/models-service.js.map +1 -0
  266. package/dist/experimental/mini/worker/run.d.ts +14 -0
  267. package/dist/experimental/mini/worker/run.d.ts.map +1 -0
  268. package/dist/experimental/mini/worker/run.js +88 -0
  269. package/dist/experimental/mini/worker/run.js.map +1 -0
  270. package/dist/experimental/plugin.d.ts +4 -0
  271. package/dist/experimental/plugin.d.ts.map +1 -0
  272. package/dist/experimental/plugin.js +4 -0
  273. package/dist/experimental/plugin.js.map +1 -0
  274. package/dist/experimental/plugins/bundled.d.ts +7 -0
  275. package/dist/experimental/plugins/bundled.d.ts.map +1 -0
  276. package/dist/experimental/plugins/bundled.js +48 -0
  277. package/dist/experimental/plugins/bundled.js.map +1 -0
  278. package/dist/experimental/plugins/package.d.ts +18 -0
  279. package/dist/experimental/plugins/package.d.ts.map +1 -0
  280. package/dist/experimental/plugins/package.js +113 -0
  281. package/dist/experimental/plugins/package.js.map +1 -0
  282. package/dist/experimental/process.d.ts +20 -0
  283. package/dist/experimental/process.d.ts.map +1 -0
  284. package/dist/experimental/process.js +85 -0
  285. package/dist/experimental/process.js.map +1 -0
  286. package/dist/experimental/radius-auth.d.ts +17 -0
  287. package/dist/experimental/radius-auth.d.ts.map +1 -0
  288. package/dist/experimental/radius-auth.js +52 -0
  289. package/dist/experimental/radius-auth.js.map +1 -0
  290. package/dist/experimental/radius-relay.d.ts +90 -0
  291. package/dist/experimental/radius-relay.d.ts.map +1 -0
  292. package/dist/experimental/radius-relay.js +582 -0
  293. package/dist/experimental/radius-relay.js.map +1 -0
  294. package/dist/experimental/server.d.ts +75 -0
  295. package/dist/experimental/server.d.ts.map +1 -0
  296. package/dist/experimental/server.js +682 -0
  297. package/dist/experimental/server.js.map +1 -0
  298. package/dist/experimental/services/agent-controller-provider.d.ts +4 -0
  299. package/dist/experimental/services/agent-controller-provider.d.ts.map +1 -0
  300. package/dist/experimental/services/agent-controller-provider.js +84 -0
  301. package/dist/experimental/services/agent-controller-provider.js.map +1 -0
  302. package/dist/experimental/services/agent-controller.d.ts +57 -0
  303. package/dist/experimental/services/agent-controller.d.ts.map +1 -0
  304. package/dist/experimental/services/agent-controller.js +3 -0
  305. package/dist/experimental/services/agent-controller.js.map +1 -0
  306. package/dist/experimental/services/connection.d.ts +40 -0
  307. package/dist/experimental/services/connection.d.ts.map +1 -0
  308. package/dist/experimental/services/connection.js +300 -0
  309. package/dist/experimental/services/connection.js.map +1 -0
  310. package/dist/experimental/services/models-provider.d.ts +16 -0
  311. package/dist/experimental/services/models-provider.d.ts.map +1 -0
  312. package/dist/experimental/services/models-provider.js +116 -0
  313. package/dist/experimental/services/models-provider.js.map +1 -0
  314. package/dist/experimental/services/models.d.ts +36 -0
  315. package/dist/experimental/services/models.d.ts.map +1 -0
  316. package/dist/experimental/services/models.js +3 -0
  317. package/dist/experimental/services/models.js.map +1 -0
  318. package/dist/experimental/services/plugins.d.ts +16 -0
  319. package/dist/experimental/services/plugins.d.ts.map +1 -0
  320. package/dist/experimental/services/plugins.js +4 -0
  321. package/dist/experimental/services/plugins.js.map +1 -0
  322. package/dist/experimental/services/presentation-ui.d.ts +13 -0
  323. package/dist/experimental/services/presentation-ui.d.ts.map +1 -0
  324. package/dist/experimental/services/presentation-ui.js +3 -0
  325. package/dist/experimental/services/presentation-ui.js.map +1 -0
  326. package/dist/experimental/services/server.d.ts +19 -0
  327. package/dist/experimental/services/server.d.ts.map +1 -0
  328. package/dist/experimental/services/server.js +104 -0
  329. package/dist/experimental/services/server.js.map +1 -0
  330. package/dist/experimental/services/sessions.d.ts +28 -0
  331. package/dist/experimental/services/sessions.d.ts.map +1 -0
  332. package/dist/experimental/services/sessions.js +4 -0
  333. package/dist/experimental/services/sessions.js.map +1 -0
  334. package/dist/experimental/services/slash-commands-provider.d.ts +14 -0
  335. package/dist/experimental/services/slash-commands-provider.d.ts.map +1 -0
  336. package/dist/experimental/services/slash-commands-provider.js +200 -0
  337. package/dist/experimental/services/slash-commands-provider.js.map +1 -0
  338. package/dist/experimental/services/slash-commands.d.ts +24 -0
  339. package/dist/experimental/services/slash-commands.d.ts.map +1 -0
  340. package/dist/experimental/services/slash-commands.js +3 -0
  341. package/dist/experimental/services/slash-commands.js.map +1 -0
  342. package/dist/experimental/services/transcript-provider.d.ts +12 -0
  343. package/dist/experimental/services/transcript-provider.d.ts.map +1 -0
  344. package/dist/experimental/services/transcript-provider.js +109 -0
  345. package/dist/experimental/services/transcript-provider.js.map +1 -0
  346. package/dist/experimental/services/transcript.d.ts +13 -0
  347. package/dist/experimental/services/transcript.d.ts.map +1 -0
  348. package/dist/experimental/services/transcript.js +3 -0
  349. package/dist/experimental/services/transcript.js.map +1 -0
  350. package/dist/experimental/services/worker.d.ts +28 -0
  351. package/dist/experimental/services/worker.d.ts.map +1 -0
  352. package/dist/experimental/services/worker.js +107 -0
  353. package/dist/experimental/services/worker.js.map +1 -0
  354. package/dist/experimental/session-worker-manager.d.ts +24 -0
  355. package/dist/experimental/session-worker-manager.d.ts.map +1 -0
  356. package/dist/experimental/session-worker-manager.js +691 -0
  357. package/dist/experimental/session-worker-manager.js.map +1 -0
  358. package/dist/experimental/session-worker.d.ts +188 -0
  359. package/dist/experimental/session-worker.d.ts.map +1 -0
  360. package/dist/experimental/session-worker.js +785 -0
  361. package/dist/experimental/session-worker.js.map +1 -0
  362. package/dist/experimental/source-resolver.d.ts +2 -0
  363. package/dist/experimental/source-resolver.d.ts.map +1 -0
  364. package/dist/experimental/source-resolver.js +71 -0
  365. package/dist/experimental/source-resolver.js.map +1 -0
  366. package/dist/extensions/llama/client.d.ts +6 -0
  367. package/dist/extensions/llama/client.d.ts.map +1 -1
  368. package/dist/extensions/llama/client.js +7 -0
  369. package/dist/extensions/llama/client.js.map +1 -1
  370. package/dist/extensions/llama/provider.d.ts +3 -1
  371. package/dist/extensions/llama/provider.d.ts.map +1 -1
  372. package/dist/extensions/llama/provider.js +27 -6
  373. package/dist/extensions/llama/provider.js.map +1 -1
  374. package/dist/index.d.ts +3 -2
  375. package/dist/index.d.ts.map +1 -1
  376. package/dist/index.js +1 -0
  377. package/dist/index.js.map +1 -1
  378. package/dist/main.d.ts.map +1 -1
  379. package/dist/main.js +128 -1
  380. package/dist/main.js.map +1 -1
  381. package/dist/modes/interactive/chat-viewport.d.ts +20 -0
  382. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  383. package/dist/modes/interactive/chat-viewport.js +28 -0
  384. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  385. package/dist/modes/interactive/components/assistant-message.d.ts +1 -0
  386. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  387. package/dist/modes/interactive/components/assistant-message.js +18 -10
  388. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  389. package/dist/modes/interactive/components/custom-editor.d.ts +10 -1
  390. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  391. package/dist/modes/interactive/components/custom-editor.js +39 -1
  392. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  393. package/dist/modes/interactive/components/index.d.ts +1 -1
  394. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  395. package/dist/modes/interactive/components/index.js.map +1 -1
  396. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  397. package/dist/modes/interactive/components/model-selector.js +5 -14
  398. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  399. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  400. package/dist/modes/interactive/components/scoped-models-selector.js +13 -15
  401. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  402. package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  403. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  404. package/dist/modes/interactive/components/settings-selector.js +24 -10
  405. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  406. package/dist/modes/interactive/components/status-indicator.d.ts +3 -1
  407. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  408. package/dist/modes/interactive/components/status-indicator.js +10 -3
  409. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  410. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  411. package/dist/modes/interactive/components/thinking-selector.js +2 -2
  412. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  413. package/dist/modes/interactive/components/tool-execution.d.ts +21 -4
  414. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  415. package/dist/modes/interactive/components/tool-execution.js +35 -33
  416. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  417. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  418. package/dist/modes/interactive/components/trust-selector.js +2 -2
  419. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  420. package/dist/modes/interactive/interactive-mode.d.ts +11 -14
  421. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  422. package/dist/modes/interactive/interactive-mode.js +140 -101
  423. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  424. package/dist/modes/interactive/session-share.d.ts.map +1 -1
  425. package/dist/modes/interactive/session-share.js +8 -12
  426. package/dist/modes/interactive/session-share.js.map +1 -1
  427. package/dist/modes/interactive/theme/dark.json +2 -1
  428. package/dist/modes/interactive/theme/light.json +2 -1
  429. package/dist/modes/interactive/theme/theme-controller.d.ts +1 -0
  430. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  431. package/dist/modes/interactive/theme/theme-controller.js +5 -0
  432. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  433. package/dist/modes/interactive/theme/theme-json.d.ts +84 -0
  434. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
  435. package/dist/modes/interactive/theme/theme-json.js +130 -0
  436. package/dist/modes/interactive/theme/theme-json.js.map +1 -0
  437. package/dist/modes/interactive/theme/theme-schema.json +6 -2
  438. package/dist/modes/interactive/theme/theme.d.ts +14 -5
  439. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  440. package/dist/modes/interactive/theme/theme.js +18 -119
  441. package/dist/modes/interactive/theme/theme.js.map +1 -1
  442. package/dist/modes/interactive/tui-renderer.d.ts +21 -0
  443. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  444. package/dist/modes/interactive/tui-renderer.js +66 -0
  445. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  446. package/dist/modes/rpc/rpc-client.d.ts +7 -0
  447. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  448. package/dist/modes/rpc/rpc-client.js +7 -0
  449. package/dist/modes/rpc/rpc-client.js.map +1 -1
  450. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  451. package/dist/modes/rpc/rpc-mode.js +3 -0
  452. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  453. package/dist/modes/rpc/rpc-types.d.ts +12 -0
  454. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  455. package/dist/modes/rpc/rpc-types.js.map +1 -1
  456. package/dist/utils/exif-orientation.d.ts.map +1 -1
  457. package/dist/utils/exif-orientation.js +2 -3
  458. package/dist/utils/exif-orientation.js.map +1 -1
  459. package/dist/utils/shell.d.ts.map +1 -1
  460. package/dist/utils/shell.js +6 -4
  461. package/dist/utils/shell.js.map +1 -1
  462. package/dist/utils/tools-manager.d.ts +1 -0
  463. package/dist/utils/tools-manager.d.ts.map +1 -1
  464. package/dist/utils/tools-manager.js +41 -19
  465. package/dist/utils/tools-manager.js.map +1 -1
  466. package/docs/compaction.md +2 -0
  467. package/docs/custom-provider.md +7 -7
  468. package/docs/environment-variables.md +5 -0
  469. package/docs/extensions.md +23 -2
  470. package/docs/keybindings.md +4 -2
  471. package/docs/models.md +3 -0
  472. package/docs/quickstart.md +1 -1
  473. package/docs/rpc.md +24 -1
  474. package/docs/sdk.md +5 -0
  475. package/docs/settings.md +17 -9
  476. package/docs/skills.md +1 -1
  477. package/docs/terminal-setup.md +27 -0
  478. package/docs/themes.md +8 -6
  479. package/docs/tui.md +20 -1
  480. package/docs/usage.md +4 -3
  481. package/examples/README.md +3 -0
  482. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  483. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  484. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  485. package/examples/extensions/dynamic-resources/dynamic.json +2 -0
  486. package/examples/extensions/gondolin/package-lock.json +2 -2
  487. package/examples/extensions/gondolin/package.json +1 -1
  488. package/examples/extensions/sandbox/package-lock.json +2 -2
  489. package/examples/extensions/sandbox/package.json +1 -1
  490. package/examples/extensions/with-deps/package-lock.json +2 -2
  491. package/examples/extensions/with-deps/package.json +1 -1
  492. package/examples/plugins/pi-example-plugin/README.md +38 -0
  493. package/examples/plugins/pi-example-plugin/package.json +10 -0
  494. package/examples/plugins/pi-example-plugin/src/contract.ts +13 -0
  495. package/examples/plugins/pi-example-plugin/src/session.ts +23 -0
  496. package/examples/plugins/pi-example-plugin/src/tui.ts +31 -0
  497. package/npm-shrinkwrap.json +523 -28
  498. package/package.json +12 -6
  499. package/dist/bun/register-bedrock.d.ts +0 -2
  500. package/dist/bun/register-bedrock.d.ts.map +0 -1
  501. package/dist/bun/register-bedrock.js +0 -4
  502. package/dist/bun/register-bedrock.js.map +0 -1
  503. package/dist/bundle/chunks/anthropic-messages-JWX2WP65.js +0 -45
  504. package/dist/bundle/chunks/chunk-E5KXRMZK.js +0 -1547
  505. package/dist/bundle/chunks/chunk-JUUC5AZY.js +0 -2
  506. package/dist/bundle/chunks/dist-RDWOYWHR.js +0 -13
  507. package/dist/bundle/chunks/openai-codex-responses-GJVBJXLB.js +0 -8
  508. package/dist/bundle/chunks/openai-completions-JD4WAC3R.js +0 -7
  509. package/dist/bundle/chunks/openai-responses-BSOJMSEV.js +0 -2
  510. package/dist/cli/experimental/auth.d.ts +0 -16
  511. package/dist/cli/experimental/auth.d.ts.map +0 -1
  512. package/dist/cli/experimental/auth.js +0 -13
  513. package/dist/cli/experimental/auth.js.map +0 -1
  514. package/dist/cli/experimental/commands/pi.d.ts +0 -15
  515. package/dist/cli/experimental/commands/pi.d.ts.map +0 -1
  516. package/dist/cli/experimental/commands/pi.js +0 -28
  517. package/dist/cli/experimental/commands/pi.js.map +0 -1
  518. package/dist/cli/experimental/transport-address.d.ts +0 -10
  519. package/dist/cli/experimental/transport-address.d.ts.map +0 -1
  520. package/dist/cli/experimental/transport-address.js +0 -38
  521. package/dist/cli/experimental/transport-address.js.map +0 -1
  522. package/dist/client/remote-session.d.ts +0 -53
  523. package/dist/client/remote-session.d.ts.map +0 -1
  524. package/dist/client/remote-session.js +0 -340
  525. package/dist/client/remote-session.js.map +0 -1
  526. package/dist/client/transcript.d.ts +0 -12
  527. package/dist/client/transcript.d.ts.map +0 -1
  528. package/dist/client/transcript.js +0 -98
  529. package/dist/client/transcript.js.map +0 -1
  530. package/dist/server/create-harness.d.ts +0 -26
  531. package/dist/server/create-harness.d.ts.map +0 -1
  532. package/dist/server/create-harness.js +0 -106
  533. package/dist/server/create-harness.js.map +0 -1
@@ -91,6 +91,8 @@ export class AgentSession {
91
91
  _followUpMessages = [];
92
92
  /** Messages queued to be included with the next user prompt as context ("asides"). */
93
93
  _pendingNextTurnMessages = [];
94
+ /** Context-only custom messages queued during a run, flushed once the current turn's tool results are in. */
95
+ _pendingCustomMessages = [];
94
96
  // Compaction state
95
97
  _compactionAbortController = undefined;
96
98
  _autoCompactionAbortController = undefined;
@@ -269,18 +271,33 @@ export class AgentSession {
269
271
  };
270
272
  };
271
273
  }
274
+ async _compactBeforeNextAssistantResponse(context) {
275
+ const model = this.model;
276
+ const settings = this.settingsManager.getCompactionSettings();
277
+ if (!model ||
278
+ model.contextWindow <= 0 ||
279
+ !shouldCompact(estimateContextTokens(context.messages).tokens, model.contextWindow, settings)) {
280
+ return context;
281
+ }
282
+ await this._runAutoCompaction("threshold", false);
283
+ return {
284
+ ...context,
285
+ messages: this.agent.state.messages.slice(),
286
+ };
287
+ }
272
288
  _installAgentNextTurnRefresh() {
273
289
  const previousPrepareNextTurnWithContext = this.agent.prepareNextTurnWithContext ??
274
290
  (this.agent.prepareNextTurn
275
291
  ? async (_turn, signal) => await this.agent.prepareNextTurn?.(signal)
276
292
  : undefined);
277
293
  this.agent.prepareNextTurnWithContext = async (turn, signal) => {
278
- const previousSnapshot = await previousPrepareNextTurnWithContext?.(turn, signal);
279
- const previousContext = previousSnapshot?.context ?? turn.context;
294
+ const context = await this._compactBeforeNextAssistantResponse(turn.context);
295
+ const previousSnapshot = await previousPrepareNextTurnWithContext?.({ ...turn, context }, signal);
296
+ const nextContext = previousSnapshot?.context ?? context;
280
297
  return {
281
298
  ...previousSnapshot,
282
299
  context: {
283
- ...previousContext,
300
+ ...nextContext,
284
301
  systemPrompt: this._systemPromptOverride ?? this._baseSystemPrompt,
285
302
  tools: this.agent.state.tools.slice(),
286
303
  },
@@ -319,7 +336,7 @@ export class AgentSession {
319
336
  return this._idleWaitPromise;
320
337
  }
321
338
  _resolveIdleWaitIfIdle() {
322
- if (this._isAgentRunActive || !this._resolveIdleWait) {
339
+ if (!this.isIdle || !this._resolveIdleWait) {
323
340
  return;
324
341
  }
325
342
  const resolve = this._resolveIdleWait;
@@ -400,6 +417,14 @@ export class AgentSession {
400
417
  }
401
418
  }
402
419
  }
420
+ // A turn ends after its assistant message and every tool result has been appended,
421
+ // so this is the first point in the run where a context-only custom message can be
422
+ // inserted without landing between a tool call and its result. Flushing after the
423
+ // extension and listener dispatch above also picks up messages that turn_end
424
+ // handlers queued.
425
+ if (event.type === "turn_end") {
426
+ this._flushPendingCustomMessages();
427
+ }
403
428
  };
404
429
  _willRetryAfterAgentEnd(event) {
405
430
  const settings = this.settingsManager.getRetrySettings();
@@ -591,9 +616,9 @@ export class AgentSession {
591
616
  get isStreaming() {
592
617
  return this._isAgentRunActive;
593
618
  }
594
- /** Whether the session has no active agent run, retry, auto-compaction, or queued continuation. */
619
+ /** Whether the session has no active agent run, compaction, branch summary, retry, or queued continuation. */
595
620
  get isIdle() {
596
- return !this._isAgentRunActive;
621
+ return !this._isAgentRunActive && !this.isCompacting;
597
622
  }
598
623
  /** Current effective system prompt (includes any per-turn extension modifications) */
599
624
  get systemPrompt() {
@@ -755,6 +780,7 @@ export class AgentSession {
755
780
  finally {
756
781
  this._systemPromptOverride = undefined;
757
782
  this._flushPendingBashMessages();
783
+ this._flushPendingCustomMessages();
758
784
  await this._emitAgentSettled();
759
785
  }
760
786
  }
@@ -844,8 +870,9 @@ export class AgentSession {
844
870
  preflightResult?.(true);
845
871
  return;
846
872
  }
847
- // Flush any pending bash messages before the new prompt
873
+ // Flush any pending bash and custom messages before the new prompt
848
874
  this._flushPendingBashMessages();
875
+ this._flushPendingCustomMessages();
849
876
  // Validate model
850
877
  if (!this.model) {
851
878
  throw new Error(formatNoModelSelectedMessage());
@@ -1059,8 +1086,9 @@ export class AgentSession {
1059
1086
  /**
1060
1087
  * Send a custom message to the session. Creates a CustomMessageEntry.
1061
1088
  *
1062
- * Handles three cases:
1089
+ * Handles four cases:
1063
1090
  * - Streaming: queues message, processed when loop pulls from queue
1091
+ * - Streaming + triggerTurn false: appended to state/session once the current turn ends
1064
1092
  * - Not streaming + triggerTurn: appends to state/session, starts new turn
1065
1093
  * - Not streaming + no trigger: appends to state/session, no turn
1066
1094
  *
@@ -1092,11 +1120,34 @@ export class AgentSession {
1092
1120
  else if (options?.triggerTurn) {
1093
1121
  await this._runAgentPrompt(appMessage);
1094
1122
  }
1123
+ else if (this.isStreaming) {
1124
+ // Appending now would put the message between an assistant tool call and its
1125
+ // result, which providers that validate message order reject on replay. Defer
1126
+ // to the end of the turn. Nothing is emitted yet: message events must not
1127
+ // describe messages the session tree does not contain.
1128
+ this._pendingCustomMessages.push(appMessage);
1129
+ }
1095
1130
  else {
1096
- this.agent.state.messages.push(appMessage);
1097
- this.sessionManager.appendCustomMessageEntry(message.customType, message.content, message.display, message.details);
1098
- this._emit({ type: "message_start", message: appMessage });
1099
- this._emit({ type: "message_end", message: appMessage });
1131
+ this._appendCustomMessage(appMessage);
1132
+ }
1133
+ }
1134
+ _appendCustomMessage(appMessage) {
1135
+ this.agent.state.messages.push(appMessage);
1136
+ this.sessionManager.appendCustomMessageEntry(appMessage.customType, appMessage.content, appMessage.display, appMessage.details);
1137
+ this._emit({ type: "message_start", message: appMessage });
1138
+ this._emit({ type: "message_end", message: appMessage });
1139
+ }
1140
+ /**
1141
+ * Append custom messages queued while the agent was running.
1142
+ * Called once the current turn's tool results are in agent state and session history.
1143
+ */
1144
+ _flushPendingCustomMessages() {
1145
+ if (this._pendingCustomMessages.length === 0)
1146
+ return;
1147
+ const pending = this._pendingCustomMessages;
1148
+ this._pendingCustomMessages = [];
1149
+ for (const appMessage of pending) {
1150
+ this._appendCustomMessage(appMessage);
1100
1151
  }
1101
1152
  }
1102
1153
  /**
@@ -1170,6 +1221,8 @@ export class AgentSession {
1170
1221
  */
1171
1222
  async abort() {
1172
1223
  this.abortRetry();
1224
+ this.abortCompaction();
1225
+ this.abortBranchSummary();
1173
1226
  this.agent.abort();
1174
1227
  await this.waitForIdle();
1175
1228
  }
@@ -1208,6 +1261,7 @@ export class AgentSession {
1208
1261
  this.sessionManager.appendModelChange(model.provider, model.id);
1209
1262
  if (options.persist) {
1210
1263
  this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
1264
+ this._addPersistedDefaultToNonEmptyScope(model);
1211
1265
  }
1212
1266
  // Apply thinking level for the new model.
1213
1267
  // Per-model thinking level overrides take priority over the global default.
@@ -1215,6 +1269,20 @@ export class AgentSession {
1215
1269
  this.setThinkingLevel(thinkingLevel);
1216
1270
  await this._emitModelSelect(model, previousModel, "set");
1217
1271
  }
1272
+ _addPersistedDefaultToNonEmptyScope(model) {
1273
+ if (this._scopedModels.length === 0)
1274
+ return;
1275
+ if (this._scopedModels.some((scoped) => modelsAreEqual(scoped.model, model)))
1276
+ return;
1277
+ this._scopedModels = [...this._scopedModels, { model }];
1278
+ const enabledModels = this.settingsManager.getEnabledModels();
1279
+ if (!enabledModels?.length)
1280
+ return;
1281
+ const modelReference = `${model.provider}/${model.id}`;
1282
+ if (enabledModels.some((pattern) => pattern.toLowerCase() === modelReference.toLowerCase()))
1283
+ return;
1284
+ this.settingsManager.setEnabledModels([...enabledModels, modelReference]);
1285
+ }
1218
1286
  /**
1219
1287
  * Cycle to next/previous model.
1220
1288
  * Uses scoped models (from --models flag) if available, otherwise all available models.
@@ -1245,6 +1313,7 @@ export class AgentSession {
1245
1313
  this.sessionManager.appendModelChange(next.model.provider, next.model.id);
1246
1314
  if (options.persist) {
1247
1315
  this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
1316
+ this._addPersistedDefaultToNonEmptyScope(next.model);
1248
1317
  }
1249
1318
  // Apply thinking level for the new model.
1250
1319
  // - Explicit scoped model thinking level overrides defaults
@@ -1271,6 +1340,7 @@ export class AgentSession {
1271
1340
  this.sessionManager.appendModelChange(nextModel.provider, nextModel.id);
1272
1341
  if (options.persist) {
1273
1342
  this.settingsManager.setDefaultModelAndProvider(nextModel.provider, nextModel.id);
1343
+ this._addPersistedDefaultToNonEmptyScope(nextModel);
1274
1344
  }
1275
1345
  // Apply thinking level for the new model.
1276
1346
  // Model persistence does not implicitly rewrite the global thinking default.
@@ -1382,6 +1452,10 @@ export class AgentSession {
1382
1452
  async _runDefaultCompaction(preparation, requestModel, apiKey, headers, customInstructions, signal, env, reason) {
1383
1453
  return compact(preparation, requestModel, apiKey, headers, customInstructions, signal, this.thinkingLevel, this.agent.streamFunction, env, this.settingsManager.getRetrySettings(), this._summarizationRetryCallbacks({ source: "compaction", reason }), undefined);
1384
1454
  }
1455
+ _clearManualCompactionState() {
1456
+ this._compactionAbortController = undefined;
1457
+ this._resolveIdleWaitIfIdle();
1458
+ }
1385
1459
  /**
1386
1460
  * Manually compact the session context.
1387
1461
  *
@@ -1487,7 +1561,7 @@ export class AgentSession {
1487
1561
  details,
1488
1562
  };
1489
1563
  // compaction_end listeners may submit queued prompts, so expose idle state before notifying them.
1490
- this._compactionAbortController = undefined;
1564
+ this._clearManualCompactionState();
1491
1565
  this._emit({
1492
1566
  type: "compaction_end",
1493
1567
  reason: "manual",
@@ -1501,7 +1575,7 @@ export class AgentSession {
1501
1575
  const message = error instanceof Error ? error.message : String(error);
1502
1576
  const aborted = message === "Compaction cancelled" || (error instanceof Error && error.name === "AbortError");
1503
1577
  const errorMessage = aborted ? undefined : `Compaction failed: ${message}`;
1504
- this._compactionAbortController = undefined;
1578
+ this._clearManualCompactionState();
1505
1579
  this._emit({
1506
1580
  type: "compaction_end",
1507
1581
  reason: "manual",
@@ -1520,7 +1594,7 @@ export class AgentSession {
1520
1594
  throw error;
1521
1595
  }
1522
1596
  finally {
1523
- this._compactionAbortController = undefined;
1597
+ this._clearManualCompactionState();
1524
1598
  }
1525
1599
  }
1526
1600
  /**
@@ -1816,6 +1890,7 @@ export class AgentSession {
1816
1890
  }
1817
1891
  finally {
1818
1892
  this._autoCompactionAbortController = undefined;
1893
+ this._resolveIdleWaitIfIdle();
1819
1894
  }
1820
1895
  }
1821
1896
  /**
@@ -2552,6 +2627,7 @@ export class AgentSession {
2552
2627
  }
2553
2628
  finally {
2554
2629
  this._branchSummaryAbortController = undefined;
2630
+ this._resolveIdleWaitIfIdle();
2555
2631
  }
2556
2632
  }
2557
2633
  /**