@code-yeongyu/senpi 2026.7.31 → 2026.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +237 -0
- package/dist/core/agent-session.d.ts +49 -13
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +120 -37
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/dynamic-prompt/build.d.ts.map +1 -1
- package/dist/core/dynamic-prompt/build.js +4 -0
- package/dist/core/dynamic-prompt/build.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js +25 -25
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts +9 -9
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.js +3 -3
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts +21 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js +30 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/auth-lane.d.ts +8 -4
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/auth-lane.js +34 -25
- package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.js +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/errors.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.js +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts +14 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/guidance.js +37 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts +4 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/index.js +12 -10
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts +3 -3
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/oauth-login.js +2 -2
- package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/options.d.ts +18 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/options.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/options.js +70 -10
- package/dist/core/extensions/builtin/claude-sdk-oauth/options.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.js +32 -19
- package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts +30 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js +197 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts +18 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js +33 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts +3 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +134 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts +85 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js +270 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts +17 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js +217 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts +49 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js +204 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts +28 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js +107 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts +2 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js +10 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream.d.ts +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream.js +72 -53
- package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts +3 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js +25 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js.map +1 -0
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.d.ts +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.js +2 -2
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tool-watch.js.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.d.ts.map +1 -1
- package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts +18 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js +69 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +28 -2
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +4 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.js +22 -17
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/task-intent.d.ts +2 -6
- package/dist/core/extensions/builtin/compaction/task-intent.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/task-intent.js +10 -9
- package/dist/core/extensions/builtin/compaction/task-intent.js.map +1 -1
- package/dist/core/extensions/builtin/goal/continuation-recovery.d.ts +6 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.d.ts.map +1 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.js +20 -0
- package/dist/core/extensions/builtin/goal/continuation-recovery.js.map +1 -0
- package/dist/core/extensions/builtin/goal/continuation.d.ts +2 -4
- package/dist/core/extensions/builtin/goal/continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/continuation.js +2 -8
- package/dist/core/extensions/builtin/goal/continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts +19 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.d.ts.map +1 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.js +48 -0
- package/dist/core/extensions/builtin/goal/direct-input-lifecycle.js.map +1 -0
- package/dist/core/extensions/builtin/goal/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/index.js +17 -15
- package/dist/core/extensions/builtin/goal/index.js.map +1 -1
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.js +12 -10
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.js.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts +5 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.js +94 -52
- package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/persistence.d.ts +16 -0
- package/dist/core/extensions/builtin/goal/persistence.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/persistence.js +185 -11
- package/dist/core/extensions/builtin/goal/persistence.js.map +1 -1
- package/dist/core/extensions/builtin/goal/ui.d.ts +1 -0
- package/dist/core/extensions/builtin/goal/ui.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/ui.js +11 -2
- package/dist/core/extensions/builtin/goal/ui.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js +15 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.js +30 -3
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -1
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +5 -2
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/detectors.d.ts +31 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.js +111 -0
- package/dist/core/extensions/builtin/loop-guard/detectors.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/index.d.ts +3 -0
- package/dist/core/extensions/builtin/loop-guard/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/index.js +31 -0
- package/dist/core/extensions/builtin/loop-guard/index.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/notice.d.ts +5 -0
- package/dist/core/extensions/builtin/loop-guard/notice.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/notice.js +42 -0
- package/dist/core/extensions/builtin/loop-guard/notice.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/policy.d.ts +30 -0
- package/dist/core/extensions/builtin/loop-guard/policy.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/policy.js +30 -0
- package/dist/core/extensions/builtin/loop-guard/policy.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.d.ts +4 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.js +50 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.d.ts +13 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.js +51 -0
- package/dist/core/extensions/builtin/loop-guard/similarity.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts +13 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.js +39 -0
- package/dist/core/extensions/builtin/loop-guard/tracker.js.map +1 -0
- package/dist/core/extensions/builtin/monitor-state-event.d.ts +10 -0
- package/dist/core/extensions/builtin/monitor-state-event.d.ts.map +1 -1
- package/dist/core/extensions/builtin/monitor-state-event.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-flash-0731.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-flash-0731.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-flash-0731.js +10 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-flash-0731.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-flash.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-flash.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-flash.js +10 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-flash.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-pro.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-pro.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-pro.js +11 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4-pro.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4.d.ts +13 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4.js +60 -0
- package/dist/core/extensions/builtin/prompt-preset/deepseek-v4.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/index.js +8 -4
- package/dist/core/extensions/builtin/prompt-preset/index.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/presets.js +42 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +1 -1
- package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/settings.js +3 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -1
- package/dist/core/extensions/builtin/recommended-models/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/recommended-models/index.js +2 -1
- package/dist/core/extensions/builtin/recommended-models/index.js.map +1 -1
- package/dist/core/extensions/builtin/rules/index.js +4 -3
- package/dist/core/extensions/builtin/rules/index.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/constants.d.ts +11 -0
- package/dist/core/extensions/builtin/rules/rules/constants.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/constants.js +11 -0
- package/dist/core/extensions/builtin/rules/rules/constants.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.js +15 -1
- package/dist/core/extensions/builtin/rules/rules/formatter.js.map +1 -1
- package/dist/core/extensions/builtin/service-tier.d.ts.map +1 -1
- package/dist/core/extensions/builtin/service-tier.js +23 -21
- package/dist/core/extensions/builtin/service-tier.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/extension.js +21 -7
- package/dist/core/extensions/builtin/terminal/extension.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-notify.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-notify.js +42 -5
- package/dist/core/extensions/builtin/terminal/monitor-notify.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts +2 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.js +2 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts +37 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.js +61 -0
- package/dist/core/extensions/builtin/terminal/monitor-status-ticker.js.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-status.d.ts +9 -1
- package/dist/core/extensions/builtin/terminal/monitor-status.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-status.js +35 -2
- package/dist/core/extensions/builtin/terminal/monitor-status.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/tools/monitor.js +1 -1
- package/dist/core/extensions/builtin/terminal/tools/monitor.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/commands.d.ts +2 -2
- package/dist/core/extensions/builtin/todotools/commands.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/commands.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/index.js +6 -3
- package/dist/core/extensions/builtin/todotools/index.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/state.d.ts +1 -1
- package/dist/core/extensions/builtin/todotools/state.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/state.js +1 -1
- package/dist/core/extensions/builtin/todotools/state.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/todo-widget-component.d.ts +19 -0
- package/dist/core/extensions/builtin/todotools/todo-widget-component.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/todo-widget-component.js +78 -0
- package/dist/core/extensions/builtin/todotools/todo-widget-component.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/todo-widget.d.ts +13 -1
- package/dist/core/extensions/builtin/todotools/todo-widget.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/todo-widget.js +32 -14
- package/dist/core/extensions/builtin/todotools/todo-widget.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/tools/todo.d.ts +2 -2
- package/dist/core/extensions/builtin/todotools/tools/todo.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/tools/todo.js +1 -1
- package/dist/core/extensions/builtin/todotools/tools/todo.js.map +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts.map +1 -1
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js +88 -29
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js.map +1 -1
- package/dist/core/extensions/builtin/tps.d.ts.map +1 -1
- package/dist/core/extensions/builtin/tps.js +5 -2
- package/dist/core/extensions/builtin/tps.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/builtin-rules.d.ts +4 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.js +20 -0
- package/dist/core/extensions/builtin/ttsr/builtin-rules.js.map +1 -0
- package/dist/core/extensions/builtin/ttsr/commands.js +9 -1
- package/dist/core/extensions/builtin/ttsr/commands.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/index.js +4 -3
- package/dist/core/extensions/builtin/ttsr/index.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.js +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/config.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/config.js +1 -0
- package/dist/core/extensions/builtin/websearch/websearch/config.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/native.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/native.js +16 -5
- package/dist/core/extensions/builtin/websearch/websearch/native.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/provider-endpoints.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/provider-endpoints.js +1 -0
- package/dist/core/extensions/builtin/websearch/websearch/provider-endpoints.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/providers/anthropic.d.ts +4 -1
- package/dist/core/extensions/builtin/websearch/websearch/providers/anthropic.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/providers/anthropic.js +44 -37
- package/dist/core/extensions/builtin/websearch/websearch/providers/anthropic.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/providers/deepseek.d.ts +3 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/deepseek.d.ts.map +1 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/deepseek.js +12 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/deepseek.js.map +1 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/providers.js +2 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/renderers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/renderers.js +3 -3
- package/dist/core/extensions/builtin/websearch/websearch/renderers.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/search.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/search.js +1 -3
- package/dist/core/extensions/builtin/websearch/websearch/search.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/tool.js +2 -2
- package/dist/core/extensions/builtin/websearch/websearch/tool.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/types.d.ts +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +5 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +3 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +22 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/model-resolver.js +2 -2
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/thinking-levels.d.ts +5 -0
- package/dist/core/thinking-levels.d.ts.map +1 -1
- package/dist/core/thinking-levels.js +9 -39
- package/dist/core/thinking-levels.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/app-server/server/account.d.ts +1 -1
- package/dist/modes/app-server/server/account.js +1 -1
- package/dist/modes/app-server/server/account.js.map +1 -1
- package/dist/modes/app-server/server/server-core.js +1 -1
- package/dist/modes/app-server/server/server-core.js.map +1 -1
- package/dist/modes/interactive/compaction-queue-transfer.d.ts +2 -0
- package/dist/modes/interactive/compaction-queue-transfer.d.ts.map +1 -1
- package/dist/modes/interactive/compaction-queue-transfer.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +9 -5
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +38 -12
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/risky-main-model-warning.d.ts +1 -1
- package/dist/modes/interactive/risky-main-model-warning.d.ts.map +1 -1
- package/dist/modes/interactive/risky-main-model-warning.js +1 -1
- package/dist/modes/interactive/risky-main-model-warning.js.map +1 -1
- package/dist/modes/rpc/connection-handler.js +3 -3
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/docs/extensions.md +10 -0
- package/docs/providers.md +21 -5
- package/docs/release-guide.md +2 -2
- package/docs/settings.md +1 -1
- package/examples/extensions/overlay-test.ts +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +33 -0
- package/node_modules/@code-yeongyu/senpi-codemode/README.md +6 -3
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +3 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-status-ticker.ts +79 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/eval-status.ts +36 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +26 -12
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-execution.ts +146 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-handler.ts +21 -119
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-runtime.ts +157 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +62 -208
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-notification.ts +98 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-snapshot.ts +81 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-state.ts +24 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-eval-result.ts +140 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-notification-queue.ts +53 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-request.ts +45 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool-options.ts +45 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +20 -342
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +10 -15
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.d.ts +24 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.js +70 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts +2 -16
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +10 -58
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.d.ts +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.js +7 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/model.d.ts +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/model.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/model.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +14 -0
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.js +95 -19
- package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai-coding-cn.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +5 -0
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.d.ts +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.js +36 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/unavailable-tool-text.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/package.json +1 -1
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/mux.js +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/mux.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +1 -0
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.js +17 -3
- package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +6 -6
- package/dist/core/extensions/builtin/claude-agent-sdk/auth-lane.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/auth-lane.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.d.ts +0 -6
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/guidance.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/index.d.ts +0 -4
- package/dist/core/extensions/builtin/claude-agent-sdk/index.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/index.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/oauth-login.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/options.d.ts +0 -16
- package/dist/core/extensions/builtin/claude-agent-sdk/options.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/prompt-bridge.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.d.ts +0 -15
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.js +0 -41
- package/dist/core/extensions/builtin/claude-agent-sdk/settings.js.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/stream.d.ts.map +0 -1
- package/dist/core/extensions/builtin/claude-agent-sdk/stream.js.map +0 -1
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools-schema.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/custom-tools.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/executable.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/failover.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/prompt-bridge.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/sdk-boundary.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/stream-protocol.js +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.d.ts +0 -0
- /package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/tools.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/core/dynamic-prompt/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAU1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,oFAAoF;AACpF,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC;IAC3D;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACxC;AAmBD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/core/dynamic-prompt/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAU1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,oFAAoF;AACpF,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC;IAC3D;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACxC;AAmBD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CA6DzF"}
|
|
@@ -68,6 +68,10 @@ export function buildDynamicSystemPrompt(options) {
|
|
|
68
68
|
selectedTools: options.selectedTools,
|
|
69
69
|
dialect: options.workstationDialect ?? "default",
|
|
70
70
|
}));
|
|
71
|
+
// The claude-sdk-oauth lane appends these dynamic lines after the stable sections so the composed
|
|
72
|
+
// prompt is a single string. An earlier draft split at this point for prompt-cache scoping, but a
|
|
73
|
+
// wire-level probe proved the installed CLI joins array elements into one system block, so the
|
|
74
|
+
// split was removed (the sentinel leaked to the model as literal text).
|
|
71
75
|
sections.push("", `Current date: ${date}`, `Current working directory: ${promptCwd}`);
|
|
72
76
|
return sections.join("\n");
|
|
73
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/core/dynamic-prompt/build.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Skill } from \"../skills.ts\";\nimport { formatSkillsForPrompt } from \"../skills.ts\";\nimport { buildExplorationSection } from \"./exploration.ts\";\nimport { buildIdentitySection } from \"./identity.ts\";\nimport { buildIntentGate } from \"./intent-gate.ts\";\nimport { buildParallelToolsSection } from \"./parallel-tools.ts\";\nimport { buildPoliciesSection } from \"./policies.ts\";\nimport { buildStyleSection } from \"./style.ts\";\nimport { categorizeTools } from \"./tool-categorization.ts\";\nimport { buildToolSection } from \"./tool-section.ts\";\nimport type { AvailableTool } from \"./types.ts\";\nimport { buildVerificationSection } from \"./verification.ts\";\nimport { buildWorkstationSection, type WorkstationDialect } from \"./workstation.ts\";\n\n/** Context handed to a `corePrompt` override so it can reuse the dynamic pieces. */\nexport interface DynamicPromptCoreContext {\n\ttools: AvailableTool[];\n\t/** Rendered \"## Available Tools\" (+ \"## Tool Guidelines\") section. */\n\ttoolSection: string;\n}\n\nexport interface BuildDynamicSystemPromptOptions {\n\tcwd: string;\n\tselectedTools: string[];\n\ttoolSnippets: Record<string, string>;\n\tpromptGuidelines: string[];\n\tcontextFiles: Array<{ path: string; content: string }>;\n\tskills: Skill[];\n\ttuningSection?: string;\n\t/**\n\t * Replaces the default core sections (identity through style) with a\n\t * model-specific full rewrite. Tool section, tuning, context files, skills,\n\t * date, and cwd assembly stay in this builder.\n\t */\n\tcorePrompt?: (context: DynamicPromptCoreContext) => string;\n\t/**\n\t * Wording dialect for the workstation execution-context instruction.\n\t * Presets pass their model family; the fallback prompt uses `default`\n\t * (maximum emphasis).\n\t */\n\tworkstationDialect?: WorkstationDialect;\n}\n\nfunction buildContextFilesSection(contextFiles: Array<{ path: string; content: string }>): string {\n\tif (contextFiles.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tconst lines = [\n\t\t\"## Project Context\",\n\t\t\"\",\n\t\t\"Project instruction files (below, and in [Directory Context: ...] blocks injected during reads) bind files under their directory; deeper files win on conflict; explicit user instructions override.\",\n\t\t\"\",\n\t];\n\tfor (const contextFile of contextFiles) {\n\t\tlines.push(`### ${contextFile.path}`, \"\", contextFile.content.trimEnd(), \"\");\n\t}\n\treturn lines.join(\"\\n\").trimEnd();\n}\n\nexport function buildDynamicSystemPrompt(options: BuildDynamicSystemPromptOptions): string {\n\tconst promptCwd = options.cwd.replace(/\\\\/g, \"/\");\n\tconst tools = categorizeTools(options.selectedTools);\n\tconst date = new Date().toISOString().slice(0, 10);\n\n\tconst toolSection = buildToolSection({\n\t\ttools,\n\t\ttoolSnippets: options.toolSnippets,\n\t\tpromptGuidelines: options.promptGuidelines,\n\t});\n\n\tconst sections = options.corePrompt\n\t\t? [options.corePrompt({ tools, toolSection })]\n\t\t: [\n\t\t\t\tbuildIdentitySection(),\n\t\t\t\t\"\",\n\t\t\t\tbuildIntentGate({ tools }),\n\t\t\t\t\"\",\n\t\t\t\tbuildParallelToolsSection(),\n\t\t\t\t\"\",\n\t\t\t\tbuildExplorationSection(),\n\t\t\t\t\"\",\n\t\t\t\tbuildVerificationSection(),\n\t\t\t\t\"\",\n\t\t\t\ttoolSection,\n\t\t\t\t\"\",\n\t\t\t\tbuildPoliciesSection(),\n\t\t\t\t\"\",\n\t\t\t\tbuildStyleSection(),\n\t\t\t];\n\n\tconst tuning = options.tuningSection?.trim();\n\tif (tuning) {\n\t\tsections.push(\"\", tuning);\n\t}\n\n\tconst contextFilesSection = buildContextFilesSection(options.contextFiles);\n\tif (contextFilesSection) {\n\t\tsections.push(\"\", contextFilesSection);\n\t}\n\n\tconst skillsSection = formatSkillsForPrompt(options.skills);\n\tif (skillsSection) {\n\t\tsections.push(skillsSection);\n\t}\n\n\tsections.push(\n\t\t\"\",\n\t\tbuildWorkstationSection({\n\t\t\tselectedTools: options.selectedTools,\n\t\t\tdialect: options.workstationDialect ?? \"default\",\n\t\t}),\n\t);\n\n\tsections.push(\"\", `Current date: ${date}`, `Current working directory: ${promptCwd}`);\n\n\treturn sections.join(\"\\n\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/core/dynamic-prompt/build.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Skill } from \"../skills.ts\";\nimport { formatSkillsForPrompt } from \"../skills.ts\";\nimport { buildExplorationSection } from \"./exploration.ts\";\nimport { buildIdentitySection } from \"./identity.ts\";\nimport { buildIntentGate } from \"./intent-gate.ts\";\nimport { buildParallelToolsSection } from \"./parallel-tools.ts\";\nimport { buildPoliciesSection } from \"./policies.ts\";\nimport { buildStyleSection } from \"./style.ts\";\nimport { categorizeTools } from \"./tool-categorization.ts\";\nimport { buildToolSection } from \"./tool-section.ts\";\nimport type { AvailableTool } from \"./types.ts\";\nimport { buildVerificationSection } from \"./verification.ts\";\nimport { buildWorkstationSection, type WorkstationDialect } from \"./workstation.ts\";\n\n/** Context handed to a `corePrompt` override so it can reuse the dynamic pieces. */\nexport interface DynamicPromptCoreContext {\n\ttools: AvailableTool[];\n\t/** Rendered \"## Available Tools\" (+ \"## Tool Guidelines\") section. */\n\ttoolSection: string;\n}\n\nexport interface BuildDynamicSystemPromptOptions {\n\tcwd: string;\n\tselectedTools: string[];\n\ttoolSnippets: Record<string, string>;\n\tpromptGuidelines: string[];\n\tcontextFiles: Array<{ path: string; content: string }>;\n\tskills: Skill[];\n\ttuningSection?: string;\n\t/**\n\t * Replaces the default core sections (identity through style) with a\n\t * model-specific full rewrite. Tool section, tuning, context files, skills,\n\t * date, and cwd assembly stay in this builder.\n\t */\n\tcorePrompt?: (context: DynamicPromptCoreContext) => string;\n\t/**\n\t * Wording dialect for the workstation execution-context instruction.\n\t * Presets pass their model family; the fallback prompt uses `default`\n\t * (maximum emphasis).\n\t */\n\tworkstationDialect?: WorkstationDialect;\n}\n\nfunction buildContextFilesSection(contextFiles: Array<{ path: string; content: string }>): string {\n\tif (contextFiles.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tconst lines = [\n\t\t\"## Project Context\",\n\t\t\"\",\n\t\t\"Project instruction files (below, and in [Directory Context: ...] blocks injected during reads) bind files under their directory; deeper files win on conflict; explicit user instructions override.\",\n\t\t\"\",\n\t];\n\tfor (const contextFile of contextFiles) {\n\t\tlines.push(`### ${contextFile.path}`, \"\", contextFile.content.trimEnd(), \"\");\n\t}\n\treturn lines.join(\"\\n\").trimEnd();\n}\n\nexport function buildDynamicSystemPrompt(options: BuildDynamicSystemPromptOptions): string {\n\tconst promptCwd = options.cwd.replace(/\\\\/g, \"/\");\n\tconst tools = categorizeTools(options.selectedTools);\n\tconst date = new Date().toISOString().slice(0, 10);\n\n\tconst toolSection = buildToolSection({\n\t\ttools,\n\t\ttoolSnippets: options.toolSnippets,\n\t\tpromptGuidelines: options.promptGuidelines,\n\t});\n\n\tconst sections = options.corePrompt\n\t\t? [options.corePrompt({ tools, toolSection })]\n\t\t: [\n\t\t\t\tbuildIdentitySection(),\n\t\t\t\t\"\",\n\t\t\t\tbuildIntentGate({ tools }),\n\t\t\t\t\"\",\n\t\t\t\tbuildParallelToolsSection(),\n\t\t\t\t\"\",\n\t\t\t\tbuildExplorationSection(),\n\t\t\t\t\"\",\n\t\t\t\tbuildVerificationSection(),\n\t\t\t\t\"\",\n\t\t\t\ttoolSection,\n\t\t\t\t\"\",\n\t\t\t\tbuildPoliciesSection(),\n\t\t\t\t\"\",\n\t\t\t\tbuildStyleSection(),\n\t\t\t];\n\n\tconst tuning = options.tuningSection?.trim();\n\tif (tuning) {\n\t\tsections.push(\"\", tuning);\n\t}\n\n\tconst contextFilesSection = buildContextFilesSection(options.contextFiles);\n\tif (contextFilesSection) {\n\t\tsections.push(\"\", contextFilesSection);\n\t}\n\n\tconst skillsSection = formatSkillsForPrompt(options.skills);\n\tif (skillsSection) {\n\t\tsections.push(skillsSection);\n\t}\n\n\tsections.push(\n\t\t\"\",\n\t\tbuildWorkstationSection({\n\t\t\tselectedTools: options.selectedTools,\n\t\t\tdialect: options.workstationDialect ?? \"default\",\n\t\t}),\n\t);\n\n\t// The claude-sdk-oauth lane appends these dynamic lines after the stable sections so the composed\n\t// prompt is a single string. An earlier draft split at this point for prompt-cache scoping, but a\n\t// wire-level probe proved the installed CLI joins array elements into one system block, so the\n\t// split was removed (the sentinel leaked to the model as literal text).\n\tsections.push(\"\", `Current date: ${date}`, `Current working directory: ${promptCwd}`);\n\n\treturn sections.join(\"\\n\");\n}\n"]}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "../../types.ts";
|
|
2
|
-
import { type
|
|
2
|
+
import { type ClaudeSdkOauthProviderSettings } from "./settings.ts";
|
|
3
3
|
type CommandEnvironment = (name: string) => string | undefined;
|
|
4
4
|
export interface ClaudeAccountCommandDeps {
|
|
5
|
-
loadSettings?: (cwd: string) =>
|
|
5
|
+
loadSettings?: (cwd: string) => ClaudeSdkOauthProviderSettings;
|
|
6
6
|
environment?: CommandEnvironment;
|
|
7
7
|
}
|
|
8
8
|
export declare function getSessionClaudeAccountPin(sessionId: string | undefined): string | undefined;
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.d.ts.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-command.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"account-command.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/account-command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAA2B,MAAM,gBAAgB,CAAC;AAK5E,OAAO,EAAE,KAAK,8BAA8B,EAA8C,MAAM,eAAe,CAAC;AAIhH,KAAK,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACxC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,8BAA8B,CAAC;IAC/D,WAAW,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAgDD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE5F;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,CACtC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,qBAAqB,EAAE,MAAM,GAAG,SAAS,EACzC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACrC,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,GAAE,wBAA6B,GAAG,IAAI,CA8CxG"}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { emitProviderAccountsChanged } from "./account-events.js";
|
|
2
|
-
import {
|
|
2
|
+
import { CLAUDE_SDK_OAUTH_PROVIDER_ID, pinProviderAccount, removeProviderAccount } from "./account-management.js";
|
|
3
3
|
import { emptyCredential, listAccounts } from "./accounts.js";
|
|
4
4
|
import { selectAccount } from "./affinity.js";
|
|
5
|
-
import {
|
|
5
|
+
import { loadClaudeSdkOauthProviderSettingsFromDisk } from "./settings.js";
|
|
6
6
|
const cliPinsBySession = new Map();
|
|
7
7
|
function asCredential(value) {
|
|
8
8
|
return value?.type === "oauth" ? value : undefined;
|
|
@@ -16,29 +16,29 @@ function slotStatus(slot) {
|
|
|
16
16
|
return "available";
|
|
17
17
|
}
|
|
18
18
|
function readAccounts(ctx, environment) {
|
|
19
|
-
const credential = asCredential(ctx.modelRegistry.authStorage.get(
|
|
19
|
+
const credential = asCredential(ctx.modelRegistry.authStorage.get(CLAUDE_SDK_OAUTH_PROVIDER_ID));
|
|
20
20
|
return {
|
|
21
21
|
credential,
|
|
22
22
|
accounts: listAccounts(credential ?? emptyCredential(), environment),
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
function accountError(ctx, name) {
|
|
26
|
-
ctx.ui.notify(`Claude
|
|
26
|
+
ctx.ui.notify(`Claude SDK OAuth account '${name}' does not exist.`, "error");
|
|
27
27
|
}
|
|
28
28
|
function parseArgs(rawArgs) {
|
|
29
29
|
return rawArgs.trim().split(/\s+/).filter(Boolean);
|
|
30
30
|
}
|
|
31
31
|
function authEventMessage(event) {
|
|
32
32
|
if (event === null || typeof event !== "object")
|
|
33
|
-
return "Claude
|
|
33
|
+
return "Claude SDK OAuth authentication update.";
|
|
34
34
|
const value = event;
|
|
35
35
|
if (value.type === "auth_url" && typeof value.url === "string") {
|
|
36
|
-
return `Open this URL to authorize Claude
|
|
36
|
+
return `Open this URL to authorize Claude SDK OAuth:\n${value.url}`;
|
|
37
37
|
}
|
|
38
38
|
if (value.type === "device_code" && typeof value.verificationUri === "string") {
|
|
39
|
-
return `Open this URL to authorize Claude
|
|
39
|
+
return `Open this URL to authorize Claude SDK OAuth:\n${value.verificationUri}`;
|
|
40
40
|
}
|
|
41
|
-
return typeof value.message === "string" ? value.message : "Claude
|
|
41
|
+
return typeof value.message === "string" ? value.message : "Claude SDK OAuth authentication update.";
|
|
42
42
|
}
|
|
43
43
|
export function getSessionClaudeAccountPin(sessionId) {
|
|
44
44
|
return sessionId === undefined ? undefined : cliPinsBySession.get(sessionId);
|
|
@@ -48,11 +48,11 @@ export function resolveClaudeAccountPin(cliPinnedAccount, settingsPinnedAccount,
|
|
|
48
48
|
return cliPinnedAccount ?? settingsPinnedAccount ?? storedPinnedAccount;
|
|
49
49
|
}
|
|
50
50
|
export function registerClaudeAccountCommand(pi, deps = {}) {
|
|
51
|
-
const loadSettings = deps.loadSettings ??
|
|
51
|
+
const loadSettings = deps.loadSettings ?? loadClaudeSdkOauthProviderSettingsFromDisk;
|
|
52
52
|
const environment = deps.environment ?? ((name) => process.env[name]);
|
|
53
53
|
pi.registerFlag("claude-account", {
|
|
54
54
|
type: "string",
|
|
55
|
-
description: "Pin Claude
|
|
55
|
+
description: "Pin Claude SDK OAuth account for this session.",
|
|
56
56
|
});
|
|
57
57
|
pi.on("session_start", (_event, ctx) => {
|
|
58
58
|
const flag = pi.getFlag("claude-account");
|
|
@@ -66,7 +66,7 @@ export function registerClaudeAccountCommand(pi, deps = {}) {
|
|
|
66
66
|
cliPinsBySession.delete(ctx.sessionManager.getSessionId());
|
|
67
67
|
});
|
|
68
68
|
pi.registerCommand("claude-account", {
|
|
69
|
-
description: "List and manage Claude
|
|
69
|
+
description: "List and manage Claude SDK OAuth accounts.",
|
|
70
70
|
argumentHint: "[add | remove <name> | pin <name> | unpin]",
|
|
71
71
|
handler: async (rawArgs, ctx) => {
|
|
72
72
|
const args = parseArgs(rawArgs);
|
|
@@ -113,7 +113,7 @@ function showAccounts(ctx, settings, environment) {
|
|
|
113
113
|
affinityError = error instanceof Error ? error.message : String(error);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
const lines = ["Claude
|
|
116
|
+
const lines = ["Claude SDK OAuth accounts:"];
|
|
117
117
|
if (accounts.length === 0)
|
|
118
118
|
lines.push(" (none)");
|
|
119
119
|
for (const account of accounts) {
|
|
@@ -134,7 +134,7 @@ async function addAccount(ctx) {
|
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
136
|
try {
|
|
137
|
-
await ctx.modelRegistry.modelRuntime.login(
|
|
137
|
+
await ctx.modelRegistry.modelRuntime.login(CLAUDE_SDK_OAUTH_PROVIDER_ID, "oauth", {
|
|
138
138
|
signal: ctx.signal,
|
|
139
139
|
prompt: async (prompt) => {
|
|
140
140
|
const answer = await ctx.ui.input(prompt.message);
|
|
@@ -144,13 +144,13 @@ async function addAccount(ctx) {
|
|
|
144
144
|
},
|
|
145
145
|
notify: (event) => ctx.ui.notify(authEventMessage(event), "info"),
|
|
146
146
|
});
|
|
147
|
-
emitProviderAccountsChanged(
|
|
148
|
-
ctx.ui.notify("Claude
|
|
147
|
+
emitProviderAccountsChanged(CLAUDE_SDK_OAUTH_PROVIDER_ID);
|
|
148
|
+
ctx.ui.notify("Claude SDK OAuth account added.", "info");
|
|
149
149
|
}
|
|
150
150
|
catch (error) {
|
|
151
151
|
const message = error instanceof Error ? error.message : String(error);
|
|
152
152
|
if (message !== "Login cancelled")
|
|
153
|
-
ctx.ui.notify(`Failed to add Claude
|
|
153
|
+
ctx.ui.notify(`Failed to add Claude SDK OAuth account: ${message}`, "error");
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
async function removeNamedAccount(ctx, name, environment) {
|
|
@@ -163,12 +163,12 @@ async function removeNamedAccount(ctx, name, environment) {
|
|
|
163
163
|
if (!target)
|
|
164
164
|
return accountError(ctx, name);
|
|
165
165
|
if (target.source === "env") {
|
|
166
|
-
ctx.ui.notify(`Claude
|
|
166
|
+
ctx.ui.notify(`Claude SDK OAuth account '${name}' comes from the environment and cannot be removed.`, "error");
|
|
167
167
|
return;
|
|
168
168
|
}
|
|
169
169
|
try {
|
|
170
|
-
await removeProviderAccount(ctx.modelRegistry.authStorage,
|
|
171
|
-
ctx.ui.notify(`Removed Claude
|
|
170
|
+
await removeProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_SDK_OAUTH_PROVIDER_ID, name);
|
|
171
|
+
ctx.ui.notify(`Removed Claude SDK OAuth account: ${name}.`, "info");
|
|
172
172
|
}
|
|
173
173
|
catch (error) {
|
|
174
174
|
ctx.ui.notify(error instanceof Error ? error.message : String(error), "error");
|
|
@@ -183,20 +183,20 @@ async function pinNamedAccount(ctx, name, environment) {
|
|
|
183
183
|
return accountError(ctx, name);
|
|
184
184
|
}
|
|
185
185
|
try {
|
|
186
|
-
await pinProviderAccount(ctx.modelRegistry.authStorage,
|
|
187
|
-
ctx.ui.notify(`Pinned Claude
|
|
186
|
+
await pinProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_SDK_OAUTH_PROVIDER_ID, name);
|
|
187
|
+
ctx.ui.notify(`Pinned Claude SDK OAuth account: ${name}.`, "info");
|
|
188
188
|
}
|
|
189
189
|
catch (error) {
|
|
190
190
|
ctx.ui.notify(error instanceof Error ? error.message : String(error), "error");
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
async function unpinAccount(ctx) {
|
|
194
|
-
const credential = asCredential(ctx.modelRegistry.authStorage.get(
|
|
194
|
+
const credential = asCredential(ctx.modelRegistry.authStorage.get(CLAUDE_SDK_OAUTH_PROVIDER_ID));
|
|
195
195
|
if (!credential?.pinned) {
|
|
196
|
-
ctx.ui.notify("No stored Claude
|
|
196
|
+
ctx.ui.notify("No stored Claude SDK OAuth account pin is set.", "info");
|
|
197
197
|
return;
|
|
198
198
|
}
|
|
199
|
-
await pinProviderAccount(ctx.modelRegistry.authStorage,
|
|
200
|
-
ctx.ui.notify("Unpinned Claude
|
|
199
|
+
await pinProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_SDK_OAUTH_PROVIDER_ID, null);
|
|
200
|
+
ctx.ui.notify("Unpinned Claude SDK OAuth account.", "info");
|
|
201
201
|
}
|
|
202
202
|
//# sourceMappingURL=account-command.js.map
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-command.js.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-command.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-agent-sdk/account-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClH,OAAO,EAAmD,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAuC,0CAA0C,EAAE,MAAM,eAAe,CAAC;AAEhH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;AASnD,SAAS,YAAY,CAAC,KAA6B;IAClD,OAAO,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAE,KAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC;AAED,SAAS,UAAU,CAAC,IAAiB;IACpC,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY;QAAE,OAAO,wBAAwB,CAAC;IACvE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACvE,OAAO,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CACpB,GAA4B,EAC5B,WAA+B;IAK/B,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACjG,OAAO;QACN,UAAU;QACV,QAAQ,EAAE,YAAY,CAAC,UAAU,IAAI,eAAe,EAAE,EAAE,WAAW,CAAC;KACpE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B,EAAE,IAAY;IAC/D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,6BAA6B,IAAI,mBAAmB,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IACjC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,yCAAyC,CAAC;IAClG,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO,iDAAiD,KAAK,CAAC,GAAG,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC/E,OAAO,iDAAiD,KAAK,CAAC,eAAe,EAAE,CAAC;IACjF,CAAC;IACD,OAAO,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAyC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAA6B;IACvE,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9E,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,uBAAuB,CACtC,gBAAoC,EACpC,qBAAyC,EACzC,mBAAuC;IAEvC,OAAO,gBAAgB,IAAI,qBAAqB,IAAI,mBAAmB,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAAgB,EAAE,IAAI,GAA6B,EAAE;IACjG,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,0CAA0C,CAAC;IACrF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE;QACjC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gDAAgD;KAC7D,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;YAClF,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACzC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,eAAe,CAAC,gBAAgB,EAAE;QACpC,WAAW,EAAE,4CAA4C;QACzD,YAAY,EAAE,4CAA4C;QAC1D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;YACjC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACvB,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;gBACtD,OAAO;YACR,CAAC;YACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACtB,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;YACR,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzB,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACpD,OAAO;YACR,CAAC;YACD,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC7C,MAAM,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACjD,OAAO;YACR,CAAC;YACD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;gBACrE,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mEAAmE,EAAE,OAAO,CAAC,CAAC;QAC7F,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACpB,GAA4B,EAC5B,QAAwC,EACxC,WAA+B;IAE/B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC3F,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9G,IAAI,YAAgC,CAAC;IACrC,IAAI,aAAiC,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACJ,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE;gBACtC,SAAS,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE;gBAC5C,aAAa,EAAE,MAAM;aACrB,CAAC,CAAC,IAAI,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY;YAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1G,KAAK,CAAC,IAAI,CAAC,kBAAkB,YAAY,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5G,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAA4B;IACrD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;QAC1E,OAAO;IACR,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAO,EAAE;YACjF,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClD,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAC7D,OAAO,MAAM,CAAC;YACf,CAAC;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SACjE,CAAC,CAAC;QACH,2BAA2B,CAAC,4BAA4B,CAAC,CAAC;QAC1D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,OAAO,KAAK,iBAAiB;YAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,2CAA2C,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACjH,CAAC;AACF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAChC,GAA4B,EAC5B,IAAwB,EACxB,WAA+B;IAE/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO;IACR,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,6BAA6B,IAAI,qDAAqD,EAAE,OAAO,CAAC,CAAC;QAC/G,OAAO;IACR,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,qBAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;QAC/F,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qCAAqC,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,eAAe,CAC7B,GAA4B,EAC5B,IAAwB,EACxB,WAA+B;IAE/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO;IACR,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvF,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;QAC5F,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAA4B;IACvD,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACjG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gDAAgD,EAAE,MAAM,CAAC,CAAC;QACxE,OAAO;IACR,CAAC;IACD,MAAM,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;IAC5F,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["import type { Credential } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI, ExtensionCommandContext } from \"../../types.ts\";\nimport { emitProviderAccountsChanged } from \"./account-events.ts\";\nimport { CLAUDE_AGENT_SDK_PROVIDER_ID, pinProviderAccount, removeProviderAccount } from \"./account-management.ts\";\nimport { type AccountSlot, type ClaudeAgentSdkCredential, emptyCredential, listAccounts } from \"./accounts.ts\";\nimport { selectAccount } from \"./affinity.ts\";\nimport { type ClaudeAgentSdkProviderSettings, loadClaudeAgentSdkProviderSettingsFromDisk } from \"./settings.ts\";\n\nconst cliPinsBySession = new Map<string, string>();\n\ntype CommandEnvironment = (name: string) => string | undefined;\n\nexport interface ClaudeAccountCommandDeps {\n\tloadSettings?: (cwd: string) => ClaudeAgentSdkProviderSettings;\n\tenvironment?: CommandEnvironment;\n}\n\nfunction asCredential(value: Credential | undefined): ClaudeAgentSdkCredential | undefined {\n\treturn value?.type === \"oauth\" ? (value as ClaudeAgentSdkCredential) : undefined;\n}\n\nfunction slotStatus(slot: AccountSlot): string {\n\tif (slot.blockReason === \"auth_error\") return \"blocked until re-login\";\n\tif (slot.blockedUntil !== undefined && slot.blockedUntil > Date.now()) {\n\t\treturn `blocked until ${new Date(slot.blockedUntil).toISOString()}`;\n\t}\n\treturn \"available\";\n}\n\nfunction readAccounts(\n\tctx: ExtensionCommandContext,\n\tenvironment: CommandEnvironment,\n): {\n\tcredential: ClaudeAgentSdkCredential | undefined;\n\taccounts: AccountSlot[];\n} {\n\tconst credential = asCredential(ctx.modelRegistry.authStorage.get(CLAUDE_AGENT_SDK_PROVIDER_ID));\n\treturn {\n\t\tcredential,\n\t\taccounts: listAccounts(credential ?? emptyCredential(), environment),\n\t};\n}\n\nfunction accountError(ctx: ExtensionCommandContext, name: string): void {\n\tctx.ui.notify(`Claude Agent SDK account '${name}' does not exist.`, \"error\");\n}\n\nfunction parseArgs(rawArgs: string): string[] {\n\treturn rawArgs.trim().split(/\\s+/).filter(Boolean);\n}\n\nfunction authEventMessage(event: unknown): string {\n\tif (event === null || typeof event !== \"object\") return \"Claude Agent SDK authentication update.\";\n\tconst value = event as Record<string, unknown>;\n\tif (value.type === \"auth_url\" && typeof value.url === \"string\") {\n\t\treturn `Open this URL to authorize Claude Agent SDK:\\n${value.url}`;\n\t}\n\tif (value.type === \"device_code\" && typeof value.verificationUri === \"string\") {\n\t\treturn `Open this URL to authorize Claude Agent SDK:\\n${value.verificationUri}`;\n\t}\n\treturn typeof value.message === \"string\" ? value.message : \"Claude Agent SDK authentication update.\";\n}\n\nexport function getSessionClaudeAccountPin(sessionId: string | undefined): string | undefined {\n\treturn sessionId === undefined ? undefined : cliPinsBySession.get(sessionId);\n}\n\n/** CLI pins are request-local overrides; settings and stored pins remain fallback choices. */\nexport function resolveClaudeAccountPin(\n\tcliPinnedAccount: string | undefined,\n\tsettingsPinnedAccount: string | undefined,\n\tstoredPinnedAccount: string | undefined,\n): string | undefined {\n\treturn cliPinnedAccount ?? settingsPinnedAccount ?? storedPinnedAccount;\n}\n\nexport function registerClaudeAccountCommand(pi: ExtensionAPI, deps: ClaudeAccountCommandDeps = {}): void {\n\tconst loadSettings = deps.loadSettings ?? loadClaudeAgentSdkProviderSettingsFromDisk;\n\tconst environment = deps.environment ?? ((name: string) => process.env[name]);\n\n\tpi.registerFlag(\"claude-account\", {\n\t\ttype: \"string\",\n\t\tdescription: \"Pin Claude Agent SDK account for this session.\",\n\t});\n\tpi.on(\"session_start\", (_event, ctx) => {\n\t\tconst flag = pi.getFlag(\"claude-account\");\n\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\tif (typeof flag === \"string\" && flag.length > 0) cliPinsBySession.set(sessionId, flag);\n\t\telse cliPinsBySession.delete(sessionId);\n\t});\n\tpi.on(\"session_shutdown\", (_event, ctx) => {\n\t\tcliPinsBySession.delete(ctx.sessionManager.getSessionId());\n\t});\n\tpi.registerCommand(\"claude-account\", {\n\t\tdescription: \"List and manage Claude Agent SDK accounts.\",\n\t\targumentHint: \"[add | remove <name> | pin <name> | unpin]\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst args = parseArgs(rawArgs);\n\t\t\tconst action = args[0] ?? \"list\";\n\t\t\tif (action === \"list\") {\n\t\t\t\tshowAccounts(ctx, loadSettings(ctx.cwd), environment);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (action === \"add\") {\n\t\t\t\tawait addAccount(ctx);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (action === \"remove\") {\n\t\t\t\tawait removeNamedAccount(ctx, args[1], environment);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (action === \"pin\" && args[1] !== \"unpin\") {\n\t\t\t\tawait pinNamedAccount(ctx, args[1], environment);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (action === \"unpin\" || (action === \"pin\" && args[1] === \"unpin\")) {\n\t\t\t\tawait unpinAccount(ctx);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tctx.ui.notify(\"Usage: /claude-account [add | remove <name> | pin <name> | unpin]\", \"error\");\n\t\t},\n\t});\n}\n\nfunction showAccounts(\n\tctx: ExtensionCommandContext,\n\tsettings: ClaudeAgentSdkProviderSettings,\n\tenvironment: CommandEnvironment,\n): void {\n\tconst { credential, accounts } = readAccounts(ctx, environment);\n\tconst cliPin = getSessionClaudeAccountPin(ctx.sessionManager.getSessionId());\n\tconst pinned = resolveClaudeAccountPin(cliPin, settings.pinnedAccount, credential?.pinned);\n\tconst pinSource = cliPin !== undefined ? \"CLI\" : settings.pinnedAccount !== undefined ? \"settings\" : \"stored\";\n\tlet affinityPick: string | undefined;\n\tlet affinityError: string | undefined;\n\tif (accounts.length > 0) {\n\t\ttry {\n\t\t\taffinityPick = selectAccount(accounts, {\n\t\t\t\tsessionId: ctx.sessionManager.getSessionId(),\n\t\t\t\tpinnedAccount: pinned,\n\t\t\t}).name;\n\t\t} catch (error) {\n\t\t\taffinityError = error instanceof Error ? error.message : String(error);\n\t\t}\n\t}\n\tconst lines = [\"Claude Agent SDK accounts:\"];\n\tif (accounts.length === 0) lines.push(\" (none)\");\n\tfor (const account of accounts) {\n\t\tconst states = [account.name, account.source, slotStatus(account)];\n\t\tif (account.name === pinned) states.push(\"pinned\");\n\t\tif (account.name === affinityPick) states.push(\"affinity pick\");\n\t\tlines.push(` ${states.join(\" | \")}`);\n\t}\n\tlines.push(`Pinned account: ${pinned === undefined ? \"none\" : `${pinned} (${pinSource.toLowerCase()})`}`);\n\tlines.push(`Affinity pick: ${affinityPick ?? (affinityError ? `unavailable - ${affinityError}` : \"none\")}`);\n\tctx.ui.notify(lines.join(\"\\n\"), \"info\");\n}\n\nasync function addAccount(ctx: ExtensionCommandContext): Promise<void> {\n\tif (!ctx.hasUI) {\n\t\tctx.ui.notify(\"/claude-account add requires an interactive UI.\", \"error\");\n\t\treturn;\n\t}\n\ttry {\n\t\tawait ctx.modelRegistry.modelRuntime.login(CLAUDE_AGENT_SDK_PROVIDER_ID, \"oauth\", {\n\t\t\tsignal: ctx.signal,\n\t\t\tprompt: async (prompt) => {\n\t\t\t\tconst answer = await ctx.ui.input(prompt.message);\n\t\t\t\tif (answer === undefined) throw new Error(\"Login cancelled\");\n\t\t\t\treturn answer;\n\t\t\t},\n\t\t\tnotify: (event) => ctx.ui.notify(authEventMessage(event), \"info\"),\n\t\t});\n\t\temitProviderAccountsChanged(CLAUDE_AGENT_SDK_PROVIDER_ID);\n\t\tctx.ui.notify(\"Claude Agent SDK account added.\", \"info\");\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tif (message !== \"Login cancelled\") ctx.ui.notify(`Failed to add Claude Agent SDK account: ${message}`, \"error\");\n\t}\n}\n\nasync function removeNamedAccount(\n\tctx: ExtensionCommandContext,\n\tname: string | undefined,\n\tenvironment: CommandEnvironment,\n): Promise<void> {\n\tif (!name) {\n\t\tctx.ui.notify(\"Usage: /claude-account remove <name>\", \"error\");\n\t\treturn;\n\t}\n\tconst { accounts } = readAccounts(ctx, environment);\n\tconst target = accounts.find((account) => account.name === name);\n\tif (!target) return accountError(ctx, name);\n\tif (target.source === \"env\") {\n\t\tctx.ui.notify(`Claude Agent SDK account '${name}' comes from the environment and cannot be removed.`, \"error\");\n\t\treturn;\n\t}\n\ttry {\n\t\tawait removeProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_AGENT_SDK_PROVIDER_ID, name);\n\t\tctx.ui.notify(`Removed Claude Agent SDK account: ${name}.`, \"info\");\n\t} catch (error) {\n\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t}\n}\n\nasync function pinNamedAccount(\n\tctx: ExtensionCommandContext,\n\tname: string | undefined,\n\tenvironment: CommandEnvironment,\n): Promise<void> {\n\tif (!name) {\n\t\tctx.ui.notify(\"Usage: /claude-account pin <name>\", \"error\");\n\t\treturn;\n\t}\n\tif (!readAccounts(ctx, environment).accounts.some((account) => account.name === name)) {\n\t\treturn accountError(ctx, name);\n\t}\n\ttry {\n\t\tawait pinProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_AGENT_SDK_PROVIDER_ID, name);\n\t\tctx.ui.notify(`Pinned Claude Agent SDK account: ${name}.`, \"info\");\n\t} catch (error) {\n\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t}\n}\n\nasync function unpinAccount(ctx: ExtensionCommandContext): Promise<void> {\n\tconst credential = asCredential(ctx.modelRegistry.authStorage.get(CLAUDE_AGENT_SDK_PROVIDER_ID));\n\tif (!credential?.pinned) {\n\t\tctx.ui.notify(\"No stored Claude Agent SDK account pin is set.\", \"info\");\n\t\treturn;\n\t}\n\tawait pinProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_AGENT_SDK_PROVIDER_ID, null);\n\tctx.ui.notify(\"Unpinned Claude Agent SDK account.\", \"info\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"account-command.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/account-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClH,OAAO,EAAmD,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAuC,0CAA0C,EAAE,MAAM,eAAe,CAAC;AAEhH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;AASnD,SAAS,YAAY,CAAC,KAA6B;IAClD,OAAO,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAE,KAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC;AAED,SAAS,UAAU,CAAC,IAAiB;IACpC,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY;QAAE,OAAO,wBAAwB,CAAC;IACvE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACvE,OAAO,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CACpB,GAA4B,EAC5B,WAA+B;IAK/B,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACjG,OAAO;QACN,UAAU;QACV,QAAQ,EAAE,YAAY,CAAC,UAAU,IAAI,eAAe,EAAE,EAAE,WAAW,CAAC;KACpE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B,EAAE,IAAY;IAC/D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,6BAA6B,IAAI,mBAAmB,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IACjC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,yCAAyC,CAAC;IAClG,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO,iDAAiD,KAAK,CAAC,GAAG,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC/E,OAAO,iDAAiD,KAAK,CAAC,eAAe,EAAE,CAAC;IACjF,CAAC;IACD,OAAO,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAyC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAA6B;IACvE,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9E,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,uBAAuB,CACtC,gBAAoC,EACpC,qBAAyC,EACzC,mBAAuC;IAEvC,OAAO,gBAAgB,IAAI,qBAAqB,IAAI,mBAAmB,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAAgB,EAAE,IAAI,GAA6B,EAAE;IACjG,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,0CAA0C,CAAC;IACrF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE;QACjC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gDAAgD;KAC7D,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;YAClF,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACzC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,eAAe,CAAC,gBAAgB,EAAE;QACpC,WAAW,EAAE,4CAA4C;QACzD,YAAY,EAAE,4CAA4C;QAC1D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;YACjC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACvB,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;gBACtD,OAAO;YACR,CAAC;YACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACtB,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;YACR,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzB,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACpD,OAAO;YACR,CAAC;YACD,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC7C,MAAM,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACjD,OAAO;YACR,CAAC;YACD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;gBACrE,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mEAAmE,EAAE,OAAO,CAAC,CAAC;QAC7F,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACpB,GAA4B,EAC5B,QAAwC,EACxC,WAA+B;IAE/B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC3F,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9G,IAAI,YAAgC,CAAC;IACrC,IAAI,aAAiC,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACJ,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE;gBACtC,SAAS,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE;gBAC5C,aAAa,EAAE,MAAM;aACrB,CAAC,CAAC,IAAI,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY;YAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1G,KAAK,CAAC,IAAI,CAAC,kBAAkB,YAAY,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5G,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAA4B;IACrD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;QAC1E,OAAO;IACR,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAO,EAAE;YACjF,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClD,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAC7D,OAAO,MAAM,CAAC;YACf,CAAC;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;SACjE,CAAC,CAAC;QACH,2BAA2B,CAAC,4BAA4B,CAAC,CAAC;QAC1D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,OAAO,KAAK,iBAAiB;YAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,2CAA2C,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACjH,CAAC;AACF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAChC,GAA4B,EAC5B,IAAwB,EACxB,WAA+B;IAE/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO;IACR,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,6BAA6B,IAAI,qDAAqD,EAAE,OAAO,CAAC,CAAC;QAC/G,OAAO;IACR,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,qBAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;QAC/F,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qCAAqC,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,eAAe,CAC7B,GAA4B,EAC5B,IAAwB,EACxB,WAA+B;IAE/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO;IACR,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvF,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;QAC5F,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAA4B;IACvD,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACjG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gDAAgD,EAAE,MAAM,CAAC,CAAC;QACxE,OAAO;IACR,CAAC;IACD,MAAM,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;IAC5F,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["import type { Credential } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI, ExtensionCommandContext } from \"../../types.ts\";\nimport { emitProviderAccountsChanged } from \"./account-events.ts\";\nimport { CLAUDE_SDK_OAUTH_PROVIDER_ID, pinProviderAccount, removeProviderAccount } from \"./account-management.ts\";\nimport { type AccountSlot, type ClaudeSdkOauthCredential, emptyCredential, listAccounts } from \"./accounts.ts\";\nimport { selectAccount } from \"./affinity.ts\";\nimport { type ClaudeSdkOauthProviderSettings, loadClaudeSdkOauthProviderSettingsFromDisk } from \"./settings.ts\";\n\nconst cliPinsBySession = new Map<string, string>();\n\ntype CommandEnvironment = (name: string) => string | undefined;\n\nexport interface ClaudeAccountCommandDeps {\n\tloadSettings?: (cwd: string) => ClaudeSdkOauthProviderSettings;\n\tenvironment?: CommandEnvironment;\n}\n\nfunction asCredential(value: Credential | undefined): ClaudeSdkOauthCredential | undefined {\n\treturn value?.type === \"oauth\" ? (value as ClaudeSdkOauthCredential) : undefined;\n}\n\nfunction slotStatus(slot: AccountSlot): string {\n\tif (slot.blockReason === \"auth_error\") return \"blocked until re-login\";\n\tif (slot.blockedUntil !== undefined && slot.blockedUntil > Date.now()) {\n\t\treturn `blocked until ${new Date(slot.blockedUntil).toISOString()}`;\n\t}\n\treturn \"available\";\n}\n\nfunction readAccounts(\n\tctx: ExtensionCommandContext,\n\tenvironment: CommandEnvironment,\n): {\n\tcredential: ClaudeSdkOauthCredential | undefined;\n\taccounts: AccountSlot[];\n} {\n\tconst credential = asCredential(ctx.modelRegistry.authStorage.get(CLAUDE_SDK_OAUTH_PROVIDER_ID));\n\treturn {\n\t\tcredential,\n\t\taccounts: listAccounts(credential ?? emptyCredential(), environment),\n\t};\n}\n\nfunction accountError(ctx: ExtensionCommandContext, name: string): void {\n\tctx.ui.notify(`Claude SDK OAuth account '${name}' does not exist.`, \"error\");\n}\n\nfunction parseArgs(rawArgs: string): string[] {\n\treturn rawArgs.trim().split(/\\s+/).filter(Boolean);\n}\n\nfunction authEventMessage(event: unknown): string {\n\tif (event === null || typeof event !== \"object\") return \"Claude SDK OAuth authentication update.\";\n\tconst value = event as Record<string, unknown>;\n\tif (value.type === \"auth_url\" && typeof value.url === \"string\") {\n\t\treturn `Open this URL to authorize Claude SDK OAuth:\\n${value.url}`;\n\t}\n\tif (value.type === \"device_code\" && typeof value.verificationUri === \"string\") {\n\t\treturn `Open this URL to authorize Claude SDK OAuth:\\n${value.verificationUri}`;\n\t}\n\treturn typeof value.message === \"string\" ? value.message : \"Claude SDK OAuth authentication update.\";\n}\n\nexport function getSessionClaudeAccountPin(sessionId: string | undefined): string | undefined {\n\treturn sessionId === undefined ? undefined : cliPinsBySession.get(sessionId);\n}\n\n/** CLI pins are request-local overrides; settings and stored pins remain fallback choices. */\nexport function resolveClaudeAccountPin(\n\tcliPinnedAccount: string | undefined,\n\tsettingsPinnedAccount: string | undefined,\n\tstoredPinnedAccount: string | undefined,\n): string | undefined {\n\treturn cliPinnedAccount ?? settingsPinnedAccount ?? storedPinnedAccount;\n}\n\nexport function registerClaudeAccountCommand(pi: ExtensionAPI, deps: ClaudeAccountCommandDeps = {}): void {\n\tconst loadSettings = deps.loadSettings ?? loadClaudeSdkOauthProviderSettingsFromDisk;\n\tconst environment = deps.environment ?? ((name: string) => process.env[name]);\n\n\tpi.registerFlag(\"claude-account\", {\n\t\ttype: \"string\",\n\t\tdescription: \"Pin Claude SDK OAuth account for this session.\",\n\t});\n\tpi.on(\"session_start\", (_event, ctx) => {\n\t\tconst flag = pi.getFlag(\"claude-account\");\n\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\tif (typeof flag === \"string\" && flag.length > 0) cliPinsBySession.set(sessionId, flag);\n\t\telse cliPinsBySession.delete(sessionId);\n\t});\n\tpi.on(\"session_shutdown\", (_event, ctx) => {\n\t\tcliPinsBySession.delete(ctx.sessionManager.getSessionId());\n\t});\n\tpi.registerCommand(\"claude-account\", {\n\t\tdescription: \"List and manage Claude SDK OAuth accounts.\",\n\t\targumentHint: \"[add | remove <name> | pin <name> | unpin]\",\n\t\thandler: async (rawArgs, ctx) => {\n\t\t\tconst args = parseArgs(rawArgs);\n\t\t\tconst action = args[0] ?? \"list\";\n\t\t\tif (action === \"list\") {\n\t\t\t\tshowAccounts(ctx, loadSettings(ctx.cwd), environment);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (action === \"add\") {\n\t\t\t\tawait addAccount(ctx);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (action === \"remove\") {\n\t\t\t\tawait removeNamedAccount(ctx, args[1], environment);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (action === \"pin\" && args[1] !== \"unpin\") {\n\t\t\t\tawait pinNamedAccount(ctx, args[1], environment);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (action === \"unpin\" || (action === \"pin\" && args[1] === \"unpin\")) {\n\t\t\t\tawait unpinAccount(ctx);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tctx.ui.notify(\"Usage: /claude-account [add | remove <name> | pin <name> | unpin]\", \"error\");\n\t\t},\n\t});\n}\n\nfunction showAccounts(\n\tctx: ExtensionCommandContext,\n\tsettings: ClaudeSdkOauthProviderSettings,\n\tenvironment: CommandEnvironment,\n): void {\n\tconst { credential, accounts } = readAccounts(ctx, environment);\n\tconst cliPin = getSessionClaudeAccountPin(ctx.sessionManager.getSessionId());\n\tconst pinned = resolveClaudeAccountPin(cliPin, settings.pinnedAccount, credential?.pinned);\n\tconst pinSource = cliPin !== undefined ? \"CLI\" : settings.pinnedAccount !== undefined ? \"settings\" : \"stored\";\n\tlet affinityPick: string | undefined;\n\tlet affinityError: string | undefined;\n\tif (accounts.length > 0) {\n\t\ttry {\n\t\t\taffinityPick = selectAccount(accounts, {\n\t\t\t\tsessionId: ctx.sessionManager.getSessionId(),\n\t\t\t\tpinnedAccount: pinned,\n\t\t\t}).name;\n\t\t} catch (error) {\n\t\t\taffinityError = error instanceof Error ? error.message : String(error);\n\t\t}\n\t}\n\tconst lines = [\"Claude SDK OAuth accounts:\"];\n\tif (accounts.length === 0) lines.push(\" (none)\");\n\tfor (const account of accounts) {\n\t\tconst states = [account.name, account.source, slotStatus(account)];\n\t\tif (account.name === pinned) states.push(\"pinned\");\n\t\tif (account.name === affinityPick) states.push(\"affinity pick\");\n\t\tlines.push(` ${states.join(\" | \")}`);\n\t}\n\tlines.push(`Pinned account: ${pinned === undefined ? \"none\" : `${pinned} (${pinSource.toLowerCase()})`}`);\n\tlines.push(`Affinity pick: ${affinityPick ?? (affinityError ? `unavailable - ${affinityError}` : \"none\")}`);\n\tctx.ui.notify(lines.join(\"\\n\"), \"info\");\n}\n\nasync function addAccount(ctx: ExtensionCommandContext): Promise<void> {\n\tif (!ctx.hasUI) {\n\t\tctx.ui.notify(\"/claude-account add requires an interactive UI.\", \"error\");\n\t\treturn;\n\t}\n\ttry {\n\t\tawait ctx.modelRegistry.modelRuntime.login(CLAUDE_SDK_OAUTH_PROVIDER_ID, \"oauth\", {\n\t\t\tsignal: ctx.signal,\n\t\t\tprompt: async (prompt) => {\n\t\t\t\tconst answer = await ctx.ui.input(prompt.message);\n\t\t\t\tif (answer === undefined) throw new Error(\"Login cancelled\");\n\t\t\t\treturn answer;\n\t\t\t},\n\t\t\tnotify: (event) => ctx.ui.notify(authEventMessage(event), \"info\"),\n\t\t});\n\t\temitProviderAccountsChanged(CLAUDE_SDK_OAUTH_PROVIDER_ID);\n\t\tctx.ui.notify(\"Claude SDK OAuth account added.\", \"info\");\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tif (message !== \"Login cancelled\") ctx.ui.notify(`Failed to add Claude SDK OAuth account: ${message}`, \"error\");\n\t}\n}\n\nasync function removeNamedAccount(\n\tctx: ExtensionCommandContext,\n\tname: string | undefined,\n\tenvironment: CommandEnvironment,\n): Promise<void> {\n\tif (!name) {\n\t\tctx.ui.notify(\"Usage: /claude-account remove <name>\", \"error\");\n\t\treturn;\n\t}\n\tconst { accounts } = readAccounts(ctx, environment);\n\tconst target = accounts.find((account) => account.name === name);\n\tif (!target) return accountError(ctx, name);\n\tif (target.source === \"env\") {\n\t\tctx.ui.notify(`Claude SDK OAuth account '${name}' comes from the environment and cannot be removed.`, \"error\");\n\t\treturn;\n\t}\n\ttry {\n\t\tawait removeProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_SDK_OAUTH_PROVIDER_ID, name);\n\t\tctx.ui.notify(`Removed Claude SDK OAuth account: ${name}.`, \"info\");\n\t} catch (error) {\n\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t}\n}\n\nasync function pinNamedAccount(\n\tctx: ExtensionCommandContext,\n\tname: string | undefined,\n\tenvironment: CommandEnvironment,\n): Promise<void> {\n\tif (!name) {\n\t\tctx.ui.notify(\"Usage: /claude-account pin <name>\", \"error\");\n\t\treturn;\n\t}\n\tif (!readAccounts(ctx, environment).accounts.some((account) => account.name === name)) {\n\t\treturn accountError(ctx, name);\n\t}\n\ttry {\n\t\tawait pinProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_SDK_OAUTH_PROVIDER_ID, name);\n\t\tctx.ui.notify(`Pinned Claude SDK OAuth account: ${name}.`, \"info\");\n\t} catch (error) {\n\t\tctx.ui.notify(error instanceof Error ? error.message : String(error), \"error\");\n\t}\n}\n\nasync function unpinAccount(ctx: ExtensionCommandContext): Promise<void> {\n\tconst credential = asCredential(ctx.modelRegistry.authStorage.get(CLAUDE_SDK_OAUTH_PROVIDER_ID));\n\tif (!credential?.pinned) {\n\t\tctx.ui.notify(\"No stored Claude SDK OAuth account pin is set.\", \"info\");\n\t\treturn;\n\t}\n\tawait pinProviderAccount(ctx.modelRegistry.authStorage, CLAUDE_SDK_OAUTH_PROVIDER_ID, null);\n\tctx.ui.notify(\"Unpinned Claude SDK OAuth account.\", \"info\");\n}\n"]}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.d.ts.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-events.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"account-events.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/account-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,4BAA4B,GAAG;IAC1C,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IAC1C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,GAAG,4BAA4B,CAAC;AAE/F,KAAK,4BAA4B,GAAG,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAI1E,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,4BAA4B,GAAG,MAAM,IAAI,CAGjG;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAElE;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAElH"}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-events.js.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-events.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"account-events.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/account-events.ts"],"names":[],"mappings":"AAmBA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;AAE1D,MAAM,UAAU,8BAA8B,CAAC,QAAsC;IACpF,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC3D,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB,EAAE,IAAY,EAAE,EAAU,EAAE,MAAoB;IAC3G,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,IAAI,CAAC,KAA2B;IACxC,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC","sourcesContent":["import type { SdkErrorKind } from \"./errors.ts\";\n\nexport type ProviderAccountsChangedEvent = {\n\treadonly type: \"accounts_changed\";\n\treadonly provider: string;\n};\n\nexport type ProviderAccountFailoverEvent = {\n\treadonly type: \"failover\";\n\treadonly provider: string;\n\treadonly from: string;\n\treadonly to: string;\n\treadonly reason: SdkErrorKind;\n};\n\nexport type ProviderAccountEvent = ProviderAccountsChangedEvent | ProviderAccountFailoverEvent;\n\ntype ProviderAccountEventListener = (event: ProviderAccountEvent) => void;\n\nconst listeners = new Set<ProviderAccountEventListener>();\n\nexport function subscribeProviderAccountEvents(listener: ProviderAccountEventListener): () => void {\n\tlisteners.add(listener);\n\treturn () => listeners.delete(listener);\n}\n\nexport function emitProviderAccountsChanged(provider: string): void {\n\temit({ type: \"accounts_changed\", provider });\n}\n\nexport function emitProviderAccountFailover(provider: string, from: string, to: string, reason: SdkErrorKind): void {\n\temit({ type: \"failover\", provider, from, to, reason });\n}\n\nfunction emit(event: ProviderAccountEvent): void {\n\tfor (const listener of listeners) listener(event);\n}\n"]}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.d.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AuthStorage } from "../../../auth-storage.ts";
|
|
2
2
|
import { type AccountSlot } from "./accounts.ts";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const CLAUDE_SDK_OAUTH_PROVIDER_ID = "claude-sdk-oauth";
|
|
4
4
|
export type ProviderAccountSummary = {
|
|
5
5
|
readonly name: string;
|
|
6
6
|
readonly source: AccountSlot["source"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-management.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"account-management.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/account-management.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EACN,KAAK,WAAW,EAMhB,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,sBAAsB,EAAE,CAW1B;AAED,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/G"}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { emitProviderAccountsChanged } from "./account-events.js";
|
|
2
2
|
import { emptyCredential, listAccounts, pinAccount, removeAccount, } from "./accounts.js";
|
|
3
|
-
export const
|
|
3
|
+
export const CLAUDE_SDK_OAUTH_PROVIDER_ID = "claude-sdk-oauth";
|
|
4
4
|
export function getProviderAccounts(storage, provider, env = process.env) {
|
|
5
5
|
assertManagedProvider(provider);
|
|
6
6
|
const credential = credentialFrom(storage.get(provider));
|
|
@@ -46,7 +46,7 @@ export async function removeProviderAccount(storage, provider, name) {
|
|
|
46
46
|
emitProviderAccountsChanged(provider);
|
|
47
47
|
}
|
|
48
48
|
function assertManagedProvider(provider) {
|
|
49
|
-
if (provider !==
|
|
49
|
+
if (provider !== CLAUDE_SDK_OAUTH_PROVIDER_ID) {
|
|
50
50
|
throw new Error(`Provider account management is unavailable for: ${provider}`);
|
|
51
51
|
}
|
|
52
52
|
}
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/account-management.js.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-management.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"account-management.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/account-management.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Credential } from \"@earendil-works/pi-ai\";\nimport type { AuthStorage } from \"../../../auth-storage.ts\";\nimport { emitProviderAccountsChanged } from \"./account-events.ts\";\nimport {\n\ttype AccountSlot,\n\ttype ClaudeSdkOauthCredential,\n\temptyCredential,\n\tlistAccounts,\n\tpinAccount,\n\tremoveAccount,\n} from \"./accounts.ts\";\n\nexport const CLAUDE_SDK_OAUTH_PROVIDER_ID = \"claude-sdk-oauth\";\n\nexport type ProviderAccountSummary = {\n\treadonly name: string;\n\treadonly source: AccountSlot[\"source\"];\n\treadonly blocked: boolean;\n\treadonly pinned: boolean;\n};\n\nexport function getProviderAccounts(\n\tstorage: AuthStorage,\n\tprovider: string,\n\tenv: NodeJS.ProcessEnv = process.env,\n): ProviderAccountSummary[] {\n\tassertManagedProvider(provider);\n\tconst credential = credentialFrom(storage.get(provider));\n\tconst now = Date.now();\n\treturn listAccounts(credential, (name) => env[name]).map((account) => ({\n\t\tname: account.name,\n\t\tsource: account.source,\n\t\tblocked:\n\t\t\taccount.blockReason === \"auth_error\" || (account.blockedUntil !== undefined && account.blockedUntil > now),\n\t\tpinned: credential.pinned === account.name,\n\t}));\n}\n\nexport async function pinProviderAccount(\n\tstorage: AuthStorage,\n\tprovider: string,\n\tname: string | null,\n\tenv: NodeJS.ProcessEnv = process.env,\n): Promise<void> {\n\tassertManagedProvider(provider);\n\tawait storage.modify(provider, async (current) => {\n\t\tconst credential = credentialFrom(current);\n\t\tif (name === null) {\n\t\t\tif (credential.pinned === undefined) return current;\n\t\t\tconst { pinned: _pinned, ...unpinned } = credential;\n\t\t\treturn unpinned;\n\t\t}\n\t\tif (!listAccounts(credential, (key) => env[key]).some((account) => account.name === name)) {\n\t\t\tthrow new Error(`Provider account not found: ${name}`);\n\t\t}\n\t\treturn pinAccount(credential, name);\n\t});\n\temitProviderAccountsChanged(provider);\n}\n\nexport async function removeProviderAccount(storage: AuthStorage, provider: string, name: string): Promise<void> {\n\tassertManagedProvider(provider);\n\tawait storage.modify(provider, async (current) => {\n\t\tconst credential = credentialFrom(current);\n\t\tconst account = (credential.accounts ?? []).find((candidate) => candidate.name === name);\n\t\tif (!account) {\n\t\t\tconst environmentAccount = listAccounts(credential, (key) => process.env[key]).find(\n\t\t\t\t(candidate) => candidate.name === name,\n\t\t\t);\n\t\t\tif (environmentAccount?.source === \"env\") {\n\t\t\t\tthrow new Error(`Environment provider account cannot be removed: ${name}`);\n\t\t\t}\n\t\t\tthrow new Error(`Provider account not found: ${name}`);\n\t\t}\n\t\treturn removeAccount(credential, name);\n\t});\n\temitProviderAccountsChanged(provider);\n}\n\nfunction assertManagedProvider(provider: string): void {\n\tif (provider !== CLAUDE_SDK_OAUTH_PROVIDER_ID) {\n\t\tthrow new Error(`Provider account management is unavailable for: ${provider}`);\n\t}\n}\n\nfunction credentialFrom(credential: Credential | undefined): ClaudeSdkOauthCredential {\n\tif (credential === undefined) return emptyCredential();\n\tif (credential.type !== \"oauth\") throw new Error(\"Provider account management requires an OAuth credential\");\n\treturn credential as ClaudeSdkOauthCredential;\n}\n"]}
|
|
@@ -12,23 +12,23 @@ export type SlotState = Record<string, {
|
|
|
12
12
|
blockedUntil?: number;
|
|
13
13
|
blockReason?: string;
|
|
14
14
|
}>;
|
|
15
|
-
export type
|
|
15
|
+
export type ClaudeSdkOauthCredential = OAuthCredential & {
|
|
16
16
|
accounts?: AccountSlot[];
|
|
17
17
|
pinned?: string;
|
|
18
18
|
slotState?: SlotState;
|
|
19
19
|
};
|
|
20
20
|
export declare const SENTINEL_OAUTH_FIELDS: {
|
|
21
|
-
readonly access: "claude-
|
|
22
|
-
readonly refresh: "claude-
|
|
21
|
+
readonly access: "claude-sdk-oauth-managed";
|
|
22
|
+
readonly refresh: "claude-sdk-oauth-managed";
|
|
23
23
|
readonly expires: 4102444800000;
|
|
24
24
|
};
|
|
25
|
-
export declare function emptyCredential():
|
|
26
|
-
export declare function listAccounts(credential:
|
|
25
|
+
export declare function emptyCredential(): ClaudeSdkOauthCredential;
|
|
26
|
+
export declare function listAccounts(credential: ClaudeSdkOauthCredential, env?: (name: string) => string | undefined): AccountSlot[];
|
|
27
27
|
export declare function assertValidAccountName(name: string): void;
|
|
28
|
-
export declare function addAccount(credential:
|
|
29
|
-
export declare function removeAccount(credential:
|
|
30
|
-
export declare function pinAccount(credential:
|
|
31
|
-
export declare function assertSentinelInvariant(credential:
|
|
28
|
+
export declare function addAccount(credential: ClaudeSdkOauthCredential, slot: AccountSlot): ClaudeSdkOauthCredential;
|
|
29
|
+
export declare function removeAccount(credential: ClaudeSdkOauthCredential, name: string): ClaudeSdkOauthCredential;
|
|
30
|
+
export declare function pinAccount(credential: ClaudeSdkOauthCredential, name: string): ClaudeSdkOauthCredential;
|
|
31
|
+
export declare function assertSentinelInvariant(credential: ClaudeSdkOauthCredential): void;
|
|
32
32
|
export declare function envSlots(env: (name: string) => string | undefined): AccountSlot[];
|
|
33
33
|
export declare function envSlotToken(env: (name: string) => string | undefined, slotName: string): string | undefined;
|
|
34
34
|
export type SlotRefresher = (refreshToken: string) => Promise<{
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/accounts.d.ts.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE1F,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExF,MAAM,MAAM,wBAAwB,GAAG,eAAe,GAAG;IACxD,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,qBAAqB;aACjC,MAAM,EAAE,0BAA0B;aAClC,OAAO,EAAE,0BAA0B;aACnC,OAAO,EAAE,aAAa;CACb,CAAC;AAEX,wBAAgB,eAAe,IAAI,wBAAwB,CAE1D;AAMD,wBAAgB,YAAY,CAC3B,UAAU,EAAE,wBAAwB,EACpC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACxC,WAAW,EAAE,CAUf;AAID,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,wBAAwB,EAAE,IAAI,EAAE,WAAW,GAAG,wBAAwB,CAM5G;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAK1G;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAEvG;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAQlF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,WAAW,EAAE,CAajF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK5G;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACpH,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAE/D,wBAAsB,WAAW,CAChC,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,EACxB,UAAU,GAAE,mBAAwD,GAClE,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAejC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/accounts.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Credential, CredentialStore, OAuthCredential } from \"@earendil-works/pi-ai\";\n\nexport type AccountSlot = {\n\tname: string;\n\trefresh: string;\n\taccess: string;\n\texpires: number;\n\tsource: \"login\" | \"import\" | \"env\";\n\tblockedUntil?: number;\n\tblockReason?: string;\n};\n\nexport type SlotState = Record<string, { blockedUntil?: number; blockReason?: string }>;\n\nexport type ClaudeSdkOauthCredential = OAuthCredential & {\n\taccounts?: AccountSlot[];\n\tpinned?: string;\n\tslotState?: SlotState;\n};\n\nexport const SENTINEL_OAUTH_FIELDS = {\n\taccess: \"claude-sdk-oauth-managed\",\n\trefresh: \"claude-sdk-oauth-managed\",\n\texpires: 4102444800000,\n} as const;\n\nexport function emptyCredential(): ClaudeSdkOauthCredential {\n\treturn { type: \"oauth\", ...SENTINEL_OAUTH_FIELDS, accounts: [] };\n}\n\nfunction storedSlots(credential: ClaudeSdkOauthCredential): AccountSlot[] {\n\treturn credential.accounts ?? [];\n}\n\nexport function listAccounts(\n\tcredential: ClaudeSdkOauthCredential,\n\tenv?: (name: string) => string | undefined,\n): AccountSlot[] {\n\tconst slots = [...storedSlots(credential)];\n\tif (env) {\n\t\tconst state = credential.slotState ?? {};\n\t\tfor (const slot of envSlots(env)) {\n\t\t\tconst persisted = state[slot.name];\n\t\t\tslots.push(persisted ? { ...slot, ...persisted } : slot);\n\t\t}\n\t}\n\treturn slots;\n}\n\nconst ACCOUNT_NAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$/;\n\nexport function assertValidAccountName(name: string): void {\n\tif (!ACCOUNT_NAME_PATTERN.test(name)) {\n\t\tthrow new Error(\n\t\t\t`Invalid account name '${name}': use letters, digits, '-' or '_', starting with a letter or digit`,\n\t\t);\n\t}\n}\n\nexport function addAccount(credential: ClaudeSdkOauthCredential, slot: AccountSlot): ClaudeSdkOauthCredential {\n\tassertValidAccountName(slot.name);\n\tif (storedSlots(credential).some((existing) => existing.name === slot.name)) {\n\t\tthrow new Error(`Account '${slot.name}' already exists`);\n\t}\n\treturn { ...credential, accounts: [...storedSlots(credential), slot] };\n}\n\nexport function removeAccount(credential: ClaudeSdkOauthCredential, name: string): ClaudeSdkOauthCredential {\n\tconst accounts = storedSlots(credential).filter((slot) => slot.name !== name);\n\tconst next: ClaudeSdkOauthCredential = { ...credential, accounts };\n\tif (credential.pinned === name) delete next.pinned;\n\treturn next;\n}\n\nexport function pinAccount(credential: ClaudeSdkOauthCredential, name: string): ClaudeSdkOauthCredential {\n\treturn { ...credential, pinned: name };\n}\n\nexport function assertSentinelInvariant(credential: ClaudeSdkOauthCredential): void {\n\tif (\n\t\tcredential.access !== SENTINEL_OAUTH_FIELDS.access ||\n\t\tcredential.refresh !== SENTINEL_OAUTH_FIELDS.refresh ||\n\t\tcredential.expires !== SENTINEL_OAUTH_FIELDS.expires\n\t) {\n\t\tthrow new Error(\"top-level OAuth fields must remain sentinel values\");\n\t}\n}\n\nexport function envSlots(env: (name: string) => string | undefined): AccountSlot[] {\n\tconst slots: AccountSlot[] = [];\n\tconst read = (suffix: string | undefined) =>\n\t\tenv(suffix === undefined ? \"CLAUDE_CODE_OAUTH_TOKEN\" : `CLAUDE_CODE_OAUTH_TOKEN_${suffix}`);\n\tconst names: Array<{ suffix?: string; slot: string }> = [{ slot: \"env\" }];\n\tfor (let index = 2; index <= 16; index++) names.push({ suffix: String(index), slot: `env-${index}` });\n\tfor (const { suffix, slot } of names) {\n\t\tconst token = read(suffix);\n\t\tif (token) {\n\t\t\tslots.push({ name: slot, refresh: \"\", access: \"\", expires: 0, source: \"env\" });\n\t\t}\n\t}\n\treturn slots;\n}\n\nexport function envSlotToken(env: (name: string) => string | undefined, slotName: string): string | undefined {\n\tconst match = /^env(?:-(\\d+))?$/.exec(slotName);\n\tif (!match) return undefined;\n\tconst suffix = match[1];\n\treturn env(suffix === undefined ? \"CLAUDE_CODE_OAUTH_TOKEN\" : `CLAUDE_CODE_OAUTH_TOKEN_${suffix}`);\n}\n\nexport type SlotRefresher = (refreshToken: string) => Promise<{ refresh: string; access: string; expires: number }>;\nexport type SlotExpirationCheck = (expires: number) => boolean;\n\nexport async function refreshSlot(\n\tstore: CredentialStore,\n\tproviderId: string,\n\tslotName: string,\n\trefresher: SlotRefresher,\n\tisExpiring: SlotExpirationCheck = (expires) => Date.now() >= expires,\n): Promise<Credential | undefined> {\n\treturn store.modify(providerId, async (current) => {\n\t\tif (current?.type !== \"oauth\") return undefined;\n\t\tconst credential = current as ClaudeSdkOauthCredential;\n\t\tconst slot = storedSlots(credential).find((candidate) => candidate.name === slotName);\n\t\tif (!slot) return current;\n\t\tif (!isExpiring(slot.expires)) return current;\n\t\tconst refreshed = await refresher(slot.refresh);\n\t\tconst accounts = storedSlots(credential).map((candidate) =>\n\t\t\tcandidate.name === slotName\n\t\t\t\t? { ...candidate, refresh: refreshed.refresh, access: refreshed.access, expires: refreshed.expires }\n\t\t\t\t: candidate,\n\t\t);\n\t\treturn { ...credential, accounts };\n\t});\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AccountSlot } from "./accounts.ts";
|
|
2
|
-
export declare const DEFAULT_AFFINITY_KEY = "claude-
|
|
2
|
+
export declare const DEFAULT_AFFINITY_KEY = "claude-sdk-oauth-default";
|
|
3
3
|
export type AffinityOptions = {
|
|
4
4
|
affinityKey?: string;
|
|
5
5
|
sessionId?: string;
|
package/dist/core/extensions/builtin/{claude-agent-sdk → claude-sdk-oauth}/affinity.d.ts.map
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affinity.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"affinity.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/affinity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9C,YAAY,gBAAgB,EAAE,MAAM,GAAG,SAAS,EAQ/C;CACD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,MAAM,CAElG;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CAK5F;AAMD,gHAAgH;AAChH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,SAAa,GAAG,WAAW,EAAE,CAQpG;AAsBD,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,WAAW,CAW1G"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
export const DEFAULT_AFFINITY_KEY = "claude-
|
|
2
|
+
export const DEFAULT_AFFINITY_KEY = "claude-sdk-oauth-default";
|
|
3
3
|
export class AllAccountsBlockedError extends Error {
|
|
4
4
|
constructor(soonestUnblockAt) {
|
|
5
5
|
super(soonestUnblockAt === undefined
|
|
6
|
-
? "All Claude
|
|
7
|
-
: `All Claude
|
|
6
|
+
? "All Claude SDK OAuth accounts are blocked until re-login."
|
|
7
|
+
: `All Claude SDK OAuth accounts are blocked until ${new Date(soonestUnblockAt).toISOString()}.`);
|
|
8
8
|
this.name = "AllAccountsBlockedError";
|
|
9
9
|
this.soonestUnblockAt = soonestUnblockAt;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affinity.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-
|
|
1
|
+
{"version":3,"file":"affinity.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/claude-sdk-oauth/affinity.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { AccountSlot } from \"./accounts.ts\";\n\nexport const DEFAULT_AFFINITY_KEY = \"claude-sdk-oauth-default\";\n\nexport type AffinityOptions = {\n\taffinityKey?: string;\n\tsessionId?: string;\n\tpinnedAccount?: string;\n\tnow?: number;\n};\n\nexport class AllAccountsBlockedError extends Error {\n\treadonly soonestUnblockAt: number | undefined;\n\n\tconstructor(soonestUnblockAt: number | undefined) {\n\t\tsuper(\n\t\t\tsoonestUnblockAt === undefined\n\t\t\t\t? \"All Claude SDK OAuth accounts are blocked until re-login.\"\n\t\t\t\t: `All Claude SDK OAuth accounts are blocked until ${new Date(soonestUnblockAt).toISOString()}.`,\n\t\t);\n\t\tthis.name = \"AllAccountsBlockedError\";\n\t\tthis.soonestUnblockAt = soonestUnblockAt;\n\t}\n}\n\nexport function getAffinityKey(options: Pick<AffinityOptions, \"affinityKey\" | \"sessionId\">): string {\n\treturn options.affinityKey ?? options.sessionId ?? DEFAULT_AFFINITY_KEY;\n}\n\nfunction score(key: string, accountName: string): bigint {\n\treturn createHash(\"sha256\").update(`${key}\\0${accountName}`).digest().readBigUInt64BE(0);\n}\n\n/**\n * Session-stable HRW ordering preserves Claude prompt-cache locality while moving\n * only the sessions that rendezvous with a newly added or removed account.\n */\nexport function rendezvousOrder(key: string, accounts: readonly AccountSlot[]): AccountSlot[] {\n\treturn [...accounts]\n\t\t.map((account) => ({ account, score: score(key, account.name) }))\n\t\t.sort((left, right) => (right.score > left.score ? 1 : right.score < left.score ? -1 : 0))\n\t\t.map(({ account }) => account);\n}\n\nfunction isBlocked(account: AccountSlot, now: number): boolean {\n\treturn account.blockReason === \"auth_error\" || (account.blockedUntil !== undefined && account.blockedUntil > now);\n}\n\n/** Removes elapsed rate/capacity blocks but deliberately retains auth blocks until login refreshes the slot. */\nexport function clearExpiredBlocks(accounts: readonly AccountSlot[], now = Date.now()): AccountSlot[] {\n\treturn accounts.map((account) => {\n\t\tif (account.blockReason !== \"auth_error\" && account.blockedUntil !== undefined && account.blockedUntil <= now) {\n\t\t\tconst { blockedUntil: _blockedUntil, blockReason: _blockReason, ...available } = account;\n\t\t\treturn available;\n\t\t}\n\t\treturn account;\n\t});\n}\n\nfunction selectUnblocked(\n\taccounts: readonly AccountSlot[],\n\toptions: AffinityOptions,\n\tnow: number,\n): AccountSlot | undefined {\n\tconst pinned =\n\t\toptions.pinnedAccount === undefined\n\t\t\t? undefined\n\t\t\t: accounts.find((account) => account.name === options.pinnedAccount);\n\tif (pinned && !isBlocked(pinned, now)) return pinned;\n\treturn rendezvousOrder(getAffinityKey(options), accounts).find((account) => !isBlocked(account, now));\n}\n\nfunction soonestUnblockAt(accounts: readonly AccountSlot[], now: number): number | undefined {\n\tconst candidates = accounts\n\t\t.map((account) => account.blockedUntil)\n\t\t.filter((value): value is number => value !== undefined && value > now);\n\treturn candidates.length === 0 ? undefined : Math.min(...candidates);\n}\n\n/** Selects a pinned or HRW-ranked account with no provider-global selection state. */\nexport function selectAccount(accounts: readonly AccountSlot[], options: AffinityOptions = {}): AccountSlot {\n\tconst now = options.now ?? Date.now();\n\tconst selected = selectUnblocked(accounts, options, now);\n\tif (selected) return selected;\n\n\t// A stale persisted rate-limit entry must not dead-end the pool. Retry once\n\t// against the cleared view before reporting the earliest available account.\n\tconst cleared = clearExpiredBlocks(accounts, now);\n\tconst afterClear = selectUnblocked(cleared, options, now);\n\tif (afterClear) return afterClear;\n\tthrow new AllAccountsBlockedError(soonestUnblockAt(accounts, now));\n}\n"]}
|