@slkiser/opencode-quota 4.1.0 → 4.3.0
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 +85 -28
- package/dist/lib/api-key-resolver.d.ts +73 -22
- package/dist/lib/api-key-resolver.d.ts.map +1 -1
- package/dist/lib/api-key-resolver.js +102 -15
- package/dist/lib/api-key-resolver.js.map +1 -1
- package/dist/lib/chutes-config.d.ts.map +1 -1
- package/dist/lib/chutes-config.js +2 -4
- package/dist/lib/chutes-config.js.map +1 -1
- package/dist/lib/config.d.ts +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +22 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/copilot.d.ts.map +1 -1
- package/dist/lib/copilot.js +82 -31
- package/dist/lib/copilot.js.map +1 -1
- package/dist/lib/deepseek-auth.d.ts.map +1 -1
- package/dist/lib/deepseek-auth.js +3 -7
- package/dist/lib/deepseek-auth.js.map +1 -1
- package/dist/lib/entries.d.ts +9 -4
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/entries.js.map +1 -1
- package/dist/lib/glm-coding-plan.d.ts +18 -0
- package/dist/lib/glm-coding-plan.d.ts.map +1 -0
- package/dist/lib/glm-coding-plan.js +68 -0
- package/dist/lib/glm-coding-plan.js.map +1 -0
- package/dist/lib/google-agy-companion.d.ts +4 -25
- package/dist/lib/google-agy-companion.d.ts.map +1 -1
- package/dist/lib/google-agy-companion.js +47 -272
- package/dist/lib/google-agy-companion.js.map +1 -1
- package/dist/lib/google-agy.d.ts.map +1 -1
- package/dist/lib/google-agy.js +7 -25
- package/dist/lib/google-agy.js.map +1 -1
- package/dist/lib/google-antigravity-companion.d.ts +4 -25
- package/dist/lib/google-antigravity-companion.d.ts.map +1 -1
- package/dist/lib/google-antigravity-companion.js +44 -283
- package/dist/lib/google-antigravity-companion.js.map +1 -1
- package/dist/lib/google-companion-credentials.d.ts +70 -0
- package/dist/lib/google-companion-credentials.d.ts.map +1 -0
- package/dist/lib/google-companion-credentials.js +265 -0
- package/dist/lib/google-companion-credentials.js.map +1 -0
- package/dist/lib/google-gemini-cli-companion.d.ts +4 -25
- package/dist/lib/google-gemini-cli-companion.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli-companion.js +47 -258
- package/dist/lib/google-gemini-cli-companion.js.map +1 -1
- package/dist/lib/google-gemini-cli.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli.js +2 -20
- package/dist/lib/google-gemini-cli.js.map +1 -1
- package/dist/lib/google.d.ts.map +1 -1
- package/dist/lib/google.js +23 -45
- package/dist/lib/google.js.map +1 -1
- package/dist/lib/kimi-auth.d.ts +3 -26
- package/dist/lib/kimi-auth.d.ts.map +1 -1
- package/dist/lib/kimi-auth.js +24 -91
- package/dist/lib/kimi-auth.js.map +1 -1
- package/dist/lib/maintainer-announcements.js +2 -2
- package/dist/lib/maintainer-announcements.js.map +1 -1
- package/dist/lib/map-with-concurrency.d.ts +2 -0
- package/dist/lib/map-with-concurrency.d.ts.map +1 -0
- package/dist/lib/map-with-concurrency.js +17 -0
- package/dist/lib/map-with-concurrency.js.map +1 -0
- package/dist/lib/nanogpt-config.d.ts.map +1 -1
- package/dist/lib/nanogpt-config.js +2 -4
- package/dist/lib/nanogpt-config.js.map +1 -1
- package/dist/lib/openrouter.d.ts +13 -0
- package/dist/lib/openrouter.d.ts.map +1 -0
- package/dist/lib/openrouter.js +41 -0
- package/dist/lib/openrouter.js.map +1 -0
- package/dist/lib/provider-metadata.d.ts +11 -0
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +11 -0
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
- package/dist/lib/quota-dialog-commands.js +3 -10
- 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 +0 -1
- package/dist/lib/quota-providers-remote.d.ts.map +1 -1
- package/dist/lib/quota-providers-remote.js +3 -16
- package/dist/lib/quota-providers-remote.js.map +1 -1
- package/dist/lib/quota-render-data.d.ts.map +1 -1
- package/dist/lib/quota-render-data.js +40 -15
- package/dist/lib/quota-render-data.js.map +1 -1
- package/dist/lib/quota-runtime-context.d.ts +2 -0
- package/dist/lib/quota-runtime-context.d.ts.map +1 -1
- package/dist/lib/quota-runtime-context.js +40 -0
- package/dist/lib/quota-runtime-context.js.map +1 -1
- package/dist/lib/quota-state.d.ts.map +1 -1
- package/dist/lib/quota-state.js +89 -5
- package/dist/lib/quota-state.js.map +1 -1
- package/dist/lib/quota-status.d.ts +7 -17
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +116 -1036
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/quota-telemetry.d.ts +45 -0
- package/dist/lib/quota-telemetry.d.ts.map +1 -0
- package/dist/lib/quota-telemetry.js +300 -0
- package/dist/lib/quota-telemetry.js.map +1 -0
- package/dist/lib/synthetic-config.d.ts.map +1 -1
- package/dist/lib/synthetic-config.js +2 -4
- package/dist/lib/synthetic-config.js.map +1 -1
- package/dist/lib/tui-runtime.d.ts.map +1 -1
- package/dist/lib/tui-runtime.js +10 -1
- package/dist/lib/tui-runtime.js.map +1 -1
- package/dist/lib/types.d.ts +17 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +3 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/zai-auth.d.ts +3 -26
- package/dist/lib/zai-auth.d.ts.map +1 -1
- package/dist/lib/zai-auth.js +24 -94
- package/dist/lib/zai-auth.js.map +1 -1
- package/dist/lib/zai.d.ts +1 -8
- package/dist/lib/zai.d.ts.map +1 -1
- package/dist/lib/zai.js +11 -97
- package/dist/lib/zai.js.map +1 -1
- package/dist/lib/zhipu-auth.d.ts +3 -26
- package/dist/lib/zhipu-auth.d.ts.map +1 -1
- package/dist/lib/zhipu-auth.js +24 -94
- package/dist/lib/zhipu-auth.js.map +1 -1
- package/dist/lib/zhipu.d.ts +1 -8
- package/dist/lib/zhipu.d.ts.map +1 -1
- package/dist/lib/zhipu.js +10 -89
- package/dist/lib/zhipu.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +4 -0
- 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 +33 -6
- package/dist/providers/alibaba-coding-plan.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +35 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/chutes.d.ts.map +1 -1
- package/dist/providers/chutes.js +10 -3
- package/dist/providers/chutes.js.map +1 -1
- package/dist/providers/copilot.d.ts.map +1 -1
- package/dist/providers/copilot.js +79 -29
- package/dist/providers/copilot.js.map +1 -1
- package/dist/providers/cursor.d.ts.map +1 -1
- package/dist/providers/cursor.js +34 -6
- package/dist/providers/cursor.js.map +1 -1
- package/dist/providers/deepseek.d.ts.map +1 -1
- package/dist/providers/deepseek.js +10 -3
- package/dist/providers/deepseek.js.map +1 -1
- package/dist/providers/glm-coding-plan-provider.d.ts +9 -0
- package/dist/providers/glm-coding-plan-provider.d.ts.map +1 -1
- package/dist/providers/glm-coding-plan-provider.js +24 -2
- 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 +23 -6
- package/dist/providers/google-agy.js.map +1 -1
- package/dist/providers/google-antigravity.d.ts.map +1 -1
- package/dist/providers/google-antigravity.js +31 -6
- package/dist/providers/google-antigravity.js.map +1 -1
- package/dist/providers/google-gemini-cli.d.ts.map +1 -1
- package/dist/providers/google-gemini-cli.js +24 -6
- package/dist/providers/google-gemini-cli.js.map +1 -1
- package/dist/providers/kimi-code.d.ts.map +1 -1
- package/dist/providers/kimi-code.js +27 -8
- package/dist/providers/kimi-code.js.map +1 -1
- package/dist/providers/mimo.d.ts.map +1 -1
- package/dist/providers/mimo.js +12 -5
- package/dist/providers/mimo.js.map +1 -1
- package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
- package/dist/providers/minimax-coding-plan.js +37 -6
- package/dist/providers/minimax-coding-plan.js.map +1 -1
- package/dist/providers/nanogpt.d.ts.map +1 -1
- package/dist/providers/nanogpt.js +41 -4
- package/dist/providers/nanogpt.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +20 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +33 -15
- 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 +27 -22
- package/dist/providers/opencode-zen.js.map +1 -1
- package/dist/providers/openrouter.d.ts +6 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +25 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/quota-providers.js +2 -1
- package/dist/providers/quota-providers.js.map +1 -1
- package/dist/providers/qwen-code.d.ts.map +1 -1
- package/dist/providers/qwen-code.js +19 -5
- package/dist/providers/qwen-code.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/result-helpers.d.ts +29 -1
- package/dist/providers/result-helpers.d.ts.map +1 -1
- package/dist/providers/result-helpers.js +69 -0
- package/dist/providers/result-helpers.js.map +1 -1
- package/dist/providers/synthetic.d.ts.map +1 -1
- package/dist/providers/synthetic.js +10 -3
- package/dist/providers/synthetic.js.map +1 -1
- package/dist/providers/zai.d.ts.map +1 -1
- package/dist/providers/zai.js +2 -1
- package/dist/providers/zai.js.map +1 -1
- package/dist/providers/zhipu.d.ts.map +1 -1
- package/dist/providers/zhipu.js +2 -1
- package/dist/providers/zhipu.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +4 -0
- package/dist/tui.tsx +5 -0
- package/package.json +10 -2
package/README.md
CHANGED
|
@@ -85,6 +85,7 @@ More ways to use it:
|
|
|
85
85
|
|
|
86
86
|
- Check quota from a terminal with `opencode-quota show`
|
|
87
87
|
- Use JSON output in scripts, status bars, CI checks, and other tools
|
|
88
|
+
- Send quota data to monitoring tools with optional OpenTelemetry metrics
|
|
88
89
|
- Run the same slash commands in the TUI, Web, and Desktop
|
|
89
90
|
- Tune reset countdown precision without changing the default compact display
|
|
90
91
|
- Choose current-session or descendant-tree token totals across `/quota`, toasts, the sidebar, and the compact input line
|
|
@@ -132,36 +133,90 @@ Use the CLI for scripts, CI, or a quick terminal check outside OpenCode.
|
|
|
132
133
|
|
|
133
134
|
### Pre-configured providers
|
|
134
135
|
|
|
135
|
-
Most providers work automatically. If a provider has a “Needs setup” link, open that setup note only if you use that provider.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
| xAI SuperGrok
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
136
|
+
Most providers work automatically. If a provider has a “Needs setup” link, open that setup note only if you use that provider. Providers can appear in both audience sections when the vendor supports both.
|
|
137
|
+
|
|
138
|
+
### American providers
|
|
139
|
+
|
|
140
|
+
<details open>
|
|
141
|
+
<summary><strong>Personal</strong></summary>
|
|
142
|
+
|
|
143
|
+
| Provider | Auth/setup | Data from | Reports |
|
|
144
|
+
| ------------------ | ------------------------------------------------------------------------ | ------------------ | ------------------ |
|
|
145
|
+
| Anthropic (Claude) | [Needs setup](docs/readme/providers.md#anthropic-claude) | Local CLI/OAuth | Quota |
|
|
146
|
+
| Chutes AI | API key/config | Remote API | Quota |
|
|
147
|
+
| Cursor | [Needs setup](docs/readme/providers.md#cursor) | Local estimate | Budget and spend |
|
|
148
|
+
| GitHub Copilot | Automatic OAuth / [billing PAT](docs/readme/providers.md#github-copilot) | Remote API | Usage and budget |
|
|
149
|
+
| Google AGY | [Needs setup](docs/readme/providers.md#google-agy-quick-setup) | Remote API | Quota |
|
|
150
|
+
| Google Antigravity | [Needs setup](docs/readme/providers.md#google-antigravity) | Remote API | Quota |
|
|
151
|
+
| NanoGPT | API key/config | Remote API | Quota and balance |
|
|
152
|
+
| Ollama Cloud | [Needs setup](docs/readme/providers.md#ollama-cloud) | Dashboard scraping | Quota |
|
|
153
|
+
| OpenAI | Automatic | Remote API | Quota |
|
|
154
|
+
| OpenCode Go | [Needs setup](docs/readme/providers.md#opencode-go) | Dashboard scraping | Quota |
|
|
155
|
+
| OpenCode Zen | [Needs setup](docs/readme/providers.md#opencode-zen) | Dashboard scraping | Budget and balance |
|
|
156
|
+
| OpenRouter | Automatic | Remote API | Budget and spend |
|
|
157
|
+
| Synthetic | Automatic | Remote API | Quota |
|
|
158
|
+
| xAI SuperGrok | OpenCode OAuth (`/connect` xAI) | Remote API | Quota |
|
|
159
|
+
|
|
160
|
+
</details>
|
|
161
|
+
|
|
162
|
+
<details>
|
|
163
|
+
<summary><strong>Business / Enterprise</strong></summary>
|
|
164
|
+
|
|
165
|
+
| Provider | Auth/setup | Data from | Reports |
|
|
166
|
+
| ----------------------- | ------------------------------------------------------------------------ | ------------------ | ------------------ |
|
|
167
|
+
| Anthropic (Claude) | [Needs setup](docs/readme/providers.md#anthropic-claude) | Local CLI/OAuth | Quota |
|
|
168
|
+
| Chutes AI | API key/config | Remote API | Quota |
|
|
169
|
+
| Cursor | [Needs setup](docs/readme/providers.md#cursor) | Local estimate | Budget and spend |
|
|
170
|
+
| Gemini CLI (deprecated) | [Existing setups only](docs/readme/providers.md#gemini-cli) | Remote API | Quota |
|
|
171
|
+
| GitHub Copilot | Automatic OAuth / [billing PAT](docs/readme/providers.md#github-copilot) | Remote API | Usage and budget |
|
|
172
|
+
| Google AGY | [Needs setup](docs/readme/providers.md#google-agy-quick-setup) | Remote API | Quota |
|
|
173
|
+
| Google Antigravity | [Needs setup](docs/readme/providers.md#google-antigravity) | Remote API | Quota |
|
|
174
|
+
| NanoGPT | API key/config | Remote API | Quota and balance |
|
|
175
|
+
| OpenAI | Automatic | Remote API | Quota |
|
|
176
|
+
| OpenCode Zen | [Needs setup](docs/readme/providers.md#opencode-zen) | Dashboard scraping | Budget and balance |
|
|
177
|
+
| OpenRouter | Automatic | Remote API | Budget and spend |
|
|
178
|
+
| Synthetic | Automatic | Remote API | Quota |
|
|
179
|
+
| xAI SuperGrok | OpenCode OAuth (`/connect` xAI) | Remote API | Quota |
|
|
180
|
+
|
|
181
|
+
Business placement describes vendor plan availability. Except for configured Copilot organization/enterprise billing, current integrations generally report one signed-in account, seat, API key, or workspace.
|
|
162
182
|
|
|
163
183
|
Gemini CLI quota support is deprecated for new installs. Existing v4 configurations still work, with removal planned for v5.0.0. See the [provider guide](docs/readme/providers.md#gemini-cli) before choosing a replacement.
|
|
164
184
|
|
|
185
|
+
</details>
|
|
186
|
+
|
|
187
|
+
### Chinese providers
|
|
188
|
+
|
|
189
|
+
<details open>
|
|
190
|
+
<summary><strong>Personal</strong></summary>
|
|
191
|
+
|
|
192
|
+
| Provider | Auth/setup | Data from | Reports |
|
|
193
|
+
| ------------------------ | --------------------------------------------------- | -------------- | ------------------ |
|
|
194
|
+
| Alibaba Coding Plan | OpenCode config | Local estimate | Quota |
|
|
195
|
+
| DeepSeek | API key/config | Remote API | Balance and status |
|
|
196
|
+
| Kimi Code | OpenCode config | Remote API | Quota |
|
|
197
|
+
| MiniMax Coding Plan | OpenCode config | Remote API | Quota |
|
|
198
|
+
| MiniMax Coding Plan (CN) | OpenCode config | Remote API | Quota |
|
|
199
|
+
| Qwen Code | [Needs setup](docs/readme/providers.md#qwen-code) | Local estimate | Quota |
|
|
200
|
+
| Xiaomi MiMo | [Needs setup](docs/readme/providers.md#xiaomi-mimo) | Dashboard API | Quota and balance |
|
|
201
|
+
| Z.ai Coding Plan | OpenCode config | Remote API | Quota |
|
|
202
|
+
| Zhipu Coding Plan | OpenCode config | Remote API | Quota |
|
|
203
|
+
|
|
204
|
+
</details>
|
|
205
|
+
|
|
206
|
+
<details>
|
|
207
|
+
<summary><strong>Business / Team</strong></summary>
|
|
208
|
+
|
|
209
|
+
| Provider | Auth/setup | Data from | Reports |
|
|
210
|
+
| ------------------------ | --------------- | ---------- | ------- |
|
|
211
|
+
| Kimi Code | OpenCode config | Remote API | Quota |
|
|
212
|
+
| MiniMax Coding Plan | OpenCode config | Remote API | Quota |
|
|
213
|
+
| MiniMax Coding Plan (CN) | OpenCode config | Remote API | Quota |
|
|
214
|
+
| Zhipu Coding Plan | OpenCode config | Remote API | Quota |
|
|
215
|
+
|
|
216
|
+
These vendors offer team or business plans, but the current integrations report only the configured member API key rather than organization-wide usage.
|
|
217
|
+
|
|
218
|
+
</details>
|
|
219
|
+
|
|
165
220
|
The quota view uses short labels such as `Day quota`, `5h quota`, `Day budget`, and `Balance`. Bar width varies by surface. JSON keeps the precise accounting type for scripts.
|
|
166
221
|
|
|
167
222
|
### Custom providers
|
|
@@ -172,7 +227,9 @@ You can add a provider with an HTTPS quota API, or track a local usage estimate
|
|
|
172
227
|
npx @slkiser/opencode-quota@latest provider add
|
|
173
228
|
```
|
|
174
229
|
|
|
175
|
-
|
|
230
|
+
OpenRouter works automatically with the API key already configured in OpenCode. A custom OpenRouter definition remains available when you need a different endpoint or label.
|
|
231
|
+
|
|
232
|
+
For another API, choose the response format it uses: `quota-v1` for OpenCode Quota's standard response, `json-v1` to point to each value in a JSON response, or `openrouter-key-v1` for OpenRouter's key endpoint. The setup asks one question at a time, never asks for a response body or secret, and shows the complete config before saving.
|
|
176
233
|
|
|
177
234
|
Setup details live in the [Provider setup guide](docs/readme/providers.md#custom-providers).
|
|
178
235
|
|
|
@@ -74,25 +74,83 @@ export interface ResolveApiKeyConfig<Source extends string> extends ResolveEnvAn
|
|
|
74
74
|
/** Source label for auth.json */
|
|
75
75
|
authSource: Source;
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
/** Shared configuration for provider-specific API key resolution. */
|
|
78
|
+
export interface ResolveProviderApiKeyBaseConfig<Source extends string> {
|
|
79
79
|
envVars: EnvVarDef<Source>[];
|
|
80
|
-
/** Provider keys to inspect under provider.<key>.options.apiKey */
|
|
81
80
|
providerKeys: readonly string[];
|
|
82
|
-
/** Allowed env vars for {env:VAR_NAME} config values. */
|
|
83
81
|
allowedEnvVars?: readonly string[];
|
|
84
|
-
/** Source label for opencode.json */
|
|
85
82
|
configJsonSource: Source;
|
|
86
|
-
/** Source label for opencode.jsonc */
|
|
87
83
|
configJsoncSource: Source;
|
|
88
|
-
/** Candidate config file paths to trust for provider-secret lookup. */
|
|
89
84
|
getConfigCandidates?: () => ConfigCandidate[];
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
85
|
+
}
|
|
86
|
+
export interface StrictApiKeyAuthConfig<Source extends string> {
|
|
87
|
+
policy?: "strict-api-key";
|
|
88
|
+
readAuth: () => Promise<unknown | null>;
|
|
89
|
+
getAuthPaths?: () => string[];
|
|
90
|
+
authKeys?: readonly string[];
|
|
91
|
+
authSource: Source;
|
|
92
|
+
}
|
|
93
|
+
export interface InvalidAwareApiKeyAuthConfig<AuthSource extends string> {
|
|
94
|
+
policy: "invalid-aware-api-key";
|
|
95
|
+
readAuth: (maxAgeMs: number) => Promise<unknown | null>;
|
|
96
|
+
getAuthPaths: () => string[];
|
|
97
|
+
authKeys: readonly string[];
|
|
98
|
+
authSource: AuthSource;
|
|
99
|
+
displayName: string;
|
|
100
|
+
defaultMaxAgeMs: number;
|
|
101
|
+
}
|
|
102
|
+
/** Configuration for simple nullable API key resolution. */
|
|
103
|
+
export interface ResolveProviderApiKeyConfig<Source extends string> extends ResolveProviderApiKeyBaseConfig<Source> {
|
|
104
|
+
auth?: StrictApiKeyAuthConfig<Source>;
|
|
105
|
+
}
|
|
106
|
+
/** Configuration for providers that surface malformed winning auth.json entries. */
|
|
107
|
+
export interface ResolveInvalidAwareProviderApiKeyConfig<Source extends string, AuthSource extends Source> extends ResolveProviderApiKeyBaseConfig<Source> {
|
|
108
|
+
auth: InvalidAwareApiKeyAuthConfig<AuthSource>;
|
|
109
|
+
}
|
|
110
|
+
export type InvalidAwareAuthResult = {
|
|
111
|
+
state: "none";
|
|
112
|
+
} | {
|
|
113
|
+
state: "configured";
|
|
114
|
+
apiKey: string;
|
|
115
|
+
} | {
|
|
116
|
+
state: "invalid";
|
|
117
|
+
error: string;
|
|
118
|
+
};
|
|
119
|
+
export type InvalidAwareAuthDiagnostics<Source extends string, AuthSource extends Source> = {
|
|
120
|
+
state: "none";
|
|
121
|
+
source: null;
|
|
122
|
+
checkedPaths: string[];
|
|
123
|
+
authPaths: string[];
|
|
124
|
+
} | {
|
|
125
|
+
state: "configured";
|
|
126
|
+
source: Source;
|
|
127
|
+
checkedPaths: string[];
|
|
128
|
+
authPaths: string[];
|
|
129
|
+
} | {
|
|
130
|
+
state: "invalid";
|
|
131
|
+
source: AuthSource;
|
|
132
|
+
checkedPaths: string[];
|
|
133
|
+
authPaths: string[];
|
|
134
|
+
error: string;
|
|
135
|
+
};
|
|
136
|
+
export interface ProviderApiKeyResolver<Source extends string> {
|
|
137
|
+
resolve: () => Promise<ApiKeyResult<Source> | null>;
|
|
138
|
+
has: () => Promise<boolean>;
|
|
139
|
+
diagnostics: () => Promise<{
|
|
140
|
+
configured: boolean;
|
|
141
|
+
source: Source | null;
|
|
142
|
+
checkedPaths: string[];
|
|
143
|
+
authPaths: string[];
|
|
144
|
+
}>;
|
|
145
|
+
}
|
|
146
|
+
export interface InvalidAwareProviderApiKeyResolver<Source extends string, AuthSource extends Source> {
|
|
147
|
+
parseAuth: (auth: unknown) => InvalidAwareAuthResult;
|
|
148
|
+
resolve: (params?: {
|
|
149
|
+
maxAgeMs?: number;
|
|
150
|
+
}) => Promise<InvalidAwareAuthResult>;
|
|
151
|
+
diagnostics: (params?: {
|
|
152
|
+
maxAgeMs?: number;
|
|
153
|
+
}) => Promise<InvalidAwareAuthDiagnostics<Source, AuthSource>>;
|
|
96
154
|
}
|
|
97
155
|
export interface ApiKeyCheckedPathsConfig {
|
|
98
156
|
/** Environment variable names to check */
|
|
@@ -104,15 +162,8 @@ export interface ApiKeyCheckedPathsConfig {
|
|
|
104
162
|
*/
|
|
105
163
|
getConfigCandidates?: () => ConfigCandidate[];
|
|
106
164
|
}
|
|
107
|
-
export declare function createProviderApiKeyResolver<Source extends string>(config:
|
|
108
|
-
|
|
109
|
-
has: () => Promise<boolean>;
|
|
110
|
-
diagnostics: () => Promise<{
|
|
111
|
-
configured: boolean;
|
|
112
|
-
source: Source | null;
|
|
113
|
-
checkedPaths: string[];
|
|
114
|
-
}>;
|
|
115
|
-
};
|
|
165
|
+
export declare function createProviderApiKeyResolver<Source extends string, AuthSource extends Source>(config: ResolveInvalidAwareProviderApiKeyConfig<Source, AuthSource>): InvalidAwareProviderApiKeyResolver<Source, AuthSource>;
|
|
166
|
+
export declare function createProviderApiKeyResolver<Source extends string>(config: ResolveProviderApiKeyConfig<Source>): ProviderApiKeyResolver<Source>;
|
|
116
167
|
/**
|
|
117
168
|
* Resolve an API key from trusted env vars and config files.
|
|
118
169
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/api-key-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/api-key-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* to resolve API keys with consistent priority and behavior.
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync } from "fs";
|
|
8
|
+
import { sanitizeDisplayText } from "./display-sanitize.js";
|
|
8
9
|
import { resolveEnvTemplate } from "./env-template.js";
|
|
9
10
|
import { getOpencodeRuntimeDirCandidates } from "./opencode-runtime-paths.js";
|
|
10
11
|
import { buildOpenCodeConfigCandidates, readOpenCodeConfigCandidate, } from "./opencode-config-read.js";
|
|
@@ -95,15 +96,110 @@ export function extractAuthApiKeyEntry(auth, authKeys) {
|
|
|
95
96
|
}
|
|
96
97
|
return null;
|
|
97
98
|
}
|
|
99
|
+
function buildProviderEnvAndConfig(config) {
|
|
100
|
+
return {
|
|
101
|
+
envVars: config.envVars,
|
|
102
|
+
extractFromConfig: (candidate) => extractProviderOptionsApiKey(candidate, {
|
|
103
|
+
providerKeys: config.providerKeys,
|
|
104
|
+
allowedEnvVars: config.allowedEnvVars,
|
|
105
|
+
}),
|
|
106
|
+
configJsonSource: config.configJsonSource,
|
|
107
|
+
configJsoncSource: config.configJsoncSource,
|
|
108
|
+
getConfigCandidates: config.getConfigCandidates,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function parseInvalidAwareAuth(auth, config) {
|
|
112
|
+
const entry = getFirstAuthEntryValue(auth, config.authKeys);
|
|
113
|
+
if (entry === null || entry === undefined)
|
|
114
|
+
return { state: "none" };
|
|
115
|
+
if (typeof entry !== "object") {
|
|
116
|
+
return { state: "invalid", error: `${config.displayName} auth entry has invalid shape` };
|
|
117
|
+
}
|
|
118
|
+
const record = entry;
|
|
119
|
+
if (typeof record.type !== "string") {
|
|
120
|
+
return {
|
|
121
|
+
state: "invalid",
|
|
122
|
+
error: `${config.displayName} auth entry present but type is missing or invalid`,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (record.type !== "api") {
|
|
126
|
+
const sanitized = sanitizeDisplayText(record.type).replace(/\s+/g, " ").trim();
|
|
127
|
+
return {
|
|
128
|
+
state: "invalid",
|
|
129
|
+
error: `Unsupported ${config.displayName} auth type: "${(sanitized || "unknown").slice(0, 120)}"`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const apiKey = typeof record.key === "string" ? record.key.trim() : "";
|
|
133
|
+
return apiKey
|
|
134
|
+
? { state: "configured", apiKey }
|
|
135
|
+
: {
|
|
136
|
+
state: "invalid",
|
|
137
|
+
error: `${config.displayName} auth entry present but key is empty`,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function createInvalidAwareProviderApiKeyResolver(config) {
|
|
141
|
+
const parseAuth = (auth) => parseInvalidAwareAuth(auth, config.auth);
|
|
142
|
+
const resolveWithSource = async (params) => {
|
|
143
|
+
const envOrConfig = await resolveApiKeyFromEnvAndConfig(buildProviderEnvAndConfig(config));
|
|
144
|
+
if (envOrConfig) {
|
|
145
|
+
return {
|
|
146
|
+
auth: { state: "configured", apiKey: envOrConfig.key },
|
|
147
|
+
source: envOrConfig.source,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const maxAgeMs = Math.max(0, params?.maxAgeMs ?? config.auth.defaultMaxAgeMs);
|
|
151
|
+
const auth = parseAuth(await config.auth.readAuth(maxAgeMs));
|
|
152
|
+
return {
|
|
153
|
+
auth,
|
|
154
|
+
source: auth.state === "none" ? null : config.auth.authSource,
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
return {
|
|
158
|
+
parseAuth,
|
|
159
|
+
resolve: async (params) => (await resolveWithSource(params)).auth,
|
|
160
|
+
diagnostics: async (params) => {
|
|
161
|
+
const { auth, source } = await resolveWithSource(params);
|
|
162
|
+
const paths = {
|
|
163
|
+
checkedPaths: getApiKeyCheckedPaths({
|
|
164
|
+
envVarNames: config.envVars.map((envVar) => envVar.name),
|
|
165
|
+
getConfigCandidates: config.getConfigCandidates,
|
|
166
|
+
}),
|
|
167
|
+
authPaths: config.auth.getAuthPaths(),
|
|
168
|
+
};
|
|
169
|
+
if (auth.state === "none")
|
|
170
|
+
return { state: "none", source: null, ...paths };
|
|
171
|
+
if (auth.state === "invalid") {
|
|
172
|
+
return {
|
|
173
|
+
state: "invalid",
|
|
174
|
+
source: config.auth.authSource,
|
|
175
|
+
error: auth.error,
|
|
176
|
+
...paths,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
state: "configured",
|
|
181
|
+
source: source ?? config.auth.authSource,
|
|
182
|
+
...paths,
|
|
183
|
+
};
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
}
|
|
98
187
|
export function createProviderApiKeyResolver(config) {
|
|
99
|
-
|
|
188
|
+
if (config.auth?.policy === "invalid-aware-api-key") {
|
|
189
|
+
return createInvalidAwareProviderApiKeyResolver(config);
|
|
190
|
+
}
|
|
191
|
+
const simpleConfig = config;
|
|
192
|
+
const resolve = () => resolveProviderApiKey(simpleConfig);
|
|
100
193
|
return {
|
|
101
194
|
resolve,
|
|
102
195
|
has: async () => (await resolve()) !== null,
|
|
103
|
-
diagnostics: () =>
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
196
|
+
diagnostics: async () => ({
|
|
197
|
+
...(await getApiKeyDiagnostics({
|
|
198
|
+
envVarNames: simpleConfig.envVars.map((envVar) => envVar.name),
|
|
199
|
+
resolve,
|
|
200
|
+
getConfigCandidates: simpleConfig.getConfigCandidates,
|
|
201
|
+
})),
|
|
202
|
+
authPaths: simpleConfig.auth?.getAuthPaths?.() ?? [],
|
|
107
203
|
}),
|
|
108
204
|
};
|
|
109
205
|
}
|
|
@@ -175,16 +271,7 @@ export async function resolveApiKey(config, readAuth) {
|
|
|
175
271
|
return null;
|
|
176
272
|
}
|
|
177
273
|
export async function resolveProviderApiKey(config) {
|
|
178
|
-
const envAndConfig =
|
|
179
|
-
envVars: config.envVars,
|
|
180
|
-
extractFromConfig: (candidate) => extractProviderOptionsApiKey(candidate, {
|
|
181
|
-
providerKeys: config.providerKeys,
|
|
182
|
-
allowedEnvVars: config.allowedEnvVars,
|
|
183
|
-
}),
|
|
184
|
-
configJsonSource: config.configJsonSource,
|
|
185
|
-
configJsoncSource: config.configJsoncSource,
|
|
186
|
-
getConfigCandidates: config.getConfigCandidates,
|
|
187
|
-
};
|
|
274
|
+
const envAndConfig = buildProviderEnvAndConfig(config);
|
|
188
275
|
if (!config.auth) {
|
|
189
276
|
return resolveApiKeyFromEnvAndConfig(envAndConfig);
|
|
190
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-resolver.js","sourceRoot":"","sources":["../../src/lib/api-key-resolver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-key-resolver.js","sourceRoot":"","sources":["../../src/lib/api-key-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chutes-config.d.ts","sourceRoot":"","sources":["../../src/lib/chutes-config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,eAAe,CAAC;CACzB;AAKD,MAAM,MAAM,eAAe,GACvB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,WAAW,CAAC;AAEhB,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"chutes-config.d.ts","sourceRoot":"","sources":["../../src/lib/chutes-config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,eAAe,CAAC;CACzB;AAKD,MAAM,MAAM,eAAe,GACvB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,WAAW,CAAC;AAEhB,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAgBjH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAE9E;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAExD;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC,CAED"}
|
|
@@ -12,6 +12,7 @@ const chutesApiKeyResolver = createProviderApiKeyResolver({
|
|
|
12
12
|
getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
|
|
13
13
|
auth: {
|
|
14
14
|
readAuth: readAuthFile,
|
|
15
|
+
getAuthPaths,
|
|
15
16
|
authSource: "auth.json",
|
|
16
17
|
},
|
|
17
18
|
});
|
|
@@ -22,9 +23,6 @@ export async function hasChutesApiKey() {
|
|
|
22
23
|
return chutesApiKeyResolver.has();
|
|
23
24
|
}
|
|
24
25
|
export async function getChutesKeyDiagnostics() {
|
|
25
|
-
return
|
|
26
|
-
...(await chutesApiKeyResolver.diagnostics()),
|
|
27
|
-
authPaths: getAuthPaths(),
|
|
28
|
-
};
|
|
26
|
+
return chutesApiKeyResolver.diagnostics();
|
|
29
27
|
}
|
|
30
28
|
//# sourceMappingURL=chutes-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chutes-config.js","sourceRoot":"","sources":["../../src/lib/chutes-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAO/B,MAAM,uBAAuB,GAAG,CAAC,gBAAgB,CAAU,CAAC;AAC5D,MAAM,oBAAoB,GAAG,CAAC,QAAQ,CAAU,CAAC;AAQjD,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,oBAAoB,GAAG,4BAA4B,CAAkB;IACzE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACnE,YAAY,EAAE,oBAAoB;IAClC,cAAc,EAAE,uBAAuB;IACvC,gBAAgB,EAAE,eAAe;IACjC,iBAAiB,EAAE,gBAAgB;IACnC,mBAAmB,EAAE,qCAAqC;IAC1D,IAAI,EAAE;QACJ,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,WAAW;KACxB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,OAAO,oBAAoB,CAAC,OAAO,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,oBAAoB,CAAC,GAAG,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAM3C,OAAO
|
|
1
|
+
{"version":3,"file":"chutes-config.js","sourceRoot":"","sources":["../../src/lib/chutes-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAO/B,MAAM,uBAAuB,GAAG,CAAC,gBAAgB,CAAU,CAAC;AAC5D,MAAM,oBAAoB,GAAG,CAAC,QAAQ,CAAU,CAAC;AAQjD,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,oBAAoB,GAAG,4BAA4B,CAAkB;IACzE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACnE,YAAY,EAAE,oBAAoB;IAClC,cAAc,EAAE,uBAAuB;IACvC,gBAAgB,EAAE,eAAe;IACjC,iBAAiB,EAAE,gBAAgB;IACnC,mBAAmB,EAAE,qCAAqC;IAC1D,IAAI,EAAE;QACJ,QAAQ,EAAE,YAAY;QACtB,YAAY;QACZ,UAAU,EAAE,WAAW;KACxB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,OAAO,oBAAoB,CAAC,OAAO,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,oBAAoB,CAAC,GAAG,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAM3C,OAAO,oBAAoB,CAAC,WAAW,EAAE,CAAC;AAC5C,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import type { QuotaToastConfig } from "./types.js";
|
|
10
10
|
export declare const QUOTA_TOAST_CONFIG_RELATIVE_PATHS: readonly ["opencode-quota/quota-toast.jsonc", "opencode-quota/quota-toast.json"];
|
|
11
11
|
export declare const QUOTA_TOAST_CONFIG_RELATIVE_PATH: "opencode-quota/quota-toast.json";
|
|
12
|
-
export declare const QUOTA_TOAST_SETTING_SOURCE_KEYS: readonly ["enabled", "enableToast", "tuiCommandDisplay", "formatStyle", "percentDisplayMode", "resetTimeDecimals", "minIntervalMs", "requestTimeoutMs", "debug", "enabledProviders", "quotaProviders", "anthropicBinaryPath", "googleModels", "cursorPlan", "cursorIncludedApiUsd", "cursorBillingCycleStartDay", "opencodeGoWindows", "opencodeMonthlyLimit", "pricingSnapshot.source", "pricingSnapshot.autoRefresh", "showOnIdle", "showOnQuestion", "showOnCompact", "showOnBothFail", "toastDurationMs", "onlyCurrentModel", "showSessionTokens", "sessionTokenScope", "tuiSidebarPanel.enabled", "tuiSidebarPanel.formatStyle", "tuiCompactStatus.enabled", "tuiCompactStatus.homeBottom", "tuiCompactStatus.sessionPrompt", "tuiCompactStatus.suppressWhenNativeProviderQuota", "tuiCompactStatus.maxWidth", "tuiCompactStatus.formatStyle", "maintainerAnnouncements.enabled", "maintainerAnnouncements.home", "layout.maxWidth", "layout.narrowAt", "layout.tinyAt", "export.enabled", "export.path"];
|
|
12
|
+
export declare const QUOTA_TOAST_SETTING_SOURCE_KEYS: readonly ["enabled", "enableToast", "tuiCommandDisplay", "formatStyle", "percentDisplayMode", "resetTimeDecimals", "minIntervalMs", "requestTimeoutMs", "debug", "enabledProviders", "quotaProviders", "anthropicBinaryPath", "googleModels", "cursorPlan", "cursorIncludedApiUsd", "cursorBillingCycleStartDay", "opencodeGoWindows", "opencodeMonthlyLimit", "pricingSnapshot.source", "pricingSnapshot.autoRefresh", "showOnIdle", "showOnQuestion", "showOnCompact", "showOnBothFail", "toastDurationMs", "onlyCurrentModel", "showSessionTokens", "sessionTokenScope", "tuiSidebarPanel.enabled", "tuiSidebarPanel.formatStyle", "tuiCompactStatus.enabled", "tuiCompactStatus.homeBottom", "tuiCompactStatus.sessionPrompt", "tuiCompactStatus.suppressWhenNativeProviderQuota", "tuiCompactStatus.maxWidth", "tuiCompactStatus.formatStyle", "maintainerAnnouncements.enabled", "maintainerAnnouncements.home", "layout.maxWidth", "layout.narrowAt", "layout.tinyAt", "export.enabled", "export.path", "telemetry.enabled"];
|
|
13
13
|
export type QuotaToastSettingSourceKey = (typeof QUOTA_TOAST_SETTING_SOURCE_KEYS)[number];
|
|
14
14
|
export type QuotaToastSettingSources = Partial<Record<QuotaToastSettingSourceKey, string>>;
|
|
15
15
|
export interface LoadConfigIssue {
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAMjB,MAAM,YAAY,CAAC;AAiBpB,eAAO,MAAM,iCAAiC,kFAGpC,CAAC;AACX,eAAO,MAAM,gCAAgC,mCAAuC,CAAC;AAErF,eAAO,MAAM,+BAA+B,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAMjB,MAAM,YAAY,CAAC;AAiBpB,eAAO,MAAM,iCAAiC,kFAGpC,CAAC;AACX,eAAO,MAAM,gCAAgC,mCAAuC,CAAC;AAErF,eAAO,MAAM,+BAA+B,q+BA6ClC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1F,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3F,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,EAAE,wBAAwB,CAAC;IACzC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAUrD;AAsED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,MAAM,GAAG,OAAgB,GAChC,MAAM,CAER;AAED,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAMzE;AA63BD;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EACF;IACE,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,OAAO,CAAC;YACjB,IAAI,CAAC,EAAE;gBAAE,YAAY,CAAC,EAAE;oBAAE,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;iBAAE,CAAA;aAAE,CAAC;SACtE,CAAC,CAAC;KACJ,CAAC;CACH,GACD,SAAS,EACb,IAAI,CAAC,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAoP3B"}
|
package/dist/lib/config.js
CHANGED
|
@@ -65,6 +65,7 @@ export const QUOTA_TOAST_SETTING_SOURCE_KEYS = [
|
|
|
65
65
|
"layout.tinyAt",
|
|
66
66
|
"export.enabled",
|
|
67
67
|
"export.path",
|
|
68
|
+
"telemetry.enabled",
|
|
68
69
|
];
|
|
69
70
|
export function createLoadConfigMeta() {
|
|
70
71
|
return {
|
|
@@ -191,6 +192,7 @@ function cloneConfig(config) {
|
|
|
191
192
|
maintainerAnnouncements: { ...config.maintainerAnnouncements },
|
|
192
193
|
layout: { ...config.layout },
|
|
193
194
|
export: { ...config.export },
|
|
195
|
+
telemetry: { ...config.telemetry },
|
|
194
196
|
};
|
|
195
197
|
}
|
|
196
198
|
function describeInvalidProviderValue(value) {
|
|
@@ -338,6 +340,16 @@ function extractExportConfigPatch(value) {
|
|
|
338
340
|
}
|
|
339
341
|
return Object.keys(patch).length > 0 ? patch : undefined;
|
|
340
342
|
}
|
|
343
|
+
function extractTelemetryConfigPatch(value) {
|
|
344
|
+
if (!isPlainObject(value)) {
|
|
345
|
+
return undefined;
|
|
346
|
+
}
|
|
347
|
+
const patch = {};
|
|
348
|
+
if (hasOwnKey(value, "enabled") && typeof value.enabled === "boolean") {
|
|
349
|
+
patch.enabled = value.enabled;
|
|
350
|
+
}
|
|
351
|
+
return Object.keys(patch).length > 0 ? patch : undefined;
|
|
352
|
+
}
|
|
341
353
|
function extractValidatedQuotaToastPatch(quotaToastConfig, reportIssue) {
|
|
342
354
|
const patch = {};
|
|
343
355
|
if (hasOwnKey(quotaToastConfig, "enabled") && typeof quotaToastConfig.enabled === "boolean") {
|
|
@@ -494,6 +506,12 @@ function extractValidatedQuotaToastPatch(quotaToastConfig, reportIssue) {
|
|
|
494
506
|
patch.export = exportConfig;
|
|
495
507
|
}
|
|
496
508
|
}
|
|
509
|
+
if (hasOwnKey(quotaToastConfig, "telemetry")) {
|
|
510
|
+
const telemetry = extractTelemetryConfigPatch(quotaToastConfig.telemetry);
|
|
511
|
+
if (telemetry) {
|
|
512
|
+
patch.telemetry = telemetry;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
497
515
|
return patch;
|
|
498
516
|
}
|
|
499
517
|
function applySettingSource(settingSources, key, sourcePath) {
|
|
@@ -684,6 +702,10 @@ function applyValidatedQuotaToastPatch(config, patch, sourcePath, settingSources
|
|
|
684
702
|
applySettingSource(settingSources, "export.path", sourcePath);
|
|
685
703
|
}
|
|
686
704
|
}
|
|
705
|
+
if (patch.telemetry && hasOwnKey(patch.telemetry, "enabled")) {
|
|
706
|
+
config.telemetry.enabled = patch.telemetry.enabled;
|
|
707
|
+
applySettingSource(settingSources, "telemetry.enabled", sourcePath);
|
|
708
|
+
}
|
|
687
709
|
}
|
|
688
710
|
function projectNetworkSettingSources(settingSources) {
|
|
689
711
|
const projected = {};
|