@slkiser/opencode-quota 4.10.6 → 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 +42 -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 +11 -11
- 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 +37 -51
- 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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slkiser/opencode-quota",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-beta.1",
|
|
4
4
|
"description": "OpenCode quota & tokens usage with zero context window pollution. Supports GitHub Copilot, OpenAI (Plus/Pro), Chutes AI, Synthetic, Google AGY, Z.ai coding plan and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,10 +22,6 @@
|
|
|
22
22
|
"default": "./dist/tui.js"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
|
-
"oc-plugin": [
|
|
26
|
-
"server",
|
|
27
|
-
"tui"
|
|
28
|
-
],
|
|
29
25
|
"files": [
|
|
30
26
|
"dist",
|
|
31
27
|
"README.md",
|
|
@@ -56,7 +52,7 @@
|
|
|
56
52
|
"@babel/core": "^7.28.0",
|
|
57
53
|
"@babel/preset-typescript": "^7.27.1",
|
|
58
54
|
"@biomejs/biome": "2.3.11",
|
|
59
|
-
"@opencode
|
|
55
|
+
"@opencode/plugin": "2.0.16",
|
|
60
56
|
"@opentelemetry/sdk-metrics": "2.10.0",
|
|
61
57
|
"@types/node": "^22.0.0",
|
|
62
58
|
"babel-preset-solid": "^1.9.12",
|
|
@@ -68,21 +64,17 @@
|
|
|
68
64
|
"dependencies": {
|
|
69
65
|
"@clack/prompts": "^1.2.0",
|
|
70
66
|
"@opentelemetry/api": "^1.9.1",
|
|
71
|
-
"@opentui/core": "0.
|
|
72
|
-
"@opentui/solid": "0.
|
|
67
|
+
"@opentui/core": "^0.5.10",
|
|
68
|
+
"@opentui/solid": "^0.5.10",
|
|
73
69
|
"comment-json": "^5.0.0",
|
|
74
70
|
"jsonc-parser": "^3.3.1",
|
|
75
|
-
"solid-js": "^1.9.12"
|
|
76
|
-
"xdg-basedir": "^5.1.0"
|
|
77
|
-
},
|
|
78
|
-
"optionalDependencies": {
|
|
79
|
-
"better-sqlite3": "^12.10.0"
|
|
71
|
+
"solid-js": "^1.9.12"
|
|
80
72
|
},
|
|
81
73
|
"peerDependencies": {
|
|
82
|
-
"@opencode
|
|
74
|
+
"@opencode/plugin": "2.0.16"
|
|
83
75
|
},
|
|
84
76
|
"engines": {
|
|
85
|
-
"node": "
|
|
77
|
+
"node": "^22.13.0 || >=23.4.0"
|
|
86
78
|
},
|
|
87
79
|
"scripts": {
|
|
88
80
|
"build": "node scripts/clean-dist.mjs && tsc && node scripts/copy-data.mjs && node scripts/prepare-tui-dist.mjs",
|
|
@@ -108,10 +100,6 @@
|
|
|
108
100
|
"typecheck": "tsc --noEmit",
|
|
109
101
|
"test": "vitest run",
|
|
110
102
|
"test:watch": "vitest",
|
|
111
|
-
"test:stabilization:tui": "node scripts/test-stabilization-connected.mjs --tui",
|
|
112
|
-
"test:stabilization:tui:prompt-bar": "node scripts/test-stabilization-connected.mjs --tui --prompt-bar",
|
|
113
|
-
"test:stabilization:web": "node scripts/test-stabilization-connected.mjs --web",
|
|
114
|
-
"test:stabilization:fixtures": "node scripts/test-stabilization-fixtures.mjs",
|
|
115
103
|
"verify": "pnpm run check && pnpm run verify:typescript-version && pnpm run verify:v4-history && pnpm run typecheck && pnpm run build && pnpm test && pnpm run test:four-surfaces && pnpm run verify:package-contents"
|
|
116
104
|
}
|
|
117
105
|
}
|
package/dist/lib/cache.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Keyed cache and throttling system for rendered quota toasts.
|
|
3
|
-
*
|
|
4
|
-
* This is presentation-only throttling:
|
|
5
|
-
* - Each cache key stores the last rendered toast string for that surface/session context
|
|
6
|
-
* - Only fetch if minIntervalMs has passed since the last fetch for that key
|
|
7
|
-
* - Deduplicate concurrent fetches per key
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Get the cached toast message for a key if still valid.
|
|
11
|
-
*/
|
|
12
|
-
export declare function getCachedToast(cacheKey: string, minIntervalMs: number): string | null;
|
|
13
|
-
/**
|
|
14
|
-
* Check if a new fetch should be initiated for a key.
|
|
15
|
-
*/
|
|
16
|
-
export declare function shouldFetch(cacheKey: string, minIntervalMs: number): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Get or start a fetch operation with keyed deduplication.
|
|
19
|
-
*/
|
|
20
|
-
export declare function getOrFetch(cacheKey: string, fetchFn: () => Promise<string | null>, minIntervalMs: number): Promise<string | null>;
|
|
21
|
-
/**
|
|
22
|
-
* Get or start a fetch operation with keyed deduplication and cache control.
|
|
23
|
-
*
|
|
24
|
-
* This is useful when some results should be displayed but not cached
|
|
25
|
-
* (e.g. transient "all providers failed" cases).
|
|
26
|
-
*/
|
|
27
|
-
export declare function getOrFetchWithCacheControl(cacheKey: string, fetchFn: () => Promise<{
|
|
28
|
-
message: string | null;
|
|
29
|
-
cache?: boolean;
|
|
30
|
-
}>, minIntervalMs: number): Promise<string | null>;
|
|
31
|
-
/**
|
|
32
|
-
* Clear one keyed entry, or the whole keyed cache if no key is provided.
|
|
33
|
-
*/
|
|
34
|
-
export declare function clearCache(cacheKey?: string): void;
|
|
35
|
-
/**
|
|
36
|
-
* Force update a keyed cache entry with a new message.
|
|
37
|
-
*/
|
|
38
|
-
export declare function updateCache(cacheKey: string, message: string): void;
|
|
39
|
-
//# sourceMappingURL=cache.d.ts.map
|
package/dist/lib/cache.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2BH;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcrF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAI5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACrC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,EACnE,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgDxB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAOlD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAOnE"}
|
package/dist/lib/cache.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Keyed cache and throttling system for rendered quota toasts.
|
|
3
|
-
*
|
|
4
|
-
* This is presentation-only throttling:
|
|
5
|
-
* - Each cache key stores the last rendered toast string for that surface/session context
|
|
6
|
-
* - Only fetch if minIntervalMs has passed since the last fetch for that key
|
|
7
|
-
* - Deduplicate concurrent fetches per key
|
|
8
|
-
*/
|
|
9
|
-
const cacheEntries = new Map();
|
|
10
|
-
function getCacheEntry(cacheKey) {
|
|
11
|
-
const existing = cacheEntries.get(cacheKey);
|
|
12
|
-
if (existing) {
|
|
13
|
-
return existing;
|
|
14
|
-
}
|
|
15
|
-
const created = {
|
|
16
|
-
cachedToast: null,
|
|
17
|
-
inFlightPromise: null,
|
|
18
|
-
lastFetchTime: 0,
|
|
19
|
-
};
|
|
20
|
-
cacheEntries.set(cacheKey, created);
|
|
21
|
-
return created;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get the cached toast message for a key if still valid.
|
|
25
|
-
*/
|
|
26
|
-
export function getCachedToast(cacheKey, minIntervalMs) {
|
|
27
|
-
const cacheEntry = cacheEntries.get(cacheKey);
|
|
28
|
-
if (!cacheEntry?.cachedToast) {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
const now = Date.now();
|
|
32
|
-
const age = now - cacheEntry.cachedToast.timestamp;
|
|
33
|
-
if (age < minIntervalMs) {
|
|
34
|
-
return cacheEntry.cachedToast.message;
|
|
35
|
-
}
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Check if a new fetch should be initiated for a key.
|
|
40
|
-
*/
|
|
41
|
-
export function shouldFetch(cacheKey, minIntervalMs) {
|
|
42
|
-
const cacheEntry = getCacheEntry(cacheKey);
|
|
43
|
-
const now = Date.now();
|
|
44
|
-
return now - cacheEntry.lastFetchTime >= minIntervalMs;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Get or start a fetch operation with keyed deduplication.
|
|
48
|
-
*/
|
|
49
|
-
export async function getOrFetch(cacheKey, fetchFn, minIntervalMs) {
|
|
50
|
-
const wrapped = async () => {
|
|
51
|
-
const message = await fetchFn();
|
|
52
|
-
return { message, cache: true };
|
|
53
|
-
};
|
|
54
|
-
return getOrFetchWithCacheControl(cacheKey, wrapped, minIntervalMs);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Get or start a fetch operation with keyed deduplication and cache control.
|
|
58
|
-
*
|
|
59
|
-
* This is useful when some results should be displayed but not cached
|
|
60
|
-
* (e.g. transient "all providers failed" cases).
|
|
61
|
-
*/
|
|
62
|
-
export async function getOrFetchWithCacheControl(cacheKey, fetchFn, minIntervalMs) {
|
|
63
|
-
const cacheEntry = getCacheEntry(cacheKey);
|
|
64
|
-
const cached = getCachedToast(cacheKey, minIntervalMs);
|
|
65
|
-
if (cached !== null) {
|
|
66
|
-
return cached;
|
|
67
|
-
}
|
|
68
|
-
if (cacheEntry.inFlightPromise) {
|
|
69
|
-
return cacheEntry.inFlightPromise;
|
|
70
|
-
}
|
|
71
|
-
if (!shouldFetch(cacheKey, minIntervalMs)) {
|
|
72
|
-
return cacheEntry.cachedToast?.message ?? null;
|
|
73
|
-
}
|
|
74
|
-
cacheEntry.lastFetchTime = Date.now();
|
|
75
|
-
cacheEntry.inFlightPromise = (async () => {
|
|
76
|
-
try {
|
|
77
|
-
const out = await fetchFn();
|
|
78
|
-
const result = out.message;
|
|
79
|
-
const cache = out.cache ?? true;
|
|
80
|
-
if (result === null) {
|
|
81
|
-
cacheEntry.lastFetchTime = 0;
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
if (!cache) {
|
|
85
|
-
cacheEntry.lastFetchTime = 0;
|
|
86
|
-
return result;
|
|
87
|
-
}
|
|
88
|
-
cacheEntry.cachedToast = {
|
|
89
|
-
message: result,
|
|
90
|
-
timestamp: Date.now(),
|
|
91
|
-
};
|
|
92
|
-
return result;
|
|
93
|
-
}
|
|
94
|
-
finally {
|
|
95
|
-
cacheEntry.inFlightPromise = null;
|
|
96
|
-
if (!cacheEntry.cachedToast && cacheEntry.lastFetchTime === 0) {
|
|
97
|
-
cacheEntries.delete(cacheKey);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
})();
|
|
101
|
-
return cacheEntry.inFlightPromise;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Clear one keyed entry, or the whole keyed cache if no key is provided.
|
|
105
|
-
*/
|
|
106
|
-
export function clearCache(cacheKey) {
|
|
107
|
-
if (cacheKey) {
|
|
108
|
-
cacheEntries.delete(cacheKey);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
cacheEntries.clear();
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Force update a keyed cache entry with a new message.
|
|
115
|
-
*/
|
|
116
|
-
export function updateCache(cacheKey, message) {
|
|
117
|
-
const cacheEntry = getCacheEntry(cacheKey);
|
|
118
|
-
cacheEntry.cachedToast = {
|
|
119
|
-
message,
|
|
120
|
-
timestamp: Date.now(),
|
|
121
|
-
};
|
|
122
|
-
cacheEntry.lastFetchTime = Date.now();
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=cache.js.map
|
package/dist/lib/cache.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Command-handled sentinel.
|
|
3
|
-
*
|
|
4
|
-
* Thrown by slash-command handlers to signal that the command output
|
|
5
|
-
* has already been injected and no further processing is needed.
|
|
6
|
-
*/
|
|
7
|
-
export declare const COMMAND_HANDLED_SENTINEL: "__QUOTA_COMMAND_HANDLED__";
|
|
8
|
-
/**
|
|
9
|
-
* Throw a quiet command-handled abort error.
|
|
10
|
-
* Use this instead of `throw new Error("__QUOTA_COMMAND_HANDLED__")`.
|
|
11
|
-
*/
|
|
12
|
-
export declare function handled(): never;
|
|
13
|
-
/**
|
|
14
|
-
* Returns true when an error is a command-handled abort.
|
|
15
|
-
*/
|
|
16
|
-
export declare function isCommandHandledError(err: unknown): boolean;
|
|
17
|
-
//# sourceMappingURL=command-handled.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-handled.d.ts","sourceRoot":"","sources":["../../src/lib/command-handled.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,wBAAwB,EAAG,2BAAoC,CAAC;AAe7E;;;GAGG;AACH,wBAAgB,OAAO,IAAI,KAAK,CAE/B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAO3D"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Command-handled sentinel.
|
|
3
|
-
*
|
|
4
|
-
* Thrown by slash-command handlers to signal that the command output
|
|
5
|
-
* has already been injected and no further processing is needed.
|
|
6
|
-
*/
|
|
7
|
-
export const COMMAND_HANDLED_SENTINEL = "__QUOTA_COMMAND_HANDLED__";
|
|
8
|
-
const COMMAND_HANDLED_ERROR_BRAND = Symbol.for("@slkiser/opencode-quota/command-handled");
|
|
9
|
-
function createCommandHandledError() {
|
|
10
|
-
const err = Object.create(Error.prototype);
|
|
11
|
-
Object.defineProperties(err, {
|
|
12
|
-
[COMMAND_HANDLED_ERROR_BRAND]: { value: true },
|
|
13
|
-
message: { value: "", configurable: true, writable: true },
|
|
14
|
-
name: { value: "", configurable: true, writable: true },
|
|
15
|
-
stack: { value: "", configurable: true, writable: true },
|
|
16
|
-
});
|
|
17
|
-
return err;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Throw a quiet command-handled abort error.
|
|
21
|
-
* Use this instead of `throw new Error("__QUOTA_COMMAND_HANDLED__")`.
|
|
22
|
-
*/
|
|
23
|
-
export function handled() {
|
|
24
|
-
throw createCommandHandledError();
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns true when an error is a command-handled abort.
|
|
28
|
-
*/
|
|
29
|
-
export function isCommandHandledError(err) {
|
|
30
|
-
if (!(err instanceof Error)) {
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
const marker = err[COMMAND_HANDLED_ERROR_BRAND];
|
|
34
|
-
return marker === true || err.message === COMMAND_HANDLED_SENTINEL;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=command-handled.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-handled.js","sourceRoot":"","sources":["../../src/lib/command-handled.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAAoC,CAAC;AAE7E,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AAE1F,SAAS,yBAAyB;IAChC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAU,CAAC;IACpD,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE;QAC3B,CAAC,2BAA2B,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC9C,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1D,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;KACzD,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO;IACrB,MAAM,yBAAyB,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAI,GAA+C,CAAC,2BAA2B,CAAC,CAAC;IAC7F,OAAO,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,wBAAwB,CAAC;AACrE,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The embedded TUI worker already exposes local dialog commands.
|
|
3
|
-
* Registering the server copies there creates duplicate slash rows.
|
|
4
|
-
* Main-thread hosts, including mini, rely on the server catalog.
|
|
5
|
-
*/
|
|
6
|
-
export declare function shouldRegisterServerSlashCommands(params: {
|
|
7
|
-
isMainThread: boolean;
|
|
8
|
-
argv: readonly string[];
|
|
9
|
-
}): boolean;
|
|
10
|
-
//# sourceMappingURL=command-surfaces.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-surfaces.d.ts","sourceRoot":"","sources":["../../src/lib/command-surfaces.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE;IACxD,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,GAAG,OAAO,CAEV"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The embedded TUI worker already exposes local dialog commands.
|
|
3
|
-
* Registering the server copies there creates duplicate slash rows.
|
|
4
|
-
* Main-thread hosts, including mini, rely on the server catalog.
|
|
5
|
-
*/
|
|
6
|
-
export function shouldRegisterServerSlashCommands(params) {
|
|
7
|
-
return params.isMainThread;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=command-surfaces.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-surfaces.js","sourceRoot":"","sources":["../../src/lib/command-surfaces.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAAC,MAGjD;IACC,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export interface OpenCodeZenConsoleAccount {
|
|
2
|
-
/** Console base URL from the account row, e.g. https://opencode.ai/console */
|
|
3
|
-
baseUrl: string;
|
|
4
|
-
accessToken: string;
|
|
5
|
-
activeOrgId: string;
|
|
6
|
-
}
|
|
7
|
-
export type ResolvedOpenCodeZenAccount = {
|
|
8
|
-
state: "none";
|
|
9
|
-
} | {
|
|
10
|
-
state: "expired";
|
|
11
|
-
expiryMs: number;
|
|
12
|
-
} | {
|
|
13
|
-
state: "no_active_account";
|
|
14
|
-
} | {
|
|
15
|
-
state: "missing_org";
|
|
16
|
-
} | {
|
|
17
|
-
state: "inactive_account";
|
|
18
|
-
} | {
|
|
19
|
-
state: "invalid_url";
|
|
20
|
-
} | {
|
|
21
|
-
state: "incompatible";
|
|
22
|
-
} | {
|
|
23
|
-
state: "read_error";
|
|
24
|
-
} | {
|
|
25
|
-
state: "configured";
|
|
26
|
-
account: OpenCodeZenConsoleAccount;
|
|
27
|
-
};
|
|
28
|
-
export declare function resolveOpenCodeZenAccount(): Promise<ResolvedOpenCodeZenAccount>;
|
|
29
|
-
export declare const DEFAULT_OPENCODE_ZEN_ACCOUNT_CACHE_MAX_AGE_MS = 30000;
|
|
30
|
-
export declare function resolveOpenCodeZenAccountCached(params?: {
|
|
31
|
-
maxAgeMs?: number;
|
|
32
|
-
}): Promise<ResolvedOpenCodeZenAccount>;
|
|
33
|
-
//# sourceMappingURL=opencode-zen-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-zen-config.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-zen-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,yBAAyB;IACxC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,0BAA0B,GAClC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,KAAK,EAAE,mBAAmB,CAAA;CAAE,GAC9B;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,GACxB;IAAE,KAAK,EAAE,kBAAkB,CAAA;CAAE,GAC7B;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,GACxB;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,GACzB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,CAAC;AA4JhE,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAErF;AAKD,eAAO,MAAM,6CAA6C,QAAS,CAAC;AAEpE,wBAAsB,+BAA+B,CAAC,MAAM,CAAC,EAAE;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAatC"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { statSync } from "node:fs";
|
|
2
|
-
import { openOpenCodeSqliteReadOnly } from "./opencode-sqlite.js";
|
|
3
|
-
import { getOpenCodeDbPath } from "./opencode-storage.js";
|
|
4
|
-
function asString(value) {
|
|
5
|
-
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
6
|
-
}
|
|
7
|
-
/** Checks a thrown error (e.g. from statSync) for a stable errno code. */
|
|
8
|
-
function hasErrnoCode(error, code) {
|
|
9
|
-
let current = error;
|
|
10
|
-
for (let depth = 0; current && depth < 5; depth += 1) {
|
|
11
|
-
if (current.code === code)
|
|
12
|
-
return true;
|
|
13
|
-
current = current.cause;
|
|
14
|
-
}
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* node:sqlite reports missing files as SQLITE_CANTOPEN (ERR_SQLITE_ERROR), the
|
|
19
|
-
* same errcode it uses for permission problems — so ask the filesystem for the
|
|
20
|
-
* real errno. statSync (unlike existsSync) distinguishes ENOENT from EACCES.
|
|
21
|
-
*/
|
|
22
|
-
function isMissingStateDbFile(dbPath) {
|
|
23
|
-
try {
|
|
24
|
-
statSync(dbPath);
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
catch (statError) {
|
|
28
|
-
return hasErrnoCode(statError, "ENOENT");
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function normalizeBaseUrl(value) {
|
|
32
|
-
const raw = asString(value);
|
|
33
|
-
if (!raw)
|
|
34
|
-
return null;
|
|
35
|
-
let url;
|
|
36
|
-
try {
|
|
37
|
-
url = new URL(raw);
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
if (url.protocol !== "https:")
|
|
43
|
-
return null;
|
|
44
|
-
// Bare "?" / "#" leave search/hash empty but are not a valid Console base.
|
|
45
|
-
if (raw.includes("?") || raw.includes("#"))
|
|
46
|
-
return null;
|
|
47
|
-
if (url.username || url.password || url.search || url.hash)
|
|
48
|
-
return null;
|
|
49
|
-
return url.href.replace(/\/+$/, "");
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Reads the active OpenCode Console CLI session (`opencode console login`)
|
|
53
|
-
* from OpenCode's local state database, strictly read-only. Tokens are never
|
|
54
|
-
* refreshed or written here.
|
|
55
|
-
*/
|
|
56
|
-
async function readAccount() {
|
|
57
|
-
const safe = (resolved) => ({
|
|
58
|
-
resolved,
|
|
59
|
-
tokenExpiryMs: null,
|
|
60
|
-
});
|
|
61
|
-
const dbPath = getOpenCodeDbPath();
|
|
62
|
-
if (!dbPath)
|
|
63
|
-
return safe({ state: "none" });
|
|
64
|
-
let conn;
|
|
65
|
-
try {
|
|
66
|
-
conn = await openOpenCodeSqliteReadOnly(dbPath);
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
// Classify by the actual DB path, not the opener's error: node:sqlite
|
|
70
|
-
// surfaces missing files as SQLITE_CANTOPEN (ERR_SQLITE_ERROR) — the same
|
|
71
|
-
// errcode it uses for permission problems — and a wrapped unrelated ENOENT
|
|
72
|
-
// must never hide an existing DB. statSync distinguishes ENOENT (absent)
|
|
73
|
-
// from EACCES (unsearchable parent) without exception-text matching.
|
|
74
|
-
if (isMissingStateDbFile(dbPath))
|
|
75
|
-
return safe({ state: "none" });
|
|
76
|
-
return safe({ state: "read_error" });
|
|
77
|
-
}
|
|
78
|
-
try {
|
|
79
|
-
const tables = conn.all(`SELECT name FROM sqlite_master WHERE type = 'table' AND name IN ('account', 'account_state')`);
|
|
80
|
-
const names = new Set(tables.map((row) => row?.name));
|
|
81
|
-
if (!names.has("account") || !names.has("account_state")) {
|
|
82
|
-
return safe({ state: "incompatible" });
|
|
83
|
-
}
|
|
84
|
-
// Column-level check: an older/newer schema that misses required columns is
|
|
85
|
-
// incompatible, while a failing read (lock, I/O) is a transient read_error.
|
|
86
|
-
const requiredColumns = {
|
|
87
|
-
account_state: new Set(["active_account_id", "active_org_id"]),
|
|
88
|
-
account: new Set(["id", "url", "access_token", "token_expiry"]),
|
|
89
|
-
};
|
|
90
|
-
for (const [table, required] of Object.entries(requiredColumns)) {
|
|
91
|
-
const columns = conn.all(`PRAGMA table_info(${table})`);
|
|
92
|
-
const columnNames = new Set(columns.map((row) => row?.name));
|
|
93
|
-
for (const column of required) {
|
|
94
|
-
if (!columnNames.has(column))
|
|
95
|
-
return safe({ state: "incompatible" });
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const stateRow = conn.get(`SELECT active_account_id, active_org_id FROM "account_state" LIMIT 1`);
|
|
99
|
-
const activeAccountId = asString(stateRow?.active_account_id);
|
|
100
|
-
if (!activeAccountId)
|
|
101
|
-
return safe({ state: "no_active_account" });
|
|
102
|
-
const active = conn.get(`SELECT url, access_token, token_expiry FROM "account" WHERE id = ? LIMIT 1`, [activeAccountId]);
|
|
103
|
-
if (!active)
|
|
104
|
-
return safe({ state: "inactive_account" });
|
|
105
|
-
const activeOrgId = asString(stateRow?.active_org_id);
|
|
106
|
-
if (!activeOrgId)
|
|
107
|
-
return safe({ state: "missing_org" });
|
|
108
|
-
const accessToken = asString(active.access_token);
|
|
109
|
-
if (!accessToken)
|
|
110
|
-
return { resolved: { state: "expired", expiryMs: 0 }, tokenExpiryMs: 0 };
|
|
111
|
-
const expiryMs = typeof active.token_expiry === "number" && Number.isFinite(active.token_expiry)
|
|
112
|
-
? active.token_expiry
|
|
113
|
-
: null;
|
|
114
|
-
if (expiryMs !== null && expiryMs <= Date.now()) {
|
|
115
|
-
// Propagate the already-passed expiry so the cache TTL collapses to 0 and
|
|
116
|
-
// the next read goes back to the DB (e.g. right after a fresh login).
|
|
117
|
-
return { resolved: { state: "expired", expiryMs }, tokenExpiryMs: expiryMs };
|
|
118
|
-
}
|
|
119
|
-
const baseUrl = normalizeBaseUrl(active.url);
|
|
120
|
-
if (!baseUrl)
|
|
121
|
-
return safe({ state: "invalid_url" });
|
|
122
|
-
return {
|
|
123
|
-
resolved: {
|
|
124
|
-
state: "configured",
|
|
125
|
-
account: { baseUrl, accessToken, activeOrgId },
|
|
126
|
-
},
|
|
127
|
-
tokenExpiryMs: expiryMs,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
// The schema is fine but the read failed (lock, disk I/O, ...): report a
|
|
132
|
-
// transient read error instead of throwing.
|
|
133
|
-
return safe({ state: "read_error" });
|
|
134
|
-
}
|
|
135
|
-
finally {
|
|
136
|
-
conn.close();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
export async function resolveOpenCodeZenAccount() {
|
|
140
|
-
return (await readAccount()).resolved;
|
|
141
|
-
}
|
|
142
|
-
let cachedAccount = null;
|
|
143
|
-
let cachedExpiresAt = 0;
|
|
144
|
-
export const DEFAULT_OPENCODE_ZEN_ACCOUNT_CACHE_MAX_AGE_MS = 30_000;
|
|
145
|
-
export async function resolveOpenCodeZenAccountCached(params) {
|
|
146
|
-
const maxAgeMs = Math.max(0, params?.maxAgeMs ?? DEFAULT_OPENCODE_ZEN_ACCOUNT_CACHE_MAX_AGE_MS);
|
|
147
|
-
// A zero maxAgeMs explicitly bypasses an unexpired prior cache entry.
|
|
148
|
-
if (maxAgeMs > 0 && cachedAccount && Date.now() < cachedExpiresAt)
|
|
149
|
-
return cachedAccount;
|
|
150
|
-
const { resolved, tokenExpiryMs } = await readAccount();
|
|
151
|
-
// The cache must never outlive the token: cap the TTL at the token's expiry
|
|
152
|
-
// so an expired session triggers a fresh DB read (and a login prompt).
|
|
153
|
-
const ttl = tokenExpiryMs === null ? maxAgeMs : Math.min(maxAgeMs, Math.max(0, tokenExpiryMs - Date.now()));
|
|
154
|
-
cachedAccount = resolved;
|
|
155
|
-
cachedExpiresAt = Date.now() + ttl;
|
|
156
|
-
return resolved;
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=opencode-zen-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-zen-config.js","sourceRoot":"","sources":["../../src/lib/opencode-zen-config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/path-pick.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-pick.d.ts","sourceRoot":"","sources":["../../src/lib/path-pick.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAWlE"}
|
package/dist/lib/path-pick.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { existsSync } from "fs";
|
|
2
|
-
export function pickFirstExistingPath(candidates) {
|
|
3
|
-
for (const p of candidates) {
|
|
4
|
-
try {
|
|
5
|
-
if (existsSync(p))
|
|
6
|
-
return p;
|
|
7
|
-
}
|
|
8
|
-
catch {
|
|
9
|
-
// ignore
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
// Deterministic fallback for diagnostics.
|
|
13
|
-
return candidates[0] ?? "";
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=path-pick.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-pick.js","sourceRoot":"","sources":["../../src/lib/path-pick.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,UAAU,qBAAqB,CAAC,UAAoB;IACxD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { type LoadConfigMeta } from "./config.js";
|
|
2
|
-
import type { RuntimeContextRootHints } from "./config-file-utils.js";
|
|
3
|
-
import { type QuotaStatusLiveProbe, type SessionModelMeta } from "./quota-render-data.js";
|
|
4
|
-
import { type QuotaRuntimeClient, type QuotaRuntimeContext } from "./quota-runtime-context.js";
|
|
5
|
-
import type { SessionTokenError } from "./quota-status.js";
|
|
6
|
-
import { type QuotaToastConfig } from "./types.js";
|
|
7
|
-
export type DeferredQuotaRefreshReason = "config_load_failed" | "no_available_providers" | "provider_fetch_failed" | "no_reportable_data";
|
|
8
|
-
export type QuotaToastCollectionResult = {
|
|
9
|
-
message: string | null;
|
|
10
|
-
cacheRenderedMessage: boolean;
|
|
11
|
-
retryable: boolean;
|
|
12
|
-
retryReason?: DeferredQuotaRefreshReason;
|
|
13
|
-
hasQuotaRows: boolean;
|
|
14
|
-
detectedProviderIds: string[];
|
|
15
|
-
freshProviderResults: QuotaStatusLiveProbe[];
|
|
16
|
-
sessionTokenError?: SessionTokenError;
|
|
17
|
-
shouldReconcileDetectedProviders: boolean;
|
|
18
|
-
};
|
|
19
|
-
type QuotaToastBody = {
|
|
20
|
-
message: string;
|
|
21
|
-
variant: "info" | "success" | "warning" | "error";
|
|
22
|
-
duration?: number;
|
|
23
|
-
title?: string;
|
|
24
|
-
};
|
|
25
|
-
export interface QuotaToastRuntime {
|
|
26
|
-
handleTrigger(params: {
|
|
27
|
-
sessionID: string;
|
|
28
|
-
trigger: string;
|
|
29
|
-
}): Promise<void>;
|
|
30
|
-
}
|
|
31
|
-
export interface QuotaToastRuntimeDependencies {
|
|
32
|
-
client: QuotaRuntimeClient;
|
|
33
|
-
roots: () => RuntimeContextRootHints;
|
|
34
|
-
resolveSessionMeta: (sessionID: string) => Promise<SessionModelMeta>;
|
|
35
|
-
isSubagentSession: (sessionID: string) => Promise<boolean>;
|
|
36
|
-
reconcileDetectedProviders: (providerIds: readonly string[]) => Promise<void>;
|
|
37
|
-
setSessionTokenError: (error: SessionTokenError | undefined) => void;
|
|
38
|
-
showToast: (body: QuotaToastBody) => Promise<unknown>;
|
|
39
|
-
log: (message: string, extra?: Record<string, unknown>) => Promise<void>;
|
|
40
|
-
onInitialized: (extra: Record<string, unknown>) => void;
|
|
41
|
-
}
|
|
42
|
-
export declare function createQuotaToastRuntime(dependencies: QuotaToastRuntimeDependencies): QuotaToastRuntime;
|
|
43
|
-
export declare function formatQuotaToastDebugInfo(params: {
|
|
44
|
-
trigger: string;
|
|
45
|
-
reason: string;
|
|
46
|
-
config: QuotaToastConfig;
|
|
47
|
-
configMeta: Pick<LoadConfigMeta, "source" | "paths">;
|
|
48
|
-
currentModel?: string;
|
|
49
|
-
availability?: Array<{
|
|
50
|
-
id: string;
|
|
51
|
-
ok: boolean;
|
|
52
|
-
}>;
|
|
53
|
-
}): string;
|
|
54
|
-
export declare function collectQuotaToastMessage(params: {
|
|
55
|
-
trigger: string;
|
|
56
|
-
runtime: QuotaRuntimeContext;
|
|
57
|
-
bypassProviderCache?: boolean;
|
|
58
|
-
}): Promise<QuotaToastCollectionResult>;
|
|
59
|
-
export {};
|
|
60
|
-
//# sourceMappingURL=quota-toast-runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quota-toast-runtime.d.ts","sourceRoot":"","sources":["../../src/lib/quota-toast-runtime.ts"],"names":[],"mappings":"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"}
|