@slkiser/opencode-quota 4.10.5 → 5.0.0-beta.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/README.md +43 -31
- package/dist/bin/opencode-quota.d.ts +6 -0
- package/dist/bin/opencode-quota.d.ts.map +1 -1
- package/dist/bin/opencode-quota.js +17 -0
- package/dist/bin/opencode-quota.js.map +1 -1
- package/dist/data/modelsdev-pricing.min.json +83 -2
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/accounting-format.js +1 -1
- package/dist/lib/accounting-format.js.map +1 -1
- package/dist/lib/alibaba-auth.d.ts +5 -5
- package/dist/lib/alibaba-auth.d.ts.map +1 -1
- package/dist/lib/alibaba-auth.js +15 -8
- package/dist/lib/alibaba-auth.js.map +1 -1
- package/dist/lib/alibaba-token-plan.d.ts +7 -4
- package/dist/lib/alibaba-token-plan.d.ts.map +1 -1
- package/dist/lib/alibaba-token-plan.js +32 -10
- package/dist/lib/alibaba-token-plan.js.map +1 -1
- package/dist/lib/anthropic-auth.d.ts +4 -1
- package/dist/lib/anthropic-auth.d.ts.map +1 -1
- package/dist/lib/anthropic-auth.js +5 -1
- package/dist/lib/anthropic-auth.js.map +1 -1
- package/dist/lib/anthropic.d.ts +7 -1
- package/dist/lib/anthropic.d.ts.map +1 -1
- package/dist/lib/anthropic.js +61 -7
- package/dist/lib/anthropic.js.map +1 -1
- package/dist/lib/api-key-resolver.d.ts +27 -16
- package/dist/lib/api-key-resolver.d.ts.map +1 -1
- package/dist/lib/api-key-resolver.js +46 -19
- package/dist/lib/api-key-resolver.js.map +1 -1
- package/dist/lib/chutes-config.d.ts +2 -2
- package/dist/lib/chutes-config.d.ts.map +1 -1
- package/dist/lib/chutes-config.js +4 -4
- package/dist/lib/chutes-config.js.map +1 -1
- package/dist/lib/cli-reports.d.ts +30 -0
- package/dist/lib/cli-reports.d.ts.map +1 -0
- package/dist/lib/cli-reports.js +172 -0
- package/dist/lib/cli-reports.js.map +1 -0
- package/dist/lib/cli-show.d.ts +14 -1
- package/dist/lib/cli-show.d.ts.map +1 -1
- package/dist/lib/cli-show.js +40 -138
- package/dist/lib/cli-show.js.map +1 -1
- package/dist/lib/cli-status.d.ts.map +1 -1
- package/dist/lib/cli-status.js +9 -36
- package/dist/lib/cli-status.js.map +1 -1
- package/dist/lib/config-file-utils.d.ts +10 -13
- package/dist/lib/config-file-utils.d.ts.map +1 -1
- package/dist/lib/config-file-utils.js +28 -30
- package/dist/lib/config-file-utils.js.map +1 -1
- package/dist/lib/config.d.ts +2 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +6 -17
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/copilot.d.ts +4 -1
- package/dist/lib/copilot.d.ts.map +1 -1
- package/dist/lib/copilot.js +17 -19
- package/dist/lib/copilot.js.map +1 -1
- package/dist/lib/cursor-detection.d.ts +1 -1
- package/dist/lib/cursor-detection.d.ts.map +1 -1
- package/dist/lib/cursor-detection.js +54 -51
- package/dist/lib/cursor-detection.js.map +1 -1
- package/dist/lib/cursor-pricing.d.ts +1 -1
- package/dist/lib/cursor-pricing.d.ts.map +1 -1
- package/dist/lib/cursor-pricing.js +85 -0
- package/dist/lib/cursor-pricing.js.map +1 -1
- package/dist/lib/deepseek-auth.d.ts +2 -2
- package/dist/lib/deepseek-auth.d.ts.map +1 -1
- package/dist/lib/deepseek-auth.js +4 -4
- package/dist/lib/deepseek-auth.js.map +1 -1
- package/dist/lib/display-sanitize.js +1 -1
- package/dist/lib/display-sanitize.js.map +1 -1
- package/dist/lib/entries.d.ts +7 -2
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/format-utils.d.ts +1 -1
- package/dist/lib/format-utils.js +1 -1
- package/dist/lib/glm-coding-plan.d.ts +1 -0
- package/dist/lib/glm-coding-plan.d.ts.map +1 -1
- package/dist/lib/glm-coding-plan.js +3 -1
- package/dist/lib/glm-coding-plan.js.map +1 -1
- package/dist/lib/google-agy.d.ts +6 -12
- package/dist/lib/google-agy.d.ts.map +1 -1
- package/dist/lib/google-agy.js +26 -24
- package/dist/lib/google-agy.js.map +1 -1
- package/dist/lib/google-companion-credentials.d.ts.map +1 -1
- package/dist/lib/google-companion-credentials.js +76 -26
- package/dist/lib/google-companion-credentials.js.map +1 -1
- package/dist/lib/google-gemini-cli.d.ts +7 -12
- package/dist/lib/google-gemini-cli.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli.js +42 -31
- package/dist/lib/google-gemini-cli.js.map +1 -1
- package/dist/lib/init-installer.d.ts +3 -1
- package/dist/lib/init-installer.d.ts.map +1 -1
- package/dist/lib/init-installer.js +69 -172
- package/dist/lib/init-installer.js.map +1 -1
- package/dist/lib/kilo-config.d.ts +2 -2
- package/dist/lib/kilo-config.d.ts.map +1 -1
- package/dist/lib/kilo-config.js +6 -5
- package/dist/lib/kilo-config.js.map +1 -1
- package/dist/lib/kimi-auth.d.ts +2 -2
- package/dist/lib/kimi-auth.d.ts.map +1 -1
- package/dist/lib/kimi-auth.js +4 -4
- package/dist/lib/kimi-auth.js.map +1 -1
- package/dist/lib/maintainer-announcements.d.ts.map +1 -1
- package/dist/lib/maintainer-announcements.js +5 -5
- package/dist/lib/maintainer-announcements.js.map +1 -1
- package/dist/lib/mimo-config.d.ts.map +1 -1
- package/dist/lib/mimo-config.js +2 -3
- package/dist/lib/mimo-config.js.map +1 -1
- package/dist/lib/minimax-auth.d.ts +6 -6
- package/dist/lib/minimax-auth.d.ts.map +1 -1
- package/dist/lib/minimax-auth.js +18 -17
- package/dist/lib/minimax-auth.js.map +1 -1
- package/dist/lib/nanogpt-config.d.ts +2 -2
- package/dist/lib/nanogpt-config.d.ts.map +1 -1
- package/dist/lib/nanogpt-config.js +4 -4
- package/dist/lib/nanogpt-config.js.map +1 -1
- package/dist/lib/ollama-cloud-config.d.ts +2 -2
- package/dist/lib/ollama-cloud-config.d.ts.map +1 -1
- package/dist/lib/ollama-cloud-config.js +6 -5
- package/dist/lib/ollama-cloud-config.js.map +1 -1
- package/dist/lib/openai.d.ts +7 -2
- package/dist/lib/openai.d.ts.map +1 -1
- package/dist/lib/openai.js +22 -8
- package/dist/lib/openai.js.map +1 -1
- package/dist/lib/opencode-auth-sqlite.d.ts +17 -0
- package/dist/lib/opencode-auth-sqlite.d.ts.map +1 -0
- package/dist/lib/opencode-auth-sqlite.js +105 -0
- package/dist/lib/opencode-auth-sqlite.js.map +1 -0
- package/dist/lib/opencode-auth.d.ts +127 -14
- package/dist/lib/opencode-auth.d.ts.map +1 -1
- package/dist/lib/opencode-auth.js +373 -46
- package/dist/lib/opencode-auth.js.map +1 -1
- package/dist/lib/opencode-config-providers.d.ts.map +1 -1
- package/dist/lib/opencode-config-providers.js +17 -18
- package/dist/lib/opencode-config-providers.js.map +1 -1
- package/dist/lib/opencode-console-auth.d.ts +47 -0
- package/dist/lib/opencode-console-auth.d.ts.map +1 -0
- package/dist/lib/opencode-console-auth.js +63 -0
- package/dist/lib/opencode-console-auth.js.map +1 -0
- package/dist/lib/opencode-db-path.d.ts +9 -0
- package/dist/lib/opencode-db-path.d.ts.map +1 -0
- package/dist/lib/opencode-db-path.js +16 -0
- package/dist/lib/opencode-db-path.js.map +1 -0
- package/dist/lib/opencode-go-auth.d.ts +4 -2
- package/dist/lib/opencode-go-auth.d.ts.map +1 -1
- package/dist/lib/opencode-go-auth.js +9 -5
- package/dist/lib/opencode-go-auth.js.map +1 -1
- package/dist/lib/opencode-go.d.ts +12 -0
- package/dist/lib/opencode-go.d.ts.map +1 -1
- package/dist/lib/opencode-go.js +113 -0
- package/dist/lib/opencode-go.js.map +1 -1
- package/dist/lib/opencode-runtime-paths.d.ts +6 -12
- package/dist/lib/opencode-runtime-paths.d.ts.map +1 -1
- package/dist/lib/opencode-runtime-paths.js +12 -82
- package/dist/lib/opencode-runtime-paths.js.map +1 -1
- package/dist/lib/opencode-sqlite.d.ts +4 -0
- package/dist/lib/opencode-sqlite.d.ts.map +1 -1
- package/dist/lib/opencode-sqlite.js +17 -52
- package/dist/lib/opencode-sqlite.js.map +1 -1
- package/dist/lib/opencode-storage.d.ts +4 -8
- package/dist/lib/opencode-storage.d.ts.map +1 -1
- package/dist/lib/opencode-storage.js +66 -90
- package/dist/lib/opencode-storage.js.map +1 -1
- package/dist/lib/opencode-version.d.ts +6 -0
- package/dist/lib/opencode-version.d.ts.map +1 -0
- package/dist/lib/opencode-version.js +26 -0
- package/dist/lib/opencode-version.js.map +1 -0
- package/dist/lib/opencode-zen.d.ts +10 -4
- package/dist/lib/opencode-zen.d.ts.map +1 -1
- package/dist/lib/opencode-zen.js +23 -13
- package/dist/lib/opencode-zen.js.map +1 -1
- package/dist/lib/provider-registration.d.ts +3 -4
- package/dist/lib/provider-registration.d.ts.map +1 -1
- package/dist/lib/provider-registration.js +3 -4
- package/dist/lib/provider-registration.js.map +1 -1
- package/dist/lib/quota-dialog-command-specs.d.ts +59 -0
- package/dist/lib/quota-dialog-command-specs.d.ts.map +1 -0
- package/dist/lib/quota-dialog-command-specs.js +145 -0
- package/dist/lib/quota-dialog-command-specs.js.map +1 -0
- package/dist/lib/quota-dialog-commands.d.ts +1 -25
- package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
- package/dist/lib/quota-dialog-commands.js +13 -132
- package/dist/lib/quota-dialog-commands.js.map +1 -1
- package/dist/lib/quota-export.d.ts.map +1 -1
- package/dist/lib/quota-export.js +1 -0
- package/dist/lib/quota-export.js.map +1 -1
- package/dist/lib/quota-providers-remote.d.ts +2 -2
- package/dist/lib/quota-providers-remote.d.ts.map +1 -1
- package/dist/lib/quota-providers-remote.js +6 -4
- package/dist/lib/quota-providers-remote.js.map +1 -1
- package/dist/lib/quota-render-data.d.ts +3 -0
- package/dist/lib/quota-render-data.d.ts.map +1 -1
- package/dist/lib/quota-render-data.js +2 -0
- package/dist/lib/quota-render-data.js.map +1 -1
- package/dist/lib/quota-report-message.d.ts +21 -0
- package/dist/lib/quota-report-message.d.ts.map +1 -0
- package/dist/lib/quota-report-message.js +40 -0
- package/dist/lib/quota-report-message.js.map +1 -0
- package/dist/lib/quota-runtime-context.d.ts +1 -0
- package/dist/lib/quota-runtime-context.d.ts.map +1 -1
- package/dist/lib/quota-runtime-context.js +1 -0
- package/dist/lib/quota-runtime-context.js.map +1 -1
- package/dist/lib/quota-state-codec.js +5 -5
- package/dist/lib/quota-state-codec.js.map +1 -1
- package/dist/lib/quota-stats.js +2 -1
- package/dist/lib/quota-stats.js.map +1 -1
- package/dist/lib/quota-status.d.ts +2 -10
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +33 -42
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/quota-surface-data.d.ts +26 -0
- package/dist/lib/quota-surface-data.d.ts.map +1 -0
- package/dist/lib/quota-surface-data.js +299 -0
- package/dist/lib/quota-surface-data.js.map +1 -0
- package/dist/lib/scoped-update-migration.d.ts +4 -4
- package/dist/lib/scoped-update-migration.d.ts.map +1 -1
- package/dist/lib/scoped-update-migration.js +11 -18
- package/dist/lib/scoped-update-migration.js.map +1 -1
- package/dist/lib/scoped-update.d.ts +5 -1
- package/dist/lib/scoped-update.d.ts.map +1 -1
- package/dist/lib/scoped-update.js +73 -51
- package/dist/lib/scoped-update.js.map +1 -1
- package/dist/lib/synthetic-config.d.ts +2 -2
- package/dist/lib/synthetic-config.d.ts.map +1 -1
- package/dist/lib/synthetic-config.js +4 -4
- package/dist/lib/synthetic-config.js.map +1 -1
- package/dist/lib/toast-format-grouped.js +1 -1
- package/dist/lib/toast-format-grouped.js.map +1 -1
- package/dist/lib/tui-panel-state.d.ts +0 -49
- package/dist/lib/tui-panel-state.d.ts.map +1 -1
- package/dist/lib/tui-panel-state.js +1 -41
- package/dist/lib/tui-panel-state.js.map +1 -1
- package/dist/lib/tui-sidebar-format.d.ts.map +1 -1
- package/dist/lib/tui-sidebar-format.js +8 -1
- package/dist/lib/tui-sidebar-format.js.map +1 -1
- package/dist/lib/types.d.ts +26 -7
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +1 -2
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/xai.d.ts +5 -1
- package/dist/lib/xai.d.ts.map +1 -1
- package/dist/lib/xai.js +13 -4
- package/dist/lib/xai.js.map +1 -1
- package/dist/lib/zai-auth.d.ts +2 -2
- package/dist/lib/zai-auth.d.ts.map +1 -1
- package/dist/lib/zai-auth.js +4 -4
- package/dist/lib/zai-auth.js.map +1 -1
- package/dist/lib/zai.d.ts +1 -0
- package/dist/lib/zai.d.ts.map +1 -1
- package/dist/lib/zai.js.map +1 -1
- package/dist/lib/zhipu-auth.d.ts +2 -2
- package/dist/lib/zhipu-auth.d.ts.map +1 -1
- package/dist/lib/zhipu-auth.js +4 -4
- package/dist/lib/zhipu-auth.js.map +1 -1
- package/dist/lib/zhipu.d.ts +1 -0
- package/dist/lib/zhipu.d.ts.map +1 -1
- package/dist/lib/zhipu.js.map +1 -1
- package/dist/plugin.d.ts +6 -9
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +213 -259
- package/dist/plugin.js.map +1 -1
- package/dist/providers/alibaba-coding-plan.d.ts.map +1 -1
- package/dist/providers/alibaba-coding-plan.js +1 -1
- package/dist/providers/alibaba-coding-plan.js.map +1 -1
- package/dist/providers/alibaba-token-plan.d.ts.map +1 -1
- package/dist/providers/alibaba-token-plan.js +1 -0
- package/dist/providers/alibaba-token-plan.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +83 -1
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/cache-policies.d.ts +2 -2
- package/dist/providers/cache-policies.d.ts.map +1 -1
- package/dist/providers/cache-policies.js +10 -9
- package/dist/providers/cache-policies.js.map +1 -1
- package/dist/providers/copilot.d.ts.map +1 -1
- package/dist/providers/copilot.js +60 -9
- package/dist/providers/copilot.js.map +1 -1
- package/dist/providers/deepseek.js +1 -1
- package/dist/providers/deepseek.js.map +1 -1
- package/dist/providers/glm-coding-plan-provider.d.ts +13 -1
- package/dist/providers/glm-coding-plan-provider.d.ts.map +1 -1
- package/dist/providers/glm-coding-plan-provider.js +53 -0
- package/dist/providers/glm-coding-plan-provider.js.map +1 -1
- package/dist/providers/google-agy.d.ts.map +1 -1
- package/dist/providers/google-agy.js +56 -7
- package/dist/providers/google-agy.js.map +1 -1
- package/dist/providers/google-gemini-cli.d.ts.map +1 -1
- package/dist/providers/google-gemini-cli.js +72 -7
- package/dist/providers/google-gemini-cli.js.map +1 -1
- package/dist/providers/kilo.js +1 -1
- package/dist/providers/kilo.js.map +1 -1
- package/dist/providers/kimi-code.d.ts.map +1 -1
- package/dist/providers/kimi-code.js +60 -1
- package/dist/providers/kimi-code.js.map +1 -1
- package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
- package/dist/providers/minimax-coding-plan.js +52 -1
- package/dist/providers/minimax-coding-plan.js.map +1 -1
- package/dist/providers/nanogpt.js +1 -1
- package/dist/providers/nanogpt.js.map +1 -1
- package/dist/providers/ollama-cloud.js +1 -1
- package/dist/providers/ollama-cloud.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +59 -29
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +207 -55
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/opencode-zen.d.ts.map +1 -1
- package/dist/providers/opencode-zen.js +39 -54
- package/dist/providers/opencode-zen.js.map +1 -1
- package/dist/providers/openrouter.js +1 -1
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/quota-providers.js +9 -9
- package/dist/providers/quota-providers.js.map +1 -1
- package/dist/providers/result-helpers.d.ts +2 -2
- package/dist/providers/result-helpers.d.ts.map +1 -1
- package/dist/providers/result-helpers.js +2 -2
- package/dist/providers/result-helpers.js.map +1 -1
- package/dist/providers/xai.d.ts.map +1 -1
- package/dist/providers/xai.js +49 -1
- package/dist/providers/xai.js.map +1 -1
- package/dist/providers/zai.d.ts.map +1 -1
- package/dist/providers/zai.js +3 -1
- package/dist/providers/zai.js.map +1 -1
- package/dist/providers/zhipu.d.ts.map +1 -1
- package/dist/providers/zhipu.js +3 -1
- package/dist/providers/zhipu.js.map +1 -1
- package/dist/rpc.d.ts +72 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +77 -0
- package/dist/rpc.js.map +1 -0
- package/dist/tui-v2.d.ts +5 -0
- package/dist/tui-v2.d.ts.map +1 -0
- package/dist/tui-v2.jsx +498 -0
- package/dist/tui-v2.jsx.map +1 -0
- package/dist/tui.d.ts +4 -6
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +542 -955
- package/package.json +7 -19
- package/dist/lib/cache.d.ts +0 -39
- package/dist/lib/cache.d.ts.map +0 -1
- package/dist/lib/cache.js +0 -124
- package/dist/lib/cache.js.map +0 -1
- package/dist/lib/command-handled.d.ts +0 -17
- package/dist/lib/command-handled.d.ts.map +0 -1
- package/dist/lib/command-handled.js +0 -36
- package/dist/lib/command-handled.js.map +0 -1
- package/dist/lib/command-surfaces.d.ts +0 -10
- package/dist/lib/command-surfaces.d.ts.map +0 -1
- package/dist/lib/command-surfaces.js +0 -9
- package/dist/lib/command-surfaces.js.map +0 -1
- package/dist/lib/opencode-zen-config.d.ts +0 -33
- package/dist/lib/opencode-zen-config.d.ts.map +0 -1
- package/dist/lib/opencode-zen-config.js +0 -158
- package/dist/lib/opencode-zen-config.js.map +0 -1
- package/dist/lib/path-pick.d.ts +0 -2
- package/dist/lib/path-pick.d.ts.map +0 -1
- package/dist/lib/path-pick.js +0 -15
- package/dist/lib/path-pick.js.map +0 -1
- package/dist/lib/quota-toast-runtime.d.ts +0 -60
- package/dist/lib/quota-toast-runtime.d.ts.map +0 -1
- package/dist/lib/quota-toast-runtime.js +0 -766
- package/dist/lib/quota-toast-runtime.js.map +0 -1
- package/dist/lib/tui-config-diagnostics.d.ts +0 -17
- package/dist/lib/tui-config-diagnostics.d.ts.map +0 -1
- package/dist/lib/tui-config-diagnostics.js +0 -72
- package/dist/lib/tui-config-diagnostics.js.map +0 -1
- package/dist/lib/tui-line-style.d.ts +0 -3
- package/dist/lib/tui-line-style.d.ts.map +0 -1
- package/dist/lib/tui-line-style.js +0 -7
- package/dist/lib/tui-line-style.js.map +0 -1
- package/dist/lib/tui-native-provider-quota.d.ts +0 -7
- package/dist/lib/tui-native-provider-quota.d.ts.map +0 -1
- package/dist/lib/tui-native-provider-quota.js +0 -25
- package/dist/lib/tui-native-provider-quota.js.map +0 -1
- package/dist/lib/tui-refresh-lifecycle.d.ts +0 -17
- package/dist/lib/tui-refresh-lifecycle.d.ts.map +0 -1
- package/dist/lib/tui-refresh-lifecycle.js +0 -82
- package/dist/lib/tui-refresh-lifecycle.js.map +0 -1
- package/dist/lib/tui-runtime.d.ts +0 -84
- package/dist/lib/tui-runtime.d.ts.map +0 -1
- package/dist/lib/tui-runtime.js +0 -527
- package/dist/lib/tui-runtime.js.map +0 -1
- package/dist/lib/tui-sidebar-content.d.ts +0 -32
- package/dist/lib/tui-sidebar-content.d.ts.map +0 -1
- package/dist/lib/tui-sidebar-content.js +0 -52
- package/dist/lib/tui-sidebar-content.js.map +0 -1
- package/dist/tui.tsx +0 -1030
|
@@ -1,78 +1,405 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenCode
|
|
2
|
+
* OpenCode login reader
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Reads OpenCode 2 logins through the bound credential source. The server
|
|
5
|
+
* plugin binds its integration API (`ctx.integration`) in `setup`; the terminal
|
|
6
|
+
* command binds the read-only database reader in `opencode-auth-sqlite.ts`
|
|
7
|
+
* while one report runs; the TUI binds nothing, so a read there finds no login.
|
|
8
|
+
* Every read names the integration ids it needs, so OpenCode resolves (and may
|
|
9
|
+
* refresh) only those logins.
|
|
7
10
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
11
|
+
import { sanitizeSingleLineDisplayText } from "./display-sanitize.js";
|
|
12
|
+
import { getOpenCodeDbPath } from "./opencode-db-path.js";
|
|
13
|
+
/** A failed login is resolved again at most this often. */
|
|
14
|
+
const FAILED_LOGIN_RETRY_MS = 60_000;
|
|
15
|
+
/** Bound sources; reads use the last one. */
|
|
16
|
+
const credentialSources = [];
|
|
17
|
+
let unboundWarningShown = false;
|
|
13
18
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
19
|
+
* Failed logins, keyed by connection id (by integration id for a failed
|
|
20
|
+
* `active()`, which has no connection). An entry lives until that login reads
|
|
21
|
+
* again, a credential event arrives, or `notifyCredentialsChanged` runs.
|
|
17
22
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export
|
|
30
|
-
const
|
|
31
|
-
|
|
23
|
+
const credentialFailures = new Map();
|
|
24
|
+
/** One `resolve()` at a time per connection id. */
|
|
25
|
+
const pendingResolves = new Map();
|
|
26
|
+
let lastListError;
|
|
27
|
+
/**
|
|
28
|
+
* Connection labels OpenCode assigns when the user never named the connection:
|
|
29
|
+
* `default` for a new connection, and `OAuth` / `API key` for credentials
|
|
30
|
+
* imported from the legacy auth.json. They say nothing about the account, so
|
|
31
|
+
* they must not appear in headers like `[OpenAI OAuth]`.
|
|
32
|
+
*/
|
|
33
|
+
const GENERIC_CREDENTIAL_LABELS = new Set(["default", "oauth", "api key"]);
|
|
34
|
+
export function formatCredentialDisplayNames(providerName, credentials) {
|
|
35
|
+
const counts = new Map();
|
|
36
|
+
return credentials.map(({ row, fallbackName }) => {
|
|
37
|
+
const alias = row.label.trim();
|
|
38
|
+
const redundantAlias = !alias ||
|
|
39
|
+
GENERIC_CREDENTIAL_LABELS.has(alias.toLowerCase()) ||
|
|
40
|
+
alias.toLowerCase() === providerName.toLowerCase();
|
|
41
|
+
const fallbackCategory = fallbackName
|
|
42
|
+
.trim()
|
|
43
|
+
.replace(new RegExp(`^${providerName.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&")}\\s*`, "iu"), "")
|
|
44
|
+
.trim()
|
|
45
|
+
.replace(/^\((.*)\)$/u, "$1")
|
|
46
|
+
.trim();
|
|
47
|
+
const aliasKey = redundantAlias ? "" : alias;
|
|
48
|
+
const duplicate = aliasKey ? (counts.get(aliasKey) ?? 0) + 1 : 1;
|
|
49
|
+
if (aliasKey)
|
|
50
|
+
counts.set(aliasKey, duplicate);
|
|
51
|
+
const numberedAlias = duplicate === 1 ? aliasKey : `${aliasKey} ${duplicate}`;
|
|
52
|
+
const base = `[${providerName}${numberedAlias ? ` ${numberedAlias}` : ""}]`;
|
|
53
|
+
const category = fallbackCategory ? ` (${fallbackCategory})` : "";
|
|
54
|
+
const active = row.active || (credentials.length === 1 && !credentials[0].row.active);
|
|
55
|
+
return `${base}${category}${active ? "*" : ""}`;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** Cached auth maps keyed by the sorted integration id list and the method filter. */
|
|
59
|
+
const authCache = new Map();
|
|
60
|
+
/** Changes when the cache is dropped, so a read started before that does not refill it. */
|
|
61
|
+
let authCacheGeneration = 0;
|
|
62
|
+
/**
|
|
63
|
+
* The database OpenCode keeps its logins in: the one resolved path, or none
|
|
64
|
+
* when `OPENCODE_DB` is `:memory:`. Inside OpenCode it is for diagnostics only
|
|
65
|
+
* (logins are read through OpenCode); the terminal command reads its logins
|
|
66
|
+
* from this file.
|
|
67
|
+
*/
|
|
68
|
+
export function getCredentialDatabasePaths() {
|
|
69
|
+
const path = getOpenCodeDbPath();
|
|
70
|
+
return path === ":memory:" ? [] : [path];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Makes `source` the one reads use until the returned function unbinds it.
|
|
74
|
+
* Unbinding removes only this binding; the last binding still bound wins.
|
|
75
|
+
*/
|
|
76
|
+
export function bindCredentialSource(source) {
|
|
77
|
+
const binding = { source };
|
|
78
|
+
credentialSources.push(binding);
|
|
79
|
+
return () => {
|
|
80
|
+
const index = credentialSources.indexOf(binding);
|
|
81
|
+
if (index !== -1)
|
|
82
|
+
credentialSources.splice(index, 1);
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Drops cached logins, failed-login entries and the last `list()` error. */
|
|
86
|
+
export function notifyCredentialsChanged() {
|
|
87
|
+
credentialFailures.clear();
|
|
88
|
+
authCache.clear();
|
|
89
|
+
authCacheGeneration += 1;
|
|
90
|
+
lastListError = undefined;
|
|
91
|
+
}
|
|
92
|
+
export function getCredentialSourceDiagnostics() {
|
|
93
|
+
const source = credentialSources.at(-1)?.source;
|
|
94
|
+
return {
|
|
95
|
+
...(source ? { state: "bound", kind: source.kind } : { state: "unbound" }),
|
|
96
|
+
...(lastListError ? { lastListError: { ...lastListError } } : {}),
|
|
97
|
+
failures: Array.from(credentialFailures, ([connectionId, failure]) => ({
|
|
98
|
+
integrationId: failure.integrationId,
|
|
99
|
+
connectionId,
|
|
100
|
+
label: failure.label,
|
|
101
|
+
category: failure.category,
|
|
102
|
+
detail: failure.detail,
|
|
103
|
+
at: failure.at,
|
|
104
|
+
})),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Error text that is safe to show and to store: one sanitized line with
|
|
109
|
+
* JWT-shaped and long opaque strings (tokens) replaced, at most 120 characters.
|
|
110
|
+
*/
|
|
111
|
+
export function scrubCredentialErrorText(message) {
|
|
112
|
+
// Redact before cutting to length, so a token cut at the limit cannot leave a readable part.
|
|
113
|
+
return sanitizeSingleLineDisplayText(message)
|
|
114
|
+
.replace(/eyJ[A-Za-z0-9_-]{10,}(\.[A-Za-z0-9_-]+)*/gu, "[redacted]")
|
|
115
|
+
.replace(/[A-Za-z0-9_-]{32,}/gu, "[redacted]")
|
|
116
|
+
.slice(0, 120);
|
|
117
|
+
}
|
|
118
|
+
function credentialErrorDetail(error) {
|
|
119
|
+
return scrubCredentialErrorText(error instanceof Error ? error.message : String(error));
|
|
120
|
+
}
|
|
121
|
+
/** The active connection of one integration id; works for ids OpenCode has not registered. */
|
|
122
|
+
async function activeConnectionSlots(integration, integrationId) {
|
|
123
|
+
try {
|
|
124
|
+
const connection = await integration.connection.active(integrationId);
|
|
125
|
+
credentialFailures.delete(integrationId);
|
|
126
|
+
// An env connection means no stored login; providers apply their own env rules.
|
|
127
|
+
return connection?.type === "credential" ? [{ integrationId, connection }] : [];
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
const activeFailure = {
|
|
131
|
+
at: Date.now(),
|
|
132
|
+
category: "active_failed",
|
|
133
|
+
detail: credentialErrorDetail(error),
|
|
134
|
+
integrationId,
|
|
135
|
+
label: "",
|
|
136
|
+
};
|
|
137
|
+
credentialFailures.set(integrationId, activeFailure);
|
|
138
|
+
return [{ integrationId, activeFailure }];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Every connection of the requested ids: all of them for ids `list()` shows
|
|
143
|
+
* (registered integrations), the active one for any other id.
|
|
144
|
+
*/
|
|
145
|
+
async function listedConnectionSlots(integration, integrationIds) {
|
|
146
|
+
let listed;
|
|
147
|
+
try {
|
|
148
|
+
const { data } = await integration.list();
|
|
149
|
+
listed = new Map(data.map((info) => [info.id, info.connections]));
|
|
150
|
+
lastListError = undefined;
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
// One malformed login anywhere makes list() fail; each id's active login still reads.
|
|
154
|
+
lastListError = { at: Date.now(), detail: credentialErrorDetail(error) };
|
|
155
|
+
}
|
|
156
|
+
const slots = [];
|
|
157
|
+
for (const integrationId of integrationIds) {
|
|
158
|
+
const connections = listed?.get(integrationId);
|
|
159
|
+
if (connections === undefined) {
|
|
160
|
+
slots.push(...(await activeConnectionSlots(integration, integrationId)));
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
for (const connection of connections) {
|
|
164
|
+
if (connection.type === "credential")
|
|
165
|
+
slots.push({ integrationId, connection });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return slots;
|
|
169
|
+
}
|
|
170
|
+
function recordResolveFailure(connection, failure) {
|
|
171
|
+
const recorded = { ...failure, at: Date.now(), label: connection.label };
|
|
172
|
+
credentialFailures.set(connection.id, recorded);
|
|
173
|
+
return { failure: recorded };
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Resolves one connection (OpenCode may refresh its token). A login that failed
|
|
177
|
+
* less than a minute ago is not resolved again; concurrent reads share one call.
|
|
178
|
+
*/
|
|
179
|
+
function resolveCredentialConnection(integration, integrationId, connection) {
|
|
180
|
+
const failure = credentialFailures.get(connection.id);
|
|
181
|
+
if (failure && Date.now() - failure.at < FAILED_LOGIN_RETRY_MS) {
|
|
182
|
+
return Promise.resolve({ failure });
|
|
183
|
+
}
|
|
184
|
+
const pending = pendingResolves.get(connection.id);
|
|
185
|
+
if (pending)
|
|
186
|
+
return pending;
|
|
187
|
+
const outcome = (async () => {
|
|
32
188
|
try {
|
|
33
|
-
const
|
|
34
|
-
|
|
189
|
+
const value = await integration.connection.resolve(connection);
|
|
190
|
+
if (value === undefined) {
|
|
191
|
+
return recordResolveFailure(connection, {
|
|
192
|
+
category: "resolve_empty",
|
|
193
|
+
detail: "OpenCode returned no login",
|
|
194
|
+
integrationId,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
credentialFailures.delete(connection.id);
|
|
198
|
+
return { value };
|
|
35
199
|
}
|
|
36
|
-
catch {
|
|
37
|
-
|
|
200
|
+
catch (error) {
|
|
201
|
+
return recordResolveFailure(connection, {
|
|
202
|
+
category: "refresh_failed",
|
|
203
|
+
detail: credentialErrorDetail(error),
|
|
204
|
+
integrationId,
|
|
205
|
+
});
|
|
38
206
|
}
|
|
207
|
+
})().finally(() => {
|
|
208
|
+
pendingResolves.delete(connection.id);
|
|
209
|
+
});
|
|
210
|
+
pendingResolves.set(connection.id, outcome);
|
|
211
|
+
return outcome;
|
|
212
|
+
}
|
|
213
|
+
/** The value resolvers read: metadata fields on top (kept under `metadata` too), `key` as `api`. */
|
|
214
|
+
function credentialRowValue(value) {
|
|
215
|
+
const flattened = { ...value.metadata, ...value };
|
|
216
|
+
if (flattened.type === "key")
|
|
217
|
+
flattened.type = "api";
|
|
218
|
+
return flattened;
|
|
219
|
+
}
|
|
220
|
+
async function credentialRowForSlot(integration, slot, methods) {
|
|
221
|
+
if ("activeFailure" in slot) {
|
|
222
|
+
const failure = slot.activeFailure;
|
|
223
|
+
return {
|
|
224
|
+
id: slot.integrationId,
|
|
225
|
+
integrationId: slot.integrationId,
|
|
226
|
+
label: "",
|
|
227
|
+
active: false,
|
|
228
|
+
// A failed active() has no connection, so its method is unknown: a key-only read
|
|
229
|
+
// gets a key-shaped failure, every other read an OAuth-shaped one.
|
|
230
|
+
value: { type: methods && !methods.includes("oauth") ? "api" : "oauth" },
|
|
231
|
+
resolveError: `${failure.category}: ${failure.detail}`,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
const { connection } = slot;
|
|
235
|
+
const outcome = await resolveCredentialConnection(integration, slot.integrationId, connection);
|
|
236
|
+
if ("value" in outcome) {
|
|
237
|
+
return {
|
|
238
|
+
id: connection.id,
|
|
239
|
+
integrationId: slot.integrationId,
|
|
240
|
+
label: connection.label,
|
|
241
|
+
active: false,
|
|
242
|
+
value: credentialRowValue(outcome.value),
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
id: connection.id,
|
|
247
|
+
integrationId: slot.integrationId,
|
|
248
|
+
label: connection.label,
|
|
249
|
+
active: false,
|
|
250
|
+
value: { type: connection.method === "key" ? "api" : "oauth" },
|
|
251
|
+
resolveError: `${outcome.failure.category}: ${outcome.failure.detail}`,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/** The credential source backed by the server plugin's `ctx.integration`. */
|
|
255
|
+
export function createIntegrationCredentialSource(integration) {
|
|
256
|
+
return {
|
|
257
|
+
kind: "opencode-integration-api",
|
|
258
|
+
async readRows(request) {
|
|
259
|
+
const slots = [];
|
|
260
|
+
if (request.firstOnly) {
|
|
261
|
+
for (const integrationId of request.integrationIds) {
|
|
262
|
+
slots.push(...(await activeConnectionSlots(integration, integrationId)));
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
slots.push(...(await listedConnectionSlots(integration, request.integrationIds)));
|
|
267
|
+
}
|
|
268
|
+
const methods = request.methods;
|
|
269
|
+
const wanted = slots.filter((slot) => !methods || !("connection" in slot) || methods.includes(slot.connection.method));
|
|
270
|
+
const rows = await Promise.all(wanted.map((slot) => credentialRowForSlot(integration, slot, methods)));
|
|
271
|
+
// The `*` goes to the first row of the first requested id that has rows.
|
|
272
|
+
return rows.map((row, index) => ({ ...row, active: index === 0 }));
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* The auth entry resolvers read for a row: its value, plus `resolveError`
|
|
278
|
+
* when OpenCode could not return the login.
|
|
279
|
+
*/
|
|
280
|
+
export function credentialRowAuthEntry(row) {
|
|
281
|
+
return row.resolveError === undefined
|
|
282
|
+
? row.value
|
|
283
|
+
: { ...row.value, resolveError: row.resolveError };
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Map of the first (active) login per requested integration id. With `methods`,
|
|
287
|
+
* an active login using another method is left out without OpenCode resolving it.
|
|
288
|
+
*/
|
|
289
|
+
export async function readAuthFile(params) {
|
|
290
|
+
const rows = await readCredentialRows(params.integrationIds, {
|
|
291
|
+
methods: params.methods,
|
|
292
|
+
firstOnly: true,
|
|
293
|
+
});
|
|
294
|
+
const auth = {};
|
|
295
|
+
for (const row of rows) {
|
|
296
|
+
if (!(row.integrationId in auth))
|
|
297
|
+
auth[row.integrationId] = credentialRowAuthEntry(row);
|
|
39
298
|
}
|
|
40
|
-
return null;
|
|
299
|
+
return Object.keys(auth).length > 0 ? auth : null;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Credential rows of the requested integration ids from the last bound source.
|
|
303
|
+
* Row order depends on the source: the integration API returns request-id
|
|
304
|
+
* order, then OpenCode's connection order (active first, then newest); the
|
|
305
|
+
* database reader returns database order. With no bound source (the TUI) there
|
|
306
|
+
* are none.
|
|
307
|
+
*/
|
|
308
|
+
export async function readCredentialRows(integrationIds, options = {}) {
|
|
309
|
+
const source = credentialSources.at(-1)?.source;
|
|
310
|
+
if (!source) {
|
|
311
|
+
if (!unboundWarningShown) {
|
|
312
|
+
unboundWarningShown = true;
|
|
313
|
+
console.warn("[opencode-quota] credential source is not bound");
|
|
314
|
+
}
|
|
315
|
+
return [];
|
|
316
|
+
}
|
|
317
|
+
return source.readRows({ integrationIds, ...options });
|
|
318
|
+
}
|
|
319
|
+
function canonicalCredentialValueKey(value) {
|
|
320
|
+
if (Array.isArray(value)) {
|
|
321
|
+
return `[${value.map((item) => canonicalCredentialValueKey(item)).join(",")}]`;
|
|
322
|
+
}
|
|
323
|
+
if (value !== null && typeof value === "object") {
|
|
324
|
+
const entries = Object.entries(value).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
|
|
325
|
+
return `{${entries
|
|
326
|
+
.map(([key, nested]) => `${JSON.stringify(key)}:${canonicalCredentialValueKey(nested)}`)
|
|
327
|
+
.join(",")}}`;
|
|
328
|
+
}
|
|
329
|
+
return value === undefined ? "undefined" : JSON.stringify(value);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Collapse credential rows that represent the same upstream connection.
|
|
333
|
+
*
|
|
334
|
+
* Rows holding identical credential values are the same connection (e.g. the
|
|
335
|
+
* same workspace key stored under the `opencode-go` integration and its legacy
|
|
336
|
+
* `opencode` alias), and rows under `primaryIntegrationId` take precedence over
|
|
337
|
+
* alias rows so a real credential for another integration that shares the key
|
|
338
|
+
* is not reported as an additional connection. A failed row holds only
|
|
339
|
+
* `{ type }`, so its connection id keeps each failed login a row of its own.
|
|
340
|
+
* Input order is preserved otherwise.
|
|
341
|
+
*/
|
|
342
|
+
export function selectConnectionCredentialRows(rows, primaryIntegrationId) {
|
|
343
|
+
const primaryRows = rows.filter((row) => row.integrationId === primaryIntegrationId);
|
|
344
|
+
const candidates = primaryRows.length > 0 ? primaryRows : [...rows];
|
|
345
|
+
const seen = new Set();
|
|
346
|
+
const selected = [];
|
|
347
|
+
for (const row of candidates) {
|
|
348
|
+
const key = row.resolveError === undefined
|
|
349
|
+
? canonicalCredentialValueKey(row.value)
|
|
350
|
+
: canonicalCredentialValueKey({ failedConnectionId: row.id, value: row.value });
|
|
351
|
+
if (seen.has(key))
|
|
352
|
+
continue;
|
|
353
|
+
seen.add(key);
|
|
354
|
+
selected.push(row);
|
|
355
|
+
}
|
|
356
|
+
return selected;
|
|
41
357
|
}
|
|
42
358
|
/**
|
|
43
359
|
* Cached auth reader for frequently triggered code paths (e.g. per-question hooks).
|
|
44
|
-
* This avoids
|
|
360
|
+
* This avoids asking OpenCode on every call while keeping login changes visible quickly.
|
|
45
361
|
*/
|
|
46
362
|
export async function readAuthFileCached(params) {
|
|
47
|
-
const maxAgeMs = Math.max(0, params
|
|
363
|
+
const maxAgeMs = Math.max(0, params.maxAgeMs);
|
|
364
|
+
const cacheKey = `${[...params.integrationIds].sort().join(",")}|${params.methods ? [...params.methods].sort().join(",") : "any"}`;
|
|
365
|
+
const cached = authCache.get(cacheKey);
|
|
48
366
|
const now = Date.now();
|
|
49
|
-
if (
|
|
50
|
-
return
|
|
367
|
+
if (cached && now - cached.timestamp <= maxAgeMs) {
|
|
368
|
+
return cached.value;
|
|
51
369
|
}
|
|
52
|
-
if (
|
|
53
|
-
return
|
|
370
|
+
if (cached?.inFlight) {
|
|
371
|
+
return cached.inFlight;
|
|
54
372
|
}
|
|
373
|
+
const generation = authCacheGeneration;
|
|
55
374
|
const inFlight = (async () => {
|
|
56
|
-
const value = await readAuthFile(
|
|
57
|
-
|
|
375
|
+
const value = await readAuthFile({
|
|
376
|
+
integrationIds: params.integrationIds,
|
|
377
|
+
methods: params.methods,
|
|
378
|
+
});
|
|
379
|
+
// A login change during the read may make this value stale: return it, but do not cache it.
|
|
380
|
+
if (generation === authCacheGeneration) {
|
|
381
|
+
authCache.set(cacheKey, { timestamp: Date.now(), value });
|
|
382
|
+
}
|
|
58
383
|
return value;
|
|
59
384
|
})();
|
|
60
|
-
authCache
|
|
61
|
-
timestamp:
|
|
62
|
-
value:
|
|
385
|
+
authCache.set(cacheKey, {
|
|
386
|
+
timestamp: cached?.timestamp ?? 0,
|
|
387
|
+
value: cached?.value ?? null,
|
|
63
388
|
inFlight,
|
|
64
|
-
};
|
|
389
|
+
});
|
|
65
390
|
try {
|
|
66
391
|
return await inFlight;
|
|
67
392
|
}
|
|
68
393
|
finally {
|
|
69
|
-
|
|
70
|
-
|
|
394
|
+
const entry = authCache.get(cacheKey);
|
|
395
|
+
if (entry?.inFlight === inFlight) {
|
|
396
|
+
entry.inFlight = undefined;
|
|
71
397
|
}
|
|
72
398
|
}
|
|
73
399
|
}
|
|
74
400
|
/** Test helper to clear cached auth state between test cases. */
|
|
75
401
|
export function clearReadAuthFileCacheForTests() {
|
|
76
|
-
authCache
|
|
402
|
+
authCache.clear();
|
|
403
|
+
authCacheGeneration += 1;
|
|
77
404
|
}
|
|
78
405
|
//# sourceMappingURL=opencode-auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-auth.js","sourceRoot":"","sources":["../../src/lib/opencode-auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAIrC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAQ5C,IAAI,SAAS,GAA0B,IAAI,CAAC;AAE5C;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,2DAA2D;IAC3D,+EAA+E;IAC/E,yDAAyD;IACzD,MAAM,EAAE,QAAQ,EAAE,GAAG,+BAA+B,EAAE,CAAC;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAA8B;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,IAAI,6BAA6B,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,IAAI,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,SAAS,EAAE,QAAQ,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;QAC3B,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;QACnC,SAAS,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,EAAE,CAAC;IAEL,SAAS,GAAG;QACV,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC;QACpC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI;QAC/B,QAAQ;KACT,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,8BAA8B;IAC5C,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"opencode-auth.js","sourceRoot":"","sources":["../../src/lib/opencode-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-config-providers.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-config-providers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EAMtB,MAAM,wBAAwB,CAAC;AAoBhC,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sCAAsC;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"opencode-config-providers.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-config-providers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EAMtB,MAAM,wBAAwB,CAAC;AAoBhC,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sCAAsC;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAiFD,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYlC;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAUD;;;GAGG;AACH,wBAAsB,wCAAwC,CAC5D,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,qCAAqC,CAAC,CAqEhD"}
|
|
@@ -2,16 +2,13 @@ import { readFile } from "fs/promises";
|
|
|
2
2
|
import { dedupeNonEmptyStrings, extractPluginSpecsFromParsedConfig, extractProviderIdsFromParsedConfig, resolveEditableConfigPath, resolveExistingConfigPath, } from "./config-file-utils.js";
|
|
3
3
|
import { applyConfigDocumentEdit, ConfigDocumentError, parseConfigDocument, planConfigDocumentEdit, } from "./opencode-config-editor.js";
|
|
4
4
|
import { buildOpenCodeConfigCandidates, readOpenCodeConfigCandidate, selectFirstExistingOpenCodeConfigCandidate, } from "./opencode-config-read.js";
|
|
5
|
-
import {
|
|
5
|
+
import { getOpencodeRuntimeDirs } from "./opencode-runtime-paths.js";
|
|
6
6
|
import { getQuotaProviderRuntimeIds, getQuotaProviderShape, normalizeQuotaProviderId, } from "./provider-metadata.js";
|
|
7
7
|
function isRecord(value) {
|
|
8
8
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
9
9
|
}
|
|
10
10
|
function getCandidates(configRootDir) {
|
|
11
|
-
return dedupeNonEmptyStrings([
|
|
12
|
-
...getOpencodeRuntimeDirCandidates().configDirs,
|
|
13
|
-
configRootDir,
|
|
14
|
-
]).flatMap((directory) => {
|
|
11
|
+
return dedupeNonEmptyStrings([getOpencodeRuntimeDirs().configDir, configRootDir]).flatMap((directory) => {
|
|
15
12
|
const selected = selectFirstExistingOpenCodeConfigCandidate(buildOpenCodeConfigCandidates({
|
|
16
13
|
directories: [directory],
|
|
17
14
|
formatOrder: ["jsonc", "json"],
|
|
@@ -25,16 +22,7 @@ async function readConfig(candidate) {
|
|
|
25
22
|
}
|
|
26
23
|
const COMPANION_PLUGIN_PROVIDER_IDS = [
|
|
27
24
|
{ providerId: "google-gemini-cli", matches: ["opencode-gemini-auth"] },
|
|
28
|
-
{
|
|
29
|
-
providerId: "cursor",
|
|
30
|
-
matches: [
|
|
31
|
-
"@playwo/opencode-cursor-oauth",
|
|
32
|
-
"opencode-cursor-oauth",
|
|
33
|
-
"opencode-cursor",
|
|
34
|
-
"open-cursor",
|
|
35
|
-
"@rama_nigg/open-cursor",
|
|
36
|
-
],
|
|
37
|
-
},
|
|
25
|
+
{ providerId: "cursor", matches: ["cursor-opencode-provider"] },
|
|
38
26
|
];
|
|
39
27
|
function mergeOpenCodeConfig(base, next) {
|
|
40
28
|
const merged = { ...base, ...next };
|
|
@@ -44,12 +32,24 @@ function mergeOpenCodeConfig(base, next) {
|
|
|
44
32
|
...(isRecord(next.provider) ? next.provider : {}),
|
|
45
33
|
};
|
|
46
34
|
}
|
|
35
|
+
if (isRecord(base.providers) || isRecord(next.providers)) {
|
|
36
|
+
merged.providers = {
|
|
37
|
+
...(isRecord(base.providers) ? base.providers : {}),
|
|
38
|
+
...(isRecord(next.providers) ? next.providers : {}),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
47
41
|
if (Array.isArray(base.plugin) || Array.isArray(next.plugin)) {
|
|
48
42
|
merged.plugin = [
|
|
49
43
|
...(Array.isArray(base.plugin) ? base.plugin : []),
|
|
50
44
|
...(Array.isArray(next.plugin) ? next.plugin : []),
|
|
51
45
|
];
|
|
52
46
|
}
|
|
47
|
+
if (Array.isArray(base.plugins) || Array.isArray(next.plugins)) {
|
|
48
|
+
merged.plugins = [
|
|
49
|
+
...(Array.isArray(base.plugins) ? base.plugins : []),
|
|
50
|
+
...(Array.isArray(next.plugins) ? next.plugins : []),
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
53
|
return merged;
|
|
54
54
|
}
|
|
55
55
|
function inferProviderIdsFromPluginSpecs(specs) {
|
|
@@ -91,9 +91,8 @@ export async function reconcileDetectedProvidersInGlobalConfig(options) {
|
|
|
91
91
|
const shape = getQuotaProviderShape(providerId);
|
|
92
92
|
return Boolean(shape && shape.id !== "quota-providers");
|
|
93
93
|
}));
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
if (!globalConfigDir || detectedProviderIds.length === 0) {
|
|
94
|
+
const globalConfigDir = getOpencodeRuntimeDirs().configDir;
|
|
95
|
+
if (detectedProviderIds.length === 0) {
|
|
97
96
|
return { path: null, format: null, addedProviderIds: [], changed: false };
|
|
98
97
|
}
|
|
99
98
|
const effectiveConfig = await loadConfiguredOpenCodeConfig({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-config-providers.js","sourceRoot":"","sources":["../../src/lib/opencode-config-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAEL,qBAAqB,EACrB,kCAAkC,EAClC,kCAAkC,EAClC,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,6BAA6B,EAE7B,2BAA2B,EAC3B,0CAA0C,GAC3C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"opencode-config-providers.js","sourceRoot":"","sources":["../../src/lib/opencode-config-providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode Console credential reader
|
|
3
|
+
*
|
|
4
|
+
* OpenCode 2 keeps its OpenCode Console sign-in (`opencode auth login opencode`)
|
|
5
|
+
* under the `opencode` integration as an OAuth connection created by the device
|
|
6
|
+
* flow (`client_id: opencode-cli`, default server `https://opencode.ai/console`,
|
|
7
|
+
* stored as `metadata.server`). Consumers call the console APIs with
|
|
8
|
+
* `consoleBaseUrl` and `consoleHeaders`: the access token as
|
|
9
|
+
* `Authorization: Bearer`, plus `metadata.orgID` as `x-org-id` when present.
|
|
10
|
+
*
|
|
11
|
+
* The login is read through OpenCode's plugin API, which refreshes a token that
|
|
12
|
+
* is about to expire (and saves the new one) before returning it. A failed
|
|
13
|
+
* refresh is reported as `invalid`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const OPENCODE_CONSOLE_BASE_URL = "https://opencode.ai/console";
|
|
16
|
+
export declare const OPENCODE_CONSOLE_INTEGRATION_ID = "opencode";
|
|
17
|
+
export interface OpenCodeConsoleCredential {
|
|
18
|
+
accessToken: string;
|
|
19
|
+
refreshToken?: string;
|
|
20
|
+
expiresAt?: number;
|
|
21
|
+
accountId?: string;
|
|
22
|
+
orgId?: string;
|
|
23
|
+
orgName?: string;
|
|
24
|
+
email?: string;
|
|
25
|
+
server?: string;
|
|
26
|
+
}
|
|
27
|
+
export type OpenCodeConsoleAuthState = {
|
|
28
|
+
state: "none";
|
|
29
|
+
reason?: "not_oauth";
|
|
30
|
+
} | {
|
|
31
|
+
state: "configured";
|
|
32
|
+
credential: OpenCodeConsoleCredential;
|
|
33
|
+
} | {
|
|
34
|
+
state: "expired";
|
|
35
|
+
credential: OpenCodeConsoleCredential;
|
|
36
|
+
} | {
|
|
37
|
+
state: "invalid";
|
|
38
|
+
error: string;
|
|
39
|
+
};
|
|
40
|
+
export declare function resolveOpenCodeConsoleAuth(params?: {
|
|
41
|
+
nowMs?: number;
|
|
42
|
+
}): Promise<OpenCodeConsoleAuthState>;
|
|
43
|
+
/** The Console server the login belongs to. */
|
|
44
|
+
export declare function consoleBaseUrl(credential: OpenCodeConsoleCredential): string;
|
|
45
|
+
/** Console API request headers; `x-org-id` only when the login has an org. */
|
|
46
|
+
export declare function consoleHeaders(credential: OpenCodeConsoleCredential): Record<string, string>;
|
|
47
|
+
//# sourceMappingURL=opencode-console-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-console-auth.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-console-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AACvE,eAAO,MAAM,+BAA+B,aAAa,CAAC;AAE1D,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,yBAAyB,CAAA;CAAE,GAC9D;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,yBAAyB,CAAA;CAAE,GAC3D;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,wBAAsB,0BAA0B,CAAC,MAAM,CAAC,EAAE;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAmCpC;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,UAAU,EAAE,yBAAyB,GAAG,MAAM,CAE5E;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,UAAU,EAAE,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM5F"}
|