@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":"session-reattach.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-reattach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,KAAK,iCAAiC,EAAoC,MAAM,uBAAuB,CAAC;AAGjH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC9D;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAU/C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAInE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAEhE;AAED,wBAAgB,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAGhF;AAED,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAGpG;AAED,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpF;AAED,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,IAAI,CACV,iCAAiC,EAC/B,gBAAgB,GAChB,cAAc,GACd,WAAW,GACX,aAAa,GACb,SAAS,GACT,kBAAkB,GAClB,aAAa,GACb,sBAAsB,GACtB,uBAAuB,CACzB,EACD,UAAU,EAAE,SAAS,MAAM,EAAE,GAC3B,iBAAiB,CAcnB;AAED,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,6BAA6B,GACrC,OAAO,CAAC,OAAO,CAAC,CAkClB;AA6BD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,iCAAiC,CAAC,CA4BtG"}
@@ -108,7 +108,7 @@ async function awaitInitialization(entry, signal) {
108
108
  });
109
109
  const onAbort = () => {
110
110
  closeSession(entry.senpiSessionId, "resume_initialization_aborted");
111
- rejectAborted(new Error("Claude SDK OAuth reattach aborted"));
111
+ rejectAborted(new Error("Anthropic Subscription reattach aborted"));
112
112
  };
113
113
  if (signal.aborted) {
114
114
  onAbort();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-reattach.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-reattach.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AnthropicSubscriptionAuthLane } from \"./options.ts\";\nimport type { Options, SessionMessage } from \"./sdk-boundary.ts\";\nimport { getSdkBoundary, loadClaudeAgentSdk } from \"./sdk-boundary.ts\";\nimport { logContinuityEvent } from \"./session-observability.ts\";\nimport { type AnthropicSubscriptionSessionEntry, closeSession, getOrCreateSession } from \"./session-registry.ts\";\nimport { recordSyncedStream } from \"./session-sync.ts\";\n\nexport type ContinuityBinding = {\n\tsenpiSessionId: string;\n\tsdkSessionId: string;\n\tsentCount: number;\n\tsentHashes: readonly string[];\n\tsentPrefixHash?: string;\n\t/**\n\t * False while the SDK has not yet acknowledged this session id (no init and\n\t * no replay echo): continuity must never resume or fork such an id.\n\t */\n\tsdkSessionIdConfirmed?: boolean;\n\tlastAssistantUuid: string | null;\n\taccountName: string;\n\tmodelId: string;\n\tsystemPromptHash: string;\n\ttoolsetHash: string;\n\t/** Assistant boundaries kept as entries so a later fork still has a resume point. */\n\tassistantUuidByIndex?: readonly (readonly [number, string])[];\n\t/**\n\t * Digest of the FULL sent stream an attempt pushed but never got answered\n\t * (stream-start timeout abort/failure). Purely in-memory: it lets the SAME\n\t * turn's retry fork at the pre-turn boundary instead of re-appending its user\n\t * message to a lineage that already carries it. Never persisted — the sidecar\n\t * schema is fixed at schemaVersion 1 and restart retries are out of scope.\n\t */\n\tunansweredTurnDigest?: string;\n};\n\nexport type ReattachInput = {\n\tbinding: ContinuityBinding;\n\toptions: Options;\n\tatUuid?: string;\n\tsignal?: AbortSignal;\n};\n\nconst bindings = new Map<string, ContinuityBinding>();\n\nexport type AbortOutcome = \"keep\" | \"reattach\";\n\nfunction cloneBinding(binding: ContinuityBinding): ContinuityBinding {\n\treturn {\n\t\t...binding,\n\t\tsentHashes: [...binding.sentHashes],\n\t\tassistantUuidByIndex: binding.assistantUuidByIndex?.map(([index, uuid]) => [index, uuid]),\n\t};\n}\n\nexport function evaluateAbortOutcome(receipt: unknown): AbortOutcome {\n\tif (!receipt || typeof receipt !== \"object\") return \"reattach\";\n\tconst queued = (receipt as { still_queued?: unknown }).still_queued;\n\treturn Array.isArray(queued) && queued.length === 0 ? \"keep\" : \"reattach\";\n}\n\nexport function rememberBinding(binding: ContinuityBinding): void {\n\tbindings.set(binding.senpiSessionId, cloneBinding(binding));\n}\n\nexport function getBinding(senpiSessionId: string): ContinuityBinding | undefined {\n\tconst binding = bindings.get(senpiSessionId);\n\treturn binding ? cloneBinding(binding) : undefined;\n}\n\nexport function forgetBinding(senpiSessionId: string): void {\n\tbindings.delete(senpiSessionId);\n}\n\n/**\n * Reason the newest ledger record invalidated this session's binding. Held next\n * to the binding it replaced so the next continuity decision can name the real\n * cause instead of the no-record default: a restart re-reads it from the branch\n * (session-registry-wiring), and a committed turn retires it with the marker.\n */\nconst bindingInvalidations = new Map<string, string>();\n\nexport function rememberBindingInvalidation(senpiSessionId: string, reason: string | undefined): void {\n\tif (reason === undefined) bindingInvalidations.delete(senpiSessionId);\n\telse bindingInvalidations.set(senpiSessionId, reason);\n}\n\nexport function bindingInvalidationReason(senpiSessionId: string): string | undefined {\n\treturn bindingInvalidations.get(senpiSessionId);\n}\n\nexport function bindingFromEntry(\n\tentry: Pick<\n\t\tAnthropicSubscriptionSessionEntry,\n\t\t| \"senpiSessionId\"\n\t\t| \"sdkSessionId\"\n\t\t| \"sentCount\"\n\t\t| \"accountName\"\n\t\t| \"modelId\"\n\t\t| \"systemPromptHash\"\n\t\t| \"toolsetHash\"\n\t\t| \"assistantUuidByIndex\"\n\t\t| \"sdkSessionIdConfirmed\"\n\t>,\n\tsentHashes: readonly string[],\n): ContinuityBinding {\n\treturn {\n\t\tsenpiSessionId: entry.senpiSessionId,\n\t\tsdkSessionId: entry.sdkSessionId,\n\t\tsdkSessionIdConfirmed: entry.sdkSessionIdConfirmed,\n\t\tsentCount: entry.sentCount,\n\t\tsentHashes: [...sentHashes],\n\t\tlastAssistantUuid: entry.assistantUuidByIndex.get(entry.sentCount) ?? null,\n\t\tassistantUuidByIndex: [...entry.assistantUuidByIndex.entries()],\n\t\taccountName: entry.accountName,\n\t\tmodelId: entry.modelId,\n\t\tsystemPromptHash: entry.systemPromptHash,\n\t\ttoolsetHash: entry.toolsetHash,\n\t};\n}\n\nexport async function verifyRestoredTranscript(\n\tbinding: ContinuityBinding,\n\tcwd: string,\n\tauthLane: AnthropicSubscriptionAuthLane,\n): Promise<boolean> {\n\tif (authLane === \"config-dir\") return false;\n\tlet messages: SessionMessage[];\n\ttry {\n\t\tmessages = await getSdkBoundary().getSessionMessages(binding.sdkSessionId, { dir: cwd });\n\t} catch (error) {\n\t\tif (error instanceof Error) return false;\n\t\tthrow error;\n\t}\n\tif (messages.length === 0 || messages.some((message) => message.session_id !== binding.sdkSessionId)) {\n\t\treturn false;\n\t}\n\tif (binding.lastAssistantUuid === null) return true;\n\tconst anchorIndex = messages.findIndex(\n\t\t(message) =>\n\t\t\tmessage.type === \"assistant\" &&\n\t\t\tmessage.uuid === binding.lastAssistantUuid &&\n\t\t\tmessage.parent_tool_use_id === null,\n\t);\n\tif (anchorIndex < 0) return false;\n\t// A top-level user frame after the anchored assistant is a turn the SDK transcript already\n\t// holds but the ledger never committed: the process died between pushing the message and\n\t// the assistant's commit. A plain resume from the anchor would append that user message a\n\t// second time (the in-memory retry checkpoint that forks past such an orphan is never\n\t// persisted), so the restored binding fails closed until a fork at the anchor exists\n\t// (senpi#1973). Only the count is logged, never the content.\n\tconst orphanUserMessages = messages\n\t\t.slice(anchorIndex + 1)\n\t\t.filter((message) => message.type === \"user\" && message.parent_tool_use_id === null).length;\n\tif (orphanUserMessages > 0) {\n\t\tlogContinuityEvent(\"claude_sdk_oauth_restored_transcript_orphan_tail\", { orphanUserMessages });\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nasync function awaitInitialization(entry: AnthropicSubscriptionSessionEntry, signal?: AbortSignal): Promise<void> {\n\tconst initialize = entry.query.initializationResult;\n\tif (!initialize) return;\n\tif (!signal) {\n\t\tawait initialize.call(entry.query);\n\t\treturn;\n\t}\n\tlet rejectAborted: (reason?: unknown) => void = () => {};\n\tconst aborted = new Promise<never>((_, reject) => {\n\t\trejectAborted = reject;\n\t});\n\tconst onAbort = (): void => {\n\t\tcloseSession(entry.senpiSessionId, \"resume_initialization_aborted\");\n\t\trejectAborted(new Error(\"Anthropic Subscription reattach aborted\"));\n\t};\n\tif (signal.aborted) {\n\t\tonAbort();\n\t} else {\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t}\n\ttry {\n\t\tawait Promise.race([initialize.call(entry.query), aborted]);\n\t} finally {\n\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t}\n}\n\n/**\n * A new query is not a new session: `resume` re-attaches to the existing lineage.\n * `sessionId` must stay absent unless forking, because the SDK rejects the pair\n * (sdk.d.ts:1805-1808) and would otherwise silently start an unrelated session.\n */\nexport async function reattachSession(input: ReattachInput): Promise<AnthropicSubscriptionSessionEntry> {\n\t// getOrCreateSession() reaches the synchronous SDK `query` through the\n\t// session-registry boundary - see sdk-boundary.lazy.ts.\n\tawait loadClaudeAgentSdk();\n\tconst { binding, atUuid } = input;\n\tcloseSession(binding.senpiSessionId, \"reattach\");\n\tconst entry = getOrCreateSession({\n\t\tsenpiSessionId: binding.senpiSessionId,\n\t\taccountName: binding.accountName,\n\t\tmodelId: binding.modelId,\n\t\tsystemPromptHash: binding.systemPromptHash,\n\t\ttoolsetHash: binding.toolsetHash,\n\t\toptions: input.options,\n\t\tresume: atUuid ? { sdkSessionId: binding.sdkSessionId, atUuid } : { sdkSessionId: binding.sdkSessionId },\n\t});\n\n\ttry {\n\t\tawait awaitInitialization(entry, input.signal);\n\t} catch (error) {\n\t\tcloseSession(binding.senpiSessionId, \"resume_initialization_failed\");\n\t\tthrow error;\n\t}\n\n\trecordSyncedStream(entry, binding.sentHashes);\n\tfor (const [index, uuid] of binding.assistantUuidByIndex ?? []) entry.assistantUuidByIndex.set(index, uuid);\n\tif (binding.lastAssistantUuid) entry.assistantUuidByIndex.set(binding.sentCount, binding.lastAssistantUuid);\n\trememberBinding({ ...binding, sdkSessionId: entry.sdkSessionId });\n\treturn entry;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { SDKMessage, SDKUserMessage } from "./sdk-boundary.ts";
2
- import { type ClaudeSdkOauthSessionEntry, type ClaudeSdkOauthSessionRegistry } from "./session-registry.ts";
2
+ import { type AnthropicSubscriptionSessionEntry, type AnthropicSubscriptionSessionRegistry } from "./session-registry.ts";
3
3
  import type { PreReplayBufferLimits, SessionTurnResult } from "./session-turn-types.ts";
4
4
  export type { SessionTurnResult } from "./session-turn-types.ts";
5
5
  export declare const DEFAULT_PRE_REPLAY_MAX_MESSAGES = 64;
@@ -15,5 +15,5 @@ export declare class ConcurrentSessionTurnAdmissionError extends Error {
15
15
  readonly code = "claude_sdk_oauth_concurrent_turn_admission";
16
16
  constructor(sessionId: string);
17
17
  }
18
- export declare function submitSessionTurn(registry: ClaudeSdkOauthSessionRegistry, entry: ClaudeSdkOauthSessionEntry, request: SessionTurnRequest, limits?: PreReplayBufferLimits): Promise<SessionTurnResult>;
18
+ export declare function submitSessionTurn(registry: AnthropicSubscriptionSessionRegistry, entry: AnthropicSubscriptionSessionEntry, request: SessionTurnRequest, limits?: PreReplayBufferLimits): Promise<SessionTurnResult>;
19
19
  //# sourceMappingURL=session-registry-pump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry-pump.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-pump.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACN,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EAEzC,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,EAAc,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEpG,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAIjE,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAClD,eAAO,MAAM,4BAA4B,QAAa,CAAC;AACvD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;CACtE;AAED,qBAAa,mCAAoC,SAAQ,KAAK;IAC7D,QAAQ,CAAC,IAAI,gDAAgD;IAE7D,YAAY,SAAS,EAAE,MAAM,EAG5B;CACD;AAuJD,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,oCAAoC,EAC9C,KAAK,EAAE,iCAAiC,EACxC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,GAAE,qBAGP,GACC,OAAO,CAAC,iBAAiB,CAAC,CAsD5B"}
@@ -10,7 +10,7 @@ export const DEFAULT_PRE_REPLAY_MAX_BYTES = 256 * 1024;
10
10
  export const SESSION_TURN_ABORT_GRACE_MS = 1_000;
11
11
  export class ConcurrentSessionTurnAdmissionError extends Error {
12
12
  constructor(sessionId) {
13
- super(`Concurrent Claude SDK OAuth turn admission for session ${sessionId}`);
13
+ super(`Concurrent Anthropic Subscription turn admission for session ${sessionId}`);
14
14
  this.code = "claude_sdk_oauth_concurrent_turn_admission";
15
15
  this.name = "ConcurrentSessionTurnAdmissionError";
16
16
  }
@@ -55,7 +55,7 @@ function abortTurn(registry, entry, turn, _error) {
55
55
  }
56
56
  function finishTurn(registry, entry, turn, message) {
57
57
  if (!resultMatchesTurn(message, turn)) {
58
- throw new SessionTurnAttributionError("Claude SDK OAuth result user_message_uuid did not match the active turn");
58
+ throw new SessionTurnAttributionError("Anthropic Subscription result user_message_uuid did not match the active turn");
59
59
  }
60
60
  if (entry.state === "TURN_CLAIMED")
61
61
  transitionToTurnStreaming(entry);
@@ -110,7 +110,7 @@ function handleMessage(registry, entry, message) {
110
110
  // failover can classify and rotate; only a genuine success-before-claim
111
111
  // is an attribution error.
112
112
  throw (sdkResultFailure(message) ??
113
- new SessionTurnAttributionError("Claude SDK OAuth result arrived before replay claim"));
113
+ new SessionTurnAttributionError("Anthropic Subscription result arrived before replay claim"));
114
114
  }
115
115
  return false;
116
116
  }
@@ -139,7 +139,7 @@ async function runPump(registry, entry) {
139
139
  while (true) {
140
140
  const { value, done } = await iterator.next();
141
141
  if (done) {
142
- failTurn(registry, entry, new Error("Claude SDK OAuth query ended before the active turn completed"));
142
+ failTurn(registry, entry, new Error("Anthropic Subscription query ended before the active turn completed"));
143
143
  return;
144
144
  }
145
145
  if (handleMessage(registry, entry, value))
@@ -166,7 +166,7 @@ export function submitSessionTurn(registry, entry, request, limits = {
166
166
  if (turn.aborted)
167
167
  return;
168
168
  turn.aborted = true;
169
- turn.cancelAbort = (request.scheduleAbort ?? scheduleAbort)(() => abortTurn(registry, entry, turn, new Error("Claude SDK OAuth interrupted turn did not terminate")), SESSION_TURN_ABORT_GRACE_MS);
169
+ turn.cancelAbort = (request.scheduleAbort ?? scheduleAbort)(() => abortTurn(registry, entry, turn, new Error("Anthropic Subscription interrupted turn did not terminate")), SESSION_TURN_ABORT_GRACE_MS);
170
170
  void entry.query
171
171
  .interrupt()
172
172
  .then((receipt) => {
@@ -174,7 +174,7 @@ export function submitSessionTurn(registry, entry, request, limits = {
174
174
  })
175
175
  .catch((error) => {
176
176
  const detail = error instanceof Error ? error.message : String(error);
177
- abortTurn(registry, entry, turn, new Error(`Claude SDK OAuth query interrupt failed: ${detail}`));
177
+ abortTurn(registry, entry, turn, new Error(`Anthropic Subscription query interrupt failed: ${detail}`));
178
178
  });
179
179
  };
180
180
  turn = {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry-pump.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-pump.ts"],"names":[],"mappings":"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","sourcesContent":["import { sdkResultFailure } from \"./errors.ts\";\nimport { refusalError } from \"./refusal.ts\";\nimport type { SDKMessage, SDKUserMessage } from \"./sdk-boundary.ts\";\nimport { evaluateAbortOutcome } from \"./session-reattach.ts\";\nimport {\n\ttype AnthropicSubscriptionSessionEntry,\n\ttype AnthropicSubscriptionSessionRegistry,\n\tcreateSessionUuid,\n} from \"./session-registry.ts\";\nimport {\n\ttransitionToIdleSynced,\n\ttransitionToTurnResultSeen,\n\ttransitionToTurnSent,\n\ttransitionToTurnStreaming,\n\ttransitionToTurnWaiting,\n} from \"./session-registry-state.ts\";\nimport { bufferBeforeReplay, claimTurn, deliver, isReplayFor, resultMatchesTurn } from \"./session-turn-claim.ts\";\nimport type { ActiveTurn, PreReplayBufferLimits, SessionTurnResult } from \"./session-turn-types.ts\";\n\nexport type { SessionTurnResult } from \"./session-turn-types.ts\";\n\nimport { SessionTurnAttributionError } from \"./session-turn-types.ts\";\n\nexport const DEFAULT_PRE_REPLAY_MAX_MESSAGES = 64;\nexport const DEFAULT_PRE_REPLAY_MAX_BYTES = 256 * 1024;\nexport const SESSION_TURN_ABORT_GRACE_MS = 1_000;\n\nexport interface SessionTurnRequest {\n\tmessage: SDKUserMessage[\"message\"];\n\tsignal?: AbortSignal;\n\tonMessage?: (message: SDKMessage) => void;\n\tscheduleAbort?: (callback: () => void, delayMs: number) => () => void;\n}\n\nexport class ConcurrentSessionTurnAdmissionError extends Error {\n\treadonly code = \"claude_sdk_oauth_concurrent_turn_admission\";\n\n\tconstructor(sessionId: string) {\n\t\tsuper(`Concurrent Anthropic Subscription turn admission for session ${sessionId}`);\n\t\tthis.name = \"ConcurrentSessionTurnAdmissionError\";\n\t}\n}\n\nfunction currentTurn(entry: AnthropicSubscriptionSessionEntry): ActiveTurn | null {\n\treturn entry.activeTurn as ActiveTurn | null;\n}\n\nfunction scheduleAbort(callback: () => void, delayMs: number): () => void {\n\tconst timer = setTimeout(callback, delayMs);\n\ttimer.unref();\n\treturn () => clearTimeout(timer);\n}\n\nfunction removeAbortListener(turn: ActiveTurn): void {\n\tturn.signal?.removeEventListener(\"abort\", turn.onAbort);\n\tturn.cancelAbort?.();\n\tturn.cancelAbort = undefined;\n}\n\nfunction failTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\terror: Error,\n): void {\n\tconst turn = currentTurn(entry);\n\tif (turn) {\n\t\tremoveAbortListener(turn);\n\t\tentry.activeTurn = null;\n\t\tturn.reject(error);\n\t}\n\tif (registry.isCurrentGeneration(entry.senpiSessionId, entry.generation)) {\n\t\tregistry.closeSession(entry.senpiSessionId, error.message);\n\t}\n}\n\n/**\n * An interrupt that never produces a terminal result still ends the user's turn:\n * settle it as aborted and close only the query, so the binding survives and the\n * next turn reattaches. Rejecting here would drop the turn's continuity\n * observation and hand the following turn two.\n */\nfunction abortTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tturn: ActiveTurn,\n\t_error: Error,\n): void {\n\tif (currentTurn(entry) !== turn || !registry.isCurrentGeneration(entry.senpiSessionId, turn.generation)) return;\n\tremoveAbortListener(turn);\n\tentry.activeTurn = null;\n\tregistry.closeSession(entry.senpiSessionId, \"abort_uncertain\");\n\tturn.resolve({ uuid: turn.uuid, messages: turn.messages, aborted: true });\n}\n\nfunction finishTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tturn: ActiveTurn,\n\tmessage: Extract<SDKMessage, { type: \"result\" }>,\n): void {\n\tif (!resultMatchesTurn(message, turn)) {\n\t\tthrow new SessionTurnAttributionError(\n\t\t\t\"Anthropic Subscription result user_message_uuid did not match the active turn\",\n\t\t);\n\t}\n\tif (entry.state === \"TURN_CLAIMED\") transitionToTurnStreaming(entry);\n\tif (!turn.aborted) deliver(entry, turn, message);\n\ttransitionToTurnResultSeen(entry);\n\tremoveAbortListener(turn);\n\tentry.activeTurn = null;\n\tif (!turn.aborted || evaluateAbortOutcome(turn.interruptReceipt) === \"keep\") transitionToIdleSynced(entry);\n\telse registry.closeSession(entry.senpiSessionId, \"abort_uncertain\");\n\tturn.resolve({ uuid: turn.uuid, messages: turn.messages, aborted: turn.aborted });\n}\n\nfunction handleMessage(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tmessage: SDKMessage,\n): boolean {\n\t// A forked query mints a NEW session id (forkSession: true + resume): the\n\t// init message carries it, and it must be persisted BEFORE any turn-state\n\t// guard — otherwise subsequent reattach targets the original session and\n\t// the fork's content is lost.\n\tif (message.type === \"system\" && message.subtype === \"init\" && typeof message.session_id === \"string\") {\n\t\tif (message.session_id !== entry.sdkSessionId) entry.sdkSessionId = message.session_id;\n\t\tentry.sdkSessionIdConfirmed = true;\n\t}\n\tconst turn = currentTurn(entry);\n\tif (!turn || !registry.isCurrentGeneration(entry.senpiSessionId, turn.generation)) return false;\n\tif (!turn.claimed) {\n\t\tif (isReplayFor(message, turn.uuid)) {\n\t\t\tentry.sdkSessionIdConfirmed = true;\n\t\t\tfor (const buffered of claimTurn(entry, turn)) {\n\t\t\t\tif (buffered.type === \"result\") finishTurn(registry, entry, turn, buffered);\n\t\t\t\telse deliver(entry, turn, buffered);\n\t\t\t}\n\t\t} else if (message.type === \"stream_event\") bufferBeforeReplay(registry, entry, turn, message);\n\t\telse if (message.type === \"result\" && resultMatchesTurn(message, turn)) {\n\t\t\tconst failure = sdkResultFailure(message);\n\t\t\tif (failure) throw failure;\n\t\t\tfor (const buffered of claimTurn(entry, turn)) deliver(entry, turn, buffered);\n\t\t\tfinishTurn(registry, entry, turn, message);\n\t\t\treturn false;\n\t\t} else if (message.type === \"result\") {\n\t\t\t// A result that fails before the SDK ever echoed our user message (a\n\t\t\t// 400 version floor, a session limit) must surface as that failure so\n\t\t\t// failover can classify and rotate; only a genuine success-before-claim\n\t\t\t// is an attribution error.\n\t\t\tthrow (\n\t\t\t\tsdkResultFailure(message) ??\n\t\t\t\tnew SessionTurnAttributionError(\"Anthropic Subscription result arrived before replay claim\")\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\tif (message.type === \"user\" && \"isReplay\" in message && message.isReplay === true) return false;\n\tconst refusal = refusalError(message);\n\tif (refusal) {\n\t\tfailTurn(registry, entry, refusal);\n\t\treturn true;\n\t}\n\tif (message.type === \"result\") {\n\t\tconst failure = sdkResultFailure(message);\n\t\tif (failure) {\n\t\t\tfailTurn(registry, entry, failure);\n\t\t\treturn true;\n\t\t}\n\t\tfinishTurn(registry, entry, turn, message);\n\t} else deliver(entry, turn, message);\n\treturn false;\n}\n\nasync function runPump(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n): Promise<void> {\n\tconst iterator = entry.query[Symbol.asyncIterator]();\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { value, done } = await iterator.next();\n\t\t\tif (done) {\n\t\t\t\tfailTurn(registry, entry, new Error(\"Anthropic Subscription query ended before the active turn completed\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (handleMessage(registry, entry, value)) return;\n\t\t}\n\t} catch (error) {\n\t\tfailTurn(registry, entry, error instanceof Error ? error : new Error(String(error)));\n\t}\n}\n\nexport function submitSessionTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\trequest: SessionTurnRequest,\n\tlimits: PreReplayBufferLimits = {\n\t\tmaxMessages: DEFAULT_PRE_REPLAY_MAX_MESSAGES,\n\t\tmaxBytes: DEFAULT_PRE_REPLAY_MAX_BYTES,\n\t},\n): Promise<SessionTurnResult> {\n\tif (currentTurn(entry)) throw new ConcurrentSessionTurnAdmissionError(entry.senpiSessionId);\n\tif (entry.state === \"STARTING\") transitionToIdleSynced(entry);\n\ttransitionToTurnWaiting(entry);\n\tconst uuid = createSessionUuid();\n\tlet turn!: ActiveTurn;\n\tconst promise = new Promise<SessionTurnResult>((resolve, reject) => {\n\t\tconst onAbort = (): void => {\n\t\t\tif (turn.aborted) return;\n\t\t\tturn.aborted = true;\n\t\t\tturn.cancelAbort = (request.scheduleAbort ?? scheduleAbort)(\n\t\t\t\t() =>\n\t\t\t\t\tabortTurn(registry, entry, turn, new Error(\"Anthropic Subscription interrupted turn did not terminate\")),\n\t\t\t\tSESSION_TURN_ABORT_GRACE_MS,\n\t\t\t);\n\t\t\tvoid entry.query\n\t\t\t\t.interrupt()\n\t\t\t\t.then((receipt: unknown) => {\n\t\t\t\t\tturn.interruptReceipt = receipt;\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst detail = error instanceof Error ? error.message : String(error);\n\t\t\t\t\tabortTurn(registry, entry, turn, new Error(`Anthropic Subscription query interrupt failed: ${detail}`));\n\t\t\t\t});\n\t\t};\n\t\tturn = {\n\t\t\tuuid,\n\t\t\tgeneration: entry.generation,\n\t\t\tmessages: [],\n\t\t\tpreReplay: [],\n\t\t\tpreReplayBytes: 0,\n\t\t\tclaimed: false,\n\t\t\taborted: false,\n\t\t\tonMessage: request.onMessage,\n\t\t\tsignal: request.signal,\n\t\t\tonAbort,\n\t\t\tresolve,\n\t\t\treject,\n\t\t\tlimits,\n\t\t};\n\t});\n\tentry.activeTurn = turn;\n\tif (!entry.pumpTask) entry.pumpTask = runPump(registry, entry);\n\tentry.inputController.push({\n\t\ttype: \"user\",\n\t\tmessage: request.message,\n\t\tparent_tool_use_id: null,\n\t\tuuid,\n\t\tsession_id: entry.sdkSessionId,\n\t});\n\ttransitionToTurnSent(entry);\n\tif (request.signal?.aborted) turn.onAbort();\n\telse request.signal?.addEventListener(\"abort\", turn.onAbort, { once: true });\n\treturn promise;\n}\n"]}
@@ -1,8 +1,8 @@
1
- export type ClaudeSdkOauthSessionState = "ABSENT" | "STARTING" | "IDLE_SYNCED" | "TURN_WAITING" | "TURN_SENT" | "TURN_CLAIMED" | "TURN_STREAMING" | "TURN_RESULT_SEEN" | "TAINTED" | "CLOSING" | "CLOSED" | "BROKEN";
1
+ export type AnthropicSubscriptionSessionState = "ABSENT" | "STARTING" | "IDLE_SYNCED" | "TURN_WAITING" | "TURN_SENT" | "TURN_CLAIMED" | "TURN_STREAMING" | "TURN_RESULT_SEEN" | "TAINTED" | "CLOSING" | "CLOSED" | "BROKEN";
2
2
  type StatefulSession = {
3
- state: ClaudeSdkOauthSessionState;
3
+ state: AnthropicSubscriptionSessionState;
4
4
  };
5
- export declare function transitionSessionState<T extends StatefulSession>(entry: T, next: ClaudeSdkOauthSessionState): T;
5
+ export declare function transitionSessionState<T extends StatefulSession>(entry: T, next: AnthropicSubscriptionSessionState): T;
6
6
  export declare const transitionToStarting: <T extends StatefulSession>(entry: T) => T;
7
7
  export declare const transitionToIdleSynced: <T extends StatefulSession>(entry: T) => T;
8
8
  export declare const transitionToTurnWaiting: <T extends StatefulSession>(entry: T) => T;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry-state.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-state.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iCAAiC,GAC1C,QAAQ,GACR,UAAU,GACV,aAAa,GACb,cAAc,GACd,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,CAAC;AAEZ,KAAK,eAAe,GAAG;IAAE,KAAK,EAAE,iCAAiC,CAAA;CAAE,CAAC;AAmBpE,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,eAAe,EAC/D,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,iCAAiC,GACrC,CAAC,CAMH;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CACjC,CAAC;AAC3C,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAChC,CAAC;AAC9C,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAChC,CAAC;AAC/C,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAChC,CAAC;AAC5C,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAChC,CAAC;AAC/C,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAChC,CAAC;AACjD,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAC/B,CAAC;AACnD,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAA6C,CAAC;AACxH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAA6C,CAAC;AACxH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAA4C,CAAC;AACtH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,eAAe,SAAS,CAAC,KAAG,CAA4C,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry-state.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-state.ts"],"names":[],"mappings":"AAgBA,MAAM,kBAAkB,GAEpB;IACH,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,QAAQ,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IACzD,WAAW,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC7D,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC3D,SAAS,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC3D,YAAY,EAAE,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IAChE,cAAc,EAAE,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IACpE,gBAAgB,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IACjE,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC9B,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEF,MAAM,UAAU,sBAAsB,CACrC,KAAQ,EACR,IAAuC;IAEvC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CAC9E,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CAChF,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CACjF,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CAC9E,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CACjF,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CACnF,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAA4B,KAAQ,EAAK,EAAE,CACpF,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAA4B,KAAQ,EAAK,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["export type AnthropicSubscriptionSessionState =\n\t| \"ABSENT\"\n\t| \"STARTING\"\n\t| \"IDLE_SYNCED\"\n\t| \"TURN_WAITING\"\n\t| \"TURN_SENT\"\n\t| \"TURN_CLAIMED\"\n\t| \"TURN_STREAMING\"\n\t| \"TURN_RESULT_SEEN\"\n\t| \"TAINTED\"\n\t| \"CLOSING\"\n\t| \"CLOSED\"\n\t| \"BROKEN\";\n\ntype StatefulSession = { state: AnthropicSubscriptionSessionState };\n\nconst allowedTransitions: Readonly<\n\tRecord<AnthropicSubscriptionSessionState, readonly AnthropicSubscriptionSessionState[]>\n> = {\n\tABSENT: [\"STARTING\"],\n\tSTARTING: [\"IDLE_SYNCED\", \"TAINTED\", \"CLOSING\", \"BROKEN\"],\n\tIDLE_SYNCED: [\"TURN_WAITING\", \"TAINTED\", \"CLOSING\", \"BROKEN\"],\n\tTURN_WAITING: [\"TURN_SENT\", \"TAINTED\", \"CLOSING\", \"BROKEN\"],\n\tTURN_SENT: [\"TURN_CLAIMED\", \"TAINTED\", \"CLOSING\", \"BROKEN\"],\n\tTURN_CLAIMED: [\"TURN_STREAMING\", \"TAINTED\", \"CLOSING\", \"BROKEN\"],\n\tTURN_STREAMING: [\"TURN_RESULT_SEEN\", \"TAINTED\", \"CLOSING\", \"BROKEN\"],\n\tTURN_RESULT_SEEN: [\"IDLE_SYNCED\", \"TAINTED\", \"CLOSING\", \"BROKEN\"],\n\tTAINTED: [\"CLOSING\", \"BROKEN\"],\n\tCLOSING: [\"CLOSED\", \"BROKEN\"],\n\tCLOSED: [],\n\tBROKEN: [\"CLOSING\", \"CLOSED\"],\n};\n\nexport function transitionSessionState<T extends StatefulSession>(\n\tentry: T,\n\tnext: AnthropicSubscriptionSessionState,\n): T {\n\tif (!allowedTransitions[entry.state].includes(next)) {\n\t\tthrow new Error(`Illegal session state transition: ${entry.state} -> ${next}`);\n\t}\n\tentry.state = next;\n\treturn entry;\n}\n\nexport const transitionToStarting = <T extends StatefulSession>(entry: T): T =>\n\ttransitionSessionState(entry, \"STARTING\");\nexport const transitionToIdleSynced = <T extends StatefulSession>(entry: T): T =>\n\ttransitionSessionState(entry, \"IDLE_SYNCED\");\nexport const transitionToTurnWaiting = <T extends StatefulSession>(entry: T): T =>\n\ttransitionSessionState(entry, \"TURN_WAITING\");\nexport const transitionToTurnSent = <T extends StatefulSession>(entry: T): T =>\n\ttransitionSessionState(entry, \"TURN_SENT\");\nexport const transitionToTurnClaimed = <T extends StatefulSession>(entry: T): T =>\n\ttransitionSessionState(entry, \"TURN_CLAIMED\");\nexport const transitionToTurnStreaming = <T extends StatefulSession>(entry: T): T =>\n\ttransitionSessionState(entry, \"TURN_STREAMING\");\nexport const transitionToTurnResultSeen = <T extends StatefulSession>(entry: T): T =>\n\ttransitionSessionState(entry, \"TURN_RESULT_SEEN\");\nexport const transitionToTainted = <T extends StatefulSession>(entry: T): T => transitionSessionState(entry, \"TAINTED\");\nexport const transitionToClosing = <T extends StatefulSession>(entry: T): T => transitionSessionState(entry, \"CLOSING\");\nexport const transitionToClosed = <T extends StatefulSession>(entry: T): T => transitionSessionState(entry, \"CLOSED\");\nexport const transitionToBroken = <T extends StatefulSession>(entry: T): T => transitionSessionState(entry, \"BROKEN\");\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry-wiring.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-wiring.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AAqErE,wBAAgB,uBAAuB,CACtC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,GACvE,IAAI,CA4HN"}
@@ -1,5 +1,5 @@
1
1
  import { convertToLlm } from "../../../messages.js";
2
- import { CLAUDE_SDK_OAUTH_PROVIDER_ID } from "./account-management.js";
2
+ import { ANTHROPIC_SUBSCRIPTION_PROVIDER_ID } from "./account-management.js";
3
3
  import { BINDING_ENTRY_TYPE, BINDING_MARKER, bindingFromStoredBranch, invalidationReasonFromBranch, storedBindingFromBinding, storedBindingFromEntry, } from "./session-binding.js";
4
4
  import { deleteStoredBinding, readStoredBinding, writeStoredBinding } from "./session-binding-store.js";
5
5
  import { AssistantCommitBoundary, assistantContentHash, isResidentAssistant, isTerminalFailure, } from "./session-commit-boundary.js";
@@ -88,7 +88,7 @@ export function registerSessionRegistry(pi) {
88
88
  // session closes but the binding stays, so coming back to the same model
89
89
  // reattaches at the recorded prefix instead of re-sending the whole
90
90
  // conversation (senpi#1747). Identity drift still flattens on the way back.
91
- if (event.model?.provider !== CLAUDE_SDK_OAUTH_PROVIDER_ID) {
91
+ if (event.model?.provider !== ANTHROPIC_SUBSCRIPTION_PROVIDER_ID) {
92
92
  keepBindingThenClose(sessionId, "model_selected");
93
93
  return;
94
94
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry-wiring.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-wiring.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage } from \"@earendil-works/pi-ai\";\nimport { convertToLlm } from \"../../../messages.ts\";\nimport type { ExtensionAPI, ExtensionContext } from \"../../types.ts\";\nimport { ANTHROPIC_SUBSCRIPTION_PROVIDER_ID } from \"./account-management.ts\";\nimport {\n\tBINDING_ENTRY_TYPE,\n\tBINDING_MARKER,\n\ttype BindingInvalidation,\n\tbindingFromStoredBranch,\n\tinvalidationReasonFromBranch,\n\tstoredBindingFromBinding,\n\tstoredBindingFromEntry,\n} from \"./session-binding.ts\";\nimport { deleteStoredBinding, readStoredBinding, writeStoredBinding } from \"./session-binding-store.ts\";\nimport {\n\tAssistantCommitBoundary,\n\tassistantContentHash,\n\tisResidentAssistant,\n\tisTerminalFailure,\n} from \"./session-commit-boundary.ts\";\nimport {\n\tbindingFromEntry,\n\tforgetBinding,\n\tgetBinding,\n\trememberBinding,\n\trememberBindingInvalidation,\n} from \"./session-reattach.ts\";\nimport {\n\tcloseSession,\n\tgetSession,\n\trecordBranchInfo,\n\trecordPendingFork,\n\tswitchSessionModel,\n} from \"./session-registry.ts\";\nimport { sentHashesForEntry, sentMessageHashes, sentMessages } from \"./session-sync.ts\";\n\nconst commitBoundary = new AssistantCommitBoundary();\n\nfunction persistBindingInvalidation(\n\tpi: Partial<Pick<ExtensionAPI, \"appendEntry\">>,\n\tsessionId: string,\n\treason: string,\n): void {\n\tpi.appendEntry?.(BINDING_ENTRY_TYPE, { schemaVersion: 1, invalidated: true, reason } satisfies BindingInvalidation);\n\trememberBindingInvalidation(sessionId, reason);\n}\n\nasync function invalidateBinding(\n\tpi: Partial<Pick<ExtensionAPI, \"appendEntry\">>,\n\tctx: Pick<ExtensionContext, \"sessionManager\">,\n\treason: string,\n): Promise<void> {\n\tconst sessionId = ctx.sessionManager.getSessionId();\n\tforgetBinding(sessionId);\n\tconst sessionFile = ctx.sessionManager.getSessionFile?.();\n\tif (sessionFile) await deleteStoredBinding(sessionFile);\n\tpersistBindingInvalidation(pi, sessionId, reason);\n}\n\nfunction keepBindingThenClose(sessionId: string, reason: string): void {\n\tconst entry = getSession(sessionId);\n\tif (entry) rememberBinding(bindingFromEntry(entry, sentHashesForEntry(entry) ?? []));\n\tcloseSession(sessionId, reason);\n}\n\nfunction residentEntryFor(sessionId: string, message: AssistantMessage) {\n\tconst entry = getSession(sessionId);\n\tif (!entry || !isResidentAssistant(message, entry.modelId)) return undefined;\n\treturn entry;\n}\n\nexport function registerSessionRegistry(\n\tpi: Pick<ExtensionAPI, \"on\"> & Partial<Pick<ExtensionAPI, \"appendEntry\">>,\n): void {\n\tpi.on(\"session_start\", async (event, ctx) => {\n\t\tif (event.reason === \"reload\") return;\n\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\tforgetBinding(sessionId);\n\t\trememberBindingInvalidation(sessionId, undefined);\n\t\tconst sessionFile = ctx.sessionManager.getSessionFile?.();\n\t\tif (event.reason === \"new\") return;\n\t\tif (event.reason === \"fork\") {\n\t\t\tif (sessionFile) await deleteStoredBinding(sessionFile);\n\t\t\tpersistBindingInvalidation(pi, sessionId, \"fork\");\n\t\t\treturn;\n\t\t}\n\t\tif (!sessionFile) return;\n\t\t// A restart carries the ledger, not the process maps: the newest binding record\n\t\t// says whether a cause is still pending (invalidation) or was retired (marker).\n\t\tconst branch = ctx.sessionManager.getBranch();\n\t\trememberBindingInvalidation(sessionId, invalidationReasonFromBranch(branch));\n\t\tconst stored = await readStoredBinding(sessionFile);\n\t\tif (!stored) return;\n\t\tif (stored.sessionId !== sessionId) {\n\t\t\tawait deleteStoredBinding(sessionFile);\n\t\t\treturn;\n\t\t}\n\t\tconst binding = bindingFromStoredBranch(branch, stored);\n\t\tif (!binding) {\n\t\t\tawait deleteStoredBinding(sessionFile);\n\t\t\treturn;\n\t\t}\n\t\trememberBinding(binding);\n\t});\n\tpi.on(\"session_compact\", async (event, ctx) => {\n\t\tif (!event.accepted) return;\n\t\trecordPendingFork(ctx.sessionManager.getSessionId(), \"compaction\");\n\t\tawait invalidateBinding(pi, ctx, \"compaction\");\n\t});\n\tpi.on(\"session_tree\", async (event, ctx) => {\n\t\tif (event.oldLeafId === null || event.newLeafId === null) return;\n\t\trecordBranchInfo(ctx.sessionManager.getSessionId(), {\n\t\t\toldLeafId: event.oldLeafId,\n\t\t\tnewLeafId: event.newLeafId,\n\t\t});\n\t\tawait invalidateBinding(pi, ctx, \"tree_changed\");\n\t});\n\tpi.on(\"model_select\", async (event, ctx) => {\n\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\t// Leaving this provider is an excursion, not an invalidation: the live SDK\n\t\t// session closes but the binding stays, so coming back to the same model\n\t\t// reattaches at the recorded prefix instead of re-sending the whole\n\t\t// conversation (senpi#1747). Identity drift still flattens on the way back.\n\t\tif (event.model?.provider !== ANTHROPIC_SUBSCRIPTION_PROVIDER_ID) {\n\t\t\tkeepBindingThenClose(sessionId, \"model_selected\");\n\t\t\treturn;\n\t\t}\n\t\tif (!(await switchSessionModel(sessionId, event.model.id))) {\n\t\t\tkeepBindingThenClose(sessionId, \"model_selected\");\n\t\t}\n\t});\n\tpi.on(\"thinking_level_select\", (_event, ctx) => {\n\t\tkeepBindingThenClose(ctx.sessionManager.getSessionId(), \"thinking_level_selected\");\n\t});\n\tpi.on(\"message_update\", (event, ctx) => {\n\t\tif (event.message.role !== \"assistant\") return;\n\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\tif (residentEntryFor(sessionId, event.message)) {\n\t\t\tcommitBoundary.captureProviderFinal(sessionId, event.message);\n\t\t}\n\t});\n\tpi.on(\"message_end\", async (event, ctx) => {\n\t\tif (event.message.role !== \"assistant\") return;\n\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\tconst entry = getSession(sessionId);\n\t\tconst binding = getBinding(sessionId);\n\t\tconst modelId = entry?.modelId ?? binding?.modelId;\n\t\tif (!modelId) return;\n\t\tif (isTerminalFailure(event.message)) {\n\t\t\tcommitBoundary.forget(sessionId);\n\t\t\treturn;\n\t\t}\n\t\tconst outcome = commitBoundary.commit(sessionId, event.message, modelId);\n\t\tif (outcome === \"rewritten\") {\n\t\t\trecordPendingFork(sessionId, \"assistant_rewritten\");\n\t\t\tawait invalidateBinding(pi, ctx, \"assistant_rewritten\");\n\t\t\treturn;\n\t\t}\n\t\t// Only an assistant this provider actually produced may anchor a record.\n\t\tif (outcome !== \"clean\") return;\n\t\tconst sessionFile = ctx.sessionManager.getSessionFile?.();\n\t\tif (!sessionFile || !pi.appendEntry) return;\n\t\tconst context = ctx.sessionManager.buildSessionContext();\n\t\tconst hashes = sentMessageHashes(sentMessages({ ...context, messages: convertToLlm(context.messages) }));\n\t\tconst committedAssistantHash = assistantContentHash(event.message);\n\t\tconst recordFor = (markerEntryId: string) => {\n\t\t\tconst anchor = {\n\t\t\t\tsessionPath: sessionFile,\n\t\t\t\tsessionId,\n\t\t\t\tmarkerEntryId,\n\t\t\t\tassistantContentHash: committedAssistantHash,\n\t\t\t};\n\t\t\treturn entry\n\t\t\t\t? storedBindingFromEntry(entry, hashes, anchor)\n\t\t\t\t: binding\n\t\t\t\t\t? storedBindingFromBinding(binding, hashes, anchor)\n\t\t\t\t\t: undefined;\n\t\t};\n\t\t// Validate before touching the branch: a rejected closed-entry fallback must\n\t\t// not leave a marker-only entry that retires the still-valid older sidecar.\n\t\tif (!recordFor(\"pending\")) return;\n\t\tpi.appendEntry(BINDING_ENTRY_TYPE, BINDING_MARKER);\n\t\t// The marker is now the newest ledger record, so any earlier cause is retired.\n\t\trememberBindingInvalidation(sessionId, undefined);\n\t\tconst markerEntryId = ctx.sessionManager.getLeafId();\n\t\tif (!markerEntryId) return;\n\t\tconst stored = recordFor(markerEntryId);\n\t\tif (!stored) return;\n\t\tawait writeStoredBinding(sessionFile, stored);\n\t});\n\tpi.on(\"session_shutdown\", (event, ctx) => {\n\t\tcloseSession(ctx.sessionManager.getSessionId(), event.reason);\n\t});\n\tpi.on(\"session_extensions_removed\", async (_event, ctx) => {\n\t\tcloseSession(ctx.sessionManager.getSessionId(), \"extensions_removed\");\n\t\tawait invalidateBinding(pi, ctx, \"extensions_removed\");\n\t});\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { AccountSlot } from "./accounts.ts";
2
2
  import type { Options, SDKUserMessage, SdkQuery, SdkQueryHandle } from "./sdk-boundary.ts";
3
3
  import { type SessionRegistryReapHandle } from "./session-reaper.ts";
4
- import { type ClaudeSdkOauthSessionState } from "./session-registry-state.ts";
4
+ import { type AnthropicSubscriptionSessionState } from "./session-registry-state.ts";
5
5
  export declare const SESSION_REGISTRY_IDLE_TTL_MS: number;
6
6
  export declare const SESSION_REGISTRY_MAX_ENTRIES = 32;
7
7
  export interface SessionInputController extends AsyncIterable<SDKUserMessage> {
@@ -20,7 +20,7 @@ export type SessionBranchInfo = {
20
20
  oldLeafId: string;
21
21
  newLeafId: string;
22
22
  };
23
- export interface ClaudeSdkOauthSessionEntry {
23
+ export interface AnthropicSubscriptionSessionEntry {
24
24
  senpiSessionId: string;
25
25
  sdkSessionId: string;
26
26
  sdkSessionIdConfirmed: boolean;
@@ -32,7 +32,7 @@ export interface ClaudeSdkOauthSessionEntry {
32
32
  query: SdkQueryHandle;
33
33
  inputController: SessionInputController;
34
34
  pumpTask: Promise<void> | null;
35
- state: ClaudeSdkOauthSessionState;
35
+ state: AnthropicSubscriptionSessionState;
36
36
  activeTurn: unknown | null;
37
37
  syncedPrefixHash: string | null;
38
38
  sentCount: number;
@@ -60,7 +60,7 @@ export declare class SessionRegistryResourceLimitError extends Error {
60
60
  constructor();
61
61
  }
62
62
  export declare function createSessionUuid(now?: number): `${string}-${string}-${string}-${string}-${string}`;
63
- export declare class ClaudeSdkOauthSessionRegistry {
63
+ export declare class AnthropicSubscriptionSessionRegistry {
64
64
  private readonly entries;
65
65
  /**
66
66
  * Monotonic per-registry generation counter. Numbers are never reused for
@@ -73,24 +73,24 @@ export declare class ClaudeSdkOauthSessionRegistry {
73
73
  private generationCounter;
74
74
  private readonly reaper;
75
75
  get size(): number;
76
- get(senpiSessionId: string): ClaudeSdkOauthSessionEntry | undefined;
77
- getOrCreate(input: CreateSessionRegistryEntryInput): ClaudeSdkOauthSessionEntry;
78
- touch(entry: ClaudeSdkOauthSessionEntry): void;
76
+ get(senpiSessionId: string): AnthropicSubscriptionSessionEntry | undefined;
77
+ getOrCreate(input: CreateSessionRegistryEntryInput): AnthropicSubscriptionSessionEntry;
78
+ touch(entry: AnthropicSubscriptionSessionEntry): void;
79
79
  closeSession(senpiSessionId: string, reason: string): void;
80
80
  isCurrentGeneration(senpiSessionId: string, generation: number): boolean;
81
81
  evictExpired(): void;
82
82
  private recordUse;
83
83
  private ensureCapacity;
84
84
  }
85
- export declare const sessionRegistry: ClaudeSdkOauthSessionRegistry;
86
- export declare function getOrCreateSession(input: CreateSessionRegistryEntryInput): ClaudeSdkOauthSessionEntry;
87
- export declare function getSession(senpiSessionId: string): ClaudeSdkOauthSessionEntry | undefined;
85
+ export declare const sessionRegistry: AnthropicSubscriptionSessionRegistry;
86
+ export declare function getOrCreateSession(input: CreateSessionRegistryEntryInput): AnthropicSubscriptionSessionEntry;
87
+ export declare function getSession(senpiSessionId: string): AnthropicSubscriptionSessionEntry | undefined;
88
88
  export declare function closeSession(senpiSessionId: string, reason: string): void;
89
- export declare function isIdleExpired(entry: Pick<ClaudeSdkOauthSessionEntry, "lastUsedAt">): boolean;
89
+ export declare function isIdleExpired(entry: Pick<AnthropicSubscriptionSessionEntry, "lastUsedAt">): boolean;
90
90
  export declare function markTainted(senpiSessionId: string, reason: string): void;
91
91
  export declare function switchSessionModel(senpiSessionId: string, modelId: string): Promise<boolean>;
92
92
  export declare function recordPendingFork(senpiSessionId: string, reason: string): void;
93
93
  export declare function recordBranchInfo(senpiSessionId: string, info: SessionBranchInfo): void;
94
94
  export declare function isCurrentGeneration(senpiSessionId: string, generation: number): boolean;
95
- export declare function isBoundAccountTokenExpiring(entry: Pick<ClaudeSdkOauthSessionEntry, "accountName">, accounts: readonly Pick<AccountSlot, "name" | "expires" | "source">[]): boolean;
95
+ export declare function isBoundAccountTokenExpiring(entry: Pick<AnthropicSubscriptionSessionEntry, "accountName">, accounts: readonly Pick<AccountSlot, "name" | "expires" | "source">[]): boolean;
96
96
  //# sourceMappingURL=session-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { getSdkBoundary } from "./sdk-boundary.js";
4
4
  import { annotateBranchInfo, annotatePendingFork, annotateTainted, switchEntryModel, } from "./session-entry-annotations.js";
5
5
  import { recordPendingCloseCause } from "./session-observability.js";
6
6
  import { SessionReapScheduler } from "./session-reaper.js";
7
- import { transitionToClosed, transitionToClosing } from "./session-registry-state.js";
7
+ import { transitionToClosed, transitionToClosing, } from "./session-registry-state.js";
8
8
  export const SESSION_REGISTRY_IDLE_TTL_MS = 30 * 60_000;
9
9
  export const SESSION_REGISTRY_MAX_ENTRIES = 32;
10
10
  class StreamingInputController {
@@ -58,7 +58,7 @@ export function resetSessionRegistryBoundary() {
58
58
  }
59
59
  export class SessionRegistryResourceLimitError extends Error {
60
60
  constructor() {
61
- super(`Claude SDK OAuth session registry is at its ${SESSION_REGISTRY_MAX_ENTRIES}-entry limit with no idle session to evict`);
61
+ super(`Anthropic Subscription session registry is at its ${SESSION_REGISTRY_MAX_ENTRIES}-entry limit with no idle session to evict`);
62
62
  this.code = "session_registry_capacity";
63
63
  this.name = "SessionRegistryResourceLimitError";
64
64
  }
@@ -84,7 +84,7 @@ export function createSessionUuid(now = Date.now()) {
84
84
  function evictable(entry) {
85
85
  return (entry.state === "IDLE_SYNCED" || entry.state === "TAINTED") && entry.activeTurn === null;
86
86
  }
87
- export class ClaudeSdkOauthSessionRegistry {
87
+ export class AnthropicSubscriptionSessionRegistry {
88
88
  constructor() {
89
89
  this.entries = new Map();
90
90
  /**
@@ -230,7 +230,7 @@ export class ClaudeSdkOauthSessionRegistry {
230
230
  this.closeSession(oldest.senpiSessionId, "capacity");
231
231
  }
232
232
  }
233
- export const sessionRegistry = new ClaudeSdkOauthSessionRegistry();
233
+ export const sessionRegistry = new AnthropicSubscriptionSessionRegistry();
234
234
  export function getOrCreateSession(input) {
235
235
  return sessionRegistry.getOrCreate(input);
236
236
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from \"node:crypto\";\nimport type { AccountSlot } from \"./accounts.ts\";\nimport { EXPIRING_WITHIN_MS } from \"./auth-lane.ts\";\nimport type { Options, SDKUserMessage, SdkQuery, SdkQueryHandle } from \"./sdk-boundary.ts\";\nimport { getSdkBoundary } from \"./sdk-boundary.ts\";\nimport {\n\tannotateBranchInfo,\n\tannotatePendingFork,\n\tannotateTainted,\n\tswitchEntryModel,\n} from \"./session-entry-annotations.ts\";\nimport { recordPendingCloseCause } from \"./session-observability.ts\";\nimport { SessionReapScheduler, type SessionRegistryReapHandle } from \"./session-reaper.ts\";\nimport {\n\ttype AnthropicSubscriptionSessionState,\n\ttransitionToClosed,\n\ttransitionToClosing,\n} from \"./session-registry-state.ts\";\n\nexport const SESSION_REGISTRY_IDLE_TTL_MS = 30 * 60_000;\nexport const SESSION_REGISTRY_MAX_ENTRIES = 32;\n\nexport interface SessionInputController extends AsyncIterable<SDKUserMessage> {\n\tpush(message: SDKUserMessage): void;\n\tclose(): void;\n}\n\nclass StreamingInputController implements SessionInputController, AsyncIterator<SDKUserMessage> {\n\tprivate closed = false;\n\tprivate readonly pending: SDKUserMessage[] = [];\n\tprivate readonly readers: Array<(result: IteratorResult<SDKUserMessage>) => void> = [];\n\n\t[Symbol.asyncIterator](): AsyncIterator<SDKUserMessage> {\n\t\treturn this;\n\t}\n\n\tnext(): Promise<IteratorResult<SDKUserMessage>> {\n\t\tconst message = this.pending.shift();\n\t\tif (message) return Promise.resolve({ value: message, done: false });\n\t\tif (this.closed) return Promise.resolve({ value: undefined, done: true });\n\t\treturn new Promise((resolve) => this.readers.push(resolve));\n\t}\n\n\tpush(message: SDKUserMessage): void {\n\t\tif (this.closed) throw new Error(\"Cannot push to a closed session input controller\");\n\t\tconst reader = this.readers.shift();\n\t\tif (reader) reader({ value: message, done: false });\n\t\telse this.pending.push(message);\n\t}\n\n\tclose(): void {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tfor (const reader of this.readers.splice(0)) reader({ value: undefined, done: true });\n\t}\n}\n\nexport type SessionRegistryBoundary = {\n\tnow: () => number;\n\tqueryFactory: SdkQuery;\n\tscheduleReap: (callback: () => void, delayMs: number) => SessionRegistryReapHandle;\n};\n\nconst defaultSessionRegistryBoundary: SessionRegistryBoundary = {\n\tnow: () => Date.now(),\n\tqueryFactory: (input) => getSdkBoundary().query(input),\n\tscheduleReap: (callback, delayMs) => {\n\t\tconst timer = setTimeout(callback, delayMs);\n\t\treturn { cancel: () => clearTimeout(timer), unref: () => timer.unref() };\n\t},\n};\nlet activeSessionRegistryBoundary = defaultSessionRegistryBoundary;\n\nexport function overrideSessionRegistryBoundary(override: Partial<SessionRegistryBoundary>): void {\n\tactiveSessionRegistryBoundary = { ...defaultSessionRegistryBoundary, ...override };\n}\n\nexport function resetSessionRegistryBoundary(): void {\n\tactiveSessionRegistryBoundary = defaultSessionRegistryBoundary;\n}\n\nexport type { SessionRegistryReapHandle };\n\nexport type SessionBranchInfo = { oldLeafId: string; newLeafId: string };\n\nexport interface AnthropicSubscriptionSessionEntry {\n\tsenpiSessionId: string;\n\tsdkSessionId: string;\n\tsdkSessionIdConfirmed: boolean;\n\tgeneration: number;\n\taccountName: string;\n\tmodelId: string;\n\ttoolsetHash: string;\n\tsystemPromptHash: string;\n\tquery: SdkQueryHandle;\n\tinputController: SessionInputController;\n\tpumpTask: Promise<void> | null;\n\tstate: AnthropicSubscriptionSessionState;\n\tactiveTurn: unknown | null;\n\tsyncedPrefixHash: string | null;\n\tsentCount: number;\n\tassistantUuidByIndex: Map<number, string>;\n\tbranchInfo: SessionBranchInfo | null;\n\ttaintedReason: string | null;\n\t/** Wave C seam: a divergence boundary recorded for the next continuity decision. */\n\tpendingForkReason: string | null;\n\tlastUsedAt: number;\n}\n\nexport interface CreateSessionRegistryEntryInput {\n\tsenpiSessionId: string;\n\taccountName: string;\n\tmodelId: string;\n\ttoolsetHash: string;\n\tsystemPromptHash: string;\n\toptions: Options;\n\tresume?: { sdkSessionId: string; atUuid?: string };\n}\n\nexport class SessionRegistryResourceLimitError extends Error {\n\treadonly code = \"session_registry_capacity\";\n\n\tconstructor() {\n\t\tsuper(\n\t\t\t`Anthropic Subscription session registry is at its ${SESSION_REGISTRY_MAX_ENTRIES}-entry limit with no idle session to evict`,\n\t\t);\n\t\tthis.name = \"SessionRegistryResourceLimitError\";\n\t}\n}\n\nexport function createSessionUuid(now = Date.now()): `${string}-${string}-${string}-${string}-${string}` {\n\tconst ts = BigInt(Math.trunc(now));\n\tconst bytes = randomBytes(10);\n\tconst hex = [\n\t\t((ts >> 40n) & 0xffn).toString(16).padStart(2, \"0\"),\n\t\t((ts >> 32n) & 0xffn).toString(16).padStart(2, \"0\"),\n\t\t((ts >> 24n) & 0xffn).toString(16).padStart(2, \"0\"),\n\t\t((ts >> 16n) & 0xffn).toString(16).padStart(2, \"0\"),\n\t\t((ts >> 8n) & 0xffn).toString(16).padStart(2, \"0\"),\n\t\t(ts & 0xffn).toString(16).padStart(2, \"0\"),\n\t\t(0x70 | (bytes[0]! & 0x0f)).toString(16).padStart(2, \"0\"),\n\t\tbytes[1]!.toString(16).padStart(2, \"0\"),\n\t\t(0x80 | (bytes[2]! & 0x3f)).toString(16).padStart(2, \"0\"),\n\t\tbytes[3]!.toString(16).padStart(2, \"0\"),\n\t\t...Array.from(bytes.slice(4), (byte) => byte.toString(16).padStart(2, \"0\")),\n\t].join(\"\");\n\treturn `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;\n}\n\nfunction evictable(entry: AnthropicSubscriptionSessionEntry): boolean {\n\treturn (entry.state === \"IDLE_SYNCED\" || entry.state === \"TAINTED\") && entry.activeTurn === null;\n}\n\nexport class AnthropicSubscriptionSessionRegistry {\n\tprivate readonly entries = new Map<string, AnthropicSubscriptionSessionEntry>();\n\t/**\n\t * Monotonic per-registry generation counter. Numbers are never reused for\n\t * a session id, so stale async work gated on `isCurrentGeneration` cannot be\n\t * mistaken for current after a close/reopen cycle. A per-id map of last-used\n\t * numbers would grow once per distinct session id for process lifetime;\n\t * this counter provides the same (stronger, process-wide) uniqueness with no\n\t * residue at all.\n\t */\n\tprivate generationCounter = 0;\n\tprivate readonly reaper = new SessionReapScheduler({\n\t\tnow: () => activeSessionRegistryBoundary.now(),\n\t\tscheduleTimer: (callback, delayMs) => activeSessionRegistryBoundary.scheduleReap(callback, delayMs),\n\t\tidleTtlMs: SESSION_REGISTRY_IDLE_TTL_MS,\n\t\tcandidate: (senpiSessionId, generation) => {\n\t\t\tconst entry = this.entries.get(senpiSessionId);\n\t\t\tif (!entry || entry.generation !== generation || !evictable(entry)) return undefined;\n\t\t\treturn { generation: entry.generation, lastUsedAt: entry.lastUsedAt };\n\t\t},\n\t\texpire: (senpiSessionId) => this.closeSession(senpiSessionId, \"idle_ttl\"),\n\t});\n\n\tget size(): number {\n\t\treturn this.entries.size;\n\t}\n\n\tget(senpiSessionId: string): AnthropicSubscriptionSessionEntry | undefined {\n\t\treturn this.entries.get(senpiSessionId);\n\t}\n\n\tgetOrCreate(input: CreateSessionRegistryEntryInput): AnthropicSubscriptionSessionEntry {\n\t\tconst existing = this.entries.get(input.senpiSessionId);\n\t\tif (existing) {\n\t\t\tconst now = activeSessionRegistryBoundary.now();\n\t\t\tif (!evictable(existing) || now - existing.lastUsedAt < SESSION_REGISTRY_IDLE_TTL_MS) {\n\t\t\t\tthis.touch(existing);\n\t\t\t\treturn existing;\n\t\t\t}\n\t\t\tthis.closeSession(existing.senpiSessionId, \"idle_ttl\");\n\t\t}\n\t\tthis.evictExpired();\n\t\tthis.ensureCapacity();\n\t\tconst now = activeSessionRegistryBoundary.now();\n\t\tconst generation = ++this.generationCounter;\n\t\tconst sdkSessionId = input.resume?.sdkSessionId ?? createSessionUuid(now);\n\t\tconst inputController = new StreamingInputController();\n\t\tconst lineageOptions = input.resume\n\t\t\t? {\n\t\t\t\t\tresume: input.resume.sdkSessionId,\n\t\t\t\t\t...(input.resume.atUuid ? { resumeSessionAt: input.resume.atUuid, forkSession: true } : {}),\n\t\t\t\t}\n\t\t\t: { sessionId: sdkSessionId };\n\t\tconst query = activeSessionRegistryBoundary.queryFactory({\n\t\t\tprompt: inputController,\n\t\t\toptions: {\n\t\t\t\t...input.options,\n\t\t\t\t...lineageOptions,\n\t\t\t\textraArgs: { ...input.options.extraArgs, \"replay-user-messages\": \"\" },\n\t\t\t},\n\t\t});\n\t\tconst { resume: _resume, ...entryInput } = input;\n\t\tconst target: AnthropicSubscriptionSessionEntry = {\n\t\t\t...entryInput,\n\t\t\tsdkSessionId,\n\t\t\tsdkSessionIdConfirmed: input.resume !== undefined,\n\t\t\tgeneration,\n\t\t\tquery,\n\t\t\tinputController,\n\t\t\tpumpTask: null,\n\t\t\tstate: \"STARTING\",\n\t\t\tactiveTurn: null,\n\t\t\tsyncedPrefixHash: null,\n\t\t\tsentCount: 0,\n\t\t\tassistantUuidByIndex: new Map(),\n\t\t\tbranchInfo: null,\n\t\t\ttaintedReason: null,\n\t\t\tpendingForkReason: null,\n\t\t\tlastUsedAt: now,\n\t\t};\n\t\tlet entry!: AnthropicSubscriptionSessionEntry;\n\t\tentry = new Proxy(target, {\n\t\t\tset: (current, property, value) => {\n\t\t\t\tif (this.entries.get(current.senpiSessionId) !== entry) return true;\n\t\t\t\tconst previousTurn = current.activeTurn;\n\t\t\t\tReflect.set(current, property, value);\n\t\t\t\tif (property === \"activeTurn\" && previousTurn !== value) {\n\t\t\t\t\tthis.recordUse(entry, value === null);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\t\tthis.entries.set(input.senpiSessionId, entry);\n\t\treturn entry;\n\t}\n\n\ttouch(entry: AnthropicSubscriptionSessionEntry): void {\n\t\tthis.recordUse(entry, entry.activeTurn === null && evictable(entry));\n\t}\n\n\tcloseSession(senpiSessionId: string, reason: string): void {\n\t\tconst entry = this.entries.get(senpiSessionId);\n\t\tif (!entry) return;\n\t\trecordPendingCloseCause(senpiSessionId, reason);\n\t\tthis.reaper.cancel(senpiSessionId, entry.generation);\n\t\ttransitionToClosing(entry);\n\t\tentry.inputController.close();\n\t\ttry {\n\t\t\tentry.query.close();\n\t\t} finally {\n\t\t\ttransitionToClosed(entry);\n\t\t\tthis.reaper.cancel(senpiSessionId, entry.generation);\n\t\t\tthis.entries.delete(senpiSessionId);\n\t\t}\n\t}\n\n\tisCurrentGeneration(senpiSessionId: string, generation: number): boolean {\n\t\treturn this.entries.get(senpiSessionId)?.generation === generation;\n\t}\n\n\tevictExpired(): void {\n\t\tconst now = activeSessionRegistryBoundary.now();\n\t\tfor (const entry of [...this.entries.values()]) {\n\t\t\tif (evictable(entry) && now - entry.lastUsedAt >= SESSION_REGISTRY_IDLE_TTL_MS) {\n\t\t\t\tthis.closeSession(entry.senpiSessionId, \"idle_ttl\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate recordUse(entry: AnthropicSubscriptionSessionEntry, scheduleReap: boolean): void {\n\t\tif (this.entries.get(entry.senpiSessionId) !== entry) return;\n\t\tentry.lastUsedAt = activeSessionRegistryBoundary.now();\n\t\tthis.reaper.cancel(entry.senpiSessionId, entry.generation);\n\t\tif (scheduleReap) this.reaper.arm(entry.senpiSessionId, entry.generation);\n\t}\n\n\tprivate ensureCapacity(): void {\n\t\tif (this.entries.size < SESSION_REGISTRY_MAX_ENTRIES) return;\n\t\tconst oldest = [...this.entries.values()]\n\t\t\t.filter(evictable)\n\t\t\t.sort((left, right) => left.lastUsedAt - right.lastUsedAt)[0];\n\t\tif (!oldest) throw new SessionRegistryResourceLimitError();\n\t\tthis.closeSession(oldest.senpiSessionId, \"capacity\");\n\t}\n}\n\nexport const sessionRegistry = new AnthropicSubscriptionSessionRegistry();\n\nexport function getOrCreateSession(input: CreateSessionRegistryEntryInput): AnthropicSubscriptionSessionEntry {\n\treturn sessionRegistry.getOrCreate(input);\n}\n\nexport function getSession(senpiSessionId: string): AnthropicSubscriptionSessionEntry | undefined {\n\treturn sessionRegistry.get(senpiSessionId);\n}\n\nexport function closeSession(senpiSessionId: string, reason: string): void {\n\tsessionRegistry.closeSession(senpiSessionId, reason);\n}\n\nexport function isIdleExpired(entry: Pick<AnthropicSubscriptionSessionEntry, \"lastUsedAt\">): boolean {\n\treturn activeSessionRegistryBoundary.now() - entry.lastUsedAt >= SESSION_REGISTRY_IDLE_TTL_MS;\n}\n\nexport function markTainted(senpiSessionId: string, reason: string): void {\n\tannotateTainted(sessionRegistry, senpiSessionId, reason);\n}\n\nexport async function switchSessionModel(senpiSessionId: string, modelId: string): Promise<boolean> {\n\treturn switchEntryModel(sessionRegistry, senpiSessionId, modelId);\n}\n\nexport function recordPendingFork(senpiSessionId: string, reason: string): void {\n\tannotatePendingFork(sessionRegistry, senpiSessionId, reason);\n}\n\nexport function recordBranchInfo(senpiSessionId: string, info: SessionBranchInfo): void {\n\tannotateBranchInfo(sessionRegistry, senpiSessionId, info);\n}\n\nexport function isCurrentGeneration(senpiSessionId: string, generation: number): boolean {\n\treturn sessionRegistry.isCurrentGeneration(senpiSessionId, generation);\n}\n\nexport function isBoundAccountTokenExpiring(\n\tentry: Pick<AnthropicSubscriptionSessionEntry, \"accountName\">,\n\taccounts: readonly Pick<AccountSlot, \"name\" | \"expires\" | \"source\">[],\n): boolean {\n\tconst account = accounts.find((candidate) => candidate.name === entry.accountName);\n\treturn account?.source !== \"env\" && account !== undefined\n\t\t? activeSessionRegistryBoundary.now() >= account.expires - EXPIRING_WITHIN_MS\n\t\t: false;\n}\n"]}
@@ -1,8 +1,8 @@
1
- import type { ClaudeSdkOauthAuthLane } from "./options.ts";
1
+ import type { AnthropicSubscriptionAuthLane } from "./options.ts";
2
2
  import { type ContinuityBinding } from "./session-reattach.ts";
3
3
  export type RestoredBindingAdmission = {
4
4
  readonly binding: ContinuityBinding | undefined;
5
5
  readonly transcriptAvailable: boolean;
6
6
  };
7
- export declare function admitRestoredBinding(sessionId: string, cwd: string | undefined, authLane: ClaudeSdkOauthAuthLane): Promise<RestoredBindingAdmission>;
7
+ export declare function admitRestoredBinding(sessionId: string, cwd: string | undefined, authLane: AnthropicSubscriptionAuthLane): Promise<RestoredBindingAdmission>;
8
8
  //# sourceMappingURL=session-restored-admission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-restored-admission.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-restored-admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,KAAK,iBAAiB,EAAuD,MAAM,uBAAuB,CAAC;AAEpH,MAAM,MAAM,wBAAwB,GAAG;IACtC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,wBAAsB,oBAAoB,CACzC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,6BAA6B,GACrC,OAAO,CAAC,wBAAwB,CAAC,CAMnC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-restored-admission.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-restored-admission.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,aAAa,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAOpH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,SAAiB,EACjB,GAAuB,EACvB,QAAuC;IAEvC,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,OAAO,EAAE,cAAc,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACzF,MAAM,mBAAmB,GAAG,GAAG,KAAK,SAAS,IAAI,CAAC,MAAM,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1G,IAAI,CAAC,mBAAmB;QAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AACzC,CAAC","sourcesContent":["import type { AnthropicSubscriptionAuthLane } from \"./options.ts\";\nimport { type ContinuityBinding, forgetBinding, getBinding, verifyRestoredTranscript } from \"./session-reattach.ts\";\n\nexport type RestoredBindingAdmission = {\n\treadonly binding: ContinuityBinding | undefined;\n\treadonly transcriptAvailable: boolean;\n};\n\nexport async function admitRestoredBinding(\n\tsessionId: string,\n\tcwd: string | undefined,\n\tauthLane: AnthropicSubscriptionAuthLane,\n): Promise<RestoredBindingAdmission> {\n\tconst binding = getBinding(sessionId);\n\tif (binding?.sentPrefixHash === undefined) return { binding, transcriptAvailable: true };\n\tconst transcriptAvailable = cwd !== undefined && (await verifyRestoredTranscript(binding, cwd, authLane));\n\tif (!transcriptAvailable) forgetBinding(sessionId);\n\treturn { binding, transcriptAvailable };\n}\n"]}
@@ -2,12 +2,12 @@ import type { Api, Context, Model, SimpleStreamOptions } from "@earendil-works/p
2
2
  import { queryWithAuthLane } from "./auth-lane.ts";
3
3
  import type { SDKMessage } from "./sdk-boundary.ts";
4
4
  import { type ContinuityObservation } from "./session-observability.ts";
5
- import type { ClaudeSdkOauthProviderSettings } from "./settings.ts";
5
+ import type { AnthropicSubscriptionProviderSettings } from "./settings.ts";
6
6
  export type ResidentSessionStreamInput = {
7
7
  model: Model<Api>;
8
8
  context: Context;
9
9
  streamOptions: SimpleStreamOptions;
10
- providerSettings: ClaudeSdkOauthProviderSettings;
10
+ providerSettings: AnthropicSubscriptionProviderSettings;
11
11
  pinnedAccount?: string;
12
12
  buildOptions: Parameters<typeof queryWithAuthLane>[0]["buildOptions"];
13
13
  customToolNameToSdk: ReadonlyMap<string, string>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAkC,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnF,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EACN,KAAK,qBAAqB,EAM1B,MAAM,4BAA4B,CAAC;AAkBpC,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,eAAe,CAAC;AAE3E,MAAM,MAAM,0BAA0B,GAAG;IACxC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,mBAAmB,CAAC;IACnC,gBAAgB,EAAE,qCAAqC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACtE,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACpE,CAAC;AAkJF,wBAAuB,uBAAuB,CAAC,KAAK,EAAE,0BAA0B,GAAG,cAAc,CAAC,UAAU,CAAC,CAW5G"}
@@ -84,7 +84,7 @@ async function createResidentAttempt(input, auth) {
84
84
  : undefined;
85
85
  try {
86
86
  if (!binding)
87
- throw new Error("Claude SDK OAuth continuity binding is unavailable");
87
+ throw new Error("Anthropic Subscription continuity binding is unavailable");
88
88
  entry = await reattachSession({
89
89
  binding,
90
90
  options: auth.options,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-stream.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-stream.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Context, Model, SimpleStreamOptions } from \"@earendil-works/pi-ai\";\nimport { type AuthenticatedAttemptInput, queryWithAuthLane } from \"./auth-lane.ts\";\nimport { buildPromptBlocks } from \"./prompt-bridge.ts\";\nimport { dedupeUltraworkBlocks, serializedPayloadBytes } from \"./prompt-directive-dedupe.ts\";\nimport type { SDKMessage, SDKUserMessage } from \"./sdk-boundary.ts\";\nimport { getSdkBoundary } from \"./sdk-boundary.ts\";\nimport { type ContinuityDecision, decideNativeContinuity } from \"./session-continuity.ts\";\nimport {\n\ttype ContinuityObservation,\n\tconsumePendingCloseCause,\n\temitContinuityObservation,\n\tobserveSessionSyncDecision,\n\tsanitizeTerminalFailure,\n\tstageContinuityDecision,\n} from \"./session-observability.ts\";\nimport { bindingFromEntry, bindingInvalidationReason, getBinding, reattachSession } from \"./session-reattach.ts\";\nimport {\n\ttype AnthropicSubscriptionSessionEntry,\n\tcloseSession,\n\tgetOrCreateSession,\n\tgetSession,\n\tisIdleExpired,\n} from \"./session-registry.ts\";\nimport { admitRestoredBinding } from \"./session-restored-admission.ts\";\nimport {\n\tbuildDeltaPromptBlocks,\n\tconfigFingerprint,\n\tsentHashesForEntry,\n\tsentMessageHashes,\n\tsentMessages,\n} from \"./session-sync.ts\";\nimport { createSessionTurnAttempt } from \"./session-turn-attempt.ts\";\nimport type { AnthropicSubscriptionProviderSettings } from \"./settings.ts\";\n\nexport type ResidentSessionStreamInput = {\n\tmodel: Model<Api>;\n\tcontext: Context;\n\tstreamOptions: SimpleStreamOptions;\n\tproviderSettings: AnthropicSubscriptionProviderSettings;\n\tpinnedAccount?: string;\n\tbuildOptions: Parameters<typeof queryWithAuthLane>[0][\"buildOptions\"];\n\tcustomToolNameToSdk: ReadonlyMap<string, string>;\n\ttoolWatchNote?: string;\n\tonResumeFallback: (error: unknown) => void;\n\tonContinuityDecision?: (observation: ContinuityObservation) => void;\n};\n\nfunction userMessage(content: SDKUserMessage[\"message\"][\"content\"]): SDKUserMessage[\"message\"] {\n\treturn { role: \"user\", content } as SDKUserMessage[\"message\"];\n}\n\nconst OBSERVED_KIND: Record<ContinuityDecision[\"kind\"], \"incremental\" | \"resume\" | \"cold-seed\"> = {\n\tdelta: \"incremental\",\n\treattach: \"resume\",\n\tfork: \"resume\",\n\tflatten: \"cold-seed\",\n\tbootstrap: \"cold-seed\",\n};\n\nfunction contextHasPriorAssistantMessage(context: Context): boolean {\n\treturn context.messages.some((message) => message.role === \"assistant\");\n}\n\nfunction entrySnapshot(entry: AnthropicSubscriptionSessionEntry, hashes: readonly string[]) {\n\treturn {\n\t\tsdkSessionId: entry.sdkSessionId,\n\t\taccountName: entry.accountName,\n\t\tmodelId: entry.modelId,\n\t\tsystemPromptHash: entry.systemPromptHash,\n\t\ttoolsetHash: entry.toolsetHash,\n\t\tsentCount: entry.sentCount,\n\t\tsentHashes: hashes.slice(0, entry.sentCount),\n\t\tlastAssistantUuid: entry.assistantUuidByIndex.get(entry.sentCount) ?? null,\n\t\tassistantUuidByIndex: entry.assistantUuidByIndex,\n\t\tpendingForkReason: entry.pendingForkReason,\n\t\ttaintedReason: entry.taintedReason,\n\t};\n}\n\nasync function createResidentAttempt(\n\tinput: ResidentSessionStreamInput,\n\tauth: AuthenticatedAttemptInput,\n): Promise<ReturnType<typeof createSessionTurnAttempt>> {\n\tconst sessionId = input.streamOptions.sessionId!;\n\tconst messages = sentMessages(input.context);\n\tconst hashes = sentMessageHashes(messages);\n\tconst existing = getSession(sessionId);\n\tconst fingerprint = configFingerprint(auth.options, input.context, auth.authLane, auth.accountName);\n\tconst residentHashes = existing ? (sentHashesForEntry(existing) ?? hashes) : hashes;\n\tconst { binding, transcriptAvailable } = await admitRestoredBinding(sessionId, auth.options.cwd, auth.authLane);\n\tconst decision = decideNativeContinuity({\n\t\tentry: existing ? entrySnapshot(existing, residentHashes) : undefined,\n\t\tbinding,\n\t\tcurrentHashes: hashes,\n\t\taccountName: auth.accountName,\n\t\tmodelId: input.model.id,\n\t\tfingerprint,\n\t\ttranscriptAvailable,\n\t\tcrossAccountResumeSupported: auth.authLane !== \"config-dir\",\n\t\tidleExpired: existing ? isIdleExpired(existing) : false,\n\t\tinvalidationReason: bindingInvalidationReason(sessionId),\n\t});\n\tconst firstTurn =\n\t\texisting === undefined && getBinding(sessionId) === undefined && !contextHasPriorAssistantMessage(input.context);\n\tlet observedReason =\n\t\t\"reason\" in decision ? decision.reason : decision.kind === \"bootstrap\" ? \"registry_miss\" : undefined;\n\tlet observedKind: \"incremental\" | \"resume\" | \"cold-seed\" = OBSERVED_KIND[decision.kind];\n\tlet entry: AnthropicSubscriptionSessionEntry;\n\tlet from = 0;\n\tlet flatten = decision.kind === \"flatten\" || decision.kind === \"bootstrap\";\n\n\tif (decision.kind === \"delta\" && existing) {\n\t\tentry = existing;\n\t\tfrom = decision.from;\n\t} else if (decision.kind === \"reattach\" || decision.kind === \"fork\") {\n\t\tconst source = getBinding(sessionId) ?? (existing ? bindingFromEntry(existing, residentHashes) : undefined);\n\t\tconst binding = source\n\t\t\t? (({ sentPrefixHash: _persistedPrefix, ...rest }) => ({\n\t\t\t\t\t...rest,\n\t\t\t\t\tsentCount: decision.from,\n\t\t\t\t\tsentHashes: hashes.slice(0, decision.from),\n\t\t\t\t\tassistantUuidByIndex: (source.assistantUuidByIndex ?? []).filter(([index]) => index <= decision.from),\n\t\t\t\t\taccountName: auth.accountName,\n\t\t\t\t\tmodelId: input.model.id,\n\t\t\t\t\tsystemPromptHash: fingerprint.systemPromptHash,\n\t\t\t\t\ttoolsetHash: fingerprint.toolsetHash,\n\t\t\t\t\t...(decision.kind === \"fork\" ? { lastAssistantUuid: decision.atUuid } : {}),\n\t\t\t\t}))(source)\n\t\t\t: undefined;\n\t\ttry {\n\t\t\tif (!binding) throw new Error(\"Anthropic Subscription continuity binding is unavailable\");\n\t\t\tentry = await reattachSession({\n\t\t\t\tbinding,\n\t\t\t\toptions: auth.options,\n\t\t\t\t...(decision.kind === \"fork\" ? { atUuid: decision.atUuid } : {}),\n\t\t\t\t...(input.streamOptions.signal ? { signal: input.streamOptions.signal } : {}),\n\t\t\t});\n\t\t\tfrom = decision.from;\n\t\t} catch (error) {\n\t\t\tif (input.streamOptions.signal?.aborted) throw error;\n\t\t\tinput.onResumeFallback(error);\n\t\t\tobservedKind = \"cold-seed\";\n\t\t\tobservedReason = \"resume_initialization_failed\";\n\t\t\tflatten = true;\n\t\t\tentry = getOrCreateSession({\n\t\t\t\tsenpiSessionId: sessionId,\n\t\t\t\taccountName: auth.accountName,\n\t\t\t\tmodelId: input.model.id,\n\t\t\t\t...fingerprint,\n\t\t\t\toptions: auth.options,\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif (existing) closeSession(sessionId, observedReason ?? \"registry_miss\");\n\t\tentry = getOrCreateSession({\n\t\t\tsenpiSessionId: sessionId,\n\t\t\taccountName: auth.accountName,\n\t\t\tmodelId: input.model.id,\n\t\t\t...fingerprint,\n\t\t\toptions: auth.options,\n\t\t});\n\t}\n\n\tconst flattenResult = flatten\n\t\t? dedupeUltraworkBlocks(buildPromptBlocks(input.context, input.customToolNameToSdk, input.toolWatchNote))\n\t\t: undefined;\n\tconst blocks = flattenResult\n\t\t? flattenResult.blocks\n\t\t: buildDeltaPromptBlocks(messages.slice(from), input.customToolNameToSdk);\n\tconst payloadBytes = flattenResult ? serializedPayloadBytes(flattenResult.blocks) : undefined;\n\tconst staged = stageContinuityDecision(\n\t\tobserveSessionSyncDecision({\n\t\t\tkind: observedKind,\n\t\t\treason: observedReason,\n\t\t\tdeltaMessages: flatten ? hashes.length : hashes.length - from,\n\t\t\tfirstTurn,\n\t\t\tsenpiSessionId: sessionId,\n\t\t\t...(payloadBytes !== undefined ? { payloadBytes } : {}),\n\t\t\t...(flattenResult?.collapsedDirectives !== undefined\n\t\t\t\t? { collapsedDirectives: flattenResult.collapsedDirectives }\n\t\t\t\t: {}),\n\t\t}),\n\t\tinput.onContinuityDecision,\n\t\t// The pending close cause is consumed only when the staged observation\n\t\t// actually emits (attempt retained) — a discarded attempt leaves the\n\t\t// cause pending for the next admission.\n\t\t() => consumePendingCloseCause(sessionId),\n\t);\n\treturn createSessionTurnAttempt(entry, userMessage(blocks), hashes, input.streamOptions.signal, staged);\n}\n\nexport async function* residentSessionMessages(input: ResidentSessionStreamInput): AsyncGenerator<SDKMessage> {\n\ttry {\n\t\tyield* residentAuthLaneMessages(input);\n\t} catch (error) {\n\t\t// Every attempt failed: the turn yields exactly one terminal observation.\n\t\temitContinuityObservation(\n\t\t\t{ kind: \"flatten\", reason: sanitizeTerminalFailure(error) },\n\t\t\tinput.onContinuityDecision,\n\t\t);\n\t\tthrow error;\n\t}\n}\n\nfunction residentAuthLaneMessages(input: ResidentSessionStreamInput): AsyncIterable<SDKMessage> {\n\treturn queryWithAuthLane({\n\t\tprompt: \"\",\n\t\tquery: getSdkBoundary().query,\n\t\tproviderSettings: input.providerSettings,\n\t\tenv: input.streamOptions.env,\n\t\tsignal: input.streamOptions.signal,\n\t\tsessionId: input.streamOptions.affinitySessionId ?? input.streamOptions.sessionId,\n\t\tpinnedAccount: input.pinnedAccount,\n\t\tbuildOptions: input.buildOptions,\n\t\tcreateAttempt: (auth) => createResidentAttempt(input, auth),\n\t});\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { Context, Message } from "@earendil-works/pi-ai";
2
- import type { ClaudeSdkOauthAuthLane } from "./options.ts";
2
+ import type { AnthropicSubscriptionAuthLane } from "./options.ts";
3
3
  import type { ContentBlockParam, Options } from "./sdk-boundary.ts";
4
- import type { ClaudeSdkOauthSessionEntry } from "./session-registry.ts";
4
+ import type { AnthropicSubscriptionSessionEntry } from "./session-registry.ts";
5
5
  export type SentMessage = Extract<Message, {
6
6
  role: "user" | "toolResult";
7
7
  }>;
@@ -26,8 +26,8 @@ export declare function isTransmittedMessage(message: {
26
26
  export declare function sentMessageHashes(messages: readonly SentMessage[]): string[];
27
27
  export declare function sentHashPrefixDigest(hashes: readonly string[], count?: number): string;
28
28
  /** Pure divergence guard: every non-proven continuation resolves to cold-seed. */
29
- export declare function sentHashesForEntry(entry: ClaudeSdkOauthSessionEntry): readonly string[] | undefined;
30
- export declare function recordSyncedStream(entry: ClaudeSdkOauthSessionEntry, hashes: readonly string[]): void;
31
- export declare function configFingerprint(options: Options, context: Context, authLane: ClaudeSdkOauthAuthLane, accountName: string): SessionConfigFingerprint;
29
+ export declare function sentHashesForEntry(entry: AnthropicSubscriptionSessionEntry): readonly string[] | undefined;
30
+ export declare function recordSyncedStream(entry: AnthropicSubscriptionSessionEntry, hashes: readonly string[]): void;
31
+ export declare function configFingerprint(options: Options, context: Context, authLane: AnthropicSubscriptionAuthLane, accountName: string): SessionConfigFingerprint;
32
32
  export declare function buildDeltaPromptBlocks(messages: readonly SentMessage[], customToolNameToSdk?: ReadonlyMap<string, string>): ContentBlockParam[];
33
33
  //# sourceMappingURL=session-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-sync.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAG/E,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,CAAC,CAAC;AAE5E,MAAM,MAAM,wBAAwB,GAAG;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC;AA4BF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAExD;AAkBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,IAAI,WAAW,CAGtF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,EAAE,CAc5E;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,SAAgB,GAAG,MAAM,CAE7F;AAED,kFAAkF;AAElF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iCAAiC,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAE1G;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iCAAiC,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAM5G;AAiBD,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,6BAA6B,EACvC,WAAW,EAAE,MAAM,GACjB,wBAAwB,CA2B1B;AAaD,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/C,iBAAiB,EAAE,CAarB"}