@psnext/slingcli 2.5.20260623-1 → 2.5.20260705-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. package/node_modules/@aws/lambda-invoke-store/README.md +25 -1
  2. package/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js +12 -0
  3. package/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js +12 -0
  4. package/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts +6 -0
  5. package/node_modules/@aws/lambda-invoke-store/package.json +1 -1
  6. package/node_modules/@aws-sdk/core/account-id-endpoint.d.ts +1 -3
  7. package/node_modules/@aws-sdk/core/client.d.ts +1 -3
  8. package/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts +1 -3
  9. package/node_modules/@aws-sdk/core/package.json +10 -17
  10. package/node_modules/@aws-sdk/core/protocols.d.ts +1 -3
  11. package/node_modules/@aws-sdk/core/util.d.ts +1 -3
  12. package/node_modules/@aws-sdk/credential-provider-env/package.json +5 -5
  13. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js +172 -1
  14. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-cjs/index.js +3 -51
  15. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -3
  16. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -3
  17. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/package.json +4 -4
  18. package/node_modules/@aws-sdk/credential-provider-http/package.json +8 -10
  19. package/node_modules/@aws-sdk/credential-provider-ini/package.json +13 -13
  20. package/node_modules/@aws-sdk/credential-provider-login/package.json +6 -6
  21. package/node_modules/@aws-sdk/credential-provider-node/package.json +11 -11
  22. package/node_modules/@aws-sdk/credential-provider-process/package.json +5 -5
  23. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +6 -6
  24. package/node_modules/@aws-sdk/credential-provider-sso/package.json +7 -7
  25. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js +58 -3
  26. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -8
  27. package/node_modules/@aws-sdk/eventstream-handler-node/package.json +4 -4
  28. package/node_modules/@aws-sdk/middleware-eventstream/package.json +4 -4
  29. package/node_modules/@aws-sdk/middleware-websocket/package.json +7 -7
  30. package/node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts +1 -3
  31. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +13 -25
  32. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +13 -17
  33. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +12 -15
  34. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +12 -15
  35. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +13 -25
  36. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commandBuilder.js +6 -0
  37. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.js +2 -14
  38. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetIdCommand.js +2 -14
  39. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/index.js +1 -0
  40. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js +0 -2
  41. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js +1 -2
  42. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.native.js +0 -2
  43. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.shared.js +2 -0
  44. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commandBuilder.js +8 -0
  45. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js +2 -17
  46. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js +1 -0
  47. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js +0 -2
  48. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js +1 -2
  49. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.native.js +0 -2
  50. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js +2 -0
  51. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commandBuilder.js +6 -0
  52. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js +2 -14
  53. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js +1 -0
  54. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js +0 -2
  55. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js +1 -2
  56. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.native.js +0 -2
  57. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js +2 -0
  58. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commandBuilder.js +6 -0
  59. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js +2 -14
  60. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js +1 -0
  61. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js +0 -2
  62. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js +1 -2
  63. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js +0 -2
  64. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js +2 -0
  65. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commandBuilder.js +6 -0
  66. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js +2 -14
  67. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js +2 -14
  68. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js +1 -0
  69. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js +0 -2
  70. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js +1 -2
  71. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js +0 -2
  72. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js +2 -0
  73. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commandBuilder.d.ts +18 -0
  74. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts +3 -8
  75. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetIdCommand.d.ts +3 -8
  76. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d.ts +1 -0
  77. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts +2 -2
  78. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts +2 -2
  79. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts +2 -2
  80. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.shared.d.ts +1 -0
  81. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commandBuilder.d.ts +18 -0
  82. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts +3 -8
  83. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts +1 -0
  84. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts +2 -2
  85. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts +2 -2
  86. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts +2 -2
  87. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.shared.d.ts +1 -0
  88. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commandBuilder.d.ts +18 -0
  89. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/GetRoleCredentialsCommand.d.ts +3 -8
  90. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/index.d.ts +1 -0
  91. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts +2 -2
  92. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts +2 -2
  93. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts +2 -2
  94. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.shared.d.ts +1 -0
  95. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commandBuilder.d.ts +18 -0
  96. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +3 -8
  97. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts +1 -0
  98. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts +2 -2
  99. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts +2 -2
  100. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts +2 -2
  101. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts +1 -0
  102. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commandBuilder.d.ts +18 -0
  103. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts +3 -8
  104. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +3 -8
  105. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts +1 -0
  106. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts +2 -2
  107. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts +2 -2
  108. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts +2 -2
  109. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts +1 -0
  110. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commandBuilder.d.ts +46 -0
  111. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts +7 -16
  112. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetIdCommand.d.ts +7 -16
  113. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/index.d.ts +1 -0
  114. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts +8 -2
  115. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts +8 -2
  116. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts +8 -2
  117. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.shared.d.ts +1 -0
  118. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commandBuilder.d.ts +42 -0
  119. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts +3 -8
  120. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts +1 -0
  121. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts +8 -2
  122. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts +8 -2
  123. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts +8 -2
  124. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.shared.d.ts +1 -0
  125. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commandBuilder.d.ts +42 -0
  126. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/GetRoleCredentialsCommand.d.ts +3 -8
  127. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/index.d.ts +1 -0
  128. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts +8 -2
  129. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts +8 -2
  130. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts +8 -2
  131. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.shared.d.ts +1 -0
  132. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commandBuilder.d.ts +42 -0
  133. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +3 -8
  134. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts +1 -0
  135. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +8 -2
  136. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts +8 -2
  137. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +8 -2
  138. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts +1 -0
  139. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commandBuilder.d.ts +46 -0
  140. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts +7 -16
  141. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +7 -16
  142. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts +1 -0
  143. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +8 -2
  144. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +8 -2
  145. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +8 -2
  146. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts +1 -0
  147. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-cjs/index.js +3 -51
  148. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -3
  149. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -3
  150. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/package.json +4 -4
  151. package/node_modules/@aws-sdk/nested-clients/package.json +8 -10
  152. package/node_modules/@aws-sdk/nested-clients/signin.d.ts +1 -3
  153. package/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts +1 -3
  154. package/node_modules/@aws-sdk/nested-clients/sso.d.ts +1 -3
  155. package/node_modules/@aws-sdk/nested-clients/sts.d.ts +1 -3
  156. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +4 -4
  157. package/node_modules/@aws-sdk/types/package.json +2 -2
  158. package/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +236 -3
  159. package/node_modules/@aws-sdk/xml-builder/package.json +3 -4
  160. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +10 -1
  161. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +9 -8
  162. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +20 -2
  163. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +2 -1
  164. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js +1 -1
  165. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  166. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +51 -47
  167. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +11 -17
  168. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +25 -11
  169. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare.js +0 -18
  170. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +8 -4
  171. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +8 -4
  172. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +1 -1
  173. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +68 -43
  174. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +38 -29
  175. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +189 -204
  176. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +26 -35
  177. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js +4 -6
  178. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +11 -2
  179. package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.js +2 -2
  180. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +19 -4
  181. package/node_modules/@earendil-works/pi-ai/dist/compat.js +81 -7
  182. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +60 -45
  183. package/node_modules/@earendil-works/pi-ai/dist/images-models.js +7 -3
  184. package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -0
  185. package/node_modules/@earendil-works/pi-ai/dist/legacy-api-aliases.js +49 -0
  186. package/node_modules/@earendil-works/pi-ai/dist/models.js +7 -3
  187. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js +149 -12
  188. package/node_modules/@earendil-works/pi-ai/dist/providers/ant-ling.models.js +3 -3
  189. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js +18 -34
  190. package/node_modules/@earendil-works/pi-ai/dist/providers/cerebras.models.js +20 -0
  191. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.js +2 -2
  192. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.js +39 -9
  193. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.js +85 -0
  194. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.js +2 -2
  195. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.models.js +13 -13
  196. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.js +2 -2
  197. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js +1 -20
  198. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.js +20 -1
  199. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.js +57 -0
  200. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.js +1 -1
  201. package/node_modules/@earendil-works/pi-ai/dist/providers/huggingface.models.js +72 -0
  202. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax-cn.models.js +4 -4
  203. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax.models.js +4 -4
  204. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.models.js +4 -4
  205. package/node_modules/@earendil-works/pi-ai/dist/providers/nvidia.models.js +23 -4
  206. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js +16 -16
  207. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js +90 -17
  208. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js +390 -102
  209. package/node_modules/@earendil-works/pi-ai/dist/providers/together.models.js +39 -20
  210. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js +389 -80
  211. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.models.js +7 -0
  212. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.js +12 -12
  213. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.js +12 -12
  214. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.js +12 -12
  215. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.js +15 -15
  216. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.js +6 -6
  217. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.js +6 -6
  218. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js +109 -0
  219. package/node_modules/@earendil-works/pi-ai/dist/utils/estimate.js +95 -0
  220. package/node_modules/@earendil-works/pi-ai/dist/utils/headers.js +10 -0
  221. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +15 -2
  222. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +3 -2
  223. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +2 -2
  224. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +3 -0
  225. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +87 -0
  226. package/node_modules/@earendil-works/pi-ai/package.json +1 -33
  227. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +13 -25
  228. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +50 -34
  229. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +13 -5
  230. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +11 -11
  231. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +11 -1
  232. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +33 -1
  233. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js +28 -1
  234. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +2 -4
  235. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +15 -18
  236. package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.js +1 -1
  237. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.js +0 -10
  238. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +2 -0
  239. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +96 -73
  240. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +19 -0
  241. package/node_modules/@earendil-works/pi-coding-agent/dist/core/timings.js +24 -14
  242. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +20 -5
  243. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +2 -2
  244. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +12 -25
  245. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -1
  246. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +20 -4
  247. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +23 -15
  248. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-entry.js +52 -0
  249. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.js +12 -3
  250. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.js +14 -3
  251. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +13 -1
  252. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/status-indicator.js +60 -0
  253. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js +19 -6
  254. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +180 -155
  255. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +14 -0
  256. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +16 -0
  257. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +7 -0
  258. package/node_modules/@earendil-works/pi-coding-agent/dist/rpc-entry.js +10 -0
  259. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-convert.js +21 -15
  260. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-process.js +83 -0
  261. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/mime.js +41 -0
  262. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -12
  263. package/node_modules/@earendil-works/pi-coding-agent/package.json +8 -5
  264. package/node_modules/@earendil-works/pi-orchestrator/dist/cli.js +136 -0
  265. package/node_modules/@earendil-works/pi-orchestrator/dist/config.js +55 -0
  266. package/node_modules/@earendil-works/pi-orchestrator/dist/handler.js +105 -0
  267. package/node_modules/@earendil-works/pi-orchestrator/dist/index.js +11 -0
  268. package/node_modules/@earendil-works/pi-orchestrator/dist/ipc/client.js +56 -0
  269. package/node_modules/@earendil-works/pi-orchestrator/dist/ipc/protocol.js +12 -0
  270. package/node_modules/@earendil-works/pi-orchestrator/dist/ipc/server.js +145 -0
  271. package/node_modules/@earendil-works/pi-orchestrator/dist/radius.js +365 -0
  272. package/node_modules/@earendil-works/pi-orchestrator/dist/rpc-process.js +168 -0
  273. package/node_modules/@earendil-works/pi-orchestrator/dist/serve.js +70 -0
  274. package/node_modules/@earendil-works/pi-orchestrator/dist/storage.js +58 -0
  275. package/node_modules/@earendil-works/pi-orchestrator/dist/supervisor.js +290 -0
  276. package/node_modules/@earendil-works/pi-orchestrator/dist/types.js +2 -0
  277. package/node_modules/@earendil-works/pi-orchestrator/package.json +45 -0
  278. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +3 -0
  279. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  280. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.browser.js +358 -145
  281. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.js +462 -142
  282. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.native.js +358 -145
  283. package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +18 -0
  284. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.js +108 -63
  285. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.browser.js +11 -8
  286. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +11 -8
  287. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +5 -2
  288. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +30 -36
  289. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +85 -137
  290. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +30 -36
  291. package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Js.js +30 -0
  292. package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Node.js +24 -0
  293. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.browser.js +7 -1
  294. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.js +7 -1
  295. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.native.js +7 -1
  296. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Js.js +92 -0
  297. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Node.js +29 -0
  298. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Js.js +179 -0
  299. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js +59 -0
  300. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256WebCrypto.js +71 -0
  301. package/node_modules/@smithy/core/dist-es/submodules/client/index.js +1 -0
  302. package/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js +17 -0
  303. package/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/config.js +6 -1
  304. package/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.js +92 -0
  305. package/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/constants.js +3 -0
  306. package/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/resolveDefaultsModeConfig.js +3 -56
  307. package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/EventStreamCodec.js +5 -3
  308. package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/splitMessage.js +7 -6
  309. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +4 -1
  310. package/node_modules/@smithy/core/dist-es/submodules/serde/concatBytes.js +15 -0
  311. package/node_modules/@smithy/core/dist-es/submodules/serde/index.browser.js +2 -0
  312. package/node_modules/@smithy/core/dist-es/submodules/serde/index.js +2 -0
  313. package/node_modules/@smithy/core/dist-es/submodules/serde/index.native.js +2 -0
  314. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.js +35 -27
  315. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.js +2 -1
  316. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js +12 -38
  317. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.js +18 -33
  318. package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.browser.js +3 -0
  319. package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.js +3 -0
  320. package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Js.d.ts +18 -0
  321. package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Node.d.ts +18 -0
  322. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.browser.d.ts +7 -1
  323. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.d.ts +7 -1
  324. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.native.d.ts +7 -1
  325. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Js.d.ts +19 -0
  326. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Node.d.ts +17 -0
  327. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Js.d.ts +28 -0
  328. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Node.d.ts +13 -0
  329. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256WebCrypto.d.ts +22 -0
  330. package/node_modules/@smithy/core/dist-types/submodules/client/index.d.ts +1 -0
  331. package/node_modules/@smithy/core/dist-types/submodules/client/smithy-client/client-command-builder.d.ts +22 -0
  332. package/node_modules/@smithy/core/dist-types/submodules/client/smithy-client/command.d.ts +5 -6
  333. package/node_modules/@smithy/core/dist-types/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.d.ts +7 -0
  334. package/node_modules/@smithy/core/dist-types/submodules/config/defaults-mode/constants.d.ts +12 -0
  335. package/node_modules/@smithy/core/dist-types/submodules/endpoints/index.browser.d.ts +4 -5
  336. package/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts +4 -5
  337. package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromInstructions.d.ts +3 -4
  338. package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/endpointMiddleware.d.ts +1 -2
  339. package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/getEndpointPlugin.d.ts +1 -2
  340. package/node_modules/@smithy/core/dist-types/submodules/serde/concatBytes.d.ts +6 -0
  341. package/node_modules/@smithy/core/dist-types/submodules/serde/index.browser.d.ts +2 -0
  342. package/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +2 -0
  343. package/node_modules/@smithy/core/dist-types/submodules/serde/index.native.d.ts +2 -0
  344. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/checksum/ChecksumStream.d.ts +29 -12
  345. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.browser.d.ts +8 -2
  346. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.d.ts +4 -1
  347. package/node_modules/@smithy/core/package.json +5 -5
  348. package/node_modules/@smithy/credential-provider-imds/package.json +3 -3
  349. package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +2 -55
  350. package/node_modules/@smithy/fetch-http-handler/dist-es/index.js +2 -2
  351. package/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts +2 -2
  352. package/node_modules/@smithy/fetch-http-handler/package.json +4 -4
  353. package/node_modules/@smithy/signature-v4/package.json +3 -4
  354. package/node_modules/@smithy/types/dist-types/index.d.ts +1 -0
  355. package/node_modules/@smithy/types/package.json +1 -1
  356. package/node_modules/@types/node/README.md +1 -1
  357. package/node_modules/@types/node/buffer.d.ts +64 -25
  358. package/node_modules/@types/node/crypto.d.ts +18 -5
  359. package/node_modules/@types/node/diagnostics_channel.d.ts +254 -23
  360. package/node_modules/@types/node/dns.d.ts +1 -1
  361. package/node_modules/@types/node/ffi.d.ts +486 -0
  362. package/node_modules/@types/node/fs/promises.d.ts +3 -0
  363. package/node_modules/@types/node/fs.d.ts +21 -6
  364. package/node_modules/@types/node/http.d.ts +25 -0
  365. package/node_modules/@types/node/index.d.ts +1 -0
  366. package/node_modules/@types/node/package.json +2 -2
  367. package/node_modules/@types/node/process.d.ts +14 -1
  368. package/node_modules/@types/node/quic.d.ts +92 -11
  369. package/node_modules/@types/node/sqlite.d.ts +55 -0
  370. package/node_modules/@types/node/stream/iter.d.ts +150 -0
  371. package/node_modules/@types/node/stream.d.ts +32 -0
  372. package/node_modules/@types/node/test.d.ts +112 -2
  373. package/node_modules/@types/node/ts5.6/index.d.ts +1 -0
  374. package/node_modules/@types/node/ts5.7/index.d.ts +1 -0
  375. package/node_modules/@types/node/util.d.ts +19 -2
  376. package/node_modules/@types/node/v8.d.ts +84 -2
  377. package/node_modules/@types/node/worker_threads.d.ts +8 -7
  378. package/node_modules/brace-expansion/dist/commonjs/index.js +24 -14
  379. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  380. package/node_modules/brace-expansion/dist/esm/index.js +24 -14
  381. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  382. package/node_modules/brace-expansion/package.json +2 -2
  383. package/node_modules/google-auth-library/build/src/auth/googleauth.js +1 -1
  384. package/node_modules/google-auth-library/package.json +4 -4
  385. package/node_modules/protobufjs/dist/light/protobuf.js +2 -2
  386. package/node_modules/protobufjs/dist/light/protobuf.min.js +2 -2
  387. package/node_modules/protobufjs/dist/minimal/protobuf.js +2 -2
  388. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +2 -2
  389. package/node_modules/protobufjs/dist/protobuf.js +5 -2
  390. package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
  391. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  392. package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
  393. package/node_modules/protobufjs/package.json +1 -1
  394. package/node_modules/protobufjs/src/parse.js +3 -0
  395. package/package.json +7 -6
  396. package/slingshot/index.js +293 -295
  397. package/node_modules/@aws-crypto/crc32/CHANGELOG.md +0 -100
  398. package/node_modules/@aws-crypto/crc32/LICENSE +0 -201
  399. package/node_modules/@aws-crypto/crc32/README.md +0 -16
  400. package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.d.ts +0 -7
  401. package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.js +0 -31
  402. package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.js.map +0 -1
  403. package/node_modules/@aws-crypto/crc32/build/main/index.d.ts +0 -7
  404. package/node_modules/@aws-crypto/crc32/build/main/index.js +0 -108
  405. package/node_modules/@aws-crypto/crc32/build/main/index.js.map +0 -1
  406. package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.d.ts +0 -7
  407. package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.js +0 -28
  408. package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.js.map +0 -1
  409. package/node_modules/@aws-crypto/crc32/build/module/index.d.ts +0 -7
  410. package/node_modules/@aws-crypto/crc32/build/module/index.js +0 -103
  411. package/node_modules/@aws-crypto/crc32/build/module/index.js.map +0 -1
  412. package/node_modules/@aws-crypto/crc32/package.json +0 -32
  413. package/node_modules/@aws-crypto/crc32/src/aws_crc32.ts +0 -24
  414. package/node_modules/@aws-crypto/crc32/src/index.ts +0 -92
  415. package/node_modules/@aws-crypto/crc32/tsconfig.json +0 -9
  416. package/node_modules/@aws-crypto/crc32/tsconfig.module.json +0 -7
  417. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.browser.js +0 -869
  418. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.native.js +0 -862
  419. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js +0 -42
  420. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js +0 -27
  421. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js +0 -71
  422. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js +0 -49
  423. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js +0 -13
  424. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js +0 -2
  425. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  426. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  427. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  428. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -7
  429. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js +0 -29
  430. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js +0 -25
  431. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  432. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  433. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  434. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -7
  435. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +0 -57
  436. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +0 -234
  437. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js +0 -44
  438. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/constants.js +0 -3
  439. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/md5.js +0 -168
  440. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/constants.d.ts +0 -12
  441. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/md5.d.ts +0 -16
  442. package/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +0 -53
  443. package/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts +0 -2
  444. /package/node_modules/@smithy/{core/dist-es/submodules/endpoints/middleware-endpoint/types.js → types/dist-es/endpoints/EndpointParameterInstructions.js} +0 -0
  445. /package/node_modules/@smithy/{core/dist-types/submodules/endpoints/middleware-endpoint/types.d.ts → types/dist-types/endpoints/EndpointParameterInstructions.d.ts} +0 -0
@@ -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 { getProviders, } from "@earendil-works/pi-ai/compat";
10
- import { CombinedAutocompleteProvider, Container, fuzzyFilter, getCapabilities, hyperlink, Loader, Markdown, matchesKey, ProcessTerminal, Spacer, setKeybindings, Text, TruncatedText, TUI, visibleWidth, } from "@earendil-works/pi-tui";
10
+ import { CombinedAutocompleteProvider, Container, fuzzyFilter, getCapabilities, hyperlink, Markdown, matchesKey, ProcessTerminal, Spacer, setKeybindings, Text, TruncatedText, TUI, visibleWidth, } from "@earendil-works/pi-tui";
11
11
  import chalk from "chalk";
12
12
  import { spawn, spawnSync } from "child_process";
13
13
  import { APP_NAME, APP_TITLE, CONFIG_DIR_NAME, getAgentDir, getAuthPath, getDebugLogPath, getDocsPath, getShareViewerUrl, VERSION, } from "../../config.js";
@@ -21,7 +21,7 @@ import { defaultModelPerProvider, findExactModelReferenceMatch, resolveModelScop
21
21
  import { DefaultPackageManager } from "../../core/package-manager.js";
22
22
  import { BUILT_IN_PROVIDER_DISPLAY_NAMES } from "../../core/provider-display-names.js";
23
23
  import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
24
- import { SessionManager } from "../../core/session-manager.js";
24
+ import { SessionManager, sessionEntryToContextMessages } from "../../core/session-manager.js";
25
25
  import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
26
26
  import { isInstallTelemetryEnabled } from "../../core/telemetry.js";
27
27
  import { hasTrustRequiringProjectResources, ProjectTrustStore } from "../../core/trust-manager.js";
@@ -40,8 +40,8 @@ import { BashExecutionComponent } from "./components/bash-execution.js";
40
40
  import { BorderedLoader } from "./components/bordered-loader.js";
41
41
  import { BranchSummaryMessageComponent } from "./components/branch-summary-message.js";
42
42
  import { CompactionSummaryMessageComponent } from "./components/compaction-summary-message.js";
43
- import { CountdownTimer } from "./components/countdown-timer.js";
44
43
  import { CustomEditor } from "./components/custom-editor.js";
44
+ import { CustomEntryComponent } from "./components/custom-entry.js";
45
45
  import { CustomMessageComponent } from "./components/custom-message.js";
46
46
  import { DaxnutsComponent } from "./components/daxnuts.js";
47
47
  import { DynamicBorder } from "./components/dynamic-border.js";
@@ -58,6 +58,7 @@ import { ScopedModelsSelectorComponent } from "./components/scoped-models-select
58
58
  import { SessionSelectorComponent } from "./components/session-selector.js";
59
59
  import { SettingsSelectorComponent } from "./components/settings-selector.js";
60
60
  import { SkillInvocationMessageComponent } from "./components/skill-invocation-message.js";
61
+ import { BranchSummaryStatusIndicator, CompactionStatusIndicator, IdleStatus, RetryStatusIndicator, WorkingStatusIndicator, } from "./components/status-indicator.js";
61
62
  import { ToolExecutionComponent } from "./components/tool-execution.js";
62
63
  import { TreeSelectorComponent } from "./components/tree-selector.js";
63
64
  import { TrustSelectorComponent } from "./components/trust-selector.js";
@@ -81,6 +82,9 @@ class ExpandableText extends Text {
81
82
  this.setText(expanded ? this.getExpandedText() : this.getCollapsedText());
82
83
  }
83
84
  }
85
+ function isCustomSessionEntry(item) {
86
+ return "type" in item && item.type === "custom";
87
+ }
84
88
  const DEAD_TERMINAL_ERROR_CODES = new Set(["EIO", "EPIPE", "ENOTCONN"]);
85
89
  function isDeadTerminalError(error) {
86
90
  if (!error || typeof error !== "object" || !("code" in error)) {
@@ -134,6 +138,7 @@ export function isApiKeyLoginProvider(providerId, oauthProviderIds, builtInProvi
134
138
  export class InteractiveMode {
135
139
  runtimeHost;
136
140
  ui;
141
+ loadedResourcesContainer;
137
142
  chatContainer;
138
143
  pendingMessagesContainer;
139
144
  statusContainer;
@@ -152,7 +157,8 @@ export class InteractiveMode {
152
157
  isInitialized = false;
153
158
  onInputCallback;
154
159
  pendingUserInputs = [];
155
- loadingAnimation = undefined;
160
+ activeStatusIndicator = undefined;
161
+ idleStatus = new IdleStatus();
156
162
  workingMessage = undefined;
157
163
  workingVisible = true;
158
164
  workingIndicatorOptions = undefined;
@@ -176,6 +182,7 @@ export class InteractiveMode {
176
182
  toolOutputExpanded = false;
177
183
  // Thinking block visibility state
178
184
  hideThinkingBlock = false;
185
+ outputPad = 1;
179
186
  // Skill commands: command name -> skill file path
180
187
  skillCommands = new Map();
181
188
  // Agent subscription unsubscribe function
@@ -188,11 +195,8 @@ export class InteractiveMode {
188
195
  // Track pending bash components (shown in pending area, moved to chat on submit)
189
196
  pendingBashComponents = [];
190
197
  // Auto-compaction state
191
- autoCompactionLoader = undefined;
192
198
  autoCompactionEscapeHandler;
193
199
  // Auto-retry state
194
- retryLoader = undefined;
195
- retryCountdown = undefined;
196
200
  retryEscapeHandler;
197
201
  // Messages queued while compaction is running
198
202
  compactionQueuedMessages = [];
@@ -246,6 +250,7 @@ export class InteractiveMode {
246
250
  this.ui = new TUI(new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());
247
251
  this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
248
252
  this.headerContainer = new Container();
253
+ this.loadedResourcesContainer = new Container();
249
254
  this.chatContainer = new Container();
250
255
  this.pendingMessagesContainer = new Container();
251
256
  this.statusContainer = new Container();
@@ -267,6 +272,7 @@ export class InteractiveMode {
267
272
  this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
268
273
  // Load hide thinking block setting
269
274
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
275
+ this.outputPad = this.settingsManager.getOutputPad();
270
276
  // Register themes from resource loader and initialize
271
277
  setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
272
278
  this.themeController = new InteractiveThemeController(this.ui, this.settingsManager, (message) => this.showError(message), () => this.updateEditorBorderColor());
@@ -439,8 +445,10 @@ export class InteractiveMode {
439
445
  : "";
440
446
  console.log(theme.fg("dim", `Model scope: ${modelList}${cycleHint}`));
441
447
  }
442
- // Add header container as first child. Populate it after detectThemeIfUnset.
448
+ // Add header container as first child. Populate it after applying theme settings.
449
+ // Keep loaded resources before chat so restored session messages never precede them.
443
450
  this.ui.addChild(this.headerContainer);
451
+ this.ui.addChild(this.loadedResourcesContainer);
444
452
  this.ui.addChild(this.chatContainer);
445
453
  this.ui.addChild(this.pendingMessagesContainer);
446
454
  this.ui.addChild(this.statusContainer);
@@ -490,7 +498,7 @@ export class InteractiveMode {
490
498
  hint("app.tools.expand", "more"),
491
499
  ].join(theme.fg("muted", " · "));
492
500
  const compactOnboarding = theme.fg("dim", `Press ${keyText("app.tools.expand")} to show full startup help and loaded resources.`);
493
- const onboarding = theme.fg("dim", `Sling can explain its own features and look up its docs. Ask it how to use or extend Sling.`);
501
+ const onboarding = theme.fg("dim", `Pi can explain its own features and look up its docs. Ask it how to use or extend Pi.`);
494
502
  this.builtInHeader = new ExpandableText(() => `${logo}\n${compactInstructions}\n${compactOnboarding}\n\n${onboarding}`, () => `${logo}\n${expandedInstructions}\n\n${onboarding}`, this.getStartupExpansionState(), 1, 0);
495
503
  // Setup UI layout
496
504
  this.headerContainer.addChild(new Spacer(1));
@@ -657,7 +665,7 @@ export class InteractiveMode {
657
665
  return "tmux extended-keys is off. Modified Enter keys may not work. Add `set -g extended-keys on` to ~/.tmux.conf and restart tmux.";
658
666
  }
659
667
  if (extendedKeysFormat === "xterm") {
660
- return "tmux extended-keys-format is xterm. Sling works best with csi-u. Add `set -g extended-keys-format csi-u` to ~/.tmux.conf and restart tmux.";
668
+ return "tmux extended-keys-format is xterm. Pi works best with csi-u. Add `set -g extended-keys-format csi-u` to ~/.tmux.conf and restart tmux.";
661
669
  }
662
670
  return undefined;
663
671
  }
@@ -990,6 +998,8 @@ export class InteractiveMode {
990
998
  return lines.join("\n");
991
999
  }
992
1000
  showLoadedResources(options) {
1001
+ // Resource rendering is idempotent; chat clears no longer clear this separate container.
1002
+ this.loadedResourcesContainer.clear();
993
1003
  const showListing = options?.force || this.options.verbose || !this.settingsManager.getQuietStartup();
994
1004
  const showDiagnostics = showListing || options?.showDiagnosticsWhenQuiet === true;
995
1005
  if (!showListing && !showDiagnostics) {
@@ -1005,8 +1015,8 @@ export class InteractiveMode {
1005
1015
  };
1006
1016
  const addLoadedSection = (name, collapsedBody, expandedBody = collapsedBody, color = "mdHeading") => {
1007
1017
  const section = new ExpandableText(() => `${sectionHeader(name, color)}\n${collapsedBody}`, () => `${sectionHeader(name, color)}\n${expandedBody}`, this.getStartupExpansionState(), 0, 0);
1008
- this.chatContainer.addChild(section);
1009
- this.chatContainer.addChild(new Spacer(1));
1018
+ this.loadedResourcesContainer.addChild(section);
1019
+ this.loadedResourcesContainer.addChild(new Spacer(1));
1010
1020
  };
1011
1021
  const skillsResult = this.session.resourceLoader.getSkills();
1012
1022
  const promptsResult = this.session.resourceLoader.getPrompts();
@@ -1040,7 +1050,7 @@ export class InteractiveMode {
1040
1050
  if (showListing) {
1041
1051
  const contextFiles = this.session.resourceLoader.getAgentsFiles().agentsFiles;
1042
1052
  if (contextFiles.length > 0) {
1043
- this.chatContainer.addChild(new Spacer(1));
1053
+ this.loadedResourcesContainer.addChild(new Spacer(1));
1044
1054
  const contextList = contextFiles
1045
1055
  .map((f) => theme.fg("dim", ` ${this.formatDisplayPath(f.path)}`))
1046
1056
  .join("\n");
@@ -1103,14 +1113,14 @@ export class InteractiveMode {
1103
1113
  const skillDiagnostics = skillsResult.diagnostics;
1104
1114
  if (skillDiagnostics.length > 0) {
1105
1115
  const warningLines = this.formatDiagnostics(skillDiagnostics, sourceInfos);
1106
- this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Skill conflicts]")}\n${warningLines}`, 0, 0));
1107
- this.chatContainer.addChild(new Spacer(1));
1116
+ this.loadedResourcesContainer.addChild(new Text(`${theme.fg("warning", "[Skill conflicts]")}\n${warningLines}`, 0, 0));
1117
+ this.loadedResourcesContainer.addChild(new Spacer(1));
1108
1118
  }
1109
1119
  const promptDiagnostics = promptsResult.diagnostics;
1110
1120
  if (promptDiagnostics.length > 0) {
1111
1121
  const warningLines = this.formatDiagnostics(promptDiagnostics, sourceInfos);
1112
- this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Prompt conflicts]")}\n${warningLines}`, 0, 0));
1113
- this.chatContainer.addChild(new Spacer(1));
1122
+ this.loadedResourcesContainer.addChild(new Text(`${theme.fg("warning", "[Prompt conflicts]")}\n${warningLines}`, 0, 0));
1123
+ this.loadedResourcesContainer.addChild(new Spacer(1));
1114
1124
  }
1115
1125
  const extensionDiagnostics = [];
1116
1126
  const extensionErrors = this.session.resourceLoader.getExtensions().errors;
@@ -1126,14 +1136,14 @@ export class InteractiveMode {
1126
1136
  extensionDiagnostics.push(...shortcutDiagnostics);
1127
1137
  if (extensionDiagnostics.length > 0) {
1128
1138
  const warningLines = this.formatDiagnostics(extensionDiagnostics, sourceInfos);
1129
- this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Extension issues]")}\n${warningLines}`, 0, 0));
1130
- this.chatContainer.addChild(new Spacer(1));
1139
+ this.loadedResourcesContainer.addChild(new Text(`${theme.fg("warning", "[Extension issues]")}\n${warningLines}`, 0, 0));
1140
+ this.loadedResourcesContainer.addChild(new Spacer(1));
1131
1141
  }
1132
1142
  const themeDiagnostics = themesResult.diagnostics;
1133
1143
  if (themeDiagnostics.length > 0) {
1134
1144
  const warningLines = this.formatDiagnostics(themeDiagnostics, sourceInfos);
1135
- this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Theme conflicts]")}\n${warningLines}`, 0, 0));
1136
- this.chatContainer.addChild(new Spacer(1));
1145
+ this.loadedResourcesContainer.addChild(new Text(`${theme.fg("warning", "[Theme conflicts]")}\n${warningLines}`, 0, 0));
1146
+ this.loadedResourcesContainer.addChild(new Spacer(1));
1137
1147
  }
1138
1148
  }
1139
1149
  }
@@ -1151,11 +1161,7 @@ export class InteractiveMode {
1151
1161
  commandContextActions: {
1152
1162
  waitForIdle: () => this.session.agent.waitForIdle(),
1153
1163
  newSession: async (options) => {
1154
- if (this.loadingAnimation) {
1155
- this.loadingAnimation.stop();
1156
- this.loadingAnimation = undefined;
1157
- }
1158
- this.statusContainer.clear();
1164
+ this.clearStatusIndicator();
1159
1165
  try {
1160
1166
  return await this.runtimeHost.newSession(options);
1161
1167
  }
@@ -1225,8 +1231,13 @@ export class InteractiveMode {
1225
1231
  this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
1226
1232
  this.footerDataProvider.setCwd(this.sessionManager.getCwd());
1227
1233
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
1234
+ this.outputPad = this.settingsManager.getOutputPad();
1228
1235
  this.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());
1229
- this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
1236
+ const clearOnShrink = this.settingsManager.getClearOnShrink();
1237
+ this.ui.setClearOnShrink(clearOnShrink);
1238
+ if (!clearOnShrink && !this.activeStatusIndicator) {
1239
+ this.statusContainer.clear();
1240
+ }
1230
1241
  const editorPaddingX = this.settingsManager.getEditorPaddingX();
1231
1242
  const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
1232
1243
  this.defaultEditor.setPaddingX(editorPaddingX);
@@ -1261,6 +1272,7 @@ export class InteractiveMode {
1261
1272
  process.exit(1);
1262
1273
  }
1263
1274
  renderCurrentSessionState() {
1275
+ this.loadedResourcesContainer.clear();
1264
1276
  this.chatContainer.clear();
1265
1277
  this.pendingMessagesContainer.clear();
1266
1278
  this.compactionQueuedMessages = [];
@@ -1338,36 +1350,41 @@ export class InteractiveMode {
1338
1350
  this.footerDataProvider.setExtensionStatus(key, text);
1339
1351
  this.ui.requestRender();
1340
1352
  }
1341
- getWorkingLoaderMessage() {
1342
- return this.workingMessage ?? this.defaultWorkingMessage;
1343
- }
1344
- createWorkingLoader() {
1345
- return new Loader(this.ui, (spinner) => theme.fg("accent", spinner), (text) => theme.fg("muted", text), this.getWorkingLoaderMessage(), this.workingIndicatorOptions);
1353
+ showStatusIndicator(indicator) {
1354
+ this.activeStatusIndicator?.dispose();
1355
+ this.activeStatusIndicator = indicator;
1356
+ this.statusContainer.clear();
1357
+ this.statusContainer.addChild(indicator);
1346
1358
  }
1347
- stopWorkingLoader() {
1348
- if (this.loadingAnimation) {
1349
- this.loadingAnimation.stop();
1350
- this.loadingAnimation = undefined;
1359
+ clearStatusIndicator(kind) {
1360
+ if (kind && this.activeStatusIndicator?.kind !== kind) {
1361
+ return;
1351
1362
  }
1363
+ const hadActiveStatusIndicator = this.activeStatusIndicator !== undefined;
1364
+ this.activeStatusIndicator?.dispose();
1365
+ this.activeStatusIndicator = undefined;
1352
1366
  this.statusContainer.clear();
1367
+ if (hadActiveStatusIndicator && this.ui.getClearOnShrink()) {
1368
+ this.statusContainer.addChild(this.idleStatus);
1369
+ }
1353
1370
  }
1354
1371
  setWorkingVisible(visible) {
1355
1372
  this.workingVisible = visible;
1356
1373
  if (!visible) {
1357
- this.stopWorkingLoader();
1374
+ this.clearStatusIndicator("working");
1358
1375
  this.ui.requestRender();
1359
1376
  return;
1360
1377
  }
1361
- if (this.session.isStreaming && !this.loadingAnimation) {
1362
- this.statusContainer.clear();
1363
- this.loadingAnimation = this.createWorkingLoader();
1364
- this.statusContainer.addChild(this.loadingAnimation);
1378
+ if (this.session.isStreaming && this.activeStatusIndicator?.kind !== "working") {
1379
+ this.showStatusIndicator(new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.workingIndicatorOptions));
1365
1380
  }
1366
1381
  this.ui.requestRender();
1367
1382
  }
1368
1383
  setWorkingIndicator(options) {
1369
1384
  this.workingIndicatorOptions = options;
1370
- this.loadingAnimation?.setIndicator(options);
1385
+ if (this.activeStatusIndicator?.kind === "working") {
1386
+ this.activeStatusIndicator.setIndicator(options);
1387
+ }
1371
1388
  this.ui.requestRender();
1372
1389
  }
1373
1390
  setHiddenThinkingLabel(label) {
@@ -1455,8 +1472,8 @@ export class InteractiveMode {
1455
1472
  this.workingMessage = undefined;
1456
1473
  this.workingVisible = true;
1457
1474
  this.setWorkingIndicator();
1458
- if (this.loadingAnimation) {
1459
- this.loadingAnimation.setMessage(`${this.defaultWorkingMessage} (${keyText("app.interrupt")} to interrupt)`);
1475
+ if (this.activeStatusIndicator?.kind === "working") {
1476
+ this.activeStatusIndicator.setMessage(`${this.defaultWorkingMessage} (${keyText("app.interrupt")} to interrupt)`);
1460
1477
  }
1461
1478
  this.setHiddenThinkingLabel();
1462
1479
  }
@@ -1596,8 +1613,8 @@ export class InteractiveMode {
1596
1613
  setStatus: (key, text) => this.setExtensionStatus(key, text),
1597
1614
  setWorkingMessage: (message) => {
1598
1615
  this.workingMessage = message;
1599
- if (this.loadingAnimation) {
1600
- this.loadingAnimation.setMessage(message ?? this.defaultWorkingMessage);
1616
+ if (this.activeStatusIndicator?.kind === "working") {
1617
+ this.activeStatusIndicator.setMessage(message ?? this.defaultWorkingMessage);
1601
1618
  }
1602
1619
  },
1603
1620
  setWorkingVisible: (visible) => this.setWorkingVisible(visible),
@@ -1741,7 +1758,7 @@ export class InteractiveMode {
1741
1758
  }, () => {
1742
1759
  this.hideExtensionEditor();
1743
1760
  resolve(undefined);
1744
- });
1761
+ }, undefined, this.settingsManager.getExternalEditorCommand());
1745
1762
  this.editorContainer.clear();
1746
1763
  this.editorContainer.addChild(this.extensionEditor);
1747
1764
  this.ui.setFocus(this.extensionEditor);
@@ -2216,18 +2233,11 @@ export class InteractiveMode {
2216
2233
  this.defaultEditor.onEscape = this.retryEscapeHandler;
2217
2234
  this.retryEscapeHandler = undefined;
2218
2235
  }
2219
- if (this.retryCountdown) {
2220
- this.retryCountdown.dispose();
2221
- this.retryCountdown = undefined;
2222
- }
2223
- if (this.retryLoader) {
2224
- this.retryLoader.stop();
2225
- this.retryLoader = undefined;
2226
- }
2227
- this.stopWorkingLoader();
2228
2236
  if (this.workingVisible) {
2229
- this.loadingAnimation = this.createWorkingLoader();
2230
- this.statusContainer.addChild(this.loadingAnimation);
2237
+ this.showStatusIndicator(new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.workingIndicatorOptions));
2238
+ }
2239
+ else {
2240
+ this.clearStatusIndicator();
2231
2241
  }
2232
2242
  this.ui.requestRender();
2233
2243
  break;
@@ -2235,6 +2245,12 @@ export class InteractiveMode {
2235
2245
  this.updatePendingMessagesDisplay();
2236
2246
  this.ui.requestRender();
2237
2247
  break;
2248
+ case "entry_appended":
2249
+ if (event.entry.type === "custom") {
2250
+ this.addCustomEntryToChat(event.entry);
2251
+ this.ui.requestRender();
2252
+ }
2253
+ break;
2238
2254
  case "session_info_changed":
2239
2255
  this.updateTerminalTitle();
2240
2256
  this.footer.invalidate();
@@ -2255,7 +2271,7 @@ export class InteractiveMode {
2255
2271
  this.ui.requestRender();
2256
2272
  }
2257
2273
  else if (event.message.role === "assistant") {
2258
- this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel);
2274
+ this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad);
2259
2275
  this.streamingMessage = event.message;
2260
2276
  this.chatContainer.addChild(this.streamingComponent);
2261
2277
  this.streamingComponent.updateContent(this.streamingMessage);
@@ -2363,11 +2379,7 @@ export class InteractiveMode {
2363
2379
  if (this.settingsManager.getShowTerminalProgress()) {
2364
2380
  this.ui.terminal.setProgress(false);
2365
2381
  }
2366
- if (this.loadingAnimation) {
2367
- this.loadingAnimation.stop();
2368
- this.loadingAnimation = undefined;
2369
- this.statusContainer.clear();
2370
- }
2382
+ this.clearStatusIndicator("working");
2371
2383
  if (this.streamingComponent) {
2372
2384
  this.chatContainer.removeChild(this.streamingComponent);
2373
2385
  this.streamingComponent = undefined;
@@ -2386,13 +2398,7 @@ export class InteractiveMode {
2386
2398
  this.defaultEditor.onEscape = () => {
2387
2399
  this.session.abortCompaction();
2388
2400
  };
2389
- this.statusContainer.clear();
2390
- const cancelHint = `(${keyText("app.interrupt")} to cancel)`;
2391
- const label = event.reason === "manual"
2392
- ? `Compacting context... ${cancelHint}`
2393
- : `${event.reason === "overflow" ? "Context overflow detected, " : ""}Auto-compacting... ${cancelHint}`;
2394
- this.autoCompactionLoader = new Loader(this.ui, (spinner) => theme.fg("accent", spinner), (text) => theme.fg("muted", text), label);
2395
- this.statusContainer.addChild(this.autoCompactionLoader);
2401
+ this.showStatusIndicator(new CompactionStatusIndicator(this.ui, event.reason));
2396
2402
  this.ui.requestRender();
2397
2403
  break;
2398
2404
  }
@@ -2404,11 +2410,7 @@ export class InteractiveMode {
2404
2410
  this.defaultEditor.onEscape = this.autoCompactionEscapeHandler;
2405
2411
  this.autoCompactionEscapeHandler = undefined;
2406
2412
  }
2407
- if (this.autoCompactionLoader) {
2408
- this.autoCompactionLoader.stop();
2409
- this.autoCompactionLoader = undefined;
2410
- this.statusContainer.clear();
2411
- }
2413
+ this.clearStatusIndicator("compaction");
2412
2414
  if (event.aborted) {
2413
2415
  if (event.reason === "manual") {
2414
2416
  this.showError("Compaction cancelled");
@@ -2442,17 +2444,7 @@ export class InteractiveMode {
2442
2444
  this.defaultEditor.onEscape = () => {
2443
2445
  this.session.abortRetry();
2444
2446
  };
2445
- // Show retry indicator
2446
- this.statusContainer.clear();
2447
- this.retryCountdown?.dispose();
2448
- const retryMessage = (seconds) => `Retrying (${event.attempt}/${event.maxAttempts}) in ${seconds}s... (${keyText("app.interrupt")} to cancel)`;
2449
- this.retryLoader = new Loader(this.ui, (spinner) => theme.fg("warning", spinner), (text) => theme.fg("muted", text), retryMessage(Math.ceil(event.delayMs / 1000)));
2450
- this.retryCountdown = new CountdownTimer(event.delayMs, this.ui, (seconds) => {
2451
- this.retryLoader?.setMessage(retryMessage(seconds));
2452
- }, () => {
2453
- this.retryCountdown = undefined;
2454
- });
2455
- this.statusContainer.addChild(this.retryLoader);
2447
+ this.showStatusIndicator(new RetryStatusIndicator(this.ui, event.attempt, event.maxAttempts, event.delayMs));
2456
2448
  this.ui.requestRender();
2457
2449
  break;
2458
2450
  }
@@ -2462,16 +2454,7 @@ export class InteractiveMode {
2462
2454
  this.defaultEditor.onEscape = this.retryEscapeHandler;
2463
2455
  this.retryEscapeHandler = undefined;
2464
2456
  }
2465
- if (this.retryCountdown) {
2466
- this.retryCountdown.dispose();
2467
- this.retryCountdown = undefined;
2468
- }
2469
- // Stop loader
2470
- if (this.retryLoader) {
2471
- this.retryLoader.stop();
2472
- this.retryLoader = undefined;
2473
- this.statusContainer.clear();
2474
- }
2457
+ this.clearStatusIndicator("retry");
2475
2458
  // Show error only on final failure (success shows normal response)
2476
2459
  if (!event.success) {
2477
2460
  this.showError(`Retry failed after ${event.attempt} attempts: ${event.finalError || "Unknown error"}`);
@@ -2513,6 +2496,25 @@ export class InteractiveMode {
2513
2496
  this.lastStatusText = text;
2514
2497
  this.ui.requestRender();
2515
2498
  }
2499
+ addCustomEntryToChat(entry) {
2500
+ const renderer = this.session.extensionRunner.getEntryRenderer(entry.customType);
2501
+ if (!renderer) {
2502
+ return;
2503
+ }
2504
+ const component = new CustomEntryComponent(entry, renderer);
2505
+ component.setExpanded(this.toolOutputExpanded);
2506
+ if (!component.hasContent()) {
2507
+ return;
2508
+ }
2509
+ if (this.streamingComponent) {
2510
+ const streamingIndex = this.chatContainer.children.indexOf(this.streamingComponent);
2511
+ if (streamingIndex >= 0) {
2512
+ this.chatContainer.children.splice(streamingIndex, 0, component);
2513
+ return;
2514
+ }
2515
+ }
2516
+ this.chatContainer.addChild(component);
2517
+ }
2516
2518
  addMessageToChat(message, options) {
2517
2519
  switch (message.role) {
2518
2520
  case "bashExecution": {
@@ -2562,12 +2564,12 @@ export class InteractiveMode {
2562
2564
  // Render user message separately if present
2563
2565
  if (skillBlock.userMessage) {
2564
2566
  this.chatContainer.addChild(new Spacer(1));
2565
- const userComponent = new UserMessageComponent(skillBlock.userMessage, this.getMarkdownThemeWithSettings());
2567
+ const userComponent = new UserMessageComponent(skillBlock.userMessage, this.getMarkdownThemeWithSettings(), this.outputPad);
2566
2568
  this.chatContainer.addChild(userComponent);
2567
2569
  }
2568
2570
  }
2569
2571
  else {
2570
- const userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings());
2572
+ const userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings(), this.outputPad);
2571
2573
  this.chatContainer.addChild(userComponent);
2572
2574
  }
2573
2575
  if (options?.populateHistory) {
@@ -2577,7 +2579,7 @@ export class InteractiveMode {
2577
2579
  break;
2578
2580
  }
2579
2581
  case "assistant": {
2580
- const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel);
2582
+ const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad);
2581
2583
  this.chatContainer.addChild(assistantComponent);
2582
2584
  break;
2583
2585
  }
@@ -2590,20 +2592,19 @@ export class InteractiveMode {
2590
2592
  }
2591
2593
  }
2592
2594
  }
2593
- /**
2594
- * Render session context to chat. Used for initial load and rebuild after compaction.
2595
- * @param sessionContext Session context to render
2596
- * @param options.updateFooter Update footer state
2597
- * @param options.populateHistory Add user messages to editor history
2598
- */
2599
- renderSessionContext(sessionContext, options = {}) {
2595
+ renderSessionItems(items, options = {}) {
2600
2596
  this.pendingTools.clear();
2601
2597
  const renderedPendingTools = new Map();
2602
2598
  if (options.updateFooter) {
2603
2599
  this.footer.invalidate();
2604
2600
  this.updateEditorBorderColor();
2605
2601
  }
2606
- for (const message of sessionContext.messages) {
2602
+ for (const item of items) {
2603
+ if (isCustomSessionEntry(item)) {
2604
+ this.addCustomEntryToChat(item);
2605
+ continue;
2606
+ }
2607
+ const message = item;
2607
2608
  // Assistant messages need special handling for tool calls
2608
2609
  if (message.role === "assistant") {
2609
2610
  this.addMessageToChat(message);
@@ -2654,10 +2655,24 @@ export class InteractiveMode {
2654
2655
  }
2655
2656
  this.ui.requestRender();
2656
2657
  }
2658
+ /**
2659
+ * Render session entries to chat. Used for initial load and rebuild after compaction.
2660
+ * @param entries Compaction-aware session entries to render
2661
+ * @param options.updateFooter Update footer state
2662
+ * @param options.populateHistory Add user messages to editor history
2663
+ */
2664
+ renderSessionEntries(entries, options = {}) {
2665
+ const items = entries.flatMap((entry) => {
2666
+ if (entry.type === "custom") {
2667
+ return [entry];
2668
+ }
2669
+ return sessionEntryToContextMessages(entry);
2670
+ });
2671
+ this.renderSessionItems(items, options);
2672
+ }
2657
2673
  renderInitialMessages() {
2658
- // Get aligned messages and entries from session context
2659
- const context = this.sessionManager.buildSessionContext();
2660
- this.renderSessionContext(context, {
2674
+ const entries = this.sessionManager.buildContextEntries();
2675
+ this.renderSessionEntries(entries, {
2661
2676
  updateFooter: true,
2662
2677
  populateHistory: true,
2663
2678
  });
@@ -2677,7 +2692,7 @@ export class InteractiveMode {
2677
2692
  if (this.chatContainer.children.length > 0) {
2678
2693
  this.chatContainer.addChild(new Spacer(1));
2679
2694
  }
2680
- this.chatContainer.addChild(new Text(theme.fg("warning", `This project is not trusted. Project ${CONFIG_DIR_NAME} resources and packages are ignored. Use /trust to save a trust decision, then restart sling.`), 1, 0));
2695
+ this.chatContainer.addChild(new Text(theme.fg("warning", `This project is not trusted. Project ${CONFIG_DIR_NAME} resources and packages are ignored. Use /trust to save a trust decision, then restart pi.`), 1, 0));
2681
2696
  }
2682
2697
  async getUserInput() {
2683
2698
  const queuedInput = this.pendingUserInputs.shift();
@@ -2693,8 +2708,7 @@ export class InteractiveMode {
2693
2708
  }
2694
2709
  rebuildChatFromMessages() {
2695
2710
  this.chatContainer.clear();
2696
- const context = this.sessionManager.buildSessionContext();
2697
- this.renderSessionContext(context);
2711
+ this.renderSessionEntries(this.sessionManager.buildContextEntries());
2698
2712
  }
2699
2713
  // =========================================================================
2700
2714
  // Key handlers
@@ -2791,7 +2805,7 @@ export class InteractiveMode {
2791
2805
  this.ui.stop();
2792
2806
  }
2793
2807
  catch { }
2794
- console.error("sling exiting due to uncaughtException:");
2808
+ console.error("pi exiting due to uncaughtException:");
2795
2809
  console.error(error);
2796
2810
  process.exit(1);
2797
2811
  }
@@ -2965,9 +2979,11 @@ export class InteractiveMode {
2965
2979
  if (isExpandable(activeHeader)) {
2966
2980
  activeHeader.setExpanded(expanded);
2967
2981
  }
2968
- for (const child of this.chatContainer.children) {
2969
- if (isExpandable(child)) {
2970
- child.setExpanded(expanded);
2982
+ for (const container of [this.loadedResourcesContainer, this.chatContainer]) {
2983
+ for (const child of container.children) {
2984
+ if (isExpandable(child)) {
2985
+ child.setExpanded(expanded);
2986
+ }
2971
2987
  }
2972
2988
  }
2973
2989
  this.ui.requestRender();
@@ -2987,10 +3003,9 @@ export class InteractiveMode {
2987
3003
  this.showStatus(`Thinking blocks: ${this.hideThinkingBlock ? "hidden" : "visible"}`);
2988
3004
  }
2989
3005
  async openExternalEditor() {
2990
- // Determine editor (respect $VISUAL, then $EDITOR)
2991
- const editorCmd = process.env.VISUAL || process.env.EDITOR;
3006
+ const editorCmd = this.settingsManager.getExternalEditorCommand();
2992
3007
  if (!editorCmd) {
2993
- this.showWarning("No editor configured. Set $VISUAL or $EDITOR environment variable.");
3008
+ this.showWarning("No editor configured. Set externalEditor in settings.json or $VISUAL/$EDITOR.");
2994
3009
  return;
2995
3010
  }
2996
3011
  const currentText = this.editor.getExpandedText?.() ?? this.editor.getText();
@@ -3294,6 +3309,7 @@ export class InteractiveMode {
3294
3309
  showHardwareCursor: this.settingsManager.getShowHardwareCursor(),
3295
3310
  defaultProjectTrust: this.settingsManager.getDefaultProjectTrust(),
3296
3311
  editorPaddingX: this.settingsManager.getEditorPaddingX(),
3312
+ outputPad: this.settingsManager.getOutputPad(),
3297
3313
  autocompleteMaxVisible: this.settingsManager.getAutocompleteMaxVisible(),
3298
3314
  quietStartup: this.settingsManager.getQuietStartup(),
3299
3315
  clearOnShrink: this.settingsManager.getClearOnShrink(),
@@ -3395,6 +3411,23 @@ export class InteractiveMode {
3395
3411
  this.editor.setPaddingX(padding);
3396
3412
  }
3397
3413
  },
3414
+ onOutputPadChange: (padding) => {
3415
+ this.settingsManager.setOutputPad(padding);
3416
+ this.outputPad = padding;
3417
+ if (this.streamingComponent || this.session.isStreaming) {
3418
+ for (const child of this.chatContainer.children) {
3419
+ if (child instanceof AssistantMessageComponent || child instanceof UserMessageComponent) {
3420
+ child.setOutputPad(padding);
3421
+ }
3422
+ }
3423
+ if (this.streamingComponent) {
3424
+ this.streamingComponent.setOutputPad(padding);
3425
+ }
3426
+ this.ui.requestRender();
3427
+ return;
3428
+ }
3429
+ this.rebuildChatFromMessages();
3430
+ },
3398
3431
  onAutocompleteMaxVisibleChange: (maxVisible) => {
3399
3432
  this.settingsManager.setAutocompleteMaxVisible(maxVisible);
3400
3433
  this.defaultEditor.setAutocompleteMaxVisible(maxVisible);
@@ -3405,6 +3438,9 @@ export class InteractiveMode {
3405
3438
  onClearOnShrinkChange: (enabled) => {
3406
3439
  this.settingsManager.setClearOnShrink(enabled);
3407
3440
  this.ui.setClearOnShrink(enabled);
3441
+ if (!enabled && !this.activeStatusIndicator) {
3442
+ this.statusContainer.clear();
3443
+ }
3408
3444
  },
3409
3445
  onShowTerminalProgressChange: (enabled) => {
3410
3446
  this.settingsManager.setShowTerminalProgress(enabled);
@@ -3527,7 +3563,7 @@ export class InteractiveMode {
3527
3563
  onSelect: (selection) => {
3528
3564
  trustStore.setMany(selection.updates);
3529
3565
  done();
3530
- this.showStatus(`Saved trust decision: ${selection.trusted ? "trusted" : "untrusted"}. Restart sling for this to take effect.`);
3566
+ this.showStatus(`Saved trust decision: ${selection.trusted ? "trusted" : "untrusted"}. Restart pi for this to take effect.`);
3531
3567
  },
3532
3568
  onCancel: () => {
3533
3569
  done();
@@ -3722,16 +3758,16 @@ export class InteractiveMode {
3722
3758
  break;
3723
3759
  }
3724
3760
  }
3725
- // Set up escape handler and loader if summarizing
3726
- let summaryLoader;
3761
+ // Set up escape handler and status indicator if summarizing
3762
+ let showingSummaryIndicator = false;
3727
3763
  const originalOnEscape = this.defaultEditor.onEscape;
3728
3764
  if (wantsSummary) {
3729
3765
  this.defaultEditor.onEscape = () => {
3730
3766
  this.session.abortBranchSummary();
3731
3767
  };
3732
3768
  this.chatContainer.addChild(new Spacer(1));
3733
- summaryLoader = new Loader(this.ui, (spinner) => theme.fg("accent", spinner), (text) => theme.fg("muted", text), `Summarizing branch... (${keyText("app.interrupt")} to cancel)`);
3734
- this.statusContainer.addChild(summaryLoader);
3769
+ this.showStatusIndicator(new BranchSummaryStatusIndicator(this.ui));
3770
+ showingSummaryIndicator = true;
3735
3771
  this.ui.requestRender();
3736
3772
  }
3737
3773
  try {
@@ -3762,9 +3798,8 @@ export class InteractiveMode {
3762
3798
  this.showError(error instanceof Error ? error.message : String(error));
3763
3799
  }
3764
3800
  finally {
3765
- if (summaryLoader) {
3766
- summaryLoader.stop();
3767
- this.statusContainer.clear();
3801
+ if (showingSummaryIndicator) {
3802
+ this.clearStatusIndicator("branchSummary");
3768
3803
  }
3769
3804
  this.defaultEditor.onEscape = originalOnEscape;
3770
3805
  }
@@ -3805,11 +3840,7 @@ export class InteractiveMode {
3805
3840
  });
3806
3841
  }
3807
3842
  async handleResumeSession(sessionPath, options) {
3808
- if (this.loadingAnimation) {
3809
- this.loadingAnimation.stop();
3810
- this.loadingAnimation = undefined;
3811
- }
3812
- this.statusContainer.clear();
3843
+ this.clearStatusIndicator();
3813
3844
  try {
3814
3845
  const result = await this.runtimeHost.switchSession(sessionPath, {
3815
3846
  withSession: options?.withSession,
@@ -4202,6 +4233,7 @@ export class InteractiveMode {
4202
4233
  return;
4203
4234
  }
4204
4235
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
4236
+ this.outputPad = this.settingsManager.getOutputPad();
4205
4237
  this.rebuildChatFromMessages();
4206
4238
  chatRestoredBeforeSessionStart = true;
4207
4239
  };
@@ -4225,7 +4257,11 @@ export class InteractiveMode {
4225
4257
  this.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);
4226
4258
  }
4227
4259
  this.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());
4228
- this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
4260
+ const clearOnShrink = this.settingsManager.getClearOnShrink();
4261
+ this.ui.setClearOnShrink(clearOnShrink);
4262
+ if (!clearOnShrink && !this.activeStatusIndicator) {
4263
+ this.statusContainer.clear();
4264
+ }
4229
4265
  this.setupAutocompleteProvider();
4230
4266
  const runner = this.session.extensionRunner;
4231
4267
  this.setupExtensionShortcuts(runner);
@@ -4304,11 +4340,7 @@ export class InteractiveMode {
4304
4340
  return;
4305
4341
  }
4306
4342
  try {
4307
- if (this.loadingAnimation) {
4308
- this.loadingAnimation.stop();
4309
- this.loadingAnimation = undefined;
4310
- }
4311
- this.statusContainer.clear();
4343
+ this.clearStatusIndicator();
4312
4344
  const result = await this.runtimeHost.importFromJsonl(inputPath);
4313
4345
  if (result.cancelled) {
4314
4346
  this.showStatus("Import cancelled");
@@ -4454,8 +4486,12 @@ export class InteractiveMode {
4454
4486
  return;
4455
4487
  }
4456
4488
  this.session.setSessionName(name);
4489
+ const sessionName = this.sessionManager.getSessionName();
4490
+ if (sessionName !== name) {
4491
+ this.showWarning(`Session name was normalized from ${JSON.stringify(name)} to ${JSON.stringify(sessionName)}`);
4492
+ }
4457
4493
  this.chatContainer.addChild(new Spacer(1));
4458
- this.chatContainer.addChild(new Text(theme.fg("dim", `Session name set: ${name}`), 1, 0));
4494
+ this.chatContainer.addChild(new Text(theme.fg("dim", `Session name set: ${sessionName ?? name}`), 1, 0));
4459
4495
  this.ui.requestRender();
4460
4496
  }
4461
4497
  handleSessionCommand() {
@@ -4630,11 +4666,7 @@ export class InteractiveMode {
4630
4666
  this.ui.requestRender();
4631
4667
  }
4632
4668
  async handleClearCommand() {
4633
- if (this.loadingAnimation) {
4634
- this.loadingAnimation.stop();
4635
- this.loadingAnimation = undefined;
4636
- }
4637
- this.statusContainer.clear();
4669
+ this.clearStatusIndicator();
4638
4670
  try {
4639
4671
  const result = await this.runtimeHost.newSession();
4640
4672
  if (result.cancelled) {
@@ -4761,11 +4793,7 @@ export class InteractiveMode {
4761
4793
  this.ui.requestRender();
4762
4794
  }
4763
4795
  async handleCompactCommand(customInstructions) {
4764
- if (this.loadingAnimation) {
4765
- this.loadingAnimation.stop();
4766
- this.loadingAnimation = undefined;
4767
- }
4768
- this.statusContainer.clear();
4796
+ this.clearStatusIndicator();
4769
4797
  try {
4770
4798
  await this.session.compact(customInstructions);
4771
4799
  }
@@ -4777,10 +4805,7 @@ export class InteractiveMode {
4777
4805
  if (this.settingsManager.getShowTerminalProgress()) {
4778
4806
  this.ui.terminal.setProgress(false);
4779
4807
  }
4780
- if (this.loadingAnimation) {
4781
- this.loadingAnimation.stop();
4782
- this.loadingAnimation = undefined;
4783
- }
4808
+ this.clearStatusIndicator();
4784
4809
  this.themeController.disableAutoSync();
4785
4810
  this.clearExtensionTerminalInputListeners();
4786
4811
  this.footer.dispose();