@code-yeongyu/senpi 2026.9.22-2 → 2026.9.22-3

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 (630) hide show
  1. package/CHANGELOG.md +37 -17
  2. package/dist/bundle/chunks/{anthropic-messages-2P7APOOQ.js → anthropic-messages-V4CUY3UU.js} +1 -1
  3. package/dist/bundle/chunks/{app-server-command-PRNA6QQU.js → app-server-command-P5WP2YVC.js} +2 -2
  4. package/dist/bundle/chunks/azure-openai-responses-SBCCU4KI.js +2 -0
  5. package/dist/bundle/chunks/chatgpt-subscription.js +75 -0
  6. package/dist/bundle/chunks/chunk-2VZJTDUX.js +2 -0
  7. package/dist/bundle/chunks/{chunk-BOZ37BOT.js → chunk-3KLWJIXM.js} +3 -4
  8. package/dist/bundle/chunks/{chunk-M2HSO7MH.js → chunk-3UO3QYMZ.js} +1 -1
  9. package/dist/bundle/chunks/{chunk-6OD4TT33.js → chunk-5T3V75HH.js} +113 -111
  10. package/dist/bundle/chunks/chunk-6KXIFAMC.js +11 -0
  11. package/dist/bundle/chunks/{chunk-UCPWK6TZ.js → chunk-6MIPLTQG.js} +1 -1
  12. package/dist/bundle/chunks/{chunk-JZ6YQU3A.js → chunk-7ZPFQY76.js} +3 -3
  13. package/dist/bundle/chunks/{chunk-MUYK27UR.js → chunk-AEJUOQ7U.js} +1 -1
  14. package/dist/bundle/chunks/{chunk-F3DXL5MX.js → chunk-AJ722VIQ.js} +1 -1
  15. package/dist/bundle/chunks/{chunk-VYIJQQ5I.js → chunk-DTD3QN3S.js} +1 -1
  16. package/dist/bundle/chunks/chunk-DY6FUAWH.js +2 -0
  17. package/dist/bundle/chunks/{chunk-5XC2FNJ5.js → chunk-GLDP7LH2.js} +1 -1
  18. package/dist/bundle/chunks/{chunk-OPNVT7BU.js → chunk-KB3DR2ZH.js} +1 -1
  19. package/dist/bundle/chunks/{chunk-JR4X6ECO.js → chunk-M4NQKQUK.js} +1 -1
  20. package/dist/bundle/chunks/{chunk-GXUYWMN2.js → chunk-PODQ2IEB.js} +1 -1
  21. package/dist/bundle/chunks/{chunk-ARJJU3MS.js → chunk-PU7UDZ5F.js} +1 -1
  22. package/dist/bundle/chunks/{chunk-64JQFFHH.js → chunk-SSJ5OP3B.js} +2 -2
  23. package/dist/bundle/chunks/{chunk-X63BXA24.js → chunk-TAFYWUE4.js} +1 -1
  24. package/dist/bundle/chunks/{chunk-KICRBRVS.js → chunk-TU37KLCN.js} +2 -2
  25. package/dist/bundle/chunks/{chunk-R6LVC7SP.js → chunk-TWTHGDQS.js} +4 -4
  26. package/dist/bundle/chunks/chunk-WS7QGU5H.js +8 -0
  27. package/dist/bundle/chunks/{chunk-IPRJIKLL.js → chunk-WSQMYWLV.js} +1 -1
  28. package/dist/bundle/chunks/chunk-ZBHRTH5C.js +2 -0
  29. package/dist/bundle/chunks/cli-main-O4CFWDWV.js +3 -0
  30. package/dist/bundle/chunks/{google-generative-ai-Y2IYMUVC.js → google-generative-ai-UJIX64UU.js} +1 -1
  31. package/dist/bundle/chunks/{google-vertex-TKBBMPHV.js → google-vertex-KJEY5SZY.js} +1 -1
  32. package/dist/bundle/chunks/help-fast-path-KFMAFECE.js +2 -0
  33. package/dist/bundle/chunks/host-command-JEBCPKMK.js +2 -0
  34. package/dist/bundle/chunks/host-lifecycle-FWIB56UI.js +3 -0
  35. package/dist/bundle/chunks/host-lifecycle.js +2 -2
  36. package/dist/bundle/chunks/{interactive-host-runtime-F5L4USLR.js → interactive-host-runtime-HBK4XNHJ.js} +1 -1
  37. package/dist/bundle/chunks/interactive-mode-WKFWOHXN.js +2 -0
  38. package/dist/bundle/chunks/{mistral-conversations-ZYDVFRYF.js → mistral-conversations-PNYVN6YU.js} +1 -1
  39. package/dist/bundle/chunks/{multi-session-host-EUTEGVLS.js → multi-session-host-DWBOLTS7.js} +2 -2
  40. package/dist/bundle/chunks/openai-codex-responses-TBF5EMKG.js +10 -0
  41. package/dist/bundle/chunks/{openai-completions-4V76L5ZJ.js → openai-completions-IJIBZB2G.js} +1 -1
  42. package/dist/bundle/chunks/{openai-images-4XAZQLDT.js → openai-images-JA5N5DUU.js} +1 -1
  43. package/dist/bundle/chunks/openai-responses-3XYO7ROE.js +2 -0
  44. package/dist/bundle/chunks/{openrouter-images-Z3WQ5BDR.js → openrouter-images-T4GY3JYM.js} +1 -1
  45. package/dist/bundle/chunks/{package-manager-cli-JPUWMUEJ.js → package-manager-cli-JUKHAT7U.js} +1 -1
  46. package/dist/bundle/chunks/{rotation-stream-S56Y7WMM.js → rotation-stream-67OZ4U6R.js} +1 -1
  47. package/dist/bundle/chunks/rpc-mode-746KEL7Z.js +2 -0
  48. package/dist/bundle/chunks/{session-picker-PFPJVVIC.js → session-picker-TO42QRV2.js} +1 -1
  49. package/dist/bundle/chunks/session-worker.js +399 -398
  50. package/dist/bundle/cli.js +1 -1
  51. package/dist/bundle/index.js +1 -1
  52. package/dist/bundle/rpc-entry.js +1 -1
  53. package/dist/cli/args.d.ts.map +1 -1
  54. package/dist/cli/args.js +10 -2
  55. package/dist/cli/args.js.map +1 -1
  56. package/dist/core/agent-session.d.ts +1 -1
  57. package/dist/core/agent-session.js +8 -8
  58. package/dist/core/agent-session.js.map +1 -1
  59. package/dist/core/auth-provider-key-migration.d.ts +27 -0
  60. package/dist/core/auth-provider-key-migration.d.ts.map +1 -0
  61. package/dist/core/auth-provider-key-migration.js +40 -0
  62. package/dist/core/auth-provider-key-migration.js.map +1 -0
  63. package/dist/core/auth-storage.d.ts +26 -1
  64. package/dist/core/auth-storage.d.ts.map +1 -1
  65. package/dist/core/auth-storage.js +93 -20
  66. package/dist/core/auth-storage.js.map +1 -1
  67. package/dist/core/credential-accounts.d.ts +1 -1
  68. package/dist/core/credential-accounts.d.ts.map +1 -1
  69. package/dist/core/credential-accounts.js +8 -5
  70. package/dist/core/credential-accounts.js.map +1 -1
  71. package/dist/core/credential-pool/env-slots.d.ts.map +1 -1
  72. package/dist/core/credential-pool/env-slots.js +5 -2
  73. package/dist/core/credential-pool/env-slots.js.map +1 -1
  74. package/dist/core/dynamic-prompt/build.js +1 -1
  75. package/dist/core/dynamic-prompt/build.js.map +1 -1
  76. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-command.d.ts +2 -2
  77. package/dist/core/extensions/builtin/anthropic-subscription/account-command.d.ts.map +1 -0
  78. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-command.js +24 -24
  79. package/dist/core/extensions/builtin/anthropic-subscription/account-command.js.map +1 -0
  80. package/dist/core/extensions/builtin/anthropic-subscription/account-events.d.ts.map +1 -0
  81. package/dist/core/extensions/builtin/anthropic-subscription/account-events.js.map +1 -0
  82. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-management.d.ts +1 -1
  83. package/dist/core/extensions/builtin/anthropic-subscription/account-management.d.ts.map +1 -0
  84. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-management.js +2 -2
  85. package/dist/core/extensions/builtin/anthropic-subscription/account-management.js.map +1 -0
  86. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/accounts.d.ts +8 -8
  87. package/dist/core/extensions/builtin/anthropic-subscription/accounts.d.ts.map +1 -0
  88. package/dist/core/extensions/builtin/anthropic-subscription/accounts.js.map +1 -0
  89. package/dist/core/extensions/builtin/anthropic-subscription/affinity.d.ts.map +1 -0
  90. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/affinity.js +2 -2
  91. package/dist/core/extensions/builtin/anthropic-subscription/affinity.js.map +1 -0
  92. package/dist/core/extensions/builtin/anthropic-subscription/api-id.d.ts.map +1 -0
  93. package/dist/core/extensions/builtin/anthropic-subscription/api-id.js.map +1 -0
  94. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-attempt.d.ts +2 -2
  95. package/dist/core/extensions/builtin/anthropic-subscription/auth-attempt.d.ts.map +1 -0
  96. package/dist/core/extensions/builtin/anthropic-subscription/auth-attempt.js.map +1 -0
  97. package/dist/core/extensions/builtin/anthropic-subscription/auth-environment.d.ts.map +1 -0
  98. package/dist/core/extensions/builtin/anthropic-subscription/auth-environment.js.map +1 -0
  99. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-lane.d.ts +5 -5
  100. package/dist/core/extensions/builtin/anthropic-subscription/auth-lane.d.ts.map +1 -0
  101. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-lane.js +10 -10
  102. package/dist/core/extensions/builtin/anthropic-subscription/auth-lane.js.map +1 -0
  103. package/dist/core/extensions/builtin/anthropic-subscription/availability.d.ts.map +1 -0
  104. package/dist/core/extensions/builtin/anthropic-subscription/availability.js.map +1 -0
  105. package/dist/core/extensions/builtin/anthropic-subscription/bounded-queue.d.ts.map +1 -0
  106. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/bounded-queue.js +1 -1
  107. package/dist/core/extensions/builtin/anthropic-subscription/bounded-queue.js.map +1 -0
  108. package/dist/core/extensions/builtin/anthropic-subscription/config-dir-credentials.d.ts +18 -0
  109. package/dist/core/extensions/builtin/anthropic-subscription/config-dir-credentials.d.ts.map +1 -0
  110. package/dist/core/extensions/builtin/anthropic-subscription/config-dir-credentials.js +81 -0
  111. package/dist/core/extensions/builtin/anthropic-subscription/config-dir-credentials.js.map +1 -0
  112. package/dist/core/extensions/builtin/anthropic-subscription/content-blocks.d.ts.map +1 -0
  113. package/dist/core/extensions/builtin/anthropic-subscription/content-blocks.js.map +1 -0
  114. package/dist/core/extensions/builtin/anthropic-subscription/custom-tools-schema.d.ts.map +1 -0
  115. package/dist/core/extensions/builtin/anthropic-subscription/custom-tools-schema.js.map +1 -0
  116. package/dist/core/extensions/builtin/anthropic-subscription/custom-tools.d.ts.map +1 -0
  117. package/dist/core/extensions/builtin/anthropic-subscription/custom-tools.js.map +1 -0
  118. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/errors.d.ts +1 -1
  119. package/dist/core/extensions/builtin/anthropic-subscription/errors.d.ts.map +1 -0
  120. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/errors.js +1 -1
  121. package/dist/core/extensions/builtin/anthropic-subscription/errors.js.map +1 -0
  122. package/dist/core/extensions/builtin/anthropic-subscription/executable-path-lookup.d.ts.map +1 -0
  123. package/dist/core/extensions/builtin/anthropic-subscription/executable-path-lookup.js.map +1 -0
  124. package/dist/core/extensions/builtin/anthropic-subscription/executable.d.ts.map +1 -0
  125. package/dist/core/extensions/builtin/anthropic-subscription/executable.js.map +1 -0
  126. package/dist/core/extensions/builtin/anthropic-subscription/failover.d.ts.map +1 -0
  127. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/failover.js +1 -1
  128. package/dist/core/extensions/builtin/anthropic-subscription/failover.js.map +1 -0
  129. package/dist/core/extensions/builtin/anthropic-subscription/guidance.d.ts.map +1 -0
  130. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/guidance.js +2 -2
  131. package/dist/core/extensions/builtin/anthropic-subscription/guidance.js.map +1 -0
  132. package/dist/core/extensions/builtin/anthropic-subscription/index.d.ts +11 -0
  133. package/dist/core/extensions/builtin/anthropic-subscription/index.d.ts.map +1 -0
  134. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/index.js +19 -13
  135. package/dist/core/extensions/builtin/anthropic-subscription/index.js.map +1 -0
  136. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/oauth-login.d.ts +3 -3
  137. package/dist/core/extensions/builtin/anthropic-subscription/oauth-login.d.ts.map +1 -0
  138. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/oauth-login.js +3 -3
  139. package/dist/core/extensions/builtin/anthropic-subscription/oauth-login.js.map +1 -0
  140. package/dist/core/extensions/builtin/anthropic-subscription/options.d.ts +18 -0
  141. package/dist/core/extensions/builtin/anthropic-subscription/options.d.ts.map +1 -0
  142. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/options.js +3 -3
  143. package/dist/core/extensions/builtin/anthropic-subscription/options.js.map +1 -0
  144. package/dist/core/extensions/builtin/anthropic-subscription/prompt-bridge.d.ts.map +1 -0
  145. package/dist/core/extensions/builtin/anthropic-subscription/prompt-bridge.js.map +1 -0
  146. package/dist/core/extensions/builtin/anthropic-subscription/prompt-directive-dedupe.d.ts.map +1 -0
  147. package/dist/core/extensions/builtin/anthropic-subscription/prompt-directive-dedupe.js.map +1 -0
  148. package/dist/core/extensions/builtin/anthropic-subscription/refusal.d.ts.map +1 -0
  149. package/dist/core/extensions/builtin/anthropic-subscription/refusal.js.map +1 -0
  150. package/dist/core/extensions/builtin/anthropic-subscription/sdk-boundary.d.ts.map +1 -0
  151. package/dist/core/extensions/builtin/anthropic-subscription/sdk-boundary.js.map +1 -0
  152. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/sdk-boundary.lazy.d.ts +1 -1
  153. package/dist/core/extensions/builtin/anthropic-subscription/sdk-boundary.lazy.d.ts.map +1 -0
  154. package/dist/core/extensions/builtin/anthropic-subscription/sdk-boundary.lazy.js.map +1 -0
  155. package/dist/core/extensions/builtin/anthropic-subscription/session-binding-store.d.ts.map +1 -0
  156. package/dist/core/extensions/builtin/anthropic-subscription/session-binding-store.js.map +1 -0
  157. package/dist/core/extensions/builtin/anthropic-subscription/session-binding.d.ts.map +1 -0
  158. package/dist/core/extensions/builtin/anthropic-subscription/session-binding.js.map +1 -0
  159. package/dist/core/extensions/builtin/anthropic-subscription/session-commit-boundary.d.ts.map +1 -0
  160. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-commit-boundary.js +4 -3
  161. package/dist/core/extensions/builtin/anthropic-subscription/session-commit-boundary.js.map +1 -0
  162. package/dist/core/extensions/builtin/anthropic-subscription/session-continuity.d.ts.map +1 -0
  163. package/dist/core/extensions/builtin/anthropic-subscription/session-continuity.js.map +1 -0
  164. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-entry-annotations.d.ts +3 -3
  165. package/dist/core/extensions/builtin/anthropic-subscription/session-entry-annotations.d.ts.map +1 -0
  166. package/dist/core/extensions/builtin/anthropic-subscription/session-entry-annotations.js.map +1 -0
  167. package/dist/core/extensions/builtin/anthropic-subscription/session-observability.d.ts.map +1 -0
  168. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-observability.js +1 -1
  169. package/dist/core/extensions/builtin/anthropic-subscription/session-observability.js.map +1 -0
  170. package/dist/core/extensions/builtin/anthropic-subscription/session-reaper.d.ts.map +1 -0
  171. package/dist/core/extensions/builtin/anthropic-subscription/session-reaper.js.map +1 -0
  172. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-reattach.d.ts +5 -5
  173. package/dist/core/extensions/builtin/anthropic-subscription/session-reattach.d.ts.map +1 -0
  174. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-reattach.js +1 -1
  175. package/dist/core/extensions/builtin/anthropic-subscription/session-reattach.js.map +1 -0
  176. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-pump.d.ts +2 -2
  177. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.d.ts.map +1 -0
  178. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-pump.js +6 -6
  179. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.js.map +1 -0
  180. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-state.d.ts +3 -3
  181. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-state.d.ts.map +1 -0
  182. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-state.js.map +1 -0
  183. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-wiring.d.ts.map +1 -0
  184. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-wiring.js +2 -2
  185. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-wiring.js.map +1 -0
  186. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry.d.ts +12 -12
  187. package/dist/core/extensions/builtin/anthropic-subscription/session-registry.d.ts.map +1 -0
  188. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry.js +4 -4
  189. package/dist/core/extensions/builtin/anthropic-subscription/session-registry.js.map +1 -0
  190. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-restored-admission.d.ts +2 -2
  191. package/dist/core/extensions/builtin/anthropic-subscription/session-restored-admission.d.ts.map +1 -0
  192. package/dist/core/extensions/builtin/anthropic-subscription/session-restored-admission.js.map +1 -0
  193. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-stream.d.ts +2 -2
  194. package/dist/core/extensions/builtin/anthropic-subscription/session-stream.d.ts.map +1 -0
  195. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-stream.js +1 -1
  196. package/dist/core/extensions/builtin/anthropic-subscription/session-stream.js.map +1 -0
  197. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-sync.d.ts +5 -5
  198. package/dist/core/extensions/builtin/anthropic-subscription/session-sync.d.ts.map +1 -0
  199. package/dist/core/extensions/builtin/anthropic-subscription/session-sync.js.map +1 -0
  200. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-attempt.d.ts +11 -0
  201. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-attempt.d.ts.map +1 -0
  202. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-attempt.js.map +1 -0
  203. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.d.ts +14 -0
  204. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.d.ts.map +1 -0
  205. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-turn-claim.js +1 -1
  206. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.js.map +1 -0
  207. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-types.d.ts.map +1 -0
  208. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-types.js.map +1 -0
  209. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/settings.d.ts +11 -11
  210. package/dist/core/extensions/builtin/anthropic-subscription/settings.d.ts.map +1 -0
  211. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/settings.js +9 -9
  212. package/dist/core/extensions/builtin/anthropic-subscription/settings.js.map +1 -0
  213. package/dist/core/extensions/builtin/anthropic-subscription/stream-events.d.ts.map +1 -0
  214. package/dist/core/extensions/builtin/anthropic-subscription/stream-events.js.map +1 -0
  215. package/dist/core/extensions/builtin/anthropic-subscription/stream-guidance.d.ts.map +1 -0
  216. package/dist/core/extensions/builtin/anthropic-subscription/stream-guidance.js.map +1 -0
  217. package/dist/core/extensions/builtin/anthropic-subscription/stream-protocol.d.ts.map +1 -0
  218. package/dist/core/extensions/builtin/anthropic-subscription/stream-protocol.js.map +1 -0
  219. package/dist/core/extensions/builtin/anthropic-subscription/stream.d.ts +3 -0
  220. package/dist/core/extensions/builtin/anthropic-subscription/stream.d.ts.map +1 -0
  221. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream.js +5 -5
  222. package/dist/core/extensions/builtin/anthropic-subscription/stream.js.map +1 -0
  223. package/dist/core/extensions/builtin/anthropic-subscription/system-prompt.d.ts.map +1 -0
  224. package/dist/core/extensions/builtin/anthropic-subscription/system-prompt.js.map +1 -0
  225. package/dist/core/extensions/builtin/anthropic-subscription/tool-watch.d.ts.map +1 -0
  226. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/tool-watch.js +6 -2
  227. package/dist/core/extensions/builtin/anthropic-subscription/tool-watch.js.map +1 -0
  228. package/dist/core/extensions/builtin/anthropic-subscription/tools.d.ts.map +1 -0
  229. package/dist/core/extensions/builtin/anthropic-subscription/tools.js.map +1 -0
  230. package/dist/core/extensions/builtin/compaction/index.js +2 -2
  231. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  232. package/dist/core/extensions/builtin/compaction/lane-policy.d.ts +5 -5
  233. package/dist/core/extensions/builtin/compaction/lane-policy.d.ts.map +1 -1
  234. package/dist/core/extensions/builtin/compaction/lane-policy.js +9 -9
  235. package/dist/core/extensions/builtin/compaction/lane-policy.js.map +1 -1
  236. package/dist/core/extensions/builtin/compaction/openai-remote-model.d.ts +1 -1
  237. package/dist/core/extensions/builtin/compaction/openai-remote-model.d.ts.map +1 -1
  238. package/dist/core/extensions/builtin/compaction/openai-remote-model.js +6 -6
  239. package/dist/core/extensions/builtin/compaction/openai-remote-model.js.map +1 -1
  240. package/dist/core/extensions/builtin/compaction/openai-remote.js +1 -1
  241. package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
  242. package/dist/core/extensions/builtin/compaction/speculative-summary.js +2 -2
  243. package/dist/core/extensions/builtin/compaction/speculative-summary.js.map +1 -1
  244. package/dist/core/extensions/builtin/compaction/speculative.js +1 -1
  245. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
  246. package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js +1 -1
  247. package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js.map +1 -1
  248. package/dist/core/extensions/builtin/goal/terminal-provider-error.js +1 -1
  249. package/dist/core/extensions/builtin/goal/terminal-provider-error.js.map +1 -1
  250. package/dist/core/extensions/builtin/gpt-account.js +18 -18
  251. package/dist/core/extensions/builtin/gpt-account.js.map +1 -1
  252. package/dist/core/extensions/builtin/index.js +2 -2
  253. package/dist/core/extensions/builtin/index.js.map +1 -1
  254. package/dist/core/extensions/builtin/oauth-login-interaction.d.ts +2 -2
  255. package/dist/core/extensions/builtin/oauth-login-interaction.d.ts.map +1 -1
  256. package/dist/core/extensions/builtin/oauth-login-interaction.js +1 -1
  257. package/dist/core/extensions/builtin/oauth-login-interaction.js.map +1 -1
  258. package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts +9 -1
  259. package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts.map +1 -1
  260. package/dist/core/extensions/builtin/prompt-preset/file-operations.js +60 -17
  261. package/dist/core/extensions/builtin/prompt-preset/file-operations.js.map +1 -1
  262. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts.map +1 -1
  263. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js +7 -3
  264. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js.map +1 -1
  265. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts.map +1 -1
  266. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js +7 -3
  267. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js.map +1 -1
  268. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts.map +1 -1
  269. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js +7 -3
  270. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js.map +1 -1
  271. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js +1 -1
  272. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js.map +1 -1
  273. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +1 -1
  274. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
  275. package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts.map +1 -1
  276. package/dist/core/extensions/builtin/prompt-preset/gpt-5.js +7 -3
  277. package/dist/core/extensions/builtin/prompt-preset/gpt-5.js.map +1 -1
  278. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js +1 -1
  279. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js.map +1 -1
  280. package/dist/core/extensions/builtin/prompt-preset/grok-4.5.js +2 -2
  281. package/dist/core/extensions/builtin/prompt-preset/grok-4.5.js.map +1 -1
  282. package/dist/core/extensions/builtin/rules/rules/constants.d.ts +1 -1
  283. package/dist/core/extensions/builtin/rules/rules/constants.js +1 -1
  284. package/dist/core/extensions/builtin/rules/rules/constants.js.map +1 -1
  285. package/dist/core/extensions/builtin/service-tier.js +3 -3
  286. package/dist/core/extensions/builtin/service-tier.js.map +1 -1
  287. package/dist/core/model-config.d.ts +3 -0
  288. package/dist/core/model-config.d.ts.map +1 -1
  289. package/dist/core/model-config.js +26 -3
  290. package/dist/core/model-config.js.map +1 -1
  291. package/dist/core/model-resolver.js +1 -1
  292. package/dist/core/model-resolver.js.map +1 -1
  293. package/dist/core/model-runtime.d.ts +2 -0
  294. package/dist/core/model-runtime.d.ts.map +1 -1
  295. package/dist/core/model-runtime.js +10 -2
  296. package/dist/core/model-runtime.js.map +1 -1
  297. package/dist/core/provider-display-names.d.ts.map +1 -1
  298. package/dist/core/provider-display-names.js +2 -1
  299. package/dist/core/provider-display-names.js.map +1 -1
  300. package/dist/core/retry-fallback/expansion.js +1 -1
  301. package/dist/core/retry-fallback/expansion.js.map +1 -1
  302. package/dist/core/retry-fallback/settings.d.ts +1 -1
  303. package/dist/core/retry-fallback/settings.js +1 -1
  304. package/dist/core/retry-fallback/settings.js.map +1 -1
  305. package/dist/core/session-manager.d.ts.map +1 -1
  306. package/dist/core/session-manager.js +16 -4
  307. package/dist/core/session-manager.js.map +1 -1
  308. package/dist/core/settings-manager.d.ts +5 -0
  309. package/dist/core/settings-manager.d.ts.map +1 -1
  310. package/dist/core/settings-manager.js +68 -2
  311. package/dist/core/settings-manager.js.map +1 -1
  312. package/dist/modes/app-server/server/account.d.ts +1 -1
  313. package/dist/modes/app-server/server/account.d.ts.map +1 -1
  314. package/dist/modes/app-server/server/account.js +6 -1
  315. package/dist/modes/app-server/server/account.js.map +1 -1
  316. package/dist/modes/app-server/server/server-core.js +1 -1
  317. package/dist/modes/app-server/server/server-core.js.map +1 -1
  318. package/dist/modes/interactive/components/progressive-transcript-container.d.ts +12 -0
  319. package/dist/modes/interactive/components/progressive-transcript-container.d.ts.map +1 -1
  320. package/dist/modes/interactive/components/progressive-transcript-container.js +17 -2
  321. package/dist/modes/interactive/components/progressive-transcript-container.js.map +1 -1
  322. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  323. package/dist/modes/interactive/interactive-mode.js +14 -1
  324. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  325. package/dist/modes/rpc/connection-handler.js +3 -3
  326. package/dist/modes/rpc/connection-handler.js.map +1 -1
  327. package/dist/modes/rpc/host-process-metrics.d.ts.map +1 -1
  328. package/dist/modes/rpc/host-process-metrics.js +24 -31
  329. package/dist/modes/rpc/host-process-metrics.js.map +1 -1
  330. package/dist/modes/rpc/host-process-table.d.ts +36 -0
  331. package/dist/modes/rpc/host-process-table.d.ts.map +1 -0
  332. package/dist/modes/rpc/host-process-table.js +162 -0
  333. package/dist/modes/rpc/host-process-table.js.map +1 -0
  334. package/dist/modes/rpc/rpc-client.d.ts +1 -1
  335. package/dist/modes/rpc/rpc-client.js +1 -1
  336. package/dist/modes/rpc/rpc-client.js.map +1 -1
  337. package/dist/modes/rpc/rpc-types.js.map +1 -1
  338. package/dist/modes/rpc/worker-session-registry.d.ts.map +1 -1
  339. package/dist/modes/rpc/worker-session-registry.js +30 -0
  340. package/dist/modes/rpc/worker-session-registry.js.map +1 -1
  341. package/docs/providers.md +9 -9
  342. package/docs/release-guide.md +1 -1
  343. package/docs/rpc.md +4 -4
  344. package/docs/settings.md +5 -5
  345. package/docs/usage.md +2 -2
  346. package/examples/extensions/AGENTS.md +1 -1
  347. package/examples/extensions/README.md +1 -1
  348. package/examples/extensions/{openai-codex-usage → chatgpt-subscription-usage}/codex-usage.ts +1 -1
  349. package/examples/extensions/{openai-codex-usage → chatgpt-subscription-usage}/index.ts +4 -4
  350. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +12 -0
  351. package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
  352. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  353. package/node_modules/@earendil-works/pi-ai/README.md +3 -3
  354. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +1 -1
  355. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  356. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.d.ts +3 -3
  357. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.d.ts.map +1 -1
  358. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.js.map +1 -1
  359. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts +5 -5
  360. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  361. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +10 -10
  362. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  363. package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.d.ts +1 -1
  364. package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.d.ts.map +1 -1
  365. package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.js +1 -1
  366. package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.js.map +1 -1
  367. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +1 -1
  368. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  369. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +1 -1
  370. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  371. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/{openai-codex.d.ts → chatgpt-subscription.d.ts} +3 -3
  372. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/chatgpt-subscription.d.ts.map +1 -0
  373. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/{openai-codex.js → chatgpt-subscription.js} +35 -35
  374. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/chatgpt-subscription.js.map +1 -0
  375. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts +2 -2
  376. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts.map +1 -1
  377. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js +4 -3
  378. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js.map +1 -1
  379. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts +7 -0
  380. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts.map +1 -1
  381. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js +20 -2
  382. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js.map +1 -1
  383. package/node_modules/@earendil-works/pi-ai/dist/bun-oauth.js +2 -2
  384. package/node_modules/@earendil-works/pi-ai/dist/bun-oauth.js.map +1 -1
  385. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +2 -2
  386. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  387. package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -1
  388. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  389. package/node_modules/@earendil-works/pi-ai/dist/legacy-provider-ids.d.ts +20 -0
  390. package/node_modules/@earendil-works/pi-ai/dist/legacy-provider-ids.d.ts.map +1 -1
  391. package/node_modules/@earendil-works/pi-ai/dist/legacy-provider-ids.js +56 -0
  392. package/node_modules/@earendil-works/pi-ai/dist/legacy-provider-ids.js.map +1 -1
  393. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +2 -2
  394. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  395. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +2 -2
  396. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  397. package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
  398. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +2 -2
  399. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js.map +1 -1
  400. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.d.ts +3 -0
  401. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.d.ts.map +1 -0
  402. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.js +22 -0
  403. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.js.map +1 -0
  404. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.models.d.ts +4 -0
  405. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.models.d.ts.map +1 -0
  406. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.models.js +6 -0
  407. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.models.js.map +1 -0
  408. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  409. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  410. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  411. package/node_modules/@earendil-works/pi-ai/dist/providers/data/chatgpt-subscription.json +1 -0
  412. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  413. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +1 -1
  414. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  415. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  416. package/node_modules/@earendil-works/pi-ai/dist/utils/{openai-codex-auth.d.ts → chatgpt-subscription-auth.d.ts} +3 -3
  417. package/node_modules/@earendil-works/pi-ai/dist/utils/chatgpt-subscription-auth.d.ts.map +1 -0
  418. package/node_modules/@earendil-works/pi-ai/dist/utils/{openai-codex-auth.js → chatgpt-subscription-auth.js} +4 -4
  419. package/node_modules/@earendil-works/pi-ai/dist/utils/chatgpt-subscription-auth.js.map +1 -0
  420. package/node_modules/@earendil-works/pi-ai/package.json +2 -2
  421. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  422. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  423. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  424. package/package.json +7 -7
  425. package/dist/bundle/chunks/azure-openai-responses-3AH7MJWF.js +0 -2
  426. package/dist/bundle/chunks/chunk-56TWFZ2C.js +0 -2
  427. package/dist/bundle/chunks/chunk-JEFYJDHP.js +0 -8
  428. package/dist/bundle/chunks/chunk-K3HEWWSS.js +0 -2
  429. package/dist/bundle/chunks/chunk-NK2RNX25.js +0 -11
  430. package/dist/bundle/chunks/chunk-NMB4C6ZZ.js +0 -2
  431. package/dist/bundle/chunks/cli-main-AFJNXUSL.js +0 -3
  432. package/dist/bundle/chunks/help-fast-path-4KYBVD2Z.js +0 -2
  433. package/dist/bundle/chunks/host-command-OVA6GEWC.js +0 -2
  434. package/dist/bundle/chunks/host-lifecycle-IDQPLYEA.js +0 -3
  435. package/dist/bundle/chunks/interactive-mode-UFBSCOP7.js +0 -2
  436. package/dist/bundle/chunks/openai-codex-responses-MEIUNROM.js +0 -10
  437. package/dist/bundle/chunks/openai-codex.js +0 -75
  438. package/dist/bundle/chunks/openai-responses-YR7WRBG3.js +0 -2
  439. package/dist/bundle/chunks/rpc-mode-JDVHUBZY.js +0 -2
  440. package/dist/core/extensions/builtin/claude-sdk-oauth/account-command.d.ts.map +0 -1
  441. package/dist/core/extensions/builtin/claude-sdk-oauth/account-command.js.map +0 -1
  442. package/dist/core/extensions/builtin/claude-sdk-oauth/account-events.d.ts.map +0 -1
  443. package/dist/core/extensions/builtin/claude-sdk-oauth/account-events.js.map +0 -1
  444. package/dist/core/extensions/builtin/claude-sdk-oauth/account-management.d.ts.map +0 -1
  445. package/dist/core/extensions/builtin/claude-sdk-oauth/account-management.js.map +0 -1
  446. package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.d.ts.map +0 -1
  447. package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.js.map +0 -1
  448. package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.d.ts.map +0 -1
  449. package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.js.map +0 -1
  450. package/dist/core/extensions/builtin/claude-sdk-oauth/api-id.d.ts.map +0 -1
  451. package/dist/core/extensions/builtin/claude-sdk-oauth/api-id.js.map +0 -1
  452. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts.map +0 -1
  453. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js.map +0 -1
  454. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-environment.d.ts.map +0 -1
  455. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-environment.js.map +0 -1
  456. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +0 -1
  457. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +0 -1
  458. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts.map +0 -1
  459. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js.map +0 -1
  460. package/dist/core/extensions/builtin/claude-sdk-oauth/bounded-queue.d.ts.map +0 -1
  461. package/dist/core/extensions/builtin/claude-sdk-oauth/bounded-queue.js.map +0 -1
  462. package/dist/core/extensions/builtin/claude-sdk-oauth/config-dir-credentials.d.ts +0 -3
  463. package/dist/core/extensions/builtin/claude-sdk-oauth/config-dir-credentials.d.ts.map +0 -1
  464. package/dist/core/extensions/builtin/claude-sdk-oauth/config-dir-credentials.js +0 -27
  465. package/dist/core/extensions/builtin/claude-sdk-oauth/config-dir-credentials.js.map +0 -1
  466. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.d.ts.map +0 -1
  467. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.js.map +0 -1
  468. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools-schema.d.ts.map +0 -1
  469. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools-schema.js.map +0 -1
  470. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools.d.ts.map +0 -1
  471. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools.js.map +0 -1
  472. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +0 -1
  473. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js.map +0 -1
  474. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.d.ts.map +0 -1
  475. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.js.map +0 -1
  476. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.d.ts.map +0 -1
  477. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.js.map +0 -1
  478. package/dist/core/extensions/builtin/claude-sdk-oauth/failover.d.ts.map +0 -1
  479. package/dist/core/extensions/builtin/claude-sdk-oauth/failover.js.map +0 -1
  480. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +0 -1
  481. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +0 -1
  482. package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts +0 -11
  483. package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts.map +0 -1
  484. package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +0 -1
  485. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.d.ts.map +0 -1
  486. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +0 -1
  487. package/dist/core/extensions/builtin/claude-sdk-oauth/options.d.ts +0 -18
  488. package/dist/core/extensions/builtin/claude-sdk-oauth/options.d.ts.map +0 -1
  489. package/dist/core/extensions/builtin/claude-sdk-oauth/options.js.map +0 -1
  490. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.d.ts.map +0 -1
  491. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js.map +0 -1
  492. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-directive-dedupe.d.ts.map +0 -1
  493. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-directive-dedupe.js.map +0 -1
  494. package/dist/core/extensions/builtin/claude-sdk-oauth/refusal.d.ts.map +0 -1
  495. package/dist/core/extensions/builtin/claude-sdk-oauth/refusal.js.map +0 -1
  496. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.d.ts.map +0 -1
  497. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.js.map +0 -1
  498. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.lazy.d.ts.map +0 -1
  499. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.lazy.js.map +0 -1
  500. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding-store.d.ts.map +0 -1
  501. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding-store.js.map +0 -1
  502. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +0 -1
  503. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js.map +0 -1
  504. package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.d.ts.map +0 -1
  505. package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.js.map +0 -1
  506. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.d.ts.map +0 -1
  507. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.js.map +0 -1
  508. package/dist/core/extensions/builtin/claude-sdk-oauth/session-entry-annotations.d.ts.map +0 -1
  509. package/dist/core/extensions/builtin/claude-sdk-oauth/session-entry-annotations.js.map +0 -1
  510. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.d.ts.map +0 -1
  511. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.js.map +0 -1
  512. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reaper.d.ts.map +0 -1
  513. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reaper.js.map +0 -1
  514. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts.map +0 -1
  515. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js.map +0 -1
  516. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +0 -1
  517. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +0 -1
  518. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +0 -1
  519. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js.map +0 -1
  520. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +0 -1
  521. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +0 -1
  522. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +0 -1
  523. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +0 -1
  524. package/dist/core/extensions/builtin/claude-sdk-oauth/session-restored-admission.d.ts.map +0 -1
  525. package/dist/core/extensions/builtin/claude-sdk-oauth/session-restored-admission.js.map +0 -1
  526. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +0 -1
  527. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +0 -1
  528. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +0 -1
  529. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +0 -1
  530. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts +0 -11
  531. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts.map +0 -1
  532. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.js.map +0 -1
  533. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-claim.d.ts +0 -14
  534. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-claim.d.ts.map +0 -1
  535. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-claim.js.map +0 -1
  536. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-types.d.ts.map +0 -1
  537. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-types.js.map +0 -1
  538. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts.map +0 -1
  539. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +0 -1
  540. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-events.d.ts.map +0 -1
  541. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-events.js.map +0 -1
  542. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts.map +0 -1
  543. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js.map +0 -1
  544. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts.map +0 -1
  545. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.js.map +0 -1
  546. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts +0 -3
  547. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts.map +0 -1
  548. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js.map +0 -1
  549. package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts.map +0 -1
  550. package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js.map +0 -1
  551. package/dist/core/extensions/builtin/claude-sdk-oauth/tool-watch.d.ts.map +0 -1
  552. package/dist/core/extensions/builtin/claude-sdk-oauth/tool-watch.js.map +0 -1
  553. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +0 -1
  554. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js.map +0 -1
  555. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.d.ts.map +0 -1
  556. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js.map +0 -1
  557. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +0 -1
  558. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.d.ts +0 -3
  559. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.d.ts.map +0 -1
  560. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.js +0 -22
  561. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.js.map +0 -1
  562. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.d.ts +0 -4
  563. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.d.ts.map +0 -1
  564. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js +0 -6
  565. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js.map +0 -1
  566. package/node_modules/@earendil-works/pi-ai/dist/utils/openai-codex-auth.d.ts.map +0 -1
  567. package/node_modules/@earendil-works/pi-ai/dist/utils/openai-codex-auth.js.map +0 -1
  568. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-events.d.ts +0 -0
  569. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-events.js +0 -0
  570. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/accounts.js +0 -0
  571. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/affinity.d.ts +0 -0
  572. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/api-id.d.ts +0 -0
  573. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/api-id.js +0 -0
  574. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-attempt.js +0 -0
  575. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-environment.d.ts +0 -0
  576. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-environment.js +0 -0
  577. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/availability.d.ts +0 -0
  578. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/availability.js +0 -0
  579. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/bounded-queue.d.ts +0 -0
  580. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/content-blocks.d.ts +0 -0
  581. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/content-blocks.js +0 -0
  582. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/custom-tools-schema.d.ts +0 -0
  583. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/custom-tools-schema.js +0 -0
  584. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/custom-tools.d.ts +0 -0
  585. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/custom-tools.js +0 -0
  586. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/executable-path-lookup.d.ts +0 -0
  587. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/executable-path-lookup.js +0 -0
  588. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/executable.d.ts +0 -0
  589. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/executable.js +0 -0
  590. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/failover.d.ts +0 -0
  591. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/guidance.d.ts +0 -0
  592. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/prompt-bridge.d.ts +0 -0
  593. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/prompt-bridge.js +0 -0
  594. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/prompt-directive-dedupe.d.ts +0 -0
  595. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/prompt-directive-dedupe.js +0 -0
  596. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/refusal.d.ts +0 -0
  597. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/refusal.js +0 -0
  598. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/sdk-boundary.d.ts +0 -0
  599. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/sdk-boundary.js +0 -0
  600. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/sdk-boundary.lazy.js +0 -0
  601. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-binding-store.d.ts +0 -0
  602. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-binding-store.js +0 -0
  603. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-binding.d.ts +0 -0
  604. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-binding.js +0 -0
  605. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-commit-boundary.d.ts +0 -0
  606. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-continuity.d.ts +0 -0
  607. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-continuity.js +0 -0
  608. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-entry-annotations.js +0 -0
  609. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-observability.d.ts +0 -0
  610. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-reaper.d.ts +0 -0
  611. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-reaper.js +0 -0
  612. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-state.js +0 -0
  613. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-wiring.d.ts +0 -0
  614. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-restored-admission.js +0 -0
  615. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-sync.js +0 -0
  616. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-turn-attempt.js +0 -0
  617. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-turn-types.d.ts +0 -0
  618. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-turn-types.js +0 -0
  619. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-events.d.ts +0 -0
  620. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-events.js +0 -0
  621. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-guidance.d.ts +0 -0
  622. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-guidance.js +0 -0
  623. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-protocol.d.ts +0 -0
  624. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-protocol.js +0 -0
  625. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/system-prompt.d.ts +0 -0
  626. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/system-prompt.js +0 -0
  627. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/tool-watch.d.ts +0 -0
  628. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/tools.d.ts +0 -0
  629. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/tools.js +0 -0
  630. /package/examples/extensions/{openai-codex-usage → chatgpt-subscription-usage}/README.md +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"availability.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/availability.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn } from \"node:child_process\";\nimport {\n\tdefaultExecutableDeps,\n\tdescribeClaudeCodeExecutable,\n\ttype ExecutableResolution,\n\tresolveClaudeCodeExecutable,\n} from \"./executable.ts\";\n\nexport type ClaudeLaneDiagnostics = ExecutableResolution & {\n\t/** The JavaScript runtime spawning the binary; Bun and Node spell and stat Windows paths differently (#1541). */\n\truntime: \"bun\" | \"node\";\n};\n\n/**\n * What a doctor surface reports for the Claude lane: the executable the query path would hand the\n * SDK (validated by the same resolver, so the report cannot disagree with a turn), every candidate\n * tried when there is none, and the host runtime.\n */\nexport function describeClaudeLane(): ClaudeLaneDiagnostics {\n\treturn {\n\t\t...describeClaudeCodeExecutable(defaultExecutableDeps()),\n\t\truntime: process.versions.bun === undefined ? \"node\" : \"bun\",\n\t};\n}\n\n/** Long enough to keep the probe off the per-request path, short enough that a fresh `claude login` is picked up promptly. */\nconst AMBIENT_STATUS_TTL_MS = 30_000;\n\n/**\n * `claude auth status` validates credentials, so it can stall on a hung network call. The probe sits\n * on the auth path of every request, and its result is shared, so one stall would otherwise park each\n * caller that joins it. Unavailable is the safe answer: the managed lanes still resolve.\n */\nconst AMBIENT_PROBE_TIMEOUT_MS = 10_000;\n\n/**\n * Memoises the probe, which spawns the Claude binary and costs a few hundred\n * milliseconds. Auth resolution runs per request, so an uncached probe would\n * put that on every model call. Concurrent readers share one in-flight probe;\n * a rejected probe is not cached.\n */\nexport function createAmbientAuthStatusReader(\n\tprobe: () => Promise<boolean>,\n\tnow: () => number = Date.now,\n\tttlMs: number = AMBIENT_STATUS_TTL_MS,\n): (signal?: AbortSignal) => Promise<boolean> {\n\tlet cached: { at: number; value: boolean } | undefined;\n\tlet inFlight: Promise<boolean> | undefined;\n\tconst startProbe = (): Promise<boolean> => {\n\t\tconst status = probe().then((value) => {\n\t\t\tcached = { at: now(), value };\n\t\t\treturn value;\n\t\t});\n\t\tinFlight = status;\n\t\tconst clear = () => {\n\t\t\tif (inFlight === status) inFlight = undefined;\n\t\t};\n\t\tvoid status.then(clear, clear);\n\t\treturn status;\n\t};\n\treturn (signal) => {\n\t\tif (signal?.aborted) return Promise.reject(signal.reason);\n\t\tif (cached && now() - cached.at < ttlMs) return Promise.resolve(cached.value);\n\t\treturn untilAborted(inFlight ?? startProbe(), signal);\n\t};\n}\n\n/**\n * Stops THIS caller waiting once its request is abandoned, while the shared probe runs on for the\n * callers still waiting on it. Aborting the probe itself would cancel work another request owns.\n */\nfunction untilAborted(status: Promise<boolean>, signal: AbortSignal | undefined): Promise<boolean> {\n\tif (signal === undefined) return status;\n\tif (signal.aborted) return Promise.reject(signal.reason);\n\tconst abortController = new AbortController();\n\tconst aborted = new Promise<never>((_resolve, reject) => {\n\t\tsignal.addEventListener(\"abort\", () => reject(signal.reason), { once: true, signal: abortController.signal });\n\t});\n\treturn Promise.race([status, aborted]).finally(() => abortController.abort());\n}\n\ntype ProbeChildProcess = {\n\tonce(event: \"error\" | \"close\", listener: (code: number | null) => void): unknown;\n\tkill(signal: \"SIGKILL\"): unknown;\n};\n\nexport type AmbientProbeOptions = {\n\ttimeoutMs?: number;\n\tspawnProbe?: (command: string, args: readonly string[]) => ProbeChildProcess;\n};\n\nexport async function probeAmbientClaudeAuthStatus(options: AmbientProbeOptions = {}): Promise<boolean> {\n\tconst timeoutMs = options.timeoutMs ?? AMBIENT_PROBE_TIMEOUT_MS;\n\tconst spawnProbe =\n\t\toptions.spawnProbe ?? ((command, args) => spawn(command, [...args], { stdio: \"ignore\", windowsHide: true }));\n\tlet executable: string;\n\ttry {\n\t\texecutable = resolveClaudeCodeExecutable(defaultExecutableDeps());\n\t} catch {\n\t\treturn false;\n\t}\n\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\tconst finish = (available: boolean) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tclearTimeout(deadline);\n\t\t\tresolve(available);\n\t\t};\n\t\tconst child = spawnProbe(executable, [\"auth\", \"status\"]);\n\t\tconst deadline = setTimeout(() => {\n\t\t\tchild.kill(\"SIGKILL\");\n\t\t\tfinish(false);\n\t\t}, timeoutMs);\n\t\tdeadline.unref?.();\n\t\tchild.once(\"error\", () => finish(false));\n\t\tchild.once(\"close\", (code) => finish(code === 0));\n\t});\n}\n\nexport const readAmbientClaudeAuthStatus = createAmbientAuthStatusReader(probeAmbientClaudeAuthStatus);\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-queue.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/bounded-queue.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,qBAAqB,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,MAAM,CAAiG;IAC/G,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAU;IAEzB,YAAY,QAAQ,EAAE,MAAM,EAE3B;IAED,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAEjD;IAED,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAOjC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAYnB;IAED,KAAK,IAAI,IAAI,CAMZ;IAED,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAOzB;CACD"}
@@ -31,7 +31,7 @@ export class BoundedAsyncQueue {
31
31
  return;
32
32
  }
33
33
  if (this.values.length >= this.capacity) {
34
- throw new Error(`Claude SDK OAuth session stream queue exceeded ${this.capacity} messages`);
34
+ throw new Error(`Anthropic Subscription session stream queue exceeded ${this.capacity} messages`);
35
35
  }
36
36
  this.values.push(value);
37
37
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-queue.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/bounded-queue.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAEjD,MAAM,OAAO,iBAAiB;IAQ7B,YAAY,QAAgB;QANX,WAAM,GAAQ,EAAE,CAAC;QAE1B,WAAM,GAAG,KAAK,CAAC;QACf,WAAM,GAAG,KAAK,CAAC;QAItB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI;QACH,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjG,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAQ;QACZ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACvC,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,CAAC,QAAQ,WAAW,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,KAAK;QACJ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,KAAc;QAClB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACD","sourcesContent":["/** Single-consumer queue that fails fast instead of buffering an unbounded turn. */\nexport const SESSION_STREAM_QUEUE_CAPACITY = 256;\n\nexport class BoundedAsyncQueue<T> implements AsyncIterableIterator<T> {\n\tprivate readonly capacity: number;\n\tprivate readonly values: T[] = [];\n\tprivate reader: { resolve: (result: IteratorResult<T>) => void; reject: (error: unknown) => void } | undefined;\n\tprivate closed = false;\n\tprivate failed = false;\n\tprivate failure: unknown;\n\n\tconstructor(capacity: number) {\n\t\tthis.capacity = capacity;\n\t}\n\n\t[Symbol.asyncIterator](): AsyncIterableIterator<T> {\n\t\treturn this;\n\t}\n\n\tnext(): Promise<IteratorResult<T>> {\n\t\tif (this.values.length > 0) return Promise.resolve({ value: this.values.shift()!, done: false });\n\t\tif (this.failed) return Promise.reject(this.failure);\n\t\tif (this.closed) return Promise.resolve({ value: undefined, done: true });\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.reader = { resolve, reject };\n\t\t});\n\t}\n\n\tpush(value: T): void {\n\t\tif (this.closed || this.failed) return;\n\t\tconst reader = this.reader;\n\t\tif (reader) {\n\t\t\tthis.reader = undefined;\n\t\t\treader.resolve({ value, done: false });\n\t\t\treturn;\n\t\t}\n\t\tif (this.values.length >= this.capacity) {\n\t\t\tthrow new Error(`Anthropic Subscription session stream queue exceeded ${this.capacity} messages`);\n\t\t}\n\t\tthis.values.push(value);\n\t}\n\n\tclose(): void {\n\t\tif (this.closed || this.failed) return;\n\t\tthis.closed = true;\n\t\tconst reader = this.reader;\n\t\tthis.reader = undefined;\n\t\treader?.resolve({ value: undefined, done: true });\n\t}\n\n\tfail(error: unknown): void {\n\t\tif (this.closed || this.failed) return;\n\t\tthis.failed = true;\n\t\tthis.failure = error;\n\t\tconst reader = this.reader;\n\t\tthis.reader = undefined;\n\t\treader?.reject(error);\n\t}\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { type AccountSlot } from "./accounts.ts";
2
+ /**
3
+ * One-shot, idempotent move of the per-account directory to its canonical name,
4
+ * performed the first time the lane resolves an account dir. Returns the base
5
+ * directory the caller should use.
6
+ *
7
+ * - No legacy tree (fresh install or already migrated): use the canonical name.
8
+ * - Both exist: never merge two account trees - keep the canonical one and set
9
+ * the legacy tree aside with a timestamp suffix.
10
+ * - Otherwise move it: `rename` first, and on ANY error (cross-device `EXDEV`,
11
+ * or a Windows `EPERM`/`EBUSY` sharing violation while a file is open) fall
12
+ * back to a full copy-then-remove. A failure mid-copy leaves the SOURCE
13
+ * authoritative (the partial target is discarded) and the move is retried on
14
+ * the next resolve. A failed move is never fatal.
15
+ */
16
+ export declare function resolveAccountsDirectory(agentDir: string): string;
17
+ export declare function writeConfigDirCredential(agentDir: string, slot: AccountSlot, access: string): string;
18
+ //# sourceMappingURL=config-dir-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-dir-credentials.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/config-dir-credentials.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAA0B,MAAM,eAAe,CAAC;AAQzE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6BjE;AAWD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBpG"}
@@ -0,0 +1,81 @@
1
+ import { chmodSync, cpSync, existsSync, mkdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { assertValidAccountName } from "./accounts.js";
4
+ // The per-account directory was named for the old provider id. It is moved once
5
+ // to the canonical name (senpi#1989); the account slot names and file contents
6
+ // inside are preserved byte-for-byte.
7
+ const LEGACY_ACCOUNTS_DIR = "claude-sdk-oauth-accounts";
8
+ const ACCOUNTS_DIR = "anthropic-subscription-accounts";
9
+ /**
10
+ * One-shot, idempotent move of the per-account directory to its canonical name,
11
+ * performed the first time the lane resolves an account dir. Returns the base
12
+ * directory the caller should use.
13
+ *
14
+ * - No legacy tree (fresh install or already migrated): use the canonical name.
15
+ * - Both exist: never merge two account trees - keep the canonical one and set
16
+ * the legacy tree aside with a timestamp suffix.
17
+ * - Otherwise move it: `rename` first, and on ANY error (cross-device `EXDEV`,
18
+ * or a Windows `EPERM`/`EBUSY` sharing violation while a file is open) fall
19
+ * back to a full copy-then-remove. A failure mid-copy leaves the SOURCE
20
+ * authoritative (the partial target is discarded) and the move is retried on
21
+ * the next resolve. A failed move is never fatal.
22
+ */
23
+ export function resolveAccountsDirectory(agentDir) {
24
+ const legacy = join(agentDir, LEGACY_ACCOUNTS_DIR);
25
+ const target = join(agentDir, ACCOUNTS_DIR);
26
+ if (!existsSync(legacy))
27
+ return target;
28
+ if (existsSync(target)) {
29
+ try {
30
+ renameSync(legacy, `${legacy}.${Date.now()}.bak`);
31
+ }
32
+ catch {
33
+ // Non-fatal: the canonical tree is authoritative; retry setting the legacy aside next resolve.
34
+ }
35
+ return target;
36
+ }
37
+ try {
38
+ renameSync(legacy, target);
39
+ return target;
40
+ }
41
+ catch {
42
+ try {
43
+ cpSync(legacy, target, { recursive: true });
44
+ rmSync(legacy, { recursive: true, force: true });
45
+ return target;
46
+ }
47
+ catch {
48
+ try {
49
+ rmSync(target, { recursive: true, force: true });
50
+ }
51
+ catch {
52
+ // Leave whatever partial target could not be removed; the source is still intact.
53
+ }
54
+ return legacy;
55
+ }
56
+ }
57
+ }
58
+ const CLI_OAUTH_SCOPES = [
59
+ "org:create_api_key",
60
+ "user:profile",
61
+ "user:inference",
62
+ "user:sessions:claude_code",
63
+ "user:mcp_servers",
64
+ "user:file_upload",
65
+ ];
66
+ export function writeConfigDirCredential(agentDir, slot, access) {
67
+ assertValidAccountName(slot.name);
68
+ const directory = join(resolveAccountsDirectory(agentDir), slot.name);
69
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
70
+ chmodSync(directory, 0o700);
71
+ writeFileSync(join(directory, ".credentials.json"), JSON.stringify({
72
+ claudeAiOauth: {
73
+ accessToken: access,
74
+ refreshToken: slot.refresh,
75
+ expiresAt: slot.expires,
76
+ scopes: CLI_OAUTH_SCOPES,
77
+ },
78
+ }), { encoding: "utf8", mode: 0o600 });
79
+ return directory;
80
+ }
81
+ //# sourceMappingURL=config-dir-credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-dir-credentials.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/config-dir-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAoB,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEzE,gFAAgF;AAChF,+EAA+E;AAC/E,sCAAsC;AACtC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AACxD,MAAM,YAAY,GAAG,iCAAiC,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,UAAU,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACR,+FAA+F;QAChG,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACJ,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACR,IAAI,CAAC;YACJ,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACR,IAAI,CAAC;gBACJ,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACR,kFAAkF;YACnF,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,gBAAgB,GAAG;IACxB,oBAAoB;IACpB,cAAc;IACd,gBAAgB;IAChB,2BAA2B;IAC3B,kBAAkB;IAClB,kBAAkB;CACT,CAAC;AAEX,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,IAAiB,EAAE,MAAc;IAC3F,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5B,aAAa,CACZ,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACpC,IAAI,CAAC,SAAS,CAAC;QACd,aAAa,EAAE;YACd,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,OAAO;YAC1B,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,MAAM,EAAE,gBAAgB;SACxB;KACD,CAAC,EACF,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CACjC,CAAC;IACF,OAAO,SAAS,CAAC;AAClB,CAAC","sourcesContent":["import { chmodSync, cpSync, existsSync, mkdirSync, renameSync, rmSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { type AccountSlot, assertValidAccountName } from \"./accounts.ts\";\n\n// The per-account directory was named for the old provider id. It is moved once\n// to the canonical name (senpi#1989); the account slot names and file contents\n// inside are preserved byte-for-byte.\nconst LEGACY_ACCOUNTS_DIR = \"claude-sdk-oauth-accounts\";\nconst ACCOUNTS_DIR = \"anthropic-subscription-accounts\";\n\n/**\n * One-shot, idempotent move of the per-account directory to its canonical name,\n * performed the first time the lane resolves an account dir. Returns the base\n * directory the caller should use.\n *\n * - No legacy tree (fresh install or already migrated): use the canonical name.\n * - Both exist: never merge two account trees - keep the canonical one and set\n * the legacy tree aside with a timestamp suffix.\n * - Otherwise move it: `rename` first, and on ANY error (cross-device `EXDEV`,\n * or a Windows `EPERM`/`EBUSY` sharing violation while a file is open) fall\n * back to a full copy-then-remove. A failure mid-copy leaves the SOURCE\n * authoritative (the partial target is discarded) and the move is retried on\n * the next resolve. A failed move is never fatal.\n */\nexport function resolveAccountsDirectory(agentDir: string): string {\n\tconst legacy = join(agentDir, LEGACY_ACCOUNTS_DIR);\n\tconst target = join(agentDir, ACCOUNTS_DIR);\n\tif (!existsSync(legacy)) return target;\n\tif (existsSync(target)) {\n\t\ttry {\n\t\t\trenameSync(legacy, `${legacy}.${Date.now()}.bak`);\n\t\t} catch {\n\t\t\t// Non-fatal: the canonical tree is authoritative; retry setting the legacy aside next resolve.\n\t\t}\n\t\treturn target;\n\t}\n\ttry {\n\t\trenameSync(legacy, target);\n\t\treturn target;\n\t} catch {\n\t\ttry {\n\t\t\tcpSync(legacy, target, { recursive: true });\n\t\t\trmSync(legacy, { recursive: true, force: true });\n\t\t\treturn target;\n\t\t} catch {\n\t\t\ttry {\n\t\t\t\trmSync(target, { recursive: true, force: true });\n\t\t\t} catch {\n\t\t\t\t// Leave whatever partial target could not be removed; the source is still intact.\n\t\t\t}\n\t\t\treturn legacy;\n\t\t}\n\t}\n}\n\nconst CLI_OAUTH_SCOPES = [\n\t\"org:create_api_key\",\n\t\"user:profile\",\n\t\"user:inference\",\n\t\"user:sessions:claude_code\",\n\t\"user:mcp_servers\",\n\t\"user:file_upload\",\n] as const;\n\nexport function writeConfigDirCredential(agentDir: string, slot: AccountSlot, access: string): string {\n\tassertValidAccountName(slot.name);\n\tconst directory = join(resolveAccountsDirectory(agentDir), slot.name);\n\tmkdirSync(directory, { recursive: true, mode: 0o700 });\n\tchmodSync(directory, 0o700);\n\twriteFileSync(\n\t\tjoin(directory, \".credentials.json\"),\n\t\tJSON.stringify({\n\t\t\tclaudeAiOauth: {\n\t\t\t\taccessToken: access,\n\t\t\t\trefreshToken: slot.refresh,\n\t\t\t\texpiresAt: slot.expires,\n\t\t\t\tscopes: CLI_OAUTH_SCOPES,\n\t\t\t},\n\t\t}),\n\t\t{ encoding: \"utf8\", mode: 0o600 },\n\t);\n\treturn directory;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-blocks.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/content-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI9E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE,GAAG,OAAO,CAWjH"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-blocks.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/content-blocks.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Base64ImageSource, ContentBlockParam } from \"./sdk-boundary.ts\";\n\nconst IMAGE_MEDIA_TYPES = [\"image/jpeg\", \"image/png\", \"image/gif\", \"image/webp\"] as const;\n\nexport function appendSdkContentBlocks(blocks: ContentBlockParam[], content: string | readonly unknown[]): boolean {\n\tif (typeof content === \"string\") {\n\t\tif (content.length > 0) blocks.push({ type: \"text\", text: content });\n\t\treturn content.trim().length > 0;\n\t}\n\n\tlet hasText = false;\n\tfor (const entry of content) {\n\t\thasText = appendEntry(blocks, entry) || hasText;\n\t}\n\treturn hasText;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction parseImageMediaType(value: string): Base64ImageSource[\"media_type\"] | undefined {\n\tfor (const mediaType of IMAGE_MEDIA_TYPES) {\n\t\tif (mediaType === value) return mediaType;\n\t}\n\treturn undefined;\n}\n\nfunction omittedPlaceholder(entry: unknown): string {\n\tif (isRecord(entry) && typeof entry.type === \"string\") {\n\t\tif (entry.type === \"image\") {\n\t\t\tconst complete = typeof entry.mimeType === \"string\" && typeof entry.data === \"string\";\n\t\t\treturn complete\n\t\t\t\t? `[image block omitted: unsupported media type ${entry.mimeType}]`\n\t\t\t\t: \"[image block omitted: missing data]\";\n\t\t}\n\t\treturn `[unsupported content block omitted: ${entry.type}]`;\n\t}\n\treturn \"[unsupported content block omitted]\";\n}\n\nfunction imageFromEntry(entry: Record<string, unknown>): ContentBlockParam | undefined {\n\tif (typeof entry.mimeType !== \"string\" || typeof entry.data !== \"string\") return undefined;\n\tconst mediaType = parseImageMediaType(entry.mimeType);\n\tif (mediaType === undefined) return undefined;\n\treturn {\n\t\ttype: \"image\",\n\t\tsource: {\n\t\t\ttype: \"base64\",\n\t\t\tmedia_type: mediaType,\n\t\t\tdata: entry.data,\n\t\t},\n\t};\n}\n\nfunction appendEntry(blocks: ContentBlockParam[], entry: unknown): boolean {\n\tif (typeof entry === \"string\") {\n\t\tblocks.push({ type: \"text\", text: entry });\n\t\treturn entry.trim().length > 0;\n\t}\n\n\tif (!isRecord(entry)) {\n\t\tblocks.push({ type: \"text\", text: omittedPlaceholder(entry) });\n\t\treturn true;\n\t}\n\n\tif (entry.type === \"text\") {\n\t\tif (typeof entry.text === \"string\") {\n\t\t\tblocks.push({ type: \"text\", text: entry.text });\n\t\t\treturn entry.text.trim().length > 0;\n\t\t}\n\t\tblocks.push({ type: \"text\", text: omittedPlaceholder(entry) });\n\t\treturn true;\n\t}\n\n\tif (entry.type === \"image\") {\n\t\tconst image = imageFromEntry(entry);\n\t\tif (image) {\n\t\t\tblocks.push(image);\n\t\t\treturn false;\n\t\t}\n\t\tblocks.push({ type: \"text\", text: omittedPlaceholder(entry) });\n\t\treturn true;\n\t}\n\n\tblocks.push({ type: \"text\", text: omittedPlaceholder(entry) });\n\treturn true;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-tools-schema.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/custom-tools-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAK,MAAM,KAAK,CAAC;AAE3D,KAAK,UAAU,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AA8CF,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE5D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,CAUjE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-tools-schema.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/custom-tools-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ZodRawShape, type ZodTypeAny, z } from \"zod\";\n\ntype JsonSchema = {\n\ttype?: string | string[];\n\tproperties?: Record<string, JsonSchema>;\n\trequired?: string[];\n\titems?: JsonSchema;\n\tenum?: Array<string | number | boolean>;\n\tconst?: string | number | boolean | null;\n\tanyOf?: JsonSchema[];\n\toneOf?: JsonSchema[];\n\tdescription?: string;\n};\n\nfunction schemaToZod(schema: JsonSchema): ZodTypeAny {\n\tif (schema.const !== undefined) {\n\t\treturn schema.const === null ? z.null() : z.literal(schema.const);\n\t}\n\tif (schema.enum && schema.enum.length > 0) {\n\t\tconst values = schema.enum.filter((value): value is string | number | boolean =>\n\t\t\t[\"string\", \"number\", \"boolean\"].includes(typeof value),\n\t\t);\n\t\tif (values.length === 1) {\n\t\t\treturn z.literal(values[0]!);\n\t\t}\n\t\tif (values.length > 1) {\n\t\t\tconst [first, second, ...rest] = values.map((value) => z.literal(value));\n\t\t\treturn z.union([first!, second!, ...rest]);\n\t\t}\n\t}\n\tconst variants = schema.anyOf ?? schema.oneOf;\n\tif (variants && variants.length > 0) {\n\t\tconst converted = variants.map((variant) => schemaToZod(variant));\n\t\tif (converted.length === 1) return converted[0]!;\n\t\tconst [first, second, ...rest] = converted;\n\t\treturn z.union([first!, second!, ...rest]);\n\t}\n\tconst type = Array.isArray(schema.type) ? schema.type[0] : schema.type;\n\tswitch (type) {\n\t\tcase \"string\":\n\t\t\treturn z.string();\n\t\tcase \"number\":\n\t\t\treturn z.number();\n\t\tcase \"integer\":\n\t\t\treturn z.number().int();\n\t\tcase \"boolean\":\n\t\t\treturn z.boolean();\n\t\tcase \"null\":\n\t\t\treturn z.null();\n\t\tcase \"array\":\n\t\t\treturn z.array(schema.items ? schemaToZod(schema.items) : z.unknown());\n\t\tcase \"object\":\n\t\t\treturn objectToShape(schema);\n\t\tdefault:\n\t\t\treturn z.unknown();\n\t}\n}\n\nexport function objectToShape(schema: JsonSchema): ZodTypeAny {\n\treturn z.object(jsonSchemaToZodShape(schema));\n}\n\nexport function jsonSchemaToZodShape(schema: unknown): ZodRawShape {\n\tconst object = (schema ?? {}) as JsonSchema;\n\tconst properties = object.properties ?? {};\n\tconst required = new Set(object.required ?? []);\n\tconst shape: Record<string, ZodTypeAny> = {};\n\tfor (const [key, value] of Object.entries(properties)) {\n\t\tconst converted = schemaToZod(value);\n\t\tshape[key] = required.has(key) ? converted : converted.optional();\n\t}\n\treturn shape;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-tools.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/custom-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGzF,KAAK,oBAAoB,GAAG,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAE1E,wBAAsB,uBAAuB;;cAEzB,MAAM;;;;GAGzB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC3C,WAAW,EAAE,SAAS,IAAI,EAAE,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,SAAS,CAAC,CAgB3D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-tools.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/custom-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAIzF,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC5C,OAAO;QACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;QACzE,OAAO,EAAE,IAAI;KACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,WAA4B;IAE5B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,2EAA2E;IAC3E,8DAA8D;IAC9D,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC,kBAAkB,CAAC;QAClD,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;YAClD,OAAO,EAAE,uBAAuB;SAChC,CAAC,CAAC;KACH,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC","sourcesContent":["import type { Tool } from \"@earendil-works/pi-ai\";\nimport { jsonSchemaToZodShape } from \"./custom-tools-schema.ts\";\nimport { getSdkBoundary, loadClaudeAgentSdk, type SdkBoundary } from \"./sdk-boundary.ts\";\nimport { CUSTOM_TOOLS_MCP_SERVER_NAME, TOOL_EXECUTION_DENIED_MESSAGE } from \"./tools.ts\";\n\ntype CustomToolsMcpServer = ReturnType<SdkBoundary[\"createSdkMcpServer\"]>;\n\nexport async function denyCustomToolExecution() {\n\treturn {\n\t\tcontent: [{ type: \"text\" as const, text: TOOL_EXECUTION_DENIED_MESSAGE }],\n\t\tisError: true,\n\t};\n}\n\n/**\n * Exposes senpi-only tools to Claude Code's planner. The SDK handler is deliberately\n * unusable: senpi receives the matching streamed tool call and executes it itself.\n */\nexport async function buildCustomToolServers(\n\tcustomTools: readonly Tool[],\n): Promise<Record<string, CustomToolsMcpServer> | undefined> {\n\tif (customTools.length === 0) return undefined;\n\t// `createSdkMcpServer` is a synchronous SDK member behind a lazy boundary;\n\t// awaiting here is what makes this call site self-sufficient.\n\tawait loadClaudeAgentSdk();\n\tconst server = getSdkBoundary().createSdkMcpServer({\n\t\tname: CUSTOM_TOOLS_MCP_SERVER_NAME,\n\t\tversion: \"1.0.0\",\n\t\ttools: customTools.map((tool) => ({\n\t\t\tname: tool.name,\n\t\t\tdescription: tool.description,\n\t\t\tinputSchema: jsonSchemaToZodShape(tool.parameters),\n\t\t\thandler: denyCustomToolExecution,\n\t\t})),\n\t});\n\treturn { [CUSTOM_TOOLS_MCP_SERVER_NAME]: server };\n}\n"]}
@@ -20,6 +20,6 @@ export declare function sdkResultFailure(message: Extract<SDKMessage, {
20
20
  export declare function sdkAssistantFailure(message: Extract<SDKMessage, {
21
21
  type: "assistant";
22
22
  }>): Error | undefined;
23
- /** Classifies Claude SDK OAuth error codes and HTTP-shaped fallback text in one place. */
23
+ /** Classifies Anthropic Subscription error codes and HTTP-shaped fallback text in one place. */
24
24
  export declare function classifySdkError(error: unknown): SdkErrorClassification;
25
25
  //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,YAAY,GACrB,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,aAAa,GACb,OAAO,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACnB,CAAC;AAmCF,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAE9E,sFAAsF;AACtF,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IAE3C,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,SAAS,EAI7D;CACD;AAED,mGAAmG;AACnG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAIhF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAe/G;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,GAAG,KAAK,GAAG,SAAS,CAY1G;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAwCvE"}
@@ -73,7 +73,7 @@ export function sdkAssistantFailure(message) {
73
73
  .join(" ")).trim();
74
74
  return new Error(text ? (message.error === "unknown" ? text : `${text} (${message.error})`) : message.error);
75
75
  }
76
- /** Classifies Claude SDK OAuth error codes and HTTP-shaped fallback text in one place. */
76
+ /** Classifies Anthropic Subscription error codes and HTTP-shaped fallback text in one place. */
77
77
  export function classifySdkError(error) {
78
78
  const text = errorText(error).toLowerCase();
79
79
  if (/\b(enotfound|eai_again|econnreset|econnrefused|etimedout|enetunreach|ehostunreach|und_err_connect_timeout|und_err_socket)\b|fetch failed|socket hang up|connection reset by peer/.test(text)) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SDKAssistantMessageError } from \"@anthropic-ai/claude-agent-sdk\";\nimport type { SDKMessage } from \"./sdk-boundary.ts\";\n\nexport type SdkErrorKind =\n\t| \"rate_limit\"\n\t| \"overloaded\"\n\t| \"auth_error\"\n\t| \"billing\"\n\t| \"org_not_allowed\"\n\t| \"entitlement\"\n\t| \"other\";\n\nexport type SdkErrorClassification = {\n\tkind: SdkErrorKind;\n\tretryable: boolean;\n};\n\nconst SDK_ERROR_CLASSIFICATIONS: Partial<Record<SDKAssistantMessageError, SdkErrorClassification>> = {\n\tauthentication_failed: { kind: \"auth_error\", retryable: true },\n\toauth_org_not_allowed: { kind: \"org_not_allowed\", retryable: true },\n\tbilling_error: { kind: \"billing\", retryable: true },\n\trate_limit: { kind: \"rate_limit\", retryable: true },\n\toverloaded: { kind: \"overloaded\", retryable: true },\n\tinvalid_request: { kind: \"other\", retryable: false },\n\tserver_error: { kind: \"other\", retryable: true },\n\taccount_on_hold: { kind: \"billing\", retryable: true },\n\tmodel_not_found: { kind: \"other\", retryable: false },\n\tmax_output_tokens: { kind: \"other\", retryable: false },\n};\n\nconst OTHER_ERROR: SdkErrorClassification = { kind: \"other\", retryable: false };\n\nfunction record(value: unknown): Record<string, unknown> | undefined {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction errorText(error: unknown): string {\n\tif (typeof error === \"string\") return error;\n\tif (error instanceof Error) return error.message;\n\tconst value = record(error);\n\tif (!value) return String(error);\n\tconst message = value.message;\n\tif (typeof message === \"string\") return message;\n\tconst code = value.error;\n\tif (typeof code === \"string\") return code;\n\treturn String(error);\n}\n\nexport type SdkResultUsage = Extract<SDKMessage, { type: \"result\" }>[\"usage\"];\n\n/** A failed SDK result keeps the usage it billed so every lane can account for it. */\nexport class SdkResultFailure extends Error {\n\treadonly usage: SdkResultUsage | undefined;\n\n\tconstructor(message: string, usage: SdkResultUsage | undefined) {\n\t\tsuper(message);\n\t\tthis.name = \"SdkResultFailure\";\n\t\tthis.usage = usage;\n\t}\n}\n\n/** The usage carried by a failed SDK result, looking through failover's classification wrapper. */\nexport function sdkResultFailureUsage(error: unknown): SdkResultUsage | undefined {\n\tif (error instanceof SdkResultFailure) return error.usage;\n\tconst wrapped = record(error)?.original;\n\treturn wrapped instanceof SdkResultFailure ? wrapped.usage : undefined;\n}\n\nexport function sdkResultFailure(message: Extract<SDKMessage, { type: \"result\" }>): SdkResultFailure | undefined {\n\tif (message.subtype === \"success\" && message.is_error !== true) return undefined;\n\tconst errors = \"errors\" in message && Array.isArray(message.errors) ? message.errors : [];\n\tconst firstError = errors.find((error): error is string => typeof error === \"string\" && error.length > 0);\n\tconst resultText = \"result\" in message && typeof message.result === \"string\" ? message.result.trim() : \"\";\n\tconst detail =\n\t\tfirstError ??\n\t\t(message.is_error === true && resultText ? resultText : undefined) ??\n\t\t`Claude Code ${message.subtype}`;\n\tconst status =\n\t\t\"api_error_status\" in message && message.api_error_status != null ? `HTTP ${message.api_error_status}` : \"\";\n\tconst reason =\n\t\t\"terminal_reason\" in message && typeof message.terminal_reason === \"string\" ? message.terminal_reason : \"\";\n\tconst suffix = [status, reason].filter(Boolean).join(\", \");\n\treturn new SdkResultFailure(suffix ? `${detail} (${suffix})` : detail, message.usage);\n}\n\nexport function sdkAssistantFailure(message: Extract<SDKMessage, { type: \"assistant\" }>): Error | undefined {\n\tif (!message.error) return undefined;\n\tconst content = message.message.content;\n\tconst text = (\n\t\ttypeof content === \"string\"\n\t\t\t? content\n\t\t\t: content\n\t\t\t\t\t.filter((block) => block.type === \"text\" && \"text\" in block && typeof block.text === \"string\")\n\t\t\t\t\t.map((block) => (\"text\" in block && typeof block.text === \"string\" ? block.text : \"\"))\n\t\t\t\t\t.join(\" \")\n\t).trim();\n\treturn new Error(text ? (message.error === \"unknown\" ? text : `${text} (${message.error})`) : message.error);\n}\n\n/** Classifies Anthropic Subscription error codes and HTTP-shaped fallback text in one place. */\nexport function classifySdkError(error: unknown): SdkErrorClassification {\n\tconst text = errorText(error).toLowerCase();\n\tif (\n\t\t/\\b(enotfound|eai_again|econnreset|econnrefused|etimedout|enetunreach|ehostunreach|und_err_connect_timeout|und_err_socket)\\b|fetch failed|socket hang up|connection reset by peer/.test(\n\t\t\ttext,\n\t\t)\n\t) {\n\t\treturn { kind: \"other\", retryable: true };\n\t}\n\tfor (const [code, classification] of Object.entries(SDK_ERROR_CLASSIFICATIONS)) {\n\t\tif (new RegExp(`\\\\b${code}\\\\b`).test(text)) return classification ?? OTHER_ERROR;\n\t}\n\tif (/\\b(?:http\\s*)?429\\b|too many requests|rate[ _-]?limit/.test(text)) {\n\t\treturn { kind: \"rate_limit\", retryable: true };\n\t}\n\t// Claude Code signals subscription exhaustion two ways, neither of which\n\t// carries an SDK error code or HTTP status:\n\t// - `terminal_reason: \"blocking_limit\"` / `\"rapid_refill_breaker\"` on a\n\t// result message (surfaced by auth-lane's sdkFailure)\n\t// - prose in `errors[0]`, e.g. \"You've hit your weekly limit · resets 5am\n\t// (Asia/Seoul)\" and the 5-hour/daily equivalents\n\t// Without these branches both classify as non-retryable \"other\", so the\n\t// exhausted account is never blocked and a pool never rotates past it.\n\tif (/\\bblocking_limit\\b|\\brapid_refill_breaker\\b/.test(text)) {\n\t\treturn { kind: \"rate_limit\", retryable: true };\n\t}\n\tif (/\\b(?:hit|reached|exceeded)\\b[^.]*\\blimit\\b|\\b(?:weekly|daily|hourly|usage)\\s+limit\\b/.test(text)) {\n\t\treturn { kind: \"rate_limit\", retryable: true };\n\t}\n\tif (/\\b(?:http\\s*)?529\\b|overloaded/.test(text)) return { kind: \"overloaded\", retryable: true };\n\tif (/\\binvalid_grant\\b|\\binvalid_token\\b|\\b(?:http\\s*)?401\\b|\\bunauthorized\\b/.test(text)) {\n\t\treturn { kind: \"auth_error\", retryable: true };\n\t}\n\t// Fable 5 and similar models are not in the subscription; Claude Code asks\n\t// for usage credits. That is an account entitlement, not a 60s rate limit:\n\t// blocking the only account would also block Opus fallback on it.\n\tif (/\\brequires usage credits\\b|\\/usage-credits\\b|\\bcredits_required\\b/.test(text)) {\n\t\treturn { kind: \"entitlement\", retryable: false };\n\t}\n\treturn OTHER_ERROR;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable-path-lookup.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/executable-path-lookup.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1C,uEAAuE;IACvE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAClC,CAAC;AAyBF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAU3F"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable-path-lookup.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/executable-path-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AASzC,8GAA8G;AAC9G,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAEpD,sFAAsF;AACtF,SAAS,YAAY,CAAC,IAAY,EAAE,QAAgB,EAAE,OAA2B;IAChF,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,CAAC,OAAO,IAAI,qBAAqB,CAAC;SACnD,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,+GAA+G;AAC/G,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAwB;IAClE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACnD,OAAO,IAAI;SACT,KAAK,CAAC,SAAS,CAAC;SAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAChF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,IAAoB;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACjE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC1E,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;QACpC,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC","sourcesContent":["import { posix, win32 } from \"node:path\";\n\nexport type PathLookupDeps = {\n\tplatform: string;\n\tenv: (name: string) => string | undefined;\n\t/** True when `path` names an existing regular file in THIS process. */\n\tisFile: (path: string) => boolean;\n};\n\n/** What Windows uses when PATHEXT is unset; the executable image types come first, as `where` orders them. */\nconst WIN32_DEFAULT_PATHEXT = \".COM;.EXE;.BAT;.CMD\";\n\n/** Spellings `where`/`command -v` would test for `name` inside one PATH directory. */\nfunction namesToProbe(name: string, platform: string, pathext: string | undefined): string[] {\n\tif (platform !== \"win32\") return [name];\n\tconst extensions = (pathext ?? WIN32_DEFAULT_PATHEXT)\n\t\t.split(\";\")\n\t\t.filter((extension) => extension.length > 0)\n\t\t.map((extension) => extension.toLowerCase());\n\treturn extensions.map((extension) => `${name}${extension}`);\n}\n\n/** Entries of PATH in order, dropping empties; `cmd.exe` accepts quoted entries, so they are unquoted here. */\nfunction pathDirectories(platform: string, path: string | undefined): string[] {\n\tif (path === undefined) return [];\n\tconst delimiter = platform === \"win32\" ? \";\" : \":\";\n\treturn path\n\t\t.split(delimiter)\n\t\t.map((entry) => (platform === \"win32\" ? entry.replace(/^\"(.*)\"$/, \"$1\") : entry))\n\t\t.filter((entry) => entry.length > 0);\n}\n\n/**\n * The first regular file `name` resolves to on PATH - the binary `where claude` (win32) or\n * `command -v claude` prints - found without a shell. Honours PATHEXT on win32 so the bare `claude`\n * finds `claude.exe`. Directories and dangling entries are skipped, so a hit is a file this process\n * can stat. Returns `undefined` when PATH is unset or has no match.\n */\nexport function findExecutableOnPath(name: string, deps: PathLookupDeps): string | undefined {\n\tconst join = deps.platform === \"win32\" ? win32.join : posix.join;\n\tconst names = namesToProbe(name, deps.platform, deps.env(\"PATHEXT\"));\n\tfor (const directory of pathDirectories(deps.platform, deps.env(\"PATH\"))) {\n\t\tfor (const candidate of names) {\n\t\t\tconst path = join(directory, candidate);\n\t\t\tif (deps.isFile(path)) return path;\n\t\t}\n\t}\n\treturn undefined;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/executable.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,uGAAuG;IACvG,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,gFAAgF;IAChF,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,EAAE,CAQ3G;AAYD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,cAAc,GAAG,oBAAoB,CAuDvF;AAED,yGAAyG;AACzG,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAWxE;AA2CD,wBAAgB,qBAAqB,IAAI,cAAc,CAEtD;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAE9E;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/executable.ts"],"names":[],"mappings":"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","sourcesContent":["import { statSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { posix, win32 } from \"node:path\";\nimport { extractFromBunfs } from \"@anthropic-ai/claude-agent-sdk/extract\";\nimport { findExecutableOnPath } from \"./executable-path-lookup.ts\";\n\nexport type ExecutableDeps = {\n\tplatform: string;\n\tarch: string;\n\tenv: (name: string) => string | undefined;\n\tresolve: (spec: string) => string;\n\t/** True when `path` names an existing regular file in THIS process - what the SDK's spawn will see. */\n\tisFile: (path: string) => boolean;\n\tisMusl?: () => boolean;\n\tisCompiledBun?: () => boolean;\n\textractFromBunfs?: (embeddedPath: string) => string;\n};\n\nexport type ExecutableResolution = {\n\t/** The spawnable spelling, or `undefined` when every candidate was rejected. */\n\texecutable: string | undefined;\n\t/** Every spelling checked, in order; the last entry is the winner when `executable` is set. */\n\ttried: string[];\n};\n\nexport function claudeCodeExecutableCandidates(platform: string, arch: string, preferMusl = false): string[] {\n\tconst ext = platform === \"win32\" ? \".exe\" : \"\";\n\tif (platform === \"linux\") {\n\t\tconst glibc = `@anthropic-ai/claude-agent-sdk-linux-${arch}/claude${ext}`;\n\t\tconst musl = `@anthropic-ai/claude-agent-sdk-linux-${arch}-musl/claude${ext}`;\n\t\treturn preferMusl ? [musl, glibc] : [glibc, musl];\n\t}\n\treturn [`@anthropic-ai/claude-agent-sdk-${platform}-${arch}/claude${ext}`];\n}\n\n/**\n * The spelling handed to the SDK, which spawns it verbatim: absolute, and on win32 in the `\\\\?\\`\n * namespaced form so a path Explorer can see but `uv_fs_stat`/`CreateProcess` reject (MAX_PATH, the\n * npm-global layout in #1541) still launches. The same spelling is what {@link ExecutableDeps.isFile}\n * validates, so the check and the spawn see one string.\n */\nfunction spawnableSpelling(platform: string, candidate: string): string {\n\treturn platform === \"win32\" ? win32.toNamespacedPath(win32.resolve(candidate)) : posix.resolve(candidate);\n}\n\n/**\n * Walks every source of a Claude Code binary and records each spelling it checked. Nothing is\n * accepted on resolution alone: `require.resolve` can name a file this process cannot stat (#1541),\n * so a candidate counts only once `isFile` agrees. Order: `CLAUDE_CODE_EXECUTABLE`, the embedded\n * binary of a compiled Bun build, the platform sidecar package(s), then `claude` on PATH.\n */\nexport function describeClaudeCodeExecutable(deps: ExecutableDeps): ExecutableResolution {\n\tconst tried: string[] = [];\n\tconst accept = (candidate: string): string | undefined => {\n\t\tconst spelled = spawnableSpelling(deps.platform, candidate);\n\t\ttried.push(spelled);\n\t\treturn deps.isFile(spelled) ? spelled : undefined;\n\t};\n\tconst done = (executable: string): ExecutableResolution => ({ executable, tried });\n\n\tconst override = deps.env(\"CLAUDE_CODE_EXECUTABLE\");\n\tif (override) {\n\t\tconst accepted = accept(override);\n\t\tif (accepted !== undefined) return done(accepted);\n\t}\n\n\tconst candidates = claudeCodeExecutableCandidates(\n\t\tdeps.platform,\n\t\tdeps.arch,\n\t\tdeps.platform === \"linux\" && deps.isMusl?.() === true,\n\t);\n\n\tif (deps.isCompiledBun?.() && deps.extractFromBunfs) {\n\t\tfor (const candidate of candidates) {\n\t\t\tlet extracted: string;\n\t\t\ttry {\n\t\t\t\textracted = deps.extractFromBunfs(deps.resolve(candidate));\n\t\t\t} catch {\n\t\t\t\tcontinue; // not embedded in this bundle - the on-disk probe below still runs\n\t\t\t}\n\t\t\tconst accepted = accept(extracted);\n\t\t\tif (accepted !== undefined) return done(accepted);\n\t\t}\n\t}\n\n\tfor (const candidate of candidates) {\n\t\tlet resolved: string;\n\t\ttry {\n\t\t\tresolved = deps.resolve(candidate);\n\t\t} catch {\n\t\t\ttried.push(candidate); // the package is not installed; name it by specifier\n\t\t\tcontinue;\n\t\t}\n\t\tconst accepted = accept(resolved);\n\t\tif (accepted !== undefined) return done(accepted);\n\t}\n\n\tconst onPath = findExecutableOnPath(\"claude\", deps);\n\tif (onPath !== undefined) {\n\t\tconst accepted = accept(onPath);\n\t\tif (accepted !== undefined) return done(accepted);\n\t} else {\n\t\ttried.push(deps.env(\"PATH\") ? \"claude on PATH\" : \"claude on PATH (PATH is unset)\");\n\t}\n\n\treturn { executable: undefined, tried };\n}\n\n/** The validated executable, or senpi's own error naming every candidate - the SDK never sees a miss. */\nexport function resolveClaudeCodeExecutable(deps: ExecutableDeps): string {\n\tconst resolution = describeClaudeCodeExecutable(deps);\n\tif (resolution.executable !== undefined) return resolution.executable;\n\tthrow new Error(\n\t\t[\n\t\t\t`Claude Code executable not found for ${deps.platform}-${deps.arch}. Tried:`,\n\t\t\t...resolution.tried.map((candidate) => ` - ${candidate}`),\n\t\t\t\"Reinstall @anthropic-ai/claude-agent-sdk without --omit=optional, install Claude Code so `claude` is on PATH, \" +\n\t\t\t\t\"or set CLAUDE_CODE_EXECUTABLE to the binary.\",\n\t\t].join(\"\\n\"),\n\t);\n}\n\nlet defaultRequire: ReturnType<typeof createRequire> | null = null;\n\nconst isCompiledBunBinary =\n\timport.meta.url.includes(\"$bunfs\") || import.meta.url.includes(\"~BUN\") || import.meta.url.includes(\"%7EBUN\");\n\nfunction isMuslLinuxRuntime(): boolean {\n\tif (process.platform !== \"linux\" || typeof process.report?.getReport !== \"function\") return false;\n\tconst report = process.report.getReport();\n\tif (report === null || !(\"header\" in report) || typeof report.header !== \"object\" || report.header === null) {\n\t\treturn false;\n\t}\n\treturn !(\"glibcVersionRuntime\" in report.header) || report.header.glibcVersionRuntime === undefined;\n}\n\nfunction isRegularFile(path: string): boolean {\n\ttry {\n\t\treturn statSync(path).isFile();\n\t} catch {\n\t\treturn false; // ENOENT, EACCES, ENAMETOOLONG, ...: the spawn would fail the same way\n\t}\n}\n\nconst defaultDeps: ExecutableDeps = {\n\tplatform: process.platform,\n\tarch: process.arch,\n\tenv: (name) => process.env[name],\n\tisFile: isRegularFile,\n\tisMusl: isMuslLinuxRuntime,\n\tisCompiledBun: () => isCompiledBunBinary,\n\textractFromBunfs,\n\t// Rooted at the SDK instance this extension imports, so `require.resolve` walks the parents of\n\t// THAT package and a sidecar hoisted above it (omo-ai/node_modules/...) is still found.\n\tresolve: (spec) => {\n\t\tif (!defaultRequire) {\n\t\t\tdefaultRequire = createRequire(import.meta.resolve(\"@anthropic-ai/claude-agent-sdk\"));\n\t\t}\n\t\treturn defaultRequire.resolve(spec);\n\t},\n};\nlet activeDeps = defaultDeps;\n\nexport function defaultExecutableDeps(): ExecutableDeps {\n\treturn activeDeps;\n}\n\nexport function overrideExecutableDeps(override: Partial<ExecutableDeps>): void {\n\tactiveDeps = { ...activeDeps, ...override };\n}\n\nexport function resetExecutableDeps(): void {\n\tactiveDeps = defaultDeps;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failover.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/failover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAmC,MAAM,eAAe,CAAC;AAElF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,eAAO,MAAM,uBAAuB,QAAuB,CAAC;AAC5D,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AAIpE,MAAM,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,MAAM,IAAI;IACrC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,KAAK,WAAW,CAAC;IAC5D,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,sBAAsB,CAAC;IACrD,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IACxD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAEpC,YAAY,cAAc,EAAE,sBAAsB,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAOhG;CACD;AA8ED;;;;GAIG;AACH,wBAAuB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CA4CnG"}
@@ -128,6 +128,6 @@ export async function* runFailover(options) {
128
128
  throw classified;
129
129
  }
130
130
  }
131
- throw lastError ?? new Error("Claude SDK OAuth failover exhausted without an attempt");
131
+ throw lastError ?? new Error("Anthropic Subscription failover exhausted without an attempt");
132
132
  }
133
133
  //# sourceMappingURL=failover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failover.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/failover.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CredentialStore } from \"@earendil-works/pi-ai\";\nimport type { AccountSlot, AnthropicSubscriptionCredential } from \"./accounts.ts\";\nimport { clearExpiredBlocks } from \"./affinity.ts\";\nimport type { SdkErrorClassification } from \"./errors.ts\";\n\nexport const MAX_RATE_LIMIT_BLOCK_MS = 48 * 60 * 60 * 1_000;\nexport const DEFAULT_RATE_LIMIT_BLOCK_MS = 60_000;\nexport const TURN_RETRY_SUPPRESSION_PREFIX = \"senpi:no-turn-retry:\";\n\ntype RecordValue = Record<string, unknown>;\n\nexport type FailoverEvent = {\n\taccount: AccountSlot;\n\tnextAccount?: AccountSlot;\n\tclassification: SdkErrorClassification;\n\tattempt: number;\n\tvisibleDeltaEmitted: boolean;\n};\n\nexport type FailoverOptions<TEvent> = {\n\taccounts: readonly AccountSlot[];\n\tselectFn: (accounts: readonly AccountSlot[]) => AccountSlot;\n\trunAttempt: (slot: AccountSlot) => AsyncIterable<TEvent> | Promise<AsyncIterable<TEvent>>;\n\tclassify: (error: unknown) => SdkErrorClassification;\n\tstore: CredentialStore;\n\tproviderId: string;\n\tnow?: () => number;\n\tbaseBlockMs?: number;\n\tonFailover?: (event: FailoverEvent) => void | Promise<void>;\n\terrorFromEvent?: (event: TEvent) => unknown | undefined;\n\tisVisibleDelta?: (event: TEvent) => boolean;\n};\n\nexport class ClassifiedSdkError extends Error {\n\treadonly classification: SdkErrorClassification;\n\treadonly original: unknown;\n\treadonly suppressTurnRetry: boolean;\n\n\tconstructor(classification: SdkErrorClassification, original: unknown, suppressTurnRetry: boolean) {\n\t\tconst detail = original instanceof Error ? original.message : String(original);\n\t\tsuper(`${suppressTurnRetry ? TURN_RETRY_SUPPRESSION_PREFIX : \"\"}${detail}`);\n\t\tthis.name = \"ClassifiedSdkError\";\n\t\tthis.classification = classification;\n\t\tthis.original = original;\n\t\tthis.suppressTurnRetry = suppressTurnRetry;\n\t}\n}\n\nfunction record(value: unknown): RecordValue | undefined {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value) ? (value as RecordValue) : undefined;\n}\n\nfunction defaultErrorFromEvent<TEvent>(event: TEvent): unknown | undefined {\n\tconst value = record(event);\n\treturn value?.type === \"error\" ? value.error : undefined;\n}\n\nfunction defaultIsVisibleDelta<TEvent>(event: TEvent): boolean {\n\tconst value = record(event);\n\tif (typeof value?.type !== \"string\") return false;\n\treturn /^(?:text|thinking|toolcall)_(?:start|delta|end)$/.test(value.type);\n}\n\nfunction errorText(error: unknown): string {\n\tif (typeof error === \"string\") return error;\n\tif (error instanceof Error) return error.message;\n\tconst value = record(error);\n\treturn typeof value?.message === \"string\" ? value.message : String(error);\n}\n\nfunction retryAfterMs(error: unknown): number | undefined {\n\tconst value = record(error);\n\tconst explicit = value?.retryAfterMs;\n\tif (typeof explicit === \"number\" && Number.isFinite(explicit) && explicit > 0) return Math.ceil(explicit);\n\tconst text = errorText(error);\n\tconst milliseconds = text.match(/\\bretry[-_ ]?after[-_ ]?ms\\s*[:=]\\s*(\\d+(?:\\.\\d+)?)/i);\n\tif (milliseconds) return Math.ceil(Number(milliseconds[1]));\n\tconst seconds = text.match(/\\bretry[-_ ]?after\\s*[:=]\\s*(\\d+(?:\\.\\d+)?)/i);\n\treturn seconds ? Math.ceil(Number(seconds[1]) * 1_000) : undefined;\n}\n\nfunction blockedAccount(\n\taccount: AccountSlot,\n\tclassification: SdkErrorClassification,\n\tnow: number,\n\tattempt: number,\n\tbaseBlockMs: number,\n\terror: unknown,\n): AccountSlot {\n\tif (classification.kind === \"auth_error\") {\n\t\tconst { blockedUntil: _blockedUntil, ...withoutExpiry } = account;\n\t\treturn { ...withoutExpiry, blockReason: \"auth_error\" };\n\t}\n\tconst fallback = Math.min(MAX_RATE_LIMIT_BLOCK_MS, baseBlockMs * 2 ** attempt);\n\tconst duration = Math.min(MAX_RATE_LIMIT_BLOCK_MS, retryAfterMs(error) ?? fallback);\n\treturn { ...account, blockedUntil: now + duration, blockReason: classification.kind };\n}\n\nfunction replaceAccount(accounts: readonly AccountSlot[], replacement: AccountSlot): AccountSlot[] {\n\treturn accounts.map((account) => (account.name === replacement.name ? replacement : account));\n}\n\nasync function persistBlock(store: CredentialStore, providerId: string, account: AccountSlot): Promise<void> {\n\tawait store.modify(providerId, async (current) => {\n\t\tif (current?.type !== \"oauth\") return current;\n\t\tconst credential = current as AnthropicSubscriptionCredential;\n\t\tif (account.source === \"env\") {\n\t\t\treturn {\n\t\t\t\t...credential,\n\t\t\t\tslotState: {\n\t\t\t\t\t...credential.slotState,\n\t\t\t\t\t[account.name]: { blockedUntil: account.blockedUntil, blockReason: account.blockReason },\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tconst accounts = (credential.accounts ?? []).map((existing) =>\n\t\t\texisting.name === account.name\n\t\t\t\t? { ...existing, blockedUntil: account.blockedUntil, blockReason: account.blockReason }\n\t\t\t\t: existing,\n\t\t);\n\t\treturn { ...credential, accounts };\n\t});\n}\n\n/**\n * Runs at most one attempt per account. A retry is transparent only before a\n * text, thinking, or tool-call event reaches the caller; post-delta failures\n * are marked so AgentSession never replays the partial turn.\n */\nexport async function* runFailover<TEvent>(options: FailoverOptions<TEvent>): AsyncGenerator<TEvent> {\n\tconst now = options.now ?? Date.now;\n\tconst baseBlockMs = options.baseBlockMs ?? DEFAULT_RATE_LIMIT_BLOCK_MS;\n\tlet accounts = clearExpiredBlocks(options.accounts, now());\n\tlet lastError: ClassifiedSdkError | undefined;\n\n\tfor (let attempt = 0; attempt < accounts.length; attempt++) {\n\t\tconst account = options.selectFn(accounts);\n\t\tlet visibleDeltaEmitted = false;\n\t\ttry {\n\t\t\tconst attemptStream = await options.runAttempt(account);\n\t\t\tfor await (const event of attemptStream) {\n\t\t\t\tconst failure = (options.errorFromEvent ?? defaultErrorFromEvent)(event);\n\t\t\t\tif (failure !== undefined) throw failure;\n\t\t\t\tvisibleDeltaEmitted ||= (options.isVisibleDelta ?? defaultIsVisibleDelta)(event);\n\t\t\t\tyield event;\n\t\t\t}\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tconst classification = options.classify(error);\n\t\t\tconst classified = new ClassifiedSdkError(classification, error, visibleDeltaEmitted);\n\t\t\tlastError = classified;\n\t\t\tif (!classification.retryable) throw classified;\n\n\t\t\tconst blocked = blockedAccount(account, classification, now(), attempt, baseBlockMs, error);\n\t\t\taccounts = replaceAccount(accounts, blocked);\n\t\t\tawait persistBlock(options.store, options.providerId, blocked);\n\t\t\tconst event: FailoverEvent = {\n\t\t\t\taccount: blocked,\n\t\t\t\tclassification,\n\t\t\t\tattempt: attempt + 1,\n\t\t\t\tvisibleDeltaEmitted,\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tif (!visibleDeltaEmitted && attempt + 1 < accounts.length) {\n\t\t\t\t\tevent.nextAccount = options.selectFn(accounts);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tawait options.onFailover?.(event);\n\t\t\t}\n\t\t\tif (visibleDeltaEmitted) throw classified;\n\t\t}\n\t}\n\tthrow lastError ?? new Error(\"Anthropic Subscription failover exhausted without an attempt\");\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/guidance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,wBAAgB,iBAAiB,CAAC,sBAAsB,EAAE,OAAO,GAAG,MAAM,CAazE;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,MAAM,CAqBnH;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAa/E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAavE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5E;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,CAAC;AAErE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAM7F;AAID,wBAAgB,4BAA4B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACxD,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,GAAG,SAAS,CAqBrB"}
@@ -1,4 +1,4 @@
1
- const PROVIDER = "claude-sdk-oauth";
1
+ const PROVIDER = "anthropic-subscription";
2
2
  export function noAccountGuidance(hasAnthropicCredential) {
3
3
  const lines = [
4
4
  `No Claude account configured for ${PROVIDER}.`,
@@ -65,7 +65,7 @@ export function missingBinaryGuidance(platform, arch) {
65
65
  export function overrideSystemPromptGuidance(path, reason) {
66
66
  const target = path === undefined ? "systemPromptFile" : `systemPromptFile "${path}"`;
67
67
  return [
68
- `Claude SDK OAuth override prompt could not load ${target}: ${reason}.`,
68
+ `Anthropic Subscription override prompt could not load ${target}: ${reason}.`,
69
69
  'Set claudeSdkOauthProvider.systemPromptFile to a readable, non-empty UTF-8 prompt file, or select systemPromptMode "full".',
70
70
  ].join(" ");
71
71
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidance.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/guidance.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SdkErrorKind } from \"./errors.ts\";\n\nconst PROVIDER = \"anthropic-subscription\";\n\nexport function noAccountGuidance(hasAnthropicCredential: boolean): string {\n\tconst lines = [\n\t\t`No Claude account configured for ${PROVIDER}.`,\n\t\t` /login ${PROVIDER} - sign in with your Claude Pro/Max subscription`,\n\t];\n\tif (hasAnthropicCredential) {\n\t\tlines.push(\" (your existing Anthropic OAuth login will be offered as an import)\");\n\t}\n\tlines.push(\n\t\t\" Or set CLAUDE_CODE_OAUTH_TOKEN (and _2.._N for more accounts),\",\n\t\t\" or log in with the claude CLI for ambient auth.\",\n\t);\n\treturn lines.join(\"\\n\");\n}\n\nexport function allAccountsBlockedGuidance(soonestUnblockAt: number | undefined, blockReason?: \"auth_error\"): string {\n\tif (blockReason === \"auth_error\") {\n\t\t// omo#8383: name the authentication failure. The recovery is a re-login,\n\t\t// and the outer credential-pool classifier maps \"authentication error\" to\n\t\t// auth_error instead of laundering the block into a rate-limit cooldown.\n\t\treturn [\n\t\t\t`All Claude accounts for ${PROVIDER} are currently blocked (authentication error).`,\n\t\t\t` /login ${PROVIDER} - re-authenticate to refresh the blocked account`,\n\t\t\t` /claude-account list - inspect account states`,\n\t\t].join(\"\\n\");\n\t}\n\tconst eta =\n\t\tsoonestUnblockAt !== undefined && Number.isFinite(soonestUnblockAt)\n\t\t\t? new Date(soonestUnblockAt).toISOString()\n\t\t\t: \"after re-login\";\n\treturn [\n\t\t`All Claude accounts for ${PROVIDER} are currently blocked (rate limit or auth errors).`,\n\t\t` Soonest automatic retry: ${eta}.`,\n\t\t` /claude-account list - inspect account states`,\n\t\t` /login ${PROVIDER} - add another account`,\n\t].join(\"\\n\");\n}\n\nexport function claudeCodeVersionFloorGuidance(text: string): string | undefined {\n\tconst floor = /does not support this model; version (\\S+?) or newer is required|claude_code_version_too_old/i.exec(\n\t\ttext,\n\t);\n\tif (floor) {\n\t\tconst target =\n\t\t\tfloor[1] === undefined ? \"a newer Claude Code\" : `Claude Code ${floor[1].replace(/[.,;:]+$/, \"\")} or newer`;\n\t\treturn `The bundled Claude Code binary is too old for this model. Update senpi/omo (it ships a newer @anthropic-ai/claude-agent-sdk) or set CLAUDE_CODE_EXECUTABLE to ${target} binary.`;\n\t}\n\tif (/\\bmodel_not_found\\b|unrecognized_model|not found for provider/i.test(text)) {\n\t\treturn \"The bundled Claude Code binary does not know this model id; update senpi/omo or set CLAUDE_CODE_EXECUTABLE to a newer Claude Code binary.\";\n\t}\n\treturn undefined;\n}\n\nexport function sdkErrorGuidance(kind: SdkErrorKind): string | undefined {\n\tswitch (kind) {\n\t\tcase \"org_not_allowed\":\n\t\t\treturn \"This organization's policy disallows subscription OAuth use here. Use an API key (ANTHROPIC_API_KEY) or an account from an allowed organization.\";\n\t\tcase \"billing\":\n\t\t\treturn \"The selected Claude account has a billing problem. Check the plan at claude.com or switch accounts with /claude-account pin <name>.\";\n\t\tcase \"auth_error\":\n\t\t\treturn `The account's OAuth token was rejected. Re-run /login ${PROVIDER} to refresh it, or remove the account with /claude-account remove <name>.`;\n\t\tcase \"entitlement\":\n\t\t\treturn \"This model needs usage credits on the selected Claude account (it is not included in the subscription). Switch models with /model, enable usage credits at claude.com, or pick another account with /claude-account pin <name>.\";\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nexport function missingBinaryGuidance(platform: string, arch: string): string {\n\treturn [\n\t\t`Claude native binary not found for ${platform}-${arch}.`,\n\t\t\"Reinstall @anthropic-ai/claude-agent-sdk without --omit=optional, or set CLAUDE_CODE_EXECUTABLE.\",\n\t].join(\"\\n\");\n}\n\nexport type SystemPromptMode = \"full\" | \"override\" | \"preset-append\";\n\nexport function overrideSystemPromptGuidance(path: string | undefined, reason: string): string {\n\tconst target = path === undefined ? \"systemPromptFile\" : `systemPromptFile \"${path}\"`;\n\treturn [\n\t\t`Anthropic Subscription override prompt could not load ${target}: ${reason}.`,\n\t\t'Set claudeSdkOauthProvider.systemPromptFile to a readable, non-empty UTF-8 prompt file, or select systemPromptMode \"full\".',\n\t].join(\" \");\n}\n\nconst armedSessions = new Set<string>();\n\nexport function resetPresetAppendDeprecation(sessionId?: string): void {\n\tif (sessionId !== undefined) {\n\t\tarmedSessions.delete(sessionId);\n\t} else {\n\t\tarmedSessions.clear();\n\t}\n}\n\nexport function presetAppendDeprecationGuidance(options: {\n\tmode: SystemPromptMode;\n\tconflict?: boolean;\n\tsessionId: string;\n}): string | undefined {\n\tif (armedSessions.has(options.sessionId)) {\n\t\treturn undefined;\n\t}\n\tconst isDeprecated = options.mode === \"preset-append\";\n\tif (!options.conflict && !isDeprecated) {\n\t\treturn undefined;\n\t}\n\tarmedSessions.add(options.sessionId);\n\tconst parts: string[] = [];\n\tif (isDeprecated) {\n\t\tparts.push(\n\t\t\t\"preset-append system-prompt mode is deprecated; \" +\n\t\t\t\t\"`full` mode delivers the complete senpi system prompt; \" +\n\t\t\t\t\"preset-append will be removed after one release.\",\n\t\t);\n\t}\n\tif (options.conflict) {\n\t\tparts.push(\"systemPromptMode wins.\");\n\t}\n\treturn parts.join(\" \");\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { ExtensionAPI } from "../../types.ts";
2
+ import { type AnthropicSubscriptionProviderSettings } from "./settings.ts";
3
+ export { ANTHROPIC_SUBSCRIPTION_PROVIDER_ID } from "./account-management.ts";
4
+ export type AnthropicSubscriptionExtensionDeps = {
5
+ readAmbientAuthStatus?: () => Promise<boolean>;
6
+ /** Overrides the on-disk provider settings the auth predicate consults. */
7
+ readSettings?: () => AnthropicSubscriptionProviderSettings;
8
+ };
9
+ export declare function registerAnthropicSubscriptionExtension(pi: ExtensionAPI, deps?: AnthropicSubscriptionExtensionDeps): void;
10
+ export default function anthropicSubscriptionExtension(pi: ExtensionAPI): void;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAOnD,OAAO,EACN,KAAK,qCAAqC,EAE1C,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAC7E,MAAM,MAAM,kCAAkC,GAAG;IAChD,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,qCAAqC,CAAC;CAC3D,CAAC;AAgCF,wBAAgB,sCAAsC,CACrD,EAAE,EAAE,YAAY,EAChB,IAAI,GAAE,kCAAuC,GAC3C,IAAI,CAsDN;AAED,MAAM,CAAC,OAAO,UAAU,8BAA8B,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAE7E"}
@@ -1,16 +1,17 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ import { readByProviderId } from "@earendil-works/pi-ai";
3
4
  import { getModels } from "@earendil-works/pi-ai/compat";
4
5
  import { getAgentDir } from "../../../../config.js";
5
6
  import { FileAuthStorageBackend } from "../../../auth-storage.js";
6
7
  import { registerClaudeAccountCommand } from "./account-command.js";
7
- import { CLAUDE_SDK_OAUTH_PROVIDER_ID } from "./account-management.js";
8
+ import { ANTHROPIC_SUBSCRIPTION_PROVIDER_ID } from "./account-management.js";
8
9
  import { CLAUDE_SDK_OAUTH_API_ID } from "./api-id.js";
9
10
  import { createOAuthConfig } from "./oauth-login.js";
10
11
  import { registerSessionRegistry } from "./session-registry-wiring.js";
11
- import { loadClaudeSdkOauthProviderSettingsFromDisk } from "./settings.js";
12
- import { streamClaudeSdkOauth } from "./stream.js";
13
- export { CLAUDE_SDK_OAUTH_PROVIDER_ID } from "./account-management.js";
12
+ import { loadAnthropicSubscriptionProviderSettingsFromDisk, } from "./settings.js";
13
+ import { streamAnthropicSubscription } from "./stream.js";
14
+ export { ANTHROPIC_SUBSCRIPTION_PROVIDER_ID } from "./account-management.js";
14
15
  const MODELS = getModels("anthropic").map((model) => ({
15
16
  id: model.id,
16
17
  name: model.name,
@@ -30,20 +31,25 @@ function readStoredCredential(providerId) {
30
31
  return undefined;
31
32
  try {
32
33
  const data = JSON.parse(readFileSync(authPath, "utf8"));
33
- return data[providerId];
34
+ // Read boundary (senpi#1989): this raw read bypasses AuthStorage, so it
35
+ // never sees the auth.json key migration. An auth.json still keyed by the
36
+ // legacy provider id would report the lane logged out with no error at
37
+ // all, so try the canonical key first and then the legacy spelling.
38
+ // `anthropic` is untouched by the rename and still resolves exactly.
39
+ return readByProviderId(data, providerId);
34
40
  }
35
41
  catch {
36
42
  return undefined;
37
43
  }
38
44
  }
39
- export function registerClaudeSdkOauthExtension(pi, deps = {}) {
45
+ export function registerAnthropicSubscriptionExtension(pi, deps = {}) {
40
46
  registerClaudeAccountCommand(pi);
41
47
  registerSessionRegistry(pi);
42
- pi.registerProvider(CLAUDE_SDK_OAUTH_PROVIDER_ID, {
48
+ pi.registerProvider(ANTHROPIC_SUBSCRIPTION_PROVIDER_ID, {
43
49
  baseUrl: CLAUDE_SDK_OAUTH_API_ID,
44
50
  api: CLAUDE_SDK_OAUTH_API_ID,
45
51
  models: MODELS,
46
- streamSimple: streamClaudeSdkOauth,
52
+ streamSimple: streamAnthropicSubscription,
47
53
  // A verbatim `enabled: false` is the kill switch: the lane cannot serve, so
48
54
  // it must not consume an implicit fallback-expansion slot. An absent flag
49
55
  // stays eligible - an explicit senpi-side login keeps the lane usable.
@@ -51,7 +57,7 @@ export function registerClaudeSdkOauthExtension(pi, deps = {}) {
51
57
  try {
52
58
  const settings = deps.readSettings
53
59
  ? deps.readSettings()
54
- : loadClaudeSdkOauthProviderSettingsFromDisk(process.cwd());
60
+ : loadAnthropicSubscriptionProviderSettingsFromDisk(process.cwd());
55
61
  return settings.enabled !== false;
56
62
  }
57
63
  catch {
@@ -59,13 +65,13 @@ export function registerClaudeSdkOauthExtension(pi, deps = {}) {
59
65
  }
60
66
  },
61
67
  oauth: createOAuthConfig({
62
- readCurrent: async () => readStoredCredential(CLAUDE_SDK_OAUTH_PROVIDER_ID),
68
+ readCurrent: async () => readStoredCredential(ANTHROPIC_SUBSCRIPTION_PROVIDER_ID),
63
69
  readAmbientAuthStatus: deps.readAmbientAuthStatus,
64
70
  readSettings: () => {
65
71
  try {
66
72
  const settings = deps.readSettings
67
73
  ? deps.readSettings()
68
- : loadClaudeSdkOauthProviderSettingsFromDisk(process.cwd());
74
+ : loadAnthropicSubscriptionProviderSettingsFromDisk(process.cwd());
69
75
  return { tokenInjection: settings.tokenInjection, enabled: settings.enabled };
70
76
  }
71
77
  catch {
@@ -95,7 +101,7 @@ export function registerClaudeSdkOauthExtension(pi, deps = {}) {
95
101
  }),
96
102
  });
97
103
  }
98
- export default function claudeSdkOauthExtension(pi) {
99
- registerClaudeSdkOauthExtension(pi);
104
+ export default function anthropicSubscriptionExtension(pi) {
105
+ registerAnthropicSubscriptionExtension(pi);
100
106
  }
101
107
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { readByProviderId } from \"@earendil-works/pi-ai\";\nimport { getModels } from \"@earendil-works/pi-ai/compat\";\nimport { getAgentDir } from \"../../../../config.ts\";\nimport { FileAuthStorageBackend } from \"../../../auth-storage.ts\";\nimport type { ExtensionAPI } from \"../../types.ts\";\nimport { registerClaudeAccountCommand } from \"./account-command.ts\";\nimport { ANTHROPIC_SUBSCRIPTION_PROVIDER_ID } from \"./account-management.ts\";\nimport type { AnthropicSubscriptionCredential } from \"./accounts.ts\";\nimport { CLAUDE_SDK_OAUTH_API_ID } from \"./api-id.ts\";\nimport { createOAuthConfig } from \"./oauth-login.ts\";\nimport { registerSessionRegistry } from \"./session-registry-wiring.ts\";\nimport {\n\ttype AnthropicSubscriptionProviderSettings,\n\tloadAnthropicSubscriptionProviderSettingsFromDisk,\n} from \"./settings.ts\";\nimport { streamAnthropicSubscription } from \"./stream.ts\";\n\nexport { ANTHROPIC_SUBSCRIPTION_PROVIDER_ID } from \"./account-management.ts\";\nexport type AnthropicSubscriptionExtensionDeps = {\n\treadAmbientAuthStatus?: () => Promise<boolean>;\n\t/** Overrides the on-disk provider settings the auth predicate consults. */\n\treadSettings?: () => AnthropicSubscriptionProviderSettings;\n};\n\nconst MODELS = getModels(\"anthropic\").map((model) => ({\n\tid: model.id,\n\tname: model.name,\n\treasoning: model.reasoning,\n\tinput: model.input,\n\tcost: model.cost,\n\tcontextWindow: model.contextWindow,\n\tmaxTokens: model.maxTokens,\n\tthinkingLevelMap: {\n\t\t...model.thinkingLevelMap,\n\t\tminimal: null,\n\t},\n}));\n\nfunction readStoredCredential(providerId: string): AnthropicSubscriptionCredential | undefined {\n\tconst authPath = join(getAgentDir(), \"auth.json\");\n\tif (!existsSync(authPath)) return undefined;\n\ttry {\n\t\tconst data = JSON.parse(readFileSync(authPath, \"utf8\")) as Record<string, AnthropicSubscriptionCredential>;\n\t\t// Read boundary (senpi#1989): this raw read bypasses AuthStorage, so it\n\t\t// never sees the auth.json key migration. An auth.json still keyed by the\n\t\t// legacy provider id would report the lane logged out with no error at\n\t\t// all, so try the canonical key first and then the legacy spelling.\n\t\t// `anthropic` is untouched by the rename and still resolves exactly.\n\t\treturn readByProviderId(data, providerId);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function registerAnthropicSubscriptionExtension(\n\tpi: ExtensionAPI,\n\tdeps: AnthropicSubscriptionExtensionDeps = {},\n): void {\n\tregisterClaudeAccountCommand(pi);\n\tregisterSessionRegistry(pi);\n\tpi.registerProvider(ANTHROPIC_SUBSCRIPTION_PROVIDER_ID, {\n\t\tbaseUrl: CLAUDE_SDK_OAUTH_API_ID,\n\t\tapi: CLAUDE_SDK_OAUTH_API_ID,\n\t\tmodels: MODELS,\n\t\tstreamSimple: streamAnthropicSubscription,\n\t\t// A verbatim `enabled: false` is the kill switch: the lane cannot serve, so\n\t\t// it must not consume an implicit fallback-expansion slot. An absent flag\n\t\t// stays eligible - an explicit senpi-side login keeps the lane usable.\n\t\tfallbackEligible: () => {\n\t\t\ttry {\n\t\t\t\tconst settings = deps.readSettings\n\t\t\t\t\t? deps.readSettings()\n\t\t\t\t\t: loadAnthropicSubscriptionProviderSettingsFromDisk(process.cwd());\n\t\t\t\treturn settings.enabled !== false;\n\t\t\t} catch {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\toauth: createOAuthConfig({\n\t\t\treadCurrent: async () => readStoredCredential(ANTHROPIC_SUBSCRIPTION_PROVIDER_ID),\n\t\t\treadAmbientAuthStatus: deps.readAmbientAuthStatus,\n\t\t\treadSettings: () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst settings = deps.readSettings\n\t\t\t\t\t\t? deps.readSettings()\n\t\t\t\t\t\t: loadAnthropicSubscriptionProviderSettingsFromDisk(process.cwd());\n\t\t\t\t\treturn { tokenInjection: settings.tokenInjection, enabled: settings.enabled };\n\t\t\t\t} catch {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t},\n\t\t\treadAnthropicCredential: async () => {\n\t\t\t\tconst credential = readStoredCredential(\"anthropic\");\n\t\t\t\treturn credential && typeof credential.access === \"string\"\n\t\t\t\t\t? { access: credential.access, refresh: credential.refresh, expires: credential.expires }\n\t\t\t\t\t: undefined;\n\t\t\t},\n\t\t\tremoveAnthropicCredential: async () => {\n\t\t\t\t// The import is a move, not a copy: one single-use grant must never\n\t\t\t\t// live in two stores that refresh it independently (omo#7084).\n\t\t\t\tconst backend = new FileAuthStorageBackend();\n\t\t\t\tawait backend.withLockAsync(async (current) => {\n\t\t\t\t\tif (current === undefined) return { result: undefined };\n\t\t\t\t\tconst data = JSON.parse(current) as Record<string, unknown>;\n\t\t\t\t\tif (!(\"anthropic\" in data)) return { result: undefined };\n\t\t\t\t\tdelete data.anthropic;\n\t\t\t\t\treturn { result: undefined, next: JSON.stringify(data, null, 2) };\n\t\t\t\t});\n\t\t\t},\n\t\t}),\n\t});\n}\n\nexport default function anthropicSubscriptionExtension(pi: ExtensionAPI): void {\n\tregisterAnthropicSubscriptionExtension(pi);\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { AuthCheck, AuthContext, AuthResult, OAuthAuth, OAuthCredential, OAuthCredentials } from "@earendil-works/pi-ai";
2
- import { type ClaudeSdkOauthCredential } from "./accounts.ts";
2
+ import { type AnthropicSubscriptionCredential } from "./accounts.ts";
3
3
  export type OAuthLoginCallbacks = {
4
4
  signal?: AbortSignal;
5
5
  onAuth?: (event: {
@@ -12,7 +12,7 @@ export type OAuthLoginCallbacks = {
12
12
  onManualCodeInput?: () => Promise<string>;
13
13
  onProgress?: (message: string) => void;
14
14
  };
15
- export type CurrentCredentialReader = () => Promise<ClaudeSdkOauthCredential | undefined>;
15
+ export type CurrentCredentialReader = () => Promise<AnthropicSubscriptionCredential | undefined>;
16
16
  export type OAuthConfigShape = {
17
17
  name: string;
18
18
  check(input: {
@@ -36,7 +36,7 @@ export type OAuthConfigShape = {
36
36
  refreshToken(credentials: OAuthCredentials): Promise<OAuthCredentials>;
37
37
  getApiKey(credentials: OAuthCredentials): string;
38
38
  };
39
- export declare const CLAUDE_SDK_OAUTH_NAME = "Claude SDK OAuth (Claude Pro/Max)";
39
+ export declare const ANTHROPIC_SUBSCRIPTION_NAME = "Anthropic Subscription (Claude Pro/Max)";
40
40
  export declare function createOAuthConfig(deps: {
41
41
  readCurrent: CurrentCredentialReader;
42
42
  readAnthropicCredential?: () => Promise<{
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-login.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/oauth-login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAEhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEN,KAAK,+BAA+B,EAMpC,MAAM,eAAe,CAAC;AAGvB,MAAM,MAAM,mBAAmB,GAAG;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClF,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,+BAA+B,GAAG,SAAS,CAAC,CAAC;AAEjG,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,KAAK,EAAE;QACZ,GAAG,EAAE,WAAW,CAAC;QACjB,UAAU,CAAC,EAAE,eAAe,CAAC;QAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IACnC;;;;;;OAMG;IACH,cAAc,CAAC,KAAK,EAAE;QACrB,GAAG,EAAE,WAAW,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACpC,KAAK,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjE,YAAY,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvE,SAAS,CAAC,WAAW,EAAE,gBAAgB,GAAG,MAAM,CAAC;CACjD,CAAC;AAEF,eAAO,MAAM,2BAA2B,4CAA4C,CAAC;AA0DrF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACvC,WAAW,EAAE,uBAAuB,CAAC;IACrC,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAC1G,0HAA0H;IAC1H,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,qBAAqB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,YAAY,CAAC,EAAE,MAAM;QAAE,cAAc,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IAClH,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB,GAAG,gBAAgB,CA8GnB"}