@psnext/slingcli 2.5.20260629-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 (380) 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 +4 -6
  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/package.json +2 -2
  164. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +2 -14
  165. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +16 -5
  166. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +2 -1
  167. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +2 -1
  168. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +54 -19
  169. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +8 -3
  170. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +2 -14
  171. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js +2 -1
  172. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +15 -45
  173. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js +124 -4
  174. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js +18 -0
  175. package/node_modules/@earendil-works/pi-ai/dist/providers/cerebras.models.js +18 -0
  176. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.js +18 -0
  177. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.js +4 -3
  178. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.js +57 -0
  179. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.js +1 -1
  180. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.models.js +4 -4
  181. package/node_modules/@earendil-works/pi-ai/dist/providers/nvidia.models.js +4 -4
  182. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js +5 -5
  183. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js +75 -2
  184. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js +105 -88
  185. package/node_modules/@earendil-works/pi-ai/dist/providers/together.models.js +2 -2
  186. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js +41 -4
  187. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.js +12 -12
  188. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.js +12 -12
  189. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.js +12 -12
  190. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.js +15 -15
  191. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js +109 -0
  192. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +15 -2
  193. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +3 -2
  194. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +3 -0
  195. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +1 -0
  196. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  197. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +35 -4
  198. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +13 -5
  199. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +5 -8
  200. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +6 -0
  201. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +33 -1
  202. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js +28 -1
  203. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +14 -17
  204. package/node_modules/@earendil-works/pi-coding-agent/dist/core/project-trust.js +1 -1
  205. package/node_modules/@earendil-works/pi-coding-agent/dist/core/provider-attribution.js +0 -10
  206. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +87 -68
  207. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +8 -0
  208. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +20 -5
  209. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +2 -2
  210. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -1
  211. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +1 -1
  212. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +15 -7
  213. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-entry.js +52 -0
  214. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +13 -1
  215. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/status-indicator.js +60 -0
  216. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js +18 -5
  217. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +143 -130
  218. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +7 -0
  219. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -12
  220. package/node_modules/@earendil-works/pi-coding-agent/package.json +4 -4
  221. package/node_modules/@earendil-works/pi-orchestrator/package.json +2 -2
  222. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  223. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.browser.js +358 -145
  224. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.js +462 -142
  225. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.native.js +358 -145
  226. package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +18 -0
  227. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.js +108 -63
  228. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.browser.js +11 -8
  229. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +11 -8
  230. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +5 -2
  231. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +30 -36
  232. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +85 -137
  233. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +30 -36
  234. package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Js.js +30 -0
  235. package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Node.js +24 -0
  236. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.browser.js +7 -1
  237. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.js +7 -1
  238. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.native.js +7 -1
  239. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Js.js +92 -0
  240. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Node.js +29 -0
  241. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Js.js +179 -0
  242. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js +59 -0
  243. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256WebCrypto.js +71 -0
  244. package/node_modules/@smithy/core/dist-es/submodules/client/index.js +1 -0
  245. package/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js +17 -0
  246. package/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/config.js +6 -1
  247. package/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.js +92 -0
  248. package/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/constants.js +3 -0
  249. package/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/resolveDefaultsModeConfig.js +3 -56
  250. package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/EventStreamCodec.js +5 -3
  251. package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/splitMessage.js +7 -6
  252. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +4 -1
  253. package/node_modules/@smithy/core/dist-es/submodules/serde/concatBytes.js +15 -0
  254. package/node_modules/@smithy/core/dist-es/submodules/serde/index.browser.js +2 -0
  255. package/node_modules/@smithy/core/dist-es/submodules/serde/index.js +2 -0
  256. package/node_modules/@smithy/core/dist-es/submodules/serde/index.native.js +2 -0
  257. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.js +35 -27
  258. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.js +2 -1
  259. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js +12 -38
  260. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.js +18 -33
  261. package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.browser.js +3 -0
  262. package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.js +3 -0
  263. package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Js.d.ts +18 -0
  264. package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Node.d.ts +18 -0
  265. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.browser.d.ts +7 -1
  266. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.d.ts +7 -1
  267. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.native.d.ts +7 -1
  268. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Js.d.ts +19 -0
  269. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Node.d.ts +17 -0
  270. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Js.d.ts +28 -0
  271. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Node.d.ts +13 -0
  272. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256WebCrypto.d.ts +22 -0
  273. package/node_modules/@smithy/core/dist-types/submodules/client/index.d.ts +1 -0
  274. package/node_modules/@smithy/core/dist-types/submodules/client/smithy-client/client-command-builder.d.ts +22 -0
  275. package/node_modules/@smithy/core/dist-types/submodules/client/smithy-client/command.d.ts +5 -6
  276. package/node_modules/@smithy/core/dist-types/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.d.ts +7 -0
  277. package/node_modules/@smithy/core/dist-types/submodules/config/defaults-mode/constants.d.ts +12 -0
  278. package/node_modules/@smithy/core/dist-types/submodules/endpoints/index.browser.d.ts +4 -5
  279. package/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts +4 -5
  280. package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromInstructions.d.ts +3 -4
  281. package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/endpointMiddleware.d.ts +1 -2
  282. package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/getEndpointPlugin.d.ts +1 -2
  283. package/node_modules/@smithy/core/dist-types/submodules/serde/concatBytes.d.ts +6 -0
  284. package/node_modules/@smithy/core/dist-types/submodules/serde/index.browser.d.ts +2 -0
  285. package/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +2 -0
  286. package/node_modules/@smithy/core/dist-types/submodules/serde/index.native.d.ts +2 -0
  287. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/checksum/ChecksumStream.d.ts +29 -12
  288. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.browser.d.ts +8 -2
  289. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.d.ts +4 -1
  290. package/node_modules/@smithy/core/package.json +5 -5
  291. package/node_modules/@smithy/credential-provider-imds/package.json +3 -3
  292. package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +2 -55
  293. package/node_modules/@smithy/fetch-http-handler/dist-es/index.js +2 -2
  294. package/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts +2 -2
  295. package/node_modules/@smithy/fetch-http-handler/package.json +4 -4
  296. package/node_modules/@smithy/signature-v4/package.json +3 -4
  297. package/node_modules/@smithy/types/dist-types/index.d.ts +1 -0
  298. package/node_modules/@smithy/types/package.json +1 -1
  299. package/node_modules/@types/node/README.md +1 -1
  300. package/node_modules/@types/node/buffer.d.ts +64 -25
  301. package/node_modules/@types/node/crypto.d.ts +18 -5
  302. package/node_modules/@types/node/diagnostics_channel.d.ts +237 -3
  303. package/node_modules/@types/node/dns.d.ts +1 -1
  304. package/node_modules/@types/node/ffi.d.ts +486 -0
  305. package/node_modules/@types/node/fs/promises.d.ts +3 -0
  306. package/node_modules/@types/node/fs.d.ts +21 -6
  307. package/node_modules/@types/node/http.d.ts +25 -0
  308. package/node_modules/@types/node/index.d.ts +1 -0
  309. package/node_modules/@types/node/package.json +2 -2
  310. package/node_modules/@types/node/process.d.ts +14 -1
  311. package/node_modules/@types/node/quic.d.ts +92 -11
  312. package/node_modules/@types/node/sqlite.d.ts +55 -0
  313. package/node_modules/@types/node/stream/iter.d.ts +150 -0
  314. package/node_modules/@types/node/stream.d.ts +32 -0
  315. package/node_modules/@types/node/test.d.ts +112 -2
  316. package/node_modules/@types/node/ts5.6/index.d.ts +1 -0
  317. package/node_modules/@types/node/ts5.7/index.d.ts +1 -0
  318. package/node_modules/@types/node/util.d.ts +19 -2
  319. package/node_modules/@types/node/v8.d.ts +84 -2
  320. package/node_modules/@types/node/worker_threads.d.ts +8 -7
  321. package/node_modules/protobufjs/dist/light/protobuf.js +2 -2
  322. package/node_modules/protobufjs/dist/light/protobuf.min.js +2 -2
  323. package/node_modules/protobufjs/dist/minimal/protobuf.js +2 -2
  324. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +2 -2
  325. package/node_modules/protobufjs/dist/protobuf.js +5 -2
  326. package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
  327. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  328. package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
  329. package/node_modules/protobufjs/package.json +1 -1
  330. package/node_modules/protobufjs/src/parse.js +3 -0
  331. package/package.json +7 -7
  332. package/slingshot/index.js +261 -261
  333. package/node_modules/@aws-crypto/crc32/CHANGELOG.md +0 -100
  334. package/node_modules/@aws-crypto/crc32/LICENSE +0 -201
  335. package/node_modules/@aws-crypto/crc32/README.md +0 -16
  336. package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.d.ts +0 -7
  337. package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.js +0 -31
  338. package/node_modules/@aws-crypto/crc32/build/main/aws_crc32.js.map +0 -1
  339. package/node_modules/@aws-crypto/crc32/build/main/index.d.ts +0 -7
  340. package/node_modules/@aws-crypto/crc32/build/main/index.js +0 -108
  341. package/node_modules/@aws-crypto/crc32/build/main/index.js.map +0 -1
  342. package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.d.ts +0 -7
  343. package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.js +0 -28
  344. package/node_modules/@aws-crypto/crc32/build/module/aws_crc32.js.map +0 -1
  345. package/node_modules/@aws-crypto/crc32/build/module/index.d.ts +0 -7
  346. package/node_modules/@aws-crypto/crc32/build/module/index.js +0 -103
  347. package/node_modules/@aws-crypto/crc32/build/module/index.js.map +0 -1
  348. package/node_modules/@aws-crypto/crc32/package.json +0 -32
  349. package/node_modules/@aws-crypto/crc32/src/aws_crc32.ts +0 -24
  350. package/node_modules/@aws-crypto/crc32/src/index.ts +0 -92
  351. package/node_modules/@aws-crypto/crc32/tsconfig.json +0 -9
  352. package/node_modules/@aws-crypto/crc32/tsconfig.module.json +0 -7
  353. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.browser.js +0 -869
  354. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.native.js +0 -862
  355. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js +0 -42
  356. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js +0 -27
  357. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js +0 -71
  358. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js +0 -49
  359. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js +0 -13
  360. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js +0 -2
  361. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  362. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  363. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  364. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -7
  365. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js +0 -29
  366. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js +0 -25
  367. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  368. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  369. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  370. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -7
  371. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +0 -57
  372. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +0 -234
  373. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/constants.js +0 -3
  374. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/md5.js +0 -168
  375. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/constants.d.ts +0 -12
  376. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/md5.d.ts +0 -16
  377. package/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +0 -53
  378. package/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts +0 -2
  379. /package/node_modules/@smithy/{core/dist-es/submodules/endpoints/middleware-endpoint/types.js → types/dist-es/endpoints/EndpointParameterInstructions.js} +0 -0
  380. /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)) {
@@ -153,7 +157,8 @@ export class InteractiveMode {
153
157
  isInitialized = false;
154
158
  onInputCallback;
155
159
  pendingUserInputs = [];
156
- loadingAnimation = undefined;
160
+ activeStatusIndicator = undefined;
161
+ idleStatus = new IdleStatus();
157
162
  workingMessage = undefined;
158
163
  workingVisible = true;
159
164
  workingIndicatorOptions = undefined;
@@ -177,6 +182,7 @@ export class InteractiveMode {
177
182
  toolOutputExpanded = false;
178
183
  // Thinking block visibility state
179
184
  hideThinkingBlock = false;
185
+ outputPad = 1;
180
186
  // Skill commands: command name -> skill file path
181
187
  skillCommands = new Map();
182
188
  // Agent subscription unsubscribe function
@@ -189,11 +195,8 @@ export class InteractiveMode {
189
195
  // Track pending bash components (shown in pending area, moved to chat on submit)
190
196
  pendingBashComponents = [];
191
197
  // Auto-compaction state
192
- autoCompactionLoader = undefined;
193
198
  autoCompactionEscapeHandler;
194
199
  // Auto-retry state
195
- retryLoader = undefined;
196
- retryCountdown = undefined;
197
200
  retryEscapeHandler;
198
201
  // Messages queued while compaction is running
199
202
  compactionQueuedMessages = [];
@@ -269,6 +272,7 @@ export class InteractiveMode {
269
272
  this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
270
273
  // Load hide thinking block setting
271
274
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
275
+ this.outputPad = this.settingsManager.getOutputPad();
272
276
  // Register themes from resource loader and initialize
273
277
  setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
274
278
  this.themeController = new InteractiveThemeController(this.ui, this.settingsManager, (message) => this.showError(message), () => this.updateEditorBorderColor());
@@ -1157,11 +1161,7 @@ export class InteractiveMode {
1157
1161
  commandContextActions: {
1158
1162
  waitForIdle: () => this.session.agent.waitForIdle(),
1159
1163
  newSession: async (options) => {
1160
- if (this.loadingAnimation) {
1161
- this.loadingAnimation.stop();
1162
- this.loadingAnimation = undefined;
1163
- }
1164
- this.statusContainer.clear();
1164
+ this.clearStatusIndicator();
1165
1165
  try {
1166
1166
  return await this.runtimeHost.newSession(options);
1167
1167
  }
@@ -1231,8 +1231,13 @@ export class InteractiveMode {
1231
1231
  this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
1232
1232
  this.footerDataProvider.setCwd(this.sessionManager.getCwd());
1233
1233
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
1234
+ this.outputPad = this.settingsManager.getOutputPad();
1234
1235
  this.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());
1235
- 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
+ }
1236
1241
  const editorPaddingX = this.settingsManager.getEditorPaddingX();
1237
1242
  const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
1238
1243
  this.defaultEditor.setPaddingX(editorPaddingX);
@@ -1345,36 +1350,41 @@ export class InteractiveMode {
1345
1350
  this.footerDataProvider.setExtensionStatus(key, text);
1346
1351
  this.ui.requestRender();
1347
1352
  }
1348
- getWorkingLoaderMessage() {
1349
- return this.workingMessage ?? this.defaultWorkingMessage;
1350
- }
1351
- createWorkingLoader() {
1352
- 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);
1353
1358
  }
1354
- stopWorkingLoader() {
1355
- if (this.loadingAnimation) {
1356
- this.loadingAnimation.stop();
1357
- this.loadingAnimation = undefined;
1359
+ clearStatusIndicator(kind) {
1360
+ if (kind && this.activeStatusIndicator?.kind !== kind) {
1361
+ return;
1358
1362
  }
1363
+ const hadActiveStatusIndicator = this.activeStatusIndicator !== undefined;
1364
+ this.activeStatusIndicator?.dispose();
1365
+ this.activeStatusIndicator = undefined;
1359
1366
  this.statusContainer.clear();
1367
+ if (hadActiveStatusIndicator && this.ui.getClearOnShrink()) {
1368
+ this.statusContainer.addChild(this.idleStatus);
1369
+ }
1360
1370
  }
1361
1371
  setWorkingVisible(visible) {
1362
1372
  this.workingVisible = visible;
1363
1373
  if (!visible) {
1364
- this.stopWorkingLoader();
1374
+ this.clearStatusIndicator("working");
1365
1375
  this.ui.requestRender();
1366
1376
  return;
1367
1377
  }
1368
- if (this.session.isStreaming && !this.loadingAnimation) {
1369
- this.statusContainer.clear();
1370
- this.loadingAnimation = this.createWorkingLoader();
1371
- 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));
1372
1380
  }
1373
1381
  this.ui.requestRender();
1374
1382
  }
1375
1383
  setWorkingIndicator(options) {
1376
1384
  this.workingIndicatorOptions = options;
1377
- this.loadingAnimation?.setIndicator(options);
1385
+ if (this.activeStatusIndicator?.kind === "working") {
1386
+ this.activeStatusIndicator.setIndicator(options);
1387
+ }
1378
1388
  this.ui.requestRender();
1379
1389
  }
1380
1390
  setHiddenThinkingLabel(label) {
@@ -1462,8 +1472,8 @@ export class InteractiveMode {
1462
1472
  this.workingMessage = undefined;
1463
1473
  this.workingVisible = true;
1464
1474
  this.setWorkingIndicator();
1465
- if (this.loadingAnimation) {
1466
- 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)`);
1467
1477
  }
1468
1478
  this.setHiddenThinkingLabel();
1469
1479
  }
@@ -1603,8 +1613,8 @@ export class InteractiveMode {
1603
1613
  setStatus: (key, text) => this.setExtensionStatus(key, text),
1604
1614
  setWorkingMessage: (message) => {
1605
1615
  this.workingMessage = message;
1606
- if (this.loadingAnimation) {
1607
- this.loadingAnimation.setMessage(message ?? this.defaultWorkingMessage);
1616
+ if (this.activeStatusIndicator?.kind === "working") {
1617
+ this.activeStatusIndicator.setMessage(message ?? this.defaultWorkingMessage);
1608
1618
  }
1609
1619
  },
1610
1620
  setWorkingVisible: (visible) => this.setWorkingVisible(visible),
@@ -2223,18 +2233,11 @@ export class InteractiveMode {
2223
2233
  this.defaultEditor.onEscape = this.retryEscapeHandler;
2224
2234
  this.retryEscapeHandler = undefined;
2225
2235
  }
2226
- if (this.retryCountdown) {
2227
- this.retryCountdown.dispose();
2228
- this.retryCountdown = undefined;
2229
- }
2230
- if (this.retryLoader) {
2231
- this.retryLoader.stop();
2232
- this.retryLoader = undefined;
2233
- }
2234
- this.stopWorkingLoader();
2235
2236
  if (this.workingVisible) {
2236
- this.loadingAnimation = this.createWorkingLoader();
2237
- this.statusContainer.addChild(this.loadingAnimation);
2237
+ this.showStatusIndicator(new WorkingStatusIndicator(this.ui, this.workingMessage ?? this.defaultWorkingMessage, this.workingIndicatorOptions));
2238
+ }
2239
+ else {
2240
+ this.clearStatusIndicator();
2238
2241
  }
2239
2242
  this.ui.requestRender();
2240
2243
  break;
@@ -2242,6 +2245,12 @@ export class InteractiveMode {
2242
2245
  this.updatePendingMessagesDisplay();
2243
2246
  this.ui.requestRender();
2244
2247
  break;
2248
+ case "entry_appended":
2249
+ if (event.entry.type === "custom") {
2250
+ this.addCustomEntryToChat(event.entry);
2251
+ this.ui.requestRender();
2252
+ }
2253
+ break;
2245
2254
  case "session_info_changed":
2246
2255
  this.updateTerminalTitle();
2247
2256
  this.footer.invalidate();
@@ -2262,7 +2271,7 @@ export class InteractiveMode {
2262
2271
  this.ui.requestRender();
2263
2272
  }
2264
2273
  else if (event.message.role === "assistant") {
2265
- 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);
2266
2275
  this.streamingMessage = event.message;
2267
2276
  this.chatContainer.addChild(this.streamingComponent);
2268
2277
  this.streamingComponent.updateContent(this.streamingMessage);
@@ -2370,11 +2379,7 @@ export class InteractiveMode {
2370
2379
  if (this.settingsManager.getShowTerminalProgress()) {
2371
2380
  this.ui.terminal.setProgress(false);
2372
2381
  }
2373
- if (this.loadingAnimation) {
2374
- this.loadingAnimation.stop();
2375
- this.loadingAnimation = undefined;
2376
- this.statusContainer.clear();
2377
- }
2382
+ this.clearStatusIndicator("working");
2378
2383
  if (this.streamingComponent) {
2379
2384
  this.chatContainer.removeChild(this.streamingComponent);
2380
2385
  this.streamingComponent = undefined;
@@ -2393,13 +2398,7 @@ export class InteractiveMode {
2393
2398
  this.defaultEditor.onEscape = () => {
2394
2399
  this.session.abortCompaction();
2395
2400
  };
2396
- this.statusContainer.clear();
2397
- const cancelHint = `(${keyText("app.interrupt")} to cancel)`;
2398
- const label = event.reason === "manual"
2399
- ? `Compacting context... ${cancelHint}`
2400
- : `${event.reason === "overflow" ? "Context overflow detected, " : ""}Auto-compacting... ${cancelHint}`;
2401
- this.autoCompactionLoader = new Loader(this.ui, (spinner) => theme.fg("accent", spinner), (text) => theme.fg("muted", text), label);
2402
- this.statusContainer.addChild(this.autoCompactionLoader);
2401
+ this.showStatusIndicator(new CompactionStatusIndicator(this.ui, event.reason));
2403
2402
  this.ui.requestRender();
2404
2403
  break;
2405
2404
  }
@@ -2411,11 +2410,7 @@ export class InteractiveMode {
2411
2410
  this.defaultEditor.onEscape = this.autoCompactionEscapeHandler;
2412
2411
  this.autoCompactionEscapeHandler = undefined;
2413
2412
  }
2414
- if (this.autoCompactionLoader) {
2415
- this.autoCompactionLoader.stop();
2416
- this.autoCompactionLoader = undefined;
2417
- this.statusContainer.clear();
2418
- }
2413
+ this.clearStatusIndicator("compaction");
2419
2414
  if (event.aborted) {
2420
2415
  if (event.reason === "manual") {
2421
2416
  this.showError("Compaction cancelled");
@@ -2449,17 +2444,7 @@ export class InteractiveMode {
2449
2444
  this.defaultEditor.onEscape = () => {
2450
2445
  this.session.abortRetry();
2451
2446
  };
2452
- // Show retry indicator
2453
- this.statusContainer.clear();
2454
- this.retryCountdown?.dispose();
2455
- const retryMessage = (seconds) => `Retrying (${event.attempt}/${event.maxAttempts}) in ${seconds}s... (${keyText("app.interrupt")} to cancel)`;
2456
- this.retryLoader = new Loader(this.ui, (spinner) => theme.fg("warning", spinner), (text) => theme.fg("muted", text), retryMessage(Math.ceil(event.delayMs / 1000)));
2457
- this.retryCountdown = new CountdownTimer(event.delayMs, this.ui, (seconds) => {
2458
- this.retryLoader?.setMessage(retryMessage(seconds));
2459
- }, () => {
2460
- this.retryCountdown = undefined;
2461
- });
2462
- this.statusContainer.addChild(this.retryLoader);
2447
+ this.showStatusIndicator(new RetryStatusIndicator(this.ui, event.attempt, event.maxAttempts, event.delayMs));
2463
2448
  this.ui.requestRender();
2464
2449
  break;
2465
2450
  }
@@ -2469,16 +2454,7 @@ export class InteractiveMode {
2469
2454
  this.defaultEditor.onEscape = this.retryEscapeHandler;
2470
2455
  this.retryEscapeHandler = undefined;
2471
2456
  }
2472
- if (this.retryCountdown) {
2473
- this.retryCountdown.dispose();
2474
- this.retryCountdown = undefined;
2475
- }
2476
- // Stop loader
2477
- if (this.retryLoader) {
2478
- this.retryLoader.stop();
2479
- this.retryLoader = undefined;
2480
- this.statusContainer.clear();
2481
- }
2457
+ this.clearStatusIndicator("retry");
2482
2458
  // Show error only on final failure (success shows normal response)
2483
2459
  if (!event.success) {
2484
2460
  this.showError(`Retry failed after ${event.attempt} attempts: ${event.finalError || "Unknown error"}`);
@@ -2520,6 +2496,25 @@ export class InteractiveMode {
2520
2496
  this.lastStatusText = text;
2521
2497
  this.ui.requestRender();
2522
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
+ }
2523
2518
  addMessageToChat(message, options) {
2524
2519
  switch (message.role) {
2525
2520
  case "bashExecution": {
@@ -2569,12 +2564,12 @@ export class InteractiveMode {
2569
2564
  // Render user message separately if present
2570
2565
  if (skillBlock.userMessage) {
2571
2566
  this.chatContainer.addChild(new Spacer(1));
2572
- const userComponent = new UserMessageComponent(skillBlock.userMessage, this.getMarkdownThemeWithSettings());
2567
+ const userComponent = new UserMessageComponent(skillBlock.userMessage, this.getMarkdownThemeWithSettings(), this.outputPad);
2573
2568
  this.chatContainer.addChild(userComponent);
2574
2569
  }
2575
2570
  }
2576
2571
  else {
2577
- const userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings());
2572
+ const userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings(), this.outputPad);
2578
2573
  this.chatContainer.addChild(userComponent);
2579
2574
  }
2580
2575
  if (options?.populateHistory) {
@@ -2584,7 +2579,7 @@ export class InteractiveMode {
2584
2579
  break;
2585
2580
  }
2586
2581
  case "assistant": {
2587
- 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);
2588
2583
  this.chatContainer.addChild(assistantComponent);
2589
2584
  break;
2590
2585
  }
@@ -2597,20 +2592,19 @@ export class InteractiveMode {
2597
2592
  }
2598
2593
  }
2599
2594
  }
2600
- /**
2601
- * Render session context to chat. Used for initial load and rebuild after compaction.
2602
- * @param sessionContext Session context to render
2603
- * @param options.updateFooter Update footer state
2604
- * @param options.populateHistory Add user messages to editor history
2605
- */
2606
- renderSessionContext(sessionContext, options = {}) {
2595
+ renderSessionItems(items, options = {}) {
2607
2596
  this.pendingTools.clear();
2608
2597
  const renderedPendingTools = new Map();
2609
2598
  if (options.updateFooter) {
2610
2599
  this.footer.invalidate();
2611
2600
  this.updateEditorBorderColor();
2612
2601
  }
2613
- 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;
2614
2608
  // Assistant messages need special handling for tool calls
2615
2609
  if (message.role === "assistant") {
2616
2610
  this.addMessageToChat(message);
@@ -2661,10 +2655,24 @@ export class InteractiveMode {
2661
2655
  }
2662
2656
  this.ui.requestRender();
2663
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
+ }
2664
2673
  renderInitialMessages() {
2665
- // Get aligned messages and entries from session context
2666
- const context = this.sessionManager.buildSessionContext();
2667
- this.renderSessionContext(context, {
2674
+ const entries = this.sessionManager.buildContextEntries();
2675
+ this.renderSessionEntries(entries, {
2668
2676
  updateFooter: true,
2669
2677
  populateHistory: true,
2670
2678
  });
@@ -2700,8 +2708,7 @@ export class InteractiveMode {
2700
2708
  }
2701
2709
  rebuildChatFromMessages() {
2702
2710
  this.chatContainer.clear();
2703
- const context = this.sessionManager.buildSessionContext();
2704
- this.renderSessionContext(context);
2711
+ this.renderSessionEntries(this.sessionManager.buildContextEntries());
2705
2712
  }
2706
2713
  // =========================================================================
2707
2714
  // Key handlers
@@ -3302,6 +3309,7 @@ export class InteractiveMode {
3302
3309
  showHardwareCursor: this.settingsManager.getShowHardwareCursor(),
3303
3310
  defaultProjectTrust: this.settingsManager.getDefaultProjectTrust(),
3304
3311
  editorPaddingX: this.settingsManager.getEditorPaddingX(),
3312
+ outputPad: this.settingsManager.getOutputPad(),
3305
3313
  autocompleteMaxVisible: this.settingsManager.getAutocompleteMaxVisible(),
3306
3314
  quietStartup: this.settingsManager.getQuietStartup(),
3307
3315
  clearOnShrink: this.settingsManager.getClearOnShrink(),
@@ -3403,6 +3411,23 @@ export class InteractiveMode {
3403
3411
  this.editor.setPaddingX(padding);
3404
3412
  }
3405
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
+ },
3406
3431
  onAutocompleteMaxVisibleChange: (maxVisible) => {
3407
3432
  this.settingsManager.setAutocompleteMaxVisible(maxVisible);
3408
3433
  this.defaultEditor.setAutocompleteMaxVisible(maxVisible);
@@ -3413,6 +3438,9 @@ export class InteractiveMode {
3413
3438
  onClearOnShrinkChange: (enabled) => {
3414
3439
  this.settingsManager.setClearOnShrink(enabled);
3415
3440
  this.ui.setClearOnShrink(enabled);
3441
+ if (!enabled && !this.activeStatusIndicator) {
3442
+ this.statusContainer.clear();
3443
+ }
3416
3444
  },
3417
3445
  onShowTerminalProgressChange: (enabled) => {
3418
3446
  this.settingsManager.setShowTerminalProgress(enabled);
@@ -3730,16 +3758,16 @@ export class InteractiveMode {
3730
3758
  break;
3731
3759
  }
3732
3760
  }
3733
- // Set up escape handler and loader if summarizing
3734
- let summaryLoader;
3761
+ // Set up escape handler and status indicator if summarizing
3762
+ let showingSummaryIndicator = false;
3735
3763
  const originalOnEscape = this.defaultEditor.onEscape;
3736
3764
  if (wantsSummary) {
3737
3765
  this.defaultEditor.onEscape = () => {
3738
3766
  this.session.abortBranchSummary();
3739
3767
  };
3740
3768
  this.chatContainer.addChild(new Spacer(1));
3741
- summaryLoader = new Loader(this.ui, (spinner) => theme.fg("accent", spinner), (text) => theme.fg("muted", text), `Summarizing branch... (${keyText("app.interrupt")} to cancel)`);
3742
- this.statusContainer.addChild(summaryLoader);
3769
+ this.showStatusIndicator(new BranchSummaryStatusIndicator(this.ui));
3770
+ showingSummaryIndicator = true;
3743
3771
  this.ui.requestRender();
3744
3772
  }
3745
3773
  try {
@@ -3770,9 +3798,8 @@ export class InteractiveMode {
3770
3798
  this.showError(error instanceof Error ? error.message : String(error));
3771
3799
  }
3772
3800
  finally {
3773
- if (summaryLoader) {
3774
- summaryLoader.stop();
3775
- this.statusContainer.clear();
3801
+ if (showingSummaryIndicator) {
3802
+ this.clearStatusIndicator("branchSummary");
3776
3803
  }
3777
3804
  this.defaultEditor.onEscape = originalOnEscape;
3778
3805
  }
@@ -3813,11 +3840,7 @@ export class InteractiveMode {
3813
3840
  });
3814
3841
  }
3815
3842
  async handleResumeSession(sessionPath, options) {
3816
- if (this.loadingAnimation) {
3817
- this.loadingAnimation.stop();
3818
- this.loadingAnimation = undefined;
3819
- }
3820
- this.statusContainer.clear();
3843
+ this.clearStatusIndicator();
3821
3844
  try {
3822
3845
  const result = await this.runtimeHost.switchSession(sessionPath, {
3823
3846
  withSession: options?.withSession,
@@ -4210,6 +4233,7 @@ export class InteractiveMode {
4210
4233
  return;
4211
4234
  }
4212
4235
  this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
4236
+ this.outputPad = this.settingsManager.getOutputPad();
4213
4237
  this.rebuildChatFromMessages();
4214
4238
  chatRestoredBeforeSessionStart = true;
4215
4239
  };
@@ -4233,7 +4257,11 @@ export class InteractiveMode {
4233
4257
  this.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);
4234
4258
  }
4235
4259
  this.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());
4236
- 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
+ }
4237
4265
  this.setupAutocompleteProvider();
4238
4266
  const runner = this.session.extensionRunner;
4239
4267
  this.setupExtensionShortcuts(runner);
@@ -4312,11 +4340,7 @@ export class InteractiveMode {
4312
4340
  return;
4313
4341
  }
4314
4342
  try {
4315
- if (this.loadingAnimation) {
4316
- this.loadingAnimation.stop();
4317
- this.loadingAnimation = undefined;
4318
- }
4319
- this.statusContainer.clear();
4343
+ this.clearStatusIndicator();
4320
4344
  const result = await this.runtimeHost.importFromJsonl(inputPath);
4321
4345
  if (result.cancelled) {
4322
4346
  this.showStatus("Import cancelled");
@@ -4642,11 +4666,7 @@ export class InteractiveMode {
4642
4666
  this.ui.requestRender();
4643
4667
  }
4644
4668
  async handleClearCommand() {
4645
- if (this.loadingAnimation) {
4646
- this.loadingAnimation.stop();
4647
- this.loadingAnimation = undefined;
4648
- }
4649
- this.statusContainer.clear();
4669
+ this.clearStatusIndicator();
4650
4670
  try {
4651
4671
  const result = await this.runtimeHost.newSession();
4652
4672
  if (result.cancelled) {
@@ -4773,11 +4793,7 @@ export class InteractiveMode {
4773
4793
  this.ui.requestRender();
4774
4794
  }
4775
4795
  async handleCompactCommand(customInstructions) {
4776
- if (this.loadingAnimation) {
4777
- this.loadingAnimation.stop();
4778
- this.loadingAnimation = undefined;
4779
- }
4780
- this.statusContainer.clear();
4796
+ this.clearStatusIndicator();
4781
4797
  try {
4782
4798
  await this.session.compact(customInstructions);
4783
4799
  }
@@ -4789,10 +4805,7 @@ export class InteractiveMode {
4789
4805
  if (this.settingsManager.getShowTerminalProgress()) {
4790
4806
  this.ui.terminal.setProgress(false);
4791
4807
  }
4792
- if (this.loadingAnimation) {
4793
- this.loadingAnimation.stop();
4794
- this.loadingAnimation = undefined;
4795
- }
4808
+ this.clearStatusIndicator();
4796
4809
  this.themeController.disableAutoSync();
4797
4810
  this.clearExtensionTerminalInputListeners();
4798
4811
  this.footer.dispose();
@@ -320,6 +320,10 @@ function printSelfUpdateUnavailable(npmCommand, updatePackageTarget = PACKAGE_NA
320
320
  function printSelfUpdateFallback(command) {
321
321
  console.error(chalk.dim(`If this keeps failing, run this command yourself: ${command.display}`));
322
322
  }
323
+ function printPnpmSelfUpdateMetadataHint() {
324
+ console.error(chalk.yellow("If pnpm reports missing package versions, its cached registry metadata may be stale."));
325
+ console.error(chalk.yellow(`Run \`pnpm store prune\` and retry \`${APP_NAME} update --self\`.`));
326
+ }
323
327
  function printSelfUpdateNote(note) {
324
328
  const trimmedNote = note.trim();
325
329
  if (!trimmedNote) {
@@ -639,6 +643,9 @@ export async function handlePackageCommand(args, runtimeOptions = {}) {
639
643
  catch (error) {
640
644
  const message = error instanceof Error ? error.message : "Unknown package command error";
641
645
  console.error(chalk.red(`Error: ${message}`));
646
+ if (installMethod === "pnpm") {
647
+ printPnpmSelfUpdateMetadataHint();
648
+ }
642
649
  printSelfUpdateFallback(selfUpdateCommand);
643
650
  process.exitCode = 1;
644
651
  return true;
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-coding-agent",
3
- "version": "0.80.2",
3
+ "version": "0.80.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@earendil-works/pi-coding-agent",
9
- "version": "0.80.2",
9
+ "version": "0.80.3",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@earendil-works/pi-agent-core": "^0.80.2",
13
- "@earendil-works/pi-ai": "^0.80.2",
14
- "@earendil-works/pi-tui": "^0.80.2",
12
+ "@earendil-works/pi-agent-core": "^0.80.3",
13
+ "@earendil-works/pi-ai": "^0.80.3",
14
+ "@earendil-works/pi-tui": "^0.80.3",
15
15
  "@silvia-odwyer/photon-node": "0.3.4",
16
16
  "chalk": "5.6.2",
17
17
  "cross-spawn": "7.0.6",
@@ -474,11 +474,11 @@
474
474
  }
475
475
  },
476
476
  "node_modules/@earendil-works/pi-agent-core": {
477
- "version": "0.80.2",
478
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.2.tgz",
477
+ "version": "0.80.3",
478
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.3.tgz",
479
479
  "license": "MIT",
480
480
  "dependencies": {
481
- "@earendil-works/pi-ai": "^0.80.2",
481
+ "@earendil-works/pi-ai": "^0.80.3",
482
482
  "ignore": "7.0.5",
483
483
  "typebox": "1.1.38",
484
484
  "yaml": "2.9.0"
@@ -488,8 +488,8 @@
488
488
  }
489
489
  },
490
490
  "node_modules/@earendil-works/pi-ai": {
491
- "version": "0.80.2",
492
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.2.tgz",
491
+ "version": "0.80.3",
492
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.3.tgz",
493
493
  "license": "MIT",
494
494
  "dependencies": {
495
495
  "@anthropic-ai/sdk": "0.91.1",
@@ -512,8 +512,8 @@
512
512
  }
513
513
  },
514
514
  "node_modules/@earendil-works/pi-tui": {
515
- "version": "0.80.2",
516
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.2.tgz",
515
+ "version": "0.80.3",
516
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.3.tgz",
517
517
  "license": "MIT",
518
518
  "dependencies": {
519
519
  "get-east-asian-width": "1.6.0",