@slkiser/opencode-quota 5.0.3 → 6.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 +30 -44
- package/dist/agent-tools.d.ts +24 -0
- package/dist/agent-tools.d.ts.map +1 -0
- package/dist/agent-tools.js +578 -0
- package/dist/agent-tools.js.map +1 -0
- package/dist/bin/opencode-quota.d.ts.map +1 -1
- package/dist/bin/opencode-quota.js +1 -32
- package/dist/bin/opencode-quota.js.map +1 -1
- package/dist/core/errors.d.ts +12 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +141 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/pace.d.ts +13 -0
- package/dist/core/pace.d.ts.map +1 -0
- package/dist/core/pace.js +52 -0
- package/dist/core/pace.js.map +1 -0
- package/dist/core/persist.d.ts +44 -0
- package/dist/core/persist.d.ts.map +1 -0
- package/dist/core/persist.js +210 -0
- package/dist/core/persist.js.map +1 -0
- package/dist/core/provider-source.d.ts +40 -0
- package/dist/core/provider-source.d.ts.map +1 -0
- package/dist/core/provider-source.js +210 -0
- package/dist/core/provider-source.js.map +1 -0
- package/dist/core/redact.d.ts +17 -0
- package/dist/core/redact.d.ts.map +1 -0
- package/dist/core/redact.js +217 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/rows.d.ts +20 -0
- package/dist/core/rows.d.ts.map +1 -0
- package/dist/core/rows.js +142 -0
- package/dist/core/rows.js.map +1 -0
- package/dist/core/selection.d.ts +15 -0
- package/dist/core/selection.d.ts.map +1 -0
- package/dist/core/selection.js +43 -0
- package/dist/core/selection.js.map +1 -0
- package/dist/core/snapshot-publisher.d.ts +15 -0
- package/dist/core/snapshot-publisher.d.ts.map +1 -0
- package/dist/core/snapshot-publisher.js +57 -0
- package/dist/core/snapshot-publisher.js.map +1 -0
- package/dist/core/store.d.ts +93 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +563 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/types.d.ts +186 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/usage-ranges.d.ts +46 -0
- package/dist/core/usage-ranges.d.ts.map +1 -0
- package/dist/core/usage-ranges.js +72 -0
- package/dist/core/usage-ranges.js.map +1 -0
- package/dist/core/usage.d.ts +100 -0
- package/dist/core/usage.d.ts.map +1 -0
- package/dist/core/usage.js +373 -0
- package/dist/core/usage.js.map +1 -0
- package/dist/core/validate.d.ts +8 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +167 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/core/windows.d.ts +24 -0
- package/dist/core/windows.d.ts.map +1 -0
- package/dist/core/windows.js +43 -0
- package/dist/core/windows.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/accounting-format.d.ts +2 -52
- package/dist/lib/accounting-format.d.ts.map +1 -1
- package/dist/lib/accounting-format.js +6 -255
- package/dist/lib/accounting-format.js.map +1 -1
- package/dist/lib/alibaba-auth.d.ts +14 -21
- package/dist/lib/alibaba-auth.d.ts.map +1 -1
- package/dist/lib/alibaba-auth.js +36 -149
- package/dist/lib/alibaba-auth.js.map +1 -1
- package/dist/lib/alibaba-coding-plan-local-quota.d.ts +1 -6
- package/dist/lib/alibaba-coding-plan-local-quota.d.ts.map +1 -1
- package/dist/lib/alibaba-coding-plan-local-quota.js +1 -1
- package/dist/lib/alibaba-coding-plan-local-quota.js.map +1 -1
- package/dist/lib/alibaba-token-plan.d.ts +18 -27
- package/dist/lib/alibaba-token-plan.d.ts.map +1 -1
- package/dist/lib/alibaba-token-plan.js +121 -285
- package/dist/lib/alibaba-token-plan.js.map +1 -1
- package/dist/lib/anthropic-auth.d.ts +3 -5
- package/dist/lib/anthropic-auth.d.ts.map +1 -1
- package/dist/lib/anthropic-auth.js +6 -9
- package/dist/lib/anthropic-auth.js.map +1 -1
- package/dist/lib/anthropic.d.ts +12 -37
- package/dist/lib/anthropic.d.ts.map +1 -1
- package/dist/lib/anthropic.js +348 -698
- package/dist/lib/anthropic.js.map +1 -1
- package/dist/lib/api-key-resolver.d.ts +165 -192
- package/dist/lib/api-key-resolver.d.ts.map +1 -1
- package/dist/lib/api-key-resolver.js +208 -234
- package/dist/lib/api-key-resolver.js.map +1 -1
- package/dist/lib/atomic-json.d.ts +4 -1
- package/dist/lib/atomic-json.d.ts.map +1 -1
- package/dist/lib/atomic-json.js +2 -3
- package/dist/lib/atomic-json.js.map +1 -1
- package/dist/lib/calendar-date.d.ts +15 -0
- package/dist/lib/calendar-date.d.ts.map +1 -0
- package/dist/lib/calendar-date.js +21 -0
- package/dist/lib/calendar-date.js.map +1 -0
- package/dist/lib/chutes.d.ts +0 -1
- package/dist/lib/chutes.d.ts.map +1 -1
- package/dist/lib/chutes.js +2 -4
- package/dist/lib/chutes.js.map +1 -1
- package/dist/lib/cli-reports.d.ts +15 -11
- package/dist/lib/cli-reports.d.ts.map +1 -1
- package/dist/lib/cli-reports.js +34 -107
- package/dist/lib/cli-reports.js.map +1 -1
- package/dist/lib/cli-show.d.ts +9 -22
- package/dist/lib/cli-show.d.ts.map +1 -1
- package/dist/lib/cli-show.js +104 -75
- package/dist/lib/cli-show.js.map +1 -1
- package/dist/lib/config-file-utils.d.ts +3 -15
- package/dist/lib/config-file-utils.d.ts.map +1 -1
- package/dist/lib/config-file-utils.js +4 -63
- package/dist/lib/config-file-utils.js.map +1 -1
- package/dist/lib/config-write-target.d.ts +4 -7
- package/dist/lib/config-write-target.d.ts.map +1 -1
- package/dist/lib/config-write-target.js +4 -18
- package/dist/lib/config-write-target.js.map +1 -1
- package/dist/lib/copilot.d.ts +29 -20
- package/dist/lib/copilot.d.ts.map +1 -1
- package/dist/lib/copilot.js +392 -649
- package/dist/lib/copilot.js.map +1 -1
- package/dist/lib/cursor-detection.d.ts +3 -3
- package/dist/lib/cursor-detection.d.ts.map +1 -1
- package/dist/lib/cursor-detection.js +44 -88
- package/dist/lib/cursor-detection.js.map +1 -1
- package/dist/lib/cursor-pricing.d.ts +71 -8
- package/dist/lib/cursor-pricing.d.ts.map +1 -1
- package/dist/lib/cursor-pricing.js +33 -125
- package/dist/lib/cursor-pricing.js.map +1 -1
- package/dist/lib/cursor-usage.d.ts +6 -4
- package/dist/lib/cursor-usage.d.ts.map +1 -1
- package/dist/lib/cursor-usage.js +27 -40
- package/dist/lib/cursor-usage.js.map +1 -1
- package/dist/lib/deepseek.d.ts +9 -17
- package/dist/lib/deepseek.d.ts.map +1 -1
- package/dist/lib/deepseek.js +24 -54
- package/dist/lib/deepseek.js.map +1 -1
- package/dist/lib/display-sanitize.d.ts +0 -8
- package/dist/lib/display-sanitize.d.ts.map +1 -1
- package/dist/lib/display-sanitize.js +0 -139
- package/dist/lib/display-sanitize.js.map +1 -1
- package/dist/lib/entries.d.ts +13 -239
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/entries.js +1 -46
- package/dist/lib/entries.js.map +1 -1
- package/dist/lib/file-lock.d.ts +23 -0
- package/dist/lib/file-lock.d.ts.map +1 -0
- package/dist/lib/file-lock.js +122 -0
- package/dist/lib/file-lock.js.map +1 -0
- package/dist/lib/format-utils.d.ts +2 -82
- package/dist/lib/format-utils.d.ts.map +1 -1
- package/dist/lib/format-utils.js +2 -191
- package/dist/lib/format-utils.js.map +1 -1
- package/dist/lib/glm-coding-plan.d.ts +6 -5
- package/dist/lib/glm-coding-plan.d.ts.map +1 -1
- package/dist/lib/glm-coding-plan.js +19 -1
- package/dist/lib/glm-coding-plan.js.map +1 -1
- package/dist/lib/google-agy.d.ts +8 -40
- package/dist/lib/google-agy.d.ts.map +1 -1
- package/dist/lib/google-agy.js +88 -519
- package/dist/lib/google-agy.js.map +1 -1
- package/dist/lib/google-companion-credentials.d.ts +9 -40
- package/dist/lib/google-companion-credentials.d.ts.map +1 -1
- package/dist/lib/google-companion-credentials.js +167 -224
- package/dist/lib/google-companion-credentials.js.map +1 -1
- package/dist/lib/google-gemini-cli.d.ts +5 -38
- package/dist/lib/google-gemini-cli.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli.js +71 -442
- package/dist/lib/google-gemini-cli.js.map +1 -1
- package/dist/lib/google-oauth-quota.d.ts +76 -0
- package/dist/lib/google-oauth-quota.d.ts.map +1 -0
- package/dist/lib/google-oauth-quota.js +297 -0
- package/dist/lib/google-oauth-quota.js.map +1 -0
- package/dist/lib/google-token-cache.d.ts +3 -5
- package/dist/lib/google-token-cache.d.ts.map +1 -1
- package/dist/lib/google-token-cache.js +2 -14
- package/dist/lib/google-token-cache.js.map +1 -1
- package/dist/lib/home-dir-display.d.ts.map +1 -1
- package/dist/lib/home-dir-display.js +21 -39
- package/dist/lib/home-dir-display.js.map +1 -1
- package/dist/lib/http.d.ts +4 -1
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +2 -1
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/json-guards.d.ts +11 -0
- package/dist/lib/json-guards.d.ts.map +1 -0
- package/dist/lib/json-guards.js +25 -0
- package/dist/lib/json-guards.js.map +1 -0
- package/dist/lib/kilo.d.ts +0 -2
- package/dist/lib/kilo.d.ts.map +1 -1
- package/dist/lib/kilo.js +33 -116
- package/dist/lib/kilo.js.map +1 -1
- package/dist/lib/kimi-endpoints.d.ts +2 -2
- package/dist/lib/kimi-endpoints.d.ts.map +1 -1
- package/dist/lib/kimi-endpoints.js +1 -1
- package/dist/lib/kimi-endpoints.js.map +1 -1
- package/dist/lib/kimi.d.ts.map +1 -1
- package/dist/lib/kimi.js +40 -86
- package/dist/lib/kimi.js.map +1 -1
- package/dist/lib/maintainer-announcements.d.ts +4 -17
- package/dist/lib/maintainer-announcements.d.ts.map +1 -1
- package/dist/lib/maintainer-announcements.js +7 -44
- package/dist/lib/maintainer-announcements.js.map +1 -1
- package/dist/lib/maintainer-home-notice.d.ts +19 -0
- package/dist/lib/maintainer-home-notice.d.ts.map +1 -0
- package/dist/lib/maintainer-home-notice.js +92 -0
- package/dist/lib/maintainer-home-notice.js.map +1 -0
- package/dist/lib/mimo-config.d.ts +6 -9
- package/dist/lib/mimo-config.d.ts.map +1 -1
- package/dist/lib/mimo-config.js +43 -74
- package/dist/lib/mimo-config.js.map +1 -1
- package/dist/lib/mimo.d.ts +2 -5
- package/dist/lib/mimo.d.ts.map +1 -1
- package/dist/lib/mimo.js +57 -109
- package/dist/lib/mimo.js.map +1 -1
- package/dist/lib/minimax-endpoints.d.ts +2 -2
- package/dist/lib/minimax-endpoints.d.ts.map +1 -1
- package/dist/lib/minimax-endpoints.js +1 -1
- package/dist/lib/minimax-endpoints.js.map +1 -1
- package/dist/lib/modelsdev-pricing.d.ts +22 -16
- package/dist/lib/modelsdev-pricing.d.ts.map +1 -1
- package/dist/lib/modelsdev-pricing.js +279 -560
- package/dist/lib/modelsdev-pricing.js.map +1 -1
- package/dist/lib/nanogpt.d.ts +6 -6
- package/dist/lib/nanogpt.d.ts.map +1 -1
- package/dist/lib/nanogpt.js +19 -72
- package/dist/lib/nanogpt.js.map +1 -1
- package/dist/lib/ollama-cloud.d.ts +3 -6
- package/dist/lib/ollama-cloud.d.ts.map +1 -1
- package/dist/lib/ollama-cloud.js +26 -37
- package/dist/lib/ollama-cloud.js.map +1 -1
- package/dist/lib/openai.d.ts +18 -29
- package/dist/lib/openai.d.ts.map +1 -1
- package/dist/lib/openai.js +108 -182
- package/dist/lib/openai.js.map +1 -1
- package/dist/lib/opencode-auth-sqlite.d.ts.map +1 -1
- package/dist/lib/opencode-auth-sqlite.js +22 -23
- package/dist/lib/opencode-auth-sqlite.js.map +1 -1
- package/dist/lib/opencode-auth.d.ts +17 -11
- package/dist/lib/opencode-auth.d.ts.map +1 -1
- package/dist/lib/opencode-auth.js +39 -46
- package/dist/lib/opencode-auth.js.map +1 -1
- package/dist/lib/opencode-config-editor.d.ts +3 -34
- package/dist/lib/opencode-config-editor.d.ts.map +1 -1
- package/dist/lib/opencode-config-editor.js +23 -142
- package/dist/lib/opencode-config-editor.js.map +1 -1
- package/dist/lib/opencode-config-providers.d.ts +4 -3
- package/dist/lib/opencode-config-providers.d.ts.map +1 -1
- package/dist/lib/opencode-config-providers.js +7 -11
- package/dist/lib/opencode-config-providers.js.map +1 -1
- package/dist/lib/opencode-config-read.d.ts +2 -1
- package/dist/lib/opencode-config-read.d.ts.map +1 -1
- package/dist/lib/opencode-config-read.js +3 -2
- package/dist/lib/opencode-config-read.js.map +1 -1
- package/dist/lib/opencode-console-auth.d.ts +2 -3
- package/dist/lib/opencode-console-auth.d.ts.map +1 -1
- package/dist/lib/opencode-console-auth.js +2 -2
- package/dist/lib/opencode-console-auth.js.map +1 -1
- package/dist/lib/opencode-go.d.ts.map +1 -1
- package/dist/lib/opencode-go.js +51 -79
- package/dist/lib/opencode-go.js.map +1 -1
- package/dist/lib/opencode-storage.d.ts +18 -3
- package/dist/lib/opencode-storage.d.ts.map +1 -1
- package/dist/lib/opencode-storage.js +134 -2
- package/dist/lib/opencode-storage.js.map +1 -1
- package/dist/lib/opencode-zen.d.ts +15 -12
- package/dist/lib/opencode-zen.d.ts.map +1 -1
- package/dist/lib/opencode-zen.js +139 -147
- package/dist/lib/opencode-zen.js.map +1 -1
- package/dist/lib/openrouter.d.ts.map +1 -1
- package/dist/lib/openrouter.js +1 -13
- package/dist/lib/openrouter.js.map +1 -1
- package/dist/lib/pricing-key.d.ts +48 -0
- package/dist/lib/pricing-key.d.ts.map +1 -0
- package/dist/lib/pricing-key.js +371 -0
- package/dist/lib/pricing-key.js.map +1 -0
- package/dist/lib/provider-metadata.d.ts +16 -20
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +69 -69
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/provider-model-matching.d.ts +2 -1
- package/dist/lib/provider-model-matching.d.ts.map +1 -1
- package/dist/lib/provider-registration.d.ts +1 -177
- package/dist/lib/provider-registration.d.ts.map +1 -1
- package/dist/lib/provider-registration.js +1 -163
- package/dist/lib/provider-registration.js.map +1 -1
- package/dist/lib/quota-dialog-commands.d.ts +87 -53
- package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
- package/dist/lib/quota-dialog-commands.js +259 -519
- package/dist/lib/quota-dialog-commands.js.map +1 -1
- package/dist/lib/quota-export-types.d.ts +29 -23
- package/dist/lib/quota-export-types.d.ts.map +1 -1
- package/dist/lib/quota-export.d.ts +16 -26
- package/dist/lib/quota-export.d.ts.map +1 -1
- package/dist/lib/quota-export.js +105 -147
- package/dist/lib/quota-export.js.map +1 -1
- package/dist/lib/quota-providers-local.d.ts +12 -8
- package/dist/lib/quota-providers-local.d.ts.map +1 -1
- package/dist/lib/quota-providers-local.js +150 -223
- package/dist/lib/quota-providers-local.js.map +1 -1
- package/dist/lib/quota-providers-remote.d.ts +3 -8
- package/dist/lib/quota-providers-remote.d.ts.map +1 -1
- package/dist/lib/quota-providers-remote.js +309 -449
- package/dist/lib/quota-providers-remote.js.map +1 -1
- package/dist/lib/quota-providers.d.ts +57 -15
- package/dist/lib/quota-providers.d.ts.map +1 -1
- package/dist/lib/quota-providers.js +157 -64
- package/dist/lib/quota-providers.js.map +1 -1
- package/dist/lib/quota-report-message.d.ts +23 -10
- package/dist/lib/quota-report-message.d.ts.map +1 -1
- package/dist/lib/quota-report-message.js +37 -13
- package/dist/lib/quota-report-message.js.map +1 -1
- package/dist/lib/quota-retry-wait.d.ts +14 -6
- package/dist/lib/quota-retry-wait.d.ts.map +1 -1
- package/dist/lib/quota-retry-wait.js +37 -39
- package/dist/lib/quota-retry-wait.js.map +1 -1
- package/dist/lib/quota-status.d.ts +50 -33
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +1113 -773
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/quota-telemetry.d.ts +7 -14
- package/dist/lib/quota-telemetry.d.ts.map +1 -1
- package/dist/lib/quota-telemetry.js +46 -97
- package/dist/lib/quota-telemetry.js.map +1 -1
- package/dist/lib/report-document.d.ts +5 -65
- package/dist/lib/report-document.d.ts.map +1 -1
- package/dist/lib/report-document.js +14 -167
- package/dist/lib/report-document.js.map +1 -1
- package/dist/lib/resolved-auth-identity.d.ts +1 -2
- package/dist/lib/resolved-auth-identity.d.ts.map +1 -1
- package/dist/lib/resolved-auth-identity.js +0 -4
- package/dist/lib/resolved-auth-identity.js.map +1 -1
- package/dist/lib/session-tokens.d.ts +19 -19
- package/dist/lib/session-tokens.d.ts.map +1 -1
- package/dist/lib/session-tokens.js +58 -44
- package/dist/lib/session-tokens.js.map +1 -1
- package/dist/lib/synthetic.d.ts +0 -1
- package/dist/lib/synthetic.d.ts.map +1 -1
- package/dist/lib/synthetic.js +43 -94
- package/dist/lib/synthetic.js.map +1 -1
- package/dist/lib/token-buckets.d.ts +0 -1
- package/dist/lib/token-buckets.d.ts.map +1 -1
- package/dist/lib/token-buckets.js +0 -3
- package/dist/lib/token-buckets.js.map +1 -1
- package/dist/lib/token-cost.d.ts +2 -1
- package/dist/lib/token-cost.d.ts.map +1 -1
- package/dist/lib/types.d.ts +25 -333
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +2 -70
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/xai.d.ts +6 -6
- package/dist/lib/xai.d.ts.map +1 -1
- package/dist/lib/xai.js +51 -90
- package/dist/lib/xai.js.map +1 -1
- package/dist/plugin.d.ts +6 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +315 -90
- package/dist/plugin.js.map +1 -1
- package/dist/providers/alibaba-coding-plan.d.ts +4 -0
- package/dist/providers/alibaba-coding-plan.d.ts.map +1 -1
- package/dist/providers/alibaba-coding-plan.js +47 -77
- 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 +34 -46
- package/dist/providers/alibaba-token-plan.js.map +1 -1
- package/dist/providers/anthropic.d.ts +2 -4
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +80 -162
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/cache-policies.d.ts +0 -2
- package/dist/providers/cache-policies.d.ts.map +1 -1
- package/dist/providers/cache-policies.js +38 -88
- package/dist/providers/cache-policies.js.map +1 -1
- package/dist/providers/chutes.d.ts +0 -3
- package/dist/providers/chutes.d.ts.map +1 -1
- package/dist/providers/chutes.js +16 -28
- package/dist/providers/chutes.js.map +1 -1
- package/dist/providers/contract.d.ts +128 -0
- package/dist/providers/contract.d.ts.map +1 -0
- package/dist/providers/contract.js +101 -0
- package/dist/providers/contract.js.map +1 -0
- package/dist/providers/copilot.d.ts.map +1 -1
- package/dist/providers/copilot.js +171 -175
- package/dist/providers/copilot.js.map +1 -1
- package/dist/providers/cursor.d.ts.map +1 -1
- package/dist/providers/cursor.js +56 -109
- package/dist/providers/cursor.js.map +1 -1
- package/dist/providers/deepseek.d.ts +1 -6
- package/dist/providers/deepseek.d.ts.map +1 -1
- package/dist/providers/deepseek.js +46 -81
- package/dist/providers/deepseek.js.map +1 -1
- package/dist/providers/glm-coding-plan.d.ts +8 -0
- package/dist/providers/glm-coding-plan.d.ts.map +1 -0
- package/dist/providers/glm-coding-plan.js +106 -0
- package/dist/providers/glm-coding-plan.js.map +1 -0
- package/dist/providers/google-agy.d.ts +0 -1
- package/dist/providers/google-agy.d.ts.map +1 -1
- package/dist/providers/google-agy.js +41 -192
- 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 +51 -151
- package/dist/providers/google-gemini-cli.js.map +1 -1
- package/dist/providers/google-oauth-provider.d.ts +39 -0
- package/dist/providers/google-oauth-provider.d.ts.map +1 -0
- package/dist/providers/google-oauth-provider.js +161 -0
- package/dist/providers/google-oauth-provider.js.map +1 -0
- package/dist/providers/kilo.d.ts +0 -3
- package/dist/providers/kilo.d.ts.map +1 -1
- package/dist/providers/kilo.js +69 -123
- package/dist/providers/kilo.js.map +1 -1
- package/dist/providers/kimi-code.d.ts +5 -0
- package/dist/providers/kimi-code.d.ts.map +1 -1
- package/dist/providers/kimi-code.js +91 -136
- package/dist/providers/kimi-code.js.map +1 -1
- package/dist/providers/mimo.d.ts.map +1 -1
- package/dist/providers/mimo.js +55 -94
- package/dist/providers/mimo.js.map +1 -1
- package/dist/providers/minimax-coding-plan.d.ts +2 -23
- package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
- package/dist/providers/minimax-coding-plan.js +161 -277
- package/dist/providers/minimax-coding-plan.js.map +1 -1
- package/dist/providers/nanogpt.d.ts +0 -3
- package/dist/providers/nanogpt.d.ts.map +1 -1
- package/dist/providers/nanogpt.js +61 -95
- package/dist/providers/nanogpt.js.map +1 -1
- package/dist/providers/ollama-cloud.d.ts +0 -6
- package/dist/providers/ollama-cloud.d.ts.map +1 -1
- package/dist/providers/ollama-cloud.js +86 -112
- package/dist/providers/ollama-cloud.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +144 -166
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +157 -199
- 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 +100 -150
- package/dist/providers/opencode-zen.js.map +1 -1
- package/dist/providers/openrouter.d.ts +0 -3
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +26 -13
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/quota-providers.d.ts +7 -3
- package/dist/providers/quota-providers.d.ts.map +1 -1
- package/dist/providers/quota-providers.js +111 -217
- package/dist/providers/quota-providers.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +1 -2
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/result-helpers.d.ts +10 -37
- package/dist/providers/result-helpers.d.ts.map +1 -1
- package/dist/providers/result-helpers.js +23 -56
- package/dist/providers/result-helpers.js.map +1 -1
- package/dist/providers/synthetic.d.ts +0 -3
- package/dist/providers/synthetic.d.ts.map +1 -1
- package/dist/providers/synthetic.js +16 -58
- package/dist/providers/synthetic.js.map +1 -1
- package/dist/providers/xai.d.ts +2 -1
- package/dist/providers/xai.d.ts.map +1 -1
- package/dist/providers/xai.js +49 -71
- package/dist/providers/xai.js.map +1 -1
- package/dist/rpc.d.ts +110 -38
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +125 -37
- package/dist/rpc.js.map +1 -1
- package/dist/settings/convert.d.ts +60 -0
- package/dist/settings/convert.d.ts.map +1 -0
- package/dist/settings/convert.js +473 -0
- package/dist/settings/convert.js.map +1 -0
- package/dist/settings/file.d.ts +89 -0
- package/dist/settings/file.d.ts.map +1 -0
- package/dist/settings/file.js +452 -0
- package/dist/settings/file.js.map +1 -0
- package/dist/settings/index.d.ts +10 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +3 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/schema.d.ts +607 -0
- package/dist/settings/schema.d.ts.map +1 -0
- package/dist/settings/schema.js +479 -0
- package/dist/settings/schema.js.map +1 -0
- package/dist/tui/client.d.ts +86 -0
- package/dist/tui/client.d.ts.map +1 -0
- package/dist/tui/client.js +229 -0
- package/dist/tui/client.js.map +1 -0
- package/dist/tui/display.d.ts +127 -0
- package/dist/tui/display.d.ts.map +1 -0
- package/dist/tui/display.js +474 -0
- package/dist/tui/display.js.map +1 -0
- package/dist/tui/index.d.ts +21 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +305 -0
- package/dist/tui/server-settings.d.ts +43 -0
- package/dist/tui/server-settings.d.ts.map +1 -0
- package/dist/tui/server-settings.js +233 -0
- package/dist/tui/server-settings.js.map +1 -0
- package/dist/tui/sidebar.d.ts +41 -0
- package/dist/tui/sidebar.d.ts.map +1 -0
- package/dist/tui/sidebar.js +148 -0
- package/dist/tui/status-line.d.ts +14 -0
- package/dist/tui/status-line.d.ts.map +1 -0
- package/dist/tui/status-line.js +225 -0
- package/dist/tui/theme.d.ts +41 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +52 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/toast-colors.d.ts +37 -0
- package/dist/tui/toast-colors.d.ts.map +1 -0
- package/dist/tui/toast-colors.js +77 -0
- package/dist/tui/toasts.d.ts +59 -0
- package/dist/tui/toasts.d.ts.map +1 -0
- package/dist/tui/toasts.js +148 -0
- package/dist/tui/toasts.js.map +1 -0
- package/dist/tui/window/drag.d.ts +26 -0
- package/dist/tui/window/drag.d.ts.map +1 -0
- package/dist/tui/window/drag.js +80 -0
- package/dist/tui/window/drag.js.map +1 -0
- package/dist/tui/window/limits.d.ts +15 -0
- package/dist/tui/window/limits.d.ts.map +1 -0
- package/dist/tui/window/limits.js +227 -0
- package/dist/tui/window/limits.js.map +1 -0
- package/dist/tui/window/rail.d.ts +21 -0
- package/dist/tui/window/rail.d.ts.map +1 -0
- package/dist/tui/window/rail.js +81 -0
- package/dist/tui/window/settings.d.ts +164 -0
- package/dist/tui/window/settings.d.ts.map +1 -0
- package/dist/tui/window/settings.js +1679 -0
- package/dist/tui/window/shell.d.ts +108 -0
- package/dist/tui/window/shell.d.ts.map +1 -0
- package/dist/tui/window/shell.js +1003 -0
- package/dist/tui/window/usage.d.ts +75 -0
- package/dist/tui/window/usage.d.ts.map +1 -0
- package/dist/tui/window/usage.js +928 -0
- package/dist/tui/window/views.d.ts +61 -0
- package/dist/tui/window/views.d.ts.map +1 -0
- package/dist/tui/window/views.js +242 -0
- package/dist/tui.d.ts +1 -5
- package/dist/tui.js +1 -894
- package/dist/view/columns.d.ts +15 -0
- package/dist/view/columns.d.ts.map +1 -0
- package/dist/view/columns.js +48 -0
- package/dist/view/columns.js.map +1 -0
- package/dist/view/format.d.ts +82 -0
- package/dist/view/format.d.ts.map +1 -0
- package/dist/view/format.js +201 -0
- package/dist/view/format.js.map +1 -0
- package/dist/view/quick-look.d.ts +28 -0
- package/dist/view/quick-look.d.ts.map +1 -0
- package/dist/view/quick-look.js +150 -0
- package/dist/view/quick-look.js.map +1 -0
- package/dist/view/select.d.ts +67 -0
- package/dist/view/select.d.ts.map +1 -0
- package/dist/view/select.js +87 -0
- package/dist/view/select.js.map +1 -0
- package/dist/view/text.d.ts +153 -0
- package/dist/view/text.d.ts.map +1 -0
- package/dist/view/text.js +642 -0
- package/dist/view/text.js.map +1 -0
- package/dist/view/usage.d.ts +86 -0
- package/dist/view/usage.d.ts.map +1 -0
- package/dist/view/usage.js +724 -0
- package/dist/view/usage.js.map +1 -0
- package/package.json +4 -6
- package/dist/lib/chutes-config.d.ts +0 -15
- package/dist/lib/chutes-config.d.ts.map +0 -1
- package/dist/lib/chutes-config.js +0 -28
- package/dist/lib/chutes-config.js.map +0 -1
- package/dist/lib/cli-status.d.ts +0 -8
- package/dist/lib/cli-status.d.ts.map +0 -1
- package/dist/lib/cli-status.js +0 -98
- package/dist/lib/cli-status.js.map +0 -1
- package/dist/lib/command-parsing.d.ts +0 -43
- package/dist/lib/command-parsing.d.ts.map +0 -1
- package/dist/lib/command-parsing.js +0 -103
- package/dist/lib/command-parsing.js.map +0 -1
- package/dist/lib/config.d.ts +0 -63
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/config.js +0 -1092
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/deepseek-auth.d.ts +0 -15
- package/dist/lib/deepseek-auth.d.ts.map +0 -1
- package/dist/lib/deepseek-auth.js +0 -28
- package/dist/lib/deepseek-auth.js.map +0 -1
- package/dist/lib/format.d.ts +0 -25
- package/dist/lib/format.d.ts.map +0 -1
- package/dist/lib/format.js +0 -300
- package/dist/lib/format.js.map +0 -1
- package/dist/lib/google-agy-companion.d.ts +0 -8
- package/dist/lib/google-agy-companion.d.ts.map +0 -1
- package/dist/lib/google-agy-companion.js +0 -64
- package/dist/lib/google-agy-companion.js.map +0 -1
- package/dist/lib/google-gemini-cli-companion.d.ts +0 -8
- package/dist/lib/google-gemini-cli-companion.d.ts.map +0 -1
- package/dist/lib/google-gemini-cli-companion.js +0 -64
- package/dist/lib/google-gemini-cli-companion.js.map +0 -1
- package/dist/lib/grouped-entry-normalization.d.ts +0 -12
- package/dist/lib/grouped-entry-normalization.d.ts.map +0 -1
- package/dist/lib/grouped-entry-normalization.js +0 -124
- package/dist/lib/grouped-entry-normalization.js.map +0 -1
- package/dist/lib/grouped-header-format.d.ts +0 -5
- package/dist/lib/grouped-header-format.d.ts.map +0 -1
- package/dist/lib/grouped-header-format.js +0 -16
- package/dist/lib/grouped-header-format.js.map +0 -1
- package/dist/lib/init-installer.d.ts +0 -123
- package/dist/lib/init-installer.d.ts.map +0 -1
- package/dist/lib/init-installer.js +0 -1111
- package/dist/lib/init-installer.js.map +0 -1
- package/dist/lib/jsonc.d.ts +0 -17
- package/dist/lib/jsonc.d.ts.map +0 -1
- package/dist/lib/jsonc.js +0 -23
- package/dist/lib/jsonc.js.map +0 -1
- package/dist/lib/kilo-config.d.ts +0 -15
- package/dist/lib/kilo-config.d.ts.map +0 -1
- package/dist/lib/kilo-config.js +0 -27
- package/dist/lib/kilo-config.js.map +0 -1
- package/dist/lib/kimi-auth.d.ts +0 -49
- package/dist/lib/kimi-auth.d.ts.map +0 -1
- package/dist/lib/kimi-auth.js +0 -82
- package/dist/lib/kimi-auth.js.map +0 -1
- package/dist/lib/markdown-table.d.ts +0 -51
- package/dist/lib/markdown-table.d.ts.map +0 -1
- package/dist/lib/markdown-table.js +0 -179
- package/dist/lib/markdown-table.js.map +0 -1
- package/dist/lib/minimax-auth.d.ts +0 -62
- package/dist/lib/minimax-auth.d.ts.map +0 -1
- package/dist/lib/minimax-auth.js +0 -206
- package/dist/lib/minimax-auth.js.map +0 -1
- package/dist/lib/nanogpt-config.d.ts +0 -15
- package/dist/lib/nanogpt-config.d.ts.map +0 -1
- package/dist/lib/nanogpt-config.js +0 -31
- package/dist/lib/nanogpt-config.js.map +0 -1
- package/dist/lib/ollama-cloud-config.d.ts +0 -15
- package/dist/lib/ollama-cloud-config.d.ts.map +0 -1
- package/dist/lib/ollama-cloud-config.js +0 -27
- package/dist/lib/ollama-cloud-config.js.map +0 -1
- package/dist/lib/opencode-go-auth.d.ts +0 -16
- package/dist/lib/opencode-go-auth.d.ts.map +0 -1
- package/dist/lib/opencode-go-auth.js +0 -42
- package/dist/lib/opencode-go-auth.js.map +0 -1
- package/dist/lib/opencode-version.d.ts +0 -6
- package/dist/lib/opencode-version.d.ts.map +0 -1
- package/dist/lib/opencode-version.js +0 -26
- package/dist/lib/opencode-version.js.map +0 -1
- package/dist/lib/provider-add-command.d.ts +0 -35
- package/dist/lib/provider-add-command.d.ts.map +0 -1
- package/dist/lib/provider-add-command.js +0 -204
- package/dist/lib/provider-add-command.js.map +0 -1
- package/dist/lib/provider-add-json-v1-questionnaire.d.ts +0 -32
- package/dist/lib/provider-add-json-v1-questionnaire.d.ts.map +0 -1
- package/dist/lib/provider-add-json-v1-questionnaire.js +0 -336
- package/dist/lib/provider-add-json-v1-questionnaire.js.map +0 -1
- package/dist/lib/provider-add.d.ts +0 -21
- package/dist/lib/provider-add.d.ts.map +0 -1
- package/dist/lib/provider-add.js +0 -219
- package/dist/lib/provider-add.js.map +0 -1
- package/dist/lib/quota-accounting-projection.d.ts +0 -9
- package/dist/lib/quota-accounting-projection.d.ts.map +0 -1
- package/dist/lib/quota-accounting-projection.js +0 -254
- package/dist/lib/quota-accounting-projection.js.map +0 -1
- package/dist/lib/quota-columns.d.ts +0 -38
- package/dist/lib/quota-columns.d.ts.map +0 -1
- package/dist/lib/quota-columns.js +0 -129
- package/dist/lib/quota-columns.js.map +0 -1
- package/dist/lib/quota-command-format.d.ts +0 -34
- package/dist/lib/quota-command-format.d.ts.map +0 -1
- package/dist/lib/quota-command-format.js +0 -240
- package/dist/lib/quota-command-format.js.map +0 -1
- package/dist/lib/quota-dialog-command-specs.d.ts +0 -63
- package/dist/lib/quota-dialog-command-specs.d.ts.map +0 -1
- package/dist/lib/quota-dialog-command-specs.js +0 -145
- package/dist/lib/quota-dialog-command-specs.js.map +0 -1
- package/dist/lib/quota-entry-display.d.ts +0 -7
- package/dist/lib/quota-entry-display.d.ts.map +0 -1
- package/dist/lib/quota-entry-display.js +0 -59
- package/dist/lib/quota-entry-display.js.map +0 -1
- package/dist/lib/quota-exhaustion-projection.d.ts +0 -11
- package/dist/lib/quota-exhaustion-projection.d.ts.map +0 -1
- package/dist/lib/quota-exhaustion-projection.js +0 -105
- package/dist/lib/quota-exhaustion-projection.js.map +0 -1
- package/dist/lib/quota-format-style.d.ts +0 -21
- package/dist/lib/quota-format-style.d.ts.map +0 -1
- package/dist/lib/quota-format-style.js +0 -38
- package/dist/lib/quota-format-style.js.map +0 -1
- package/dist/lib/quota-render-data.d.ts +0 -102
- package/dist/lib/quota-render-data.d.ts.map +0 -1
- package/dist/lib/quota-render-data.js +0 -419
- package/dist/lib/quota-render-data.js.map +0 -1
- package/dist/lib/quota-reset-notifications.d.ts +0 -20
- package/dist/lib/quota-reset-notifications.d.ts.map +0 -1
- package/dist/lib/quota-reset-notifications.js +0 -331
- package/dist/lib/quota-reset-notifications.js.map +0 -1
- package/dist/lib/quota-runtime-context.d.ts +0 -54
- package/dist/lib/quota-runtime-context.d.ts.map +0 -1
- package/dist/lib/quota-runtime-context.js +0 -110
- package/dist/lib/quota-runtime-context.js.map +0 -1
- package/dist/lib/quota-state-codec.d.ts +0 -16
- package/dist/lib/quota-state-codec.d.ts.map +0 -1
- package/dist/lib/quota-state-codec.js +0 -412
- package/dist/lib/quota-state-codec.js.map +0 -1
- package/dist/lib/quota-state.d.ts +0 -28
- package/dist/lib/quota-state.d.ts.map +0 -1
- package/dist/lib/quota-state.js +0 -473
- package/dist/lib/quota-state.js.map +0 -1
- package/dist/lib/quota-stats-format.d.ts +0 -29
- package/dist/lib/quota-stats-format.d.ts.map +0 -1
- package/dist/lib/quota-stats-format.js +0 -459
- package/dist/lib/quota-stats-format.js.map +0 -1
- package/dist/lib/quota-stats.d.ts +0 -126
- package/dist/lib/quota-stats.d.ts.map +0 -1
- package/dist/lib/quota-stats.js +0 -695
- package/dist/lib/quota-stats.js.map +0 -1
- package/dist/lib/quota-surface-data.d.ts +0 -21
- package/dist/lib/quota-surface-data.d.ts.map +0 -1
- package/dist/lib/quota-surface-data.js +0 -362
- package/dist/lib/quota-surface-data.js.map +0 -1
- package/dist/lib/scoped-update-migration.d.ts +0 -103
- package/dist/lib/scoped-update-migration.d.ts.map +0 -1
- package/dist/lib/scoped-update-migration.js +0 -344
- package/dist/lib/scoped-update-migration.js.map +0 -1
- package/dist/lib/scoped-update.d.ts +0 -77
- package/dist/lib/scoped-update.d.ts.map +0 -1
- package/dist/lib/scoped-update.js +0 -590
- package/dist/lib/scoped-update.js.map +0 -1
- package/dist/lib/session-tokens-format.d.ts +0 -36
- package/dist/lib/session-tokens-format.d.ts.map +0 -1
- package/dist/lib/session-tokens-format.js +0 -111
- package/dist/lib/session-tokens-format.js.map +0 -1
- package/dist/lib/synthetic-config.d.ts +0 -15
- package/dist/lib/synthetic-config.d.ts.map +0 -1
- package/dist/lib/synthetic-config.js +0 -28
- package/dist/lib/synthetic-config.js.map +0 -1
- package/dist/lib/toast-format-grouped.d.ts +0 -25
- package/dist/lib/toast-format-grouped.d.ts.map +0 -1
- package/dist/lib/toast-format-grouped.js +0 -296
- package/dist/lib/toast-format-grouped.js.map +0 -1
- package/dist/lib/tui-compact-format.d.ts +0 -10
- package/dist/lib/tui-compact-format.d.ts.map +0 -1
- package/dist/lib/tui-compact-format.js +0 -460
- package/dist/lib/tui-compact-format.js.map +0 -1
- package/dist/lib/tui-panel-state.d.ts +0 -15
- package/dist/lib/tui-panel-state.d.ts.map +0 -1
- package/dist/lib/tui-panel-state.js +0 -2
- package/dist/lib/tui-panel-state.js.map +0 -1
- package/dist/lib/tui-prompt-bar-format.d.ts +0 -25
- package/dist/lib/tui-prompt-bar-format.d.ts.map +0 -1
- package/dist/lib/tui-prompt-bar-format.js +0 -206
- package/dist/lib/tui-prompt-bar-format.js.map +0 -1
- package/dist/lib/tui-sidebar-format.d.ts +0 -13
- package/dist/lib/tui-sidebar-format.d.ts.map +0 -1
- package/dist/lib/tui-sidebar-format.js +0 -34
- package/dist/lib/tui-sidebar-format.js.map +0 -1
- package/dist/lib/zai-auth.d.ts +0 -15
- package/dist/lib/zai-auth.d.ts.map +0 -1
- package/dist/lib/zai-auth.js +0 -37
- package/dist/lib/zai-auth.js.map +0 -1
- package/dist/lib/zai.d.ts +0 -5
- package/dist/lib/zai.d.ts.map +0 -1
- package/dist/lib/zai.js +0 -14
- package/dist/lib/zai.js.map +0 -1
- package/dist/lib/zhipu-auth.d.ts +0 -15
- package/dist/lib/zhipu-auth.d.ts.map +0 -1
- package/dist/lib/zhipu-auth.js +0 -42
- package/dist/lib/zhipu-auth.js.map +0 -1
- package/dist/lib/zhipu.d.ts +0 -5
- package/dist/lib/zhipu.d.ts.map +0 -1
- package/dist/lib/zhipu.js +0 -13
- package/dist/lib/zhipu.js.map +0 -1
- package/dist/providers/glm-coding-plan-provider.d.ts +0 -56
- package/dist/providers/glm-coding-plan-provider.d.ts.map +0 -1
- package/dist/providers/glm-coding-plan-provider.js +0 -115
- package/dist/providers/glm-coding-plan-provider.js.map +0 -1
- package/dist/providers/google-account-format.d.ts +0 -7
- package/dist/providers/google-account-format.d.ts.map +0 -1
- package/dist/providers/google-account-format.js +0 -52
- package/dist/providers/google-account-format.js.map +0 -1
- package/dist/providers/zai.d.ts +0 -2
- package/dist/providers/zai.d.ts.map +0 -1
- package/dist/providers/zai.js +0 -24
- package/dist/providers/zai.js.map +0 -1
- package/dist/providers/zhipu.d.ts +0 -2
- package/dist/providers/zhipu.d.ts.map +0 -1
- package/dist/providers/zhipu.js +0 -21
- package/dist/providers/zhipu.js.map +0 -1
- package/dist/tui-v2.d.ts +0 -5
- package/dist/tui-v2.d.ts.map +0 -1
- package/dist/tui-v2.jsx +0 -624
- package/dist/tui-v2.jsx.map +0 -1
- package/dist/tui.d.ts.map +0 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { createTextNode as _$createTextNode } from "@opentui/solid";
|
|
2
|
+
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
3
|
+
import { insertNode as _$insertNode } from "@opentui/solid";
|
|
4
|
+
import { effect as _$effect } from "@opentui/solid";
|
|
5
|
+
import { insert as _$insert } from "@opentui/solid";
|
|
6
|
+
import { memo as _$memo } from "@opentui/solid";
|
|
7
|
+
import { setProp as _$setProp } from "@opentui/solid";
|
|
8
|
+
import { createElement as _$createElement } from "@opentui/solid";
|
|
9
|
+
/** @jsxImportSource @opentui/solid */
|
|
10
|
+
/**
|
|
11
|
+
* The Quota panel in the session sidebar (§4.1) and its collapsed form (§4.2). Click the
|
|
12
|
+
* title to collapse or expand it; OpenCode's plugin storage remembers the choice. The lines
|
|
13
|
+
* come from `view/text.ts`; this file only colors them, and marks the line the quota window's
|
|
14
|
+
* Settings tabs have selected.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { createSignal, onCleanup, Show } from "solid-js";
|
|
18
|
+
import { DEFAULT_WORDS } from "../view/format.js";
|
|
19
|
+
import { visibleGroups } from "../view/select.js";
|
|
20
|
+
import { collapsedLines, collapsedTitle, sidebarLines, sidebarTitle } from "../view/text.js";
|
|
21
|
+
import { roleColor, segmentColor } from "./theme.js";
|
|
22
|
+
|
|
23
|
+
/** What the quota window's Settings tabs tell the surfaces while you edit them. */
|
|
24
|
+
|
|
25
|
+
/** What every always-on surface reads. */
|
|
26
|
+
|
|
27
|
+
/** Columns the panel uses until it knows its real width. */
|
|
28
|
+
const DEFAULT_SIDEBAR_WIDTH = 36;
|
|
29
|
+
|
|
30
|
+
/** The names of a marked line take the accent color; bars and numbers keep theirs. */
|
|
31
|
+
const MARKED_ROLES = new Set(["provider", "label", "statusName"]);
|
|
32
|
+
|
|
33
|
+
/** One line of a surface, each segment in its color. A marked line has a soft background. */
|
|
34
|
+
export function LineText(props) {
|
|
35
|
+
const theme = () => props.host.theme();
|
|
36
|
+
const color = segment => props.marked && MARKED_ROLES.has(segment.role) ? theme().text.action.primary.selected : segmentColor(theme(), props.host.display(), segment);
|
|
37
|
+
return (() => {
|
|
38
|
+
var _el$ = _$createElement("text");
|
|
39
|
+
_$setProp(_el$, "wrapMode", "none");
|
|
40
|
+
_$setProp(_el$, "selectable", false);
|
|
41
|
+
_$setProp(_el$, "flexShrink", 0);
|
|
42
|
+
_$insert(_el$, () => props.line.segments.length === 0 ? " " : null, null);
|
|
43
|
+
_$insert(_el$, () => props.line.segments.map(segment => (() => {
|
|
44
|
+
var _el$2 = _$createElement("span");
|
|
45
|
+
_$insert(_el$2, () => segment.text);
|
|
46
|
+
_$effect(_$p => _$setProp(_el$2, "style", {
|
|
47
|
+
fg: color(segment),
|
|
48
|
+
bold: segment.bold === true
|
|
49
|
+
}, _$p));
|
|
50
|
+
return _el$2;
|
|
51
|
+
})()), null);
|
|
52
|
+
_$effect(_$p => _$setProp(_el$, "bg", props.marked ? theme().background.raised.high : undefined, _$p));
|
|
53
|
+
return _el$;
|
|
54
|
+
})();
|
|
55
|
+
}
|
|
56
|
+
export function SidebarPanel(props) {
|
|
57
|
+
const host = props.host;
|
|
58
|
+
const stop = host.quota.watch(props.sessionID);
|
|
59
|
+
onCleanup(stop);
|
|
60
|
+
onCleanup(host.editing.sidebarShown());
|
|
61
|
+
const open = () => host.editing.panelOpen() ?? props.open();
|
|
62
|
+
const [width, setWidth] = createSignal(DEFAULT_SIDEBAR_WIDTH);
|
|
63
|
+
const [nowMs, setNowMs] = createSignal(Date.now());
|
|
64
|
+
// Reset times count down between snapshots.
|
|
65
|
+
const clock = setInterval(() => setNowMs(Date.now()), 60_000);
|
|
66
|
+
onCleanup(() => clearInterval(clock));
|
|
67
|
+
const display = () => host.display();
|
|
68
|
+
const snapshot = () => host.quota.snapshot(props.sessionID);
|
|
69
|
+
const words = () => snapshot()?.words ?? DEFAULT_WORDS;
|
|
70
|
+
const groups = surface => {
|
|
71
|
+
const current = snapshot();
|
|
72
|
+
return current ? visibleGroups(current, display(), surface, words()) : [];
|
|
73
|
+
};
|
|
74
|
+
const lines = () => {
|
|
75
|
+
const current = snapshot();
|
|
76
|
+
if (!current) return [];
|
|
77
|
+
if (!open()) {
|
|
78
|
+
if (!display().surfaces.collapsed.enabled) return [];
|
|
79
|
+
return collapsedLines({
|
|
80
|
+
groups: groups("collapsed"),
|
|
81
|
+
layout: display().layout,
|
|
82
|
+
words: words(),
|
|
83
|
+
nowMs: nowMs(),
|
|
84
|
+
width: width(),
|
|
85
|
+
window: display().window,
|
|
86
|
+
runsOut: display().runsOut.collapsed
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return sidebarLines({
|
|
90
|
+
groups: groups("sidebar"),
|
|
91
|
+
layout: display().layout,
|
|
92
|
+
words: words(),
|
|
93
|
+
nowMs: nowMs(),
|
|
94
|
+
width: width(),
|
|
95
|
+
runsOut: display().runsOut.sidebar,
|
|
96
|
+
...(display().sidebar.sessionTokens && current.sessionTokens ? {
|
|
97
|
+
sessionTokens: current.sessionTokens
|
|
98
|
+
} : {})
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
const title = () => open() ? sidebarTitle(words()) : collapsedTitle(groups("collapsed"));
|
|
102
|
+
const marked = () => host.editing.marked(open() ? "sidebar" : "collapsed");
|
|
103
|
+
return _$createComponent(Show, {
|
|
104
|
+
get when() {
|
|
105
|
+
return display().surfaces.sidebar.enabled;
|
|
106
|
+
},
|
|
107
|
+
get children() {
|
|
108
|
+
var _el$3 = _$createElement("box"),
|
|
109
|
+
_el$4 = _$createElement("text"),
|
|
110
|
+
_el$5 = _$createElement("b");
|
|
111
|
+
_$insertNode(_el$3, _el$4);
|
|
112
|
+
_$setProp(_el$3, "flexDirection", "column");
|
|
113
|
+
_$setProp(_el$3, "onSizeChange", function () {
|
|
114
|
+
const measured = this.width;
|
|
115
|
+
if (measured > 0) queueMicrotask(() => setWidth(measured));
|
|
116
|
+
});
|
|
117
|
+
_$insertNode(_el$4, _el$5);
|
|
118
|
+
_$setProp(_el$4, "wrapMode", "none");
|
|
119
|
+
_$setProp(_el$4, "selectable", false);
|
|
120
|
+
_$setProp(_el$4, "onMouseDown", () => props.setOpen(!open()));
|
|
121
|
+
_$insert(_el$5, title);
|
|
122
|
+
_$insert(_el$3, _$createComponent(Show, {
|
|
123
|
+
get when() {
|
|
124
|
+
return snapshot();
|
|
125
|
+
},
|
|
126
|
+
get fallback() {
|
|
127
|
+
return (() => {
|
|
128
|
+
var _el$6 = _$createElement("text");
|
|
129
|
+
_$insertNode(_el$6, _$createTextNode(`Loading quota…`));
|
|
130
|
+
_$effect(_$p => _$setProp(_el$6, "fg", host.theme().text.muted, _$p));
|
|
131
|
+
return _el$6;
|
|
132
|
+
})();
|
|
133
|
+
},
|
|
134
|
+
get children() {
|
|
135
|
+
return lines().map(line => _$createComponent(LineText, {
|
|
136
|
+
line: line,
|
|
137
|
+
host: host,
|
|
138
|
+
get marked() {
|
|
139
|
+
return _$memo(() => line.id !== "")() && line.id === marked();
|
|
140
|
+
}
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
}), null);
|
|
144
|
+
_$effect(_$p => _$setProp(_el$4, "fg", roleColor(host.theme(), display(), "title"), _$p));
|
|
145
|
+
return _el$3;
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { JSX } from "@opentui/solid";
|
|
2
|
+
import { type SurfaceHost } from "./sidebar.js";
|
|
3
|
+
export declare function StatusLine(props: {
|
|
4
|
+
host: SurfaceHost;
|
|
5
|
+
sessionID?: string;
|
|
6
|
+
}): JSX.Element;
|
|
7
|
+
/**
|
|
8
|
+
* The bottom of Home: the maintainer notice line, then the status line when it is on for Home.
|
|
9
|
+
* Home has its own switch (`statusLine.home`); the one for sessions does not hide it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function HomeFooter(props: {
|
|
12
|
+
host: SurfaceHost;
|
|
13
|
+
}): JSX.Element;
|
|
14
|
+
//# sourceMappingURL=status-line.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-line.d.ts","sourceRoot":"","sources":["../../src/tui/status-line.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAW1C,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAG1D,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA+HxF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAyBpE"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { createTextNode as _$createTextNode } from "@opentui/solid";
|
|
2
|
+
import { insertNode as _$insertNode } from "@opentui/solid";
|
|
3
|
+
import { effect as _$effect } from "@opentui/solid";
|
|
4
|
+
import { insert as _$insert } from "@opentui/solid";
|
|
5
|
+
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
6
|
+
import { memo as _$memo } from "@opentui/solid";
|
|
7
|
+
import { setProp as _$setProp } from "@opentui/solid";
|
|
8
|
+
import { createElement as _$createElement } from "@opentui/solid";
|
|
9
|
+
/** @jsxImportSource @opentui/solid */
|
|
10
|
+
/**
|
|
11
|
+
* The quota status line under the message box (§4.3) and at the bottom of Home. It takes only
|
|
12
|
+
* the room OpenCode's footer leaves free (flexBasis 0), so it never squeezes the folder name or
|
|
13
|
+
* other plugins, shows the most detail that fits every provider, and scrolls when even "% only"
|
|
14
|
+
* does not fit: mouse wheel, or click "‹" / "+N ›".
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { createEffect, createSignal, onCleanup, Show } from "solid-js";
|
|
18
|
+
import { DEFAULT_WORDS } from "../view/format.js";
|
|
19
|
+
import { visibleGroups } from "../view/select.js";
|
|
20
|
+
import { bigStatusLine, statusLayout } from "../view/text.js";
|
|
21
|
+
import { LineText } from "./sidebar.js";
|
|
22
|
+
import { roleColor } from "./theme.js";
|
|
23
|
+
export function StatusLine(props) {
|
|
24
|
+
const host = props.host;
|
|
25
|
+
onCleanup(host.quota.watch(props.sessionID));
|
|
26
|
+
const [room, setRoom] = createSignal(0);
|
|
27
|
+
const [start, setStart] = createSignal(0);
|
|
28
|
+
const [nowMs, setNowMs] = createSignal(Date.now());
|
|
29
|
+
const clock = setInterval(() => setNowMs(Date.now()), 60_000);
|
|
30
|
+
onCleanup(() => clearInterval(clock));
|
|
31
|
+
const display = () => host.display();
|
|
32
|
+
const input = () => {
|
|
33
|
+
const snapshot = host.quota.snapshot(props.sessionID);
|
|
34
|
+
if (!snapshot) return undefined;
|
|
35
|
+
const words = snapshot.words ?? DEFAULT_WORDS;
|
|
36
|
+
return {
|
|
37
|
+
groups: visibleGroups(snapshot, display(), "statusLine", words),
|
|
38
|
+
layout: display().layout,
|
|
39
|
+
words,
|
|
40
|
+
nowMs: nowMs(),
|
|
41
|
+
window: display().statusLine.window,
|
|
42
|
+
runsOut: display().runsOut.statusLine
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
const big = () => display().statusLine.detail === "one";
|
|
46
|
+
const layout = () => {
|
|
47
|
+
const current = input();
|
|
48
|
+
if (!current || big()) return undefined;
|
|
49
|
+
const detail = display().statusLine.detail;
|
|
50
|
+
return statusLayout(current, room(), start(), detail === "one" ? "auto" : detail);
|
|
51
|
+
};
|
|
52
|
+
const count = () => input()?.groups.length ?? 0;
|
|
53
|
+
const step = delta => setStart(Math.max(0, Math.min(count() - 1, start() + delta)));
|
|
54
|
+
const color = role => roleColor(host.theme(), display(), role);
|
|
55
|
+
const marked = () => host.editing.marked("statusLine");
|
|
56
|
+
// The provider selected on the Settings tab scrolls into view.
|
|
57
|
+
createEffect(() => {
|
|
58
|
+
const index = input()?.groups.findIndex(group => group.providerId === marked()) ?? -1;
|
|
59
|
+
const current = layout();
|
|
60
|
+
if (index < 0 || !current || room() === 0) return;
|
|
61
|
+
if (index < current.start || index >= current.start + current.shown.length) setStart(index);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Optional: page through by itself every few seconds.
|
|
65
|
+
createEffect(() => {
|
|
66
|
+
const seconds = display().statusLine.autoScrollSeconds;
|
|
67
|
+
if (!seconds) return;
|
|
68
|
+
const timer = setInterval(() => {
|
|
69
|
+
const current = layout();
|
|
70
|
+
if (!current) return;
|
|
71
|
+
setStart(current.hiddenAfter > 0 ? current.start + current.shown.length : 0);
|
|
72
|
+
}, seconds * 1000);
|
|
73
|
+
onCleanup(() => clearInterval(timer));
|
|
74
|
+
});
|
|
75
|
+
return (() => {
|
|
76
|
+
var _el$ = _$createElement("box");
|
|
77
|
+
_$setProp(_el$, "flexDirection", "row");
|
|
78
|
+
_$setProp(_el$, "justifyContent", "flex-end");
|
|
79
|
+
_$setProp(_el$, "flexGrow", 1000);
|
|
80
|
+
_$setProp(_el$, "flexShrink", 1);
|
|
81
|
+
_$setProp(_el$, "flexBasis", 0);
|
|
82
|
+
_$setProp(_el$, "minWidth", 0);
|
|
83
|
+
_$setProp(_el$, "overflow", "hidden");
|
|
84
|
+
_$setProp(_el$, "onSizeChange", function () {
|
|
85
|
+
// In OpenCode's footer the box can end up one column narrower than measured here
|
|
86
|
+
// (seen at 200 columns), which cut the first letter; one spare column avoids it.
|
|
87
|
+
const width = Math.max(0, this.width - 1);
|
|
88
|
+
queueMicrotask(() => setRoom(width));
|
|
89
|
+
});
|
|
90
|
+
_$setProp(_el$, "onMouseScroll", event => {
|
|
91
|
+
const direction = event.scroll?.direction;
|
|
92
|
+
if (direction === "down" || direction === "right") step(1);
|
|
93
|
+
if (direction === "up" || direction === "left") step(-1);
|
|
94
|
+
});
|
|
95
|
+
_$insert(_el$, _$createComponent(Show, {
|
|
96
|
+
get when() {
|
|
97
|
+
return _$memo(() => !!big())() ? input() : undefined;
|
|
98
|
+
},
|
|
99
|
+
children: current => // The room is 0 until OpenCode measures the box; until then the line is drawn whole.
|
|
100
|
+
_$createComponent(Show, {
|
|
101
|
+
get when() {
|
|
102
|
+
return bigStatusLine(current(), room() || undefined);
|
|
103
|
+
},
|
|
104
|
+
children: line => _$createComponent(LineText, {
|
|
105
|
+
get line() {
|
|
106
|
+
return line();
|
|
107
|
+
},
|
|
108
|
+
host: host,
|
|
109
|
+
get marked() {
|
|
110
|
+
return line().id === marked();
|
|
111
|
+
}
|
|
112
|
+
})
|
|
113
|
+
})
|
|
114
|
+
}), null);
|
|
115
|
+
_$insert(_el$, _$createComponent(Show, {
|
|
116
|
+
get when() {
|
|
117
|
+
return layout();
|
|
118
|
+
},
|
|
119
|
+
children: current => [_$createComponent(Show, {
|
|
120
|
+
get when() {
|
|
121
|
+
return _$memo(() => current().start > 0)() && current().shown.length > 0;
|
|
122
|
+
},
|
|
123
|
+
get children() {
|
|
124
|
+
var _el$2 = _$createElement("text");
|
|
125
|
+
_$insertNode(_el$2, _$createTextNode(`‹ `));
|
|
126
|
+
_$setProp(_el$2, "wrapMode", "none");
|
|
127
|
+
_$setProp(_el$2, "flexShrink", 0);
|
|
128
|
+
_$setProp(_el$2, "selectable", false);
|
|
129
|
+
_$setProp(_el$2, "onMouseUp", () => step(-1));
|
|
130
|
+
_$effect(_$p => _$setProp(_el$2, "fg", color("arrows"), _$p));
|
|
131
|
+
return _el$2;
|
|
132
|
+
}
|
|
133
|
+
}), _$memo(() => current().shown.map((line, index) => [_$createComponent(Show, {
|
|
134
|
+
when: index > 0,
|
|
135
|
+
get children() {
|
|
136
|
+
var _el$5 = _$createElement("text");
|
|
137
|
+
_$setProp(_el$5, "wrapMode", "none");
|
|
138
|
+
_$setProp(_el$5, "flexShrink", 0);
|
|
139
|
+
_$setProp(_el$5, "selectable", false);
|
|
140
|
+
_$insert(_el$5, () => display().layout.separator);
|
|
141
|
+
_$effect(_$p => _$setProp(_el$5, "fg", color("separator"), _$p));
|
|
142
|
+
return _el$5;
|
|
143
|
+
}
|
|
144
|
+
}), _$createComponent(LineText, {
|
|
145
|
+
line: line,
|
|
146
|
+
host: host,
|
|
147
|
+
get marked() {
|
|
148
|
+
return line.id === marked();
|
|
149
|
+
}
|
|
150
|
+
})])), _$createComponent(Show, {
|
|
151
|
+
get when() {
|
|
152
|
+
return _$memo(() => current().hiddenAfter > 0)() && current().shown.length > 0;
|
|
153
|
+
},
|
|
154
|
+
get children() {
|
|
155
|
+
var _el$4 = _$createElement("text");
|
|
156
|
+
_$setProp(_el$4, "wrapMode", "none");
|
|
157
|
+
_$setProp(_el$4, "flexShrink", 0);
|
|
158
|
+
_$setProp(_el$4, "selectable", false);
|
|
159
|
+
_$setProp(_el$4, "onMouseUp", () => step(1));
|
|
160
|
+
_$insert(_el$4, () => ` +${current().hiddenAfter} ›`);
|
|
161
|
+
_$effect(_$p => _$setProp(_el$4, "fg", color("arrows"), _$p));
|
|
162
|
+
return _el$4;
|
|
163
|
+
}
|
|
164
|
+
})]
|
|
165
|
+
}), null);
|
|
166
|
+
_$effect(_$p => _$setProp(_el$, "maxWidth", display().statusLine.width || undefined, _$p));
|
|
167
|
+
return _el$;
|
|
168
|
+
})();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The bottom of Home: the maintainer notice line, then the status line when it is on for Home.
|
|
173
|
+
* Home has its own switch (`statusLine.home`); the one for sessions does not hide it.
|
|
174
|
+
*/
|
|
175
|
+
export function HomeFooter(props) {
|
|
176
|
+
const host = props.host;
|
|
177
|
+
onCleanup(host.quota.watchHome());
|
|
178
|
+
const showStatus = () => host.display().statusLine.home;
|
|
179
|
+
return _$createComponent(Show, {
|
|
180
|
+
get when() {
|
|
181
|
+
return host.quota.homeLine() || showStatus();
|
|
182
|
+
},
|
|
183
|
+
get children() {
|
|
184
|
+
var _el$6 = _$createElement("box");
|
|
185
|
+
_$setProp(_el$6, "flexDirection", "row");
|
|
186
|
+
_$setProp(_el$6, "gap", 2);
|
|
187
|
+
_$setProp(_el$6, "flexShrink", 1);
|
|
188
|
+
_$setProp(_el$6, "minWidth", 0);
|
|
189
|
+
_$insert(_el$6, _$createComponent(Show, {
|
|
190
|
+
get when() {
|
|
191
|
+
return host.quota.homeLine();
|
|
192
|
+
},
|
|
193
|
+
get children() {
|
|
194
|
+
var _el$7 = _$createElement("text");
|
|
195
|
+
_$setProp(_el$7, "wrapMode", "none");
|
|
196
|
+
_$setProp(_el$7, "flexShrink", 0);
|
|
197
|
+
_$insert(_el$7, () => host.quota.homeLine());
|
|
198
|
+
_$effect(_$p => _$setProp(_el$7, "fg", host.theme().text.muted, _$p));
|
|
199
|
+
return _el$7;
|
|
200
|
+
}
|
|
201
|
+
}), null);
|
|
202
|
+
_$insert(_el$6, _$createComponent(Show, {
|
|
203
|
+
get when() {
|
|
204
|
+
return showStatus();
|
|
205
|
+
},
|
|
206
|
+
get children() {
|
|
207
|
+
return _$createComponent(StatusLine, {
|
|
208
|
+
host: host
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}), null);
|
|
212
|
+
_$effect(_p$ => {
|
|
213
|
+
var _v$ = showStatus() ? 1000 : 0,
|
|
214
|
+
_v$2 = showStatus() ? 0 : "auto";
|
|
215
|
+
_v$ !== _p$.e && (_p$.e = _$setProp(_el$6, "flexGrow", _v$, _p$.e));
|
|
216
|
+
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$6, "flexBasis", _v$2, _p$.t));
|
|
217
|
+
return _p$;
|
|
218
|
+
}, {
|
|
219
|
+
e: undefined,
|
|
220
|
+
t: undefined
|
|
221
|
+
});
|
|
222
|
+
return _el$6;
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quota's colors from the user's OpenCode theme. Every color role follows a named theme color
|
|
3
|
+
* unless the display settings pick another one or a fixed "#rrggbb". The theme is read on every
|
|
4
|
+
* call, so a surface that colors inside its JSX follows a theme or light/dark switch at once.
|
|
5
|
+
*/
|
|
6
|
+
import { RGBA } from "@opentui/core";
|
|
7
|
+
import type { ColorRole, Segment } from "../view/text.js";
|
|
8
|
+
import { type ColorName, type DisplaySettings } from "./display.js";
|
|
9
|
+
/** The theme tokens quota reads (OpenCode's `ResolvedTheme`). */
|
|
10
|
+
export type Theme = {
|
|
11
|
+
text: {
|
|
12
|
+
base: RGBA;
|
|
13
|
+
muted: RGBA;
|
|
14
|
+
/** The label of the line the Settings tabs have selected, on a surface. */
|
|
15
|
+
action: {
|
|
16
|
+
primary: {
|
|
17
|
+
selected: RGBA;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
feedback: Record<"success" | "warning" | "error" | "info", {
|
|
21
|
+
base: RGBA;
|
|
22
|
+
}>;
|
|
23
|
+
};
|
|
24
|
+
/** Behind the line the Settings tabs have selected, on a surface. */
|
|
25
|
+
background: {
|
|
26
|
+
raised: {
|
|
27
|
+
high: RGBA;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
hue: {
|
|
31
|
+
accent: Record<number, RGBA>;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export declare function namedColor(theme: Theme, name: ColorName): RGBA;
|
|
35
|
+
/** The bar color for a percent left: plenty left, getting low, or almost out. */
|
|
36
|
+
export declare function levelColor(theme: Theme, display: DisplaySettings, percent: number): RGBA;
|
|
37
|
+
/** A role's color. A role set to "bar" takes the level color of the row's percent. */
|
|
38
|
+
export declare function roleColor(theme: Theme, display: DisplaySettings, role: ColorRole, percent?: number): RGBA;
|
|
39
|
+
/** The color of one line segment. */
|
|
40
|
+
export declare function segmentColor(theme: Theme, display: DisplaySettings, segment: Segment): RGBA;
|
|
41
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,eAAe,EAAgB,MAAM,cAAc,CAAC;AAEpG,iEAAiE;AACjE,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAC;QACX,KAAK,EAAE,IAAI,CAAC;QACZ,2EAA2E;QAC3E,MAAM,EAAE;YAAE,OAAO,EAAE;gBAAE,QAAQ,EAAE,IAAI,CAAA;aAAE,CAAA;SAAE,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,EAAE;YAAE,IAAI,EAAE,IAAI,CAAA;SAAE,CAAC,CAAC;KAC5E,CAAC;IACF,qEAAqE;IACrE,UAAU,EAAE;QAAE,MAAM,EAAE;YAAE,IAAI,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;IACvC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;KAAE,CAAC;CACvC,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAiB9D;AAYD,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGxF;AAED,sFAAsF;AACtF,wBAAgB,SAAS,CACvB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,SAAS,EACf,OAAO,SAAM,GACZ,IAAI,CAGN;AAED,qCAAqC;AACrC,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAI3F"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quota's colors from the user's OpenCode theme. Every color role follows a named theme color
|
|
3
|
+
* unless the display settings pick another one or a fixed "#rrggbb". The theme is read on every
|
|
4
|
+
* call, so a surface that colors inside its JSX follows a theme or light/dark switch at once.
|
|
5
|
+
*/
|
|
6
|
+
import { RGBA } from "@opentui/core";
|
|
7
|
+
import { levelOf } from "../view/format.js";
|
|
8
|
+
import { THEME_COLORS } from "./display.js";
|
|
9
|
+
export function namedColor(theme, name) {
|
|
10
|
+
switch (name) {
|
|
11
|
+
case "text":
|
|
12
|
+
return theme.text.base;
|
|
13
|
+
case "muted":
|
|
14
|
+
return theme.text.muted;
|
|
15
|
+
case "accent":
|
|
16
|
+
return theme.hue.accent[500] ?? theme.text.base;
|
|
17
|
+
case "green":
|
|
18
|
+
return theme.text.feedback.success.base;
|
|
19
|
+
case "yellow":
|
|
20
|
+
return theme.text.feedback.warning.base;
|
|
21
|
+
case "red":
|
|
22
|
+
return theme.text.feedback.error.base;
|
|
23
|
+
case "blue":
|
|
24
|
+
return theme.text.feedback.info.base;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** A fixed choice ("bar" is not one: the level roles can't follow themselves). */
|
|
28
|
+
function fixedColor(theme, choice, fallback) {
|
|
29
|
+
if (choice === "bar")
|
|
30
|
+
return namedColor(theme, fallback);
|
|
31
|
+
return choice.startsWith("#") ? RGBA.fromHex(choice) : namedColor(theme, choice);
|
|
32
|
+
}
|
|
33
|
+
function choiceFor(display, role) {
|
|
34
|
+
return display.colors[role] ?? THEME_COLORS[role];
|
|
35
|
+
}
|
|
36
|
+
/** The bar color for a percent left: plenty left, getting low, or almost out. */
|
|
37
|
+
export function levelColor(theme, display, percent) {
|
|
38
|
+
const role = levelOf(percent, display.thresholds);
|
|
39
|
+
return fixedColor(theme, choiceFor(display, role), THEME_COLORS[role]);
|
|
40
|
+
}
|
|
41
|
+
/** A role's color. A role set to "bar" takes the level color of the row's percent. */
|
|
42
|
+
export function roleColor(theme, display, role, percent = 100) {
|
|
43
|
+
const choice = choiceFor(display, role);
|
|
44
|
+
return choice === "bar" ? levelColor(theme, display, percent) : fixedColor(theme, choice, "text");
|
|
45
|
+
}
|
|
46
|
+
/** The color of one line segment. */
|
|
47
|
+
export function segmentColor(theme, display, segment) {
|
|
48
|
+
return segment.role === "bar"
|
|
49
|
+
? levelColor(theme, display, segment.percent ?? 100)
|
|
50
|
+
: roleColor(theme, display, segment.role, segment.percent);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAA0D,YAAY,EAAE,MAAM,cAAc,CAAC;AAgBpG,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,IAAe;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAClD,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAC1C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACxC,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,UAAU,CAAC,KAAY,EAAE,MAAmB,EAAE,QAAmB;IACxE,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAmB,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,SAAS,CAAC,OAAwB,EAAE,IAAe;IAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,OAAwB,EAAE,OAAe;IAChF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAc,CAAC,CAAC;AACtF,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,SAAS,CACvB,KAAY,EACZ,OAAwB,EACxB,IAAe,EACf,OAAO,GAAG,GAAG;IAEb,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpG,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,OAAwB,EAAE,OAAgB;IACnF,OAAO,OAAO,CAAC,IAAI,KAAK,KAAK;QAC3B,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** @jsxImportSource @opentui/solid */
|
|
2
|
+
/**
|
|
3
|
+
* Quota toasts in the sidebar's colors, through a trick OpenCode does not promise to keep.
|
|
4
|
+
* OpenCode's plugin API types a toast's message as a string and draws a string in one color.
|
|
5
|
+
* OpenCode's toast (checked on 2.0.26 to 2.0.28) passes the message on unchanged and puts it
|
|
6
|
+
* inside its <text>, and plugins share OpenCode's @opentui/solid and solid-js, so a message of
|
|
7
|
+
* <span>s draws each span in its own color.
|
|
8
|
+
*
|
|
9
|
+
* Quota sends the spans on every OpenCode version, once the TUI has drawn (the spans are made
|
|
10
|
+
* under its renderer). Any error while making or showing the spans shows the plain message: the
|
|
11
|
+
* same characters.
|
|
12
|
+
*/
|
|
13
|
+
import type { JSX } from "@opentui/solid";
|
|
14
|
+
import { type Owner } from "solid-js";
|
|
15
|
+
import type { Line } from "../view/text.js";
|
|
16
|
+
import type { DisplaySettings } from "./display.js";
|
|
17
|
+
import { type Theme } from "./theme.js";
|
|
18
|
+
import type { ToastOptions } from "./toasts.js";
|
|
19
|
+
export type ColoredToastHost = {
|
|
20
|
+
/** OpenCode's own toast. */
|
|
21
|
+
show: (toast: ToastOptions) => void;
|
|
22
|
+
theme: () => Theme;
|
|
23
|
+
display: () => DisplaySettings;
|
|
24
|
+
/** A Solid owner inside OpenCode's renderer, where spans can be made; none before it draws. */
|
|
25
|
+
owner: () => Owner | undefined;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The children of OpenCode's toast <text>: each segment a <span> in its color, "\n" between
|
|
29
|
+
* lines. A span reads bold from its style's `bold` key; it ignores an `attributes` key there.
|
|
30
|
+
*/
|
|
31
|
+
export declare function coloredMessage(lines: Line[], theme: Theme, display: DisplaySettings): JSX.Element;
|
|
32
|
+
/**
|
|
33
|
+
* Shows a toast. A quota toast's `lines` show in their colors once the TUI has drawn (see
|
|
34
|
+
* above); before that, and when that fails, the toast's plain message shows.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createToastShow(host: ColoredToastHost): (toast: ToastOptions, lines?: Line[]) => void;
|
|
37
|
+
//# sourceMappingURL=toast-colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-colors.d.ts","sourceRoot":"","sources":["../../src/tui/toast-colors.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAA0B,KAAK,KAAK,EAAgB,MAAM,UAAU,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,4BAA4B;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,KAAK,CAAC;IACnB,OAAO,EAAE,MAAM,eAAe,CAAC;IAC/B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CASjG;AAwBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,WACrC,YAAY,UAAU,IAAI,EAAE,KAAG,IAAI,CAgBnD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { setProp as _$setProp } from "@opentui/solid";
|
|
2
|
+
import { effect as _$effect } from "@opentui/solid";
|
|
3
|
+
import { insert as _$insert } from "@opentui/solid";
|
|
4
|
+
import { createElement as _$createElement } from "@opentui/solid";
|
|
5
|
+
/** @jsxImportSource @opentui/solid */
|
|
6
|
+
/**
|
|
7
|
+
* Quota toasts in the sidebar's colors, through a trick OpenCode does not promise to keep.
|
|
8
|
+
* OpenCode's plugin API types a toast's message as a string and draws a string in one color.
|
|
9
|
+
* OpenCode's toast (checked on 2.0.26 to 2.0.28) passes the message on unchanged and puts it
|
|
10
|
+
* inside its <text>, and plugins share OpenCode's @opentui/solid and solid-js, so a message of
|
|
11
|
+
* <span>s draws each span in its own color.
|
|
12
|
+
*
|
|
13
|
+
* Quota sends the spans on every OpenCode version, once the TUI has drawn (the spans are made
|
|
14
|
+
* under its renderer). Any error while making or showing the spans shows the plain message: the
|
|
15
|
+
* same characters.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { catchError, createRoot, runWithOwner } from "solid-js";
|
|
19
|
+
import { segmentColor } from "./theme.js";
|
|
20
|
+
/**
|
|
21
|
+
* The children of OpenCode's toast <text>: each segment a <span> in its color, "\n" between
|
|
22
|
+
* lines. A span reads bold from its style's `bold` key; it ignores an `attributes` key there.
|
|
23
|
+
*/
|
|
24
|
+
export function coloredMessage(lines, theme, display) {
|
|
25
|
+
return lines.flatMap((line, index) => [...(index > 0 ? ["\n"] : []), ...line.segments.map(segment => (() => {
|
|
26
|
+
var _el$ = _$createElement("span");
|
|
27
|
+
_$insert(_el$, () => segment.text);
|
|
28
|
+
_$effect(_$p => _$setProp(_el$, "style", {
|
|
29
|
+
fg: segmentColor(theme, display, segment),
|
|
30
|
+
bold: segment.bold === true
|
|
31
|
+
}, _$p));
|
|
32
|
+
return _el$;
|
|
33
|
+
})())]);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The spans of `lines`, made under `owner`; undefined when making them failed. Errors go to
|
|
38
|
+
* this function, never to OpenCode's error screen. The root is gone once the spans have their
|
|
39
|
+
* colors: nothing in them changes later.
|
|
40
|
+
*/
|
|
41
|
+
function spansOf(owner, lines, host) {
|
|
42
|
+
let failed = false;
|
|
43
|
+
const spans = runWithOwner(owner, () => createRoot(dispose => {
|
|
44
|
+
const made = catchError(() => coloredMessage(lines, host.theme(), host.display()), () => {
|
|
45
|
+
failed = true;
|
|
46
|
+
});
|
|
47
|
+
dispose();
|
|
48
|
+
return made;
|
|
49
|
+
}));
|
|
50
|
+
return failed ? undefined : spans;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Shows a toast. A quota toast's `lines` show in their colors once the TUI has drawn (see
|
|
55
|
+
* above); before that, and when that fails, the toast's plain message shows.
|
|
56
|
+
*/
|
|
57
|
+
export function createToastShow(host) {
|
|
58
|
+
return (toast, lines) => {
|
|
59
|
+
if (lines !== undefined) {
|
|
60
|
+
try {
|
|
61
|
+
const owner = host.owner();
|
|
62
|
+
const spans = owner === undefined ? undefined : spansOf(owner, lines, host);
|
|
63
|
+
if (spans !== undefined) {
|
|
64
|
+
// The API types the message as a string; OpenCode's toast draws the spans as they are.
|
|
65
|
+
host.show({
|
|
66
|
+
...toast,
|
|
67
|
+
message: spans
|
|
68
|
+
});
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
} catch {
|
|
72
|
+
// The plain message below.
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
host.show(toast);
|
|
76
|
+
};
|
|
77
|
+
}
|