@workweave/router 0.2.4 → 0.2.5

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/cc-statusline.sh CHANGED
@@ -130,14 +130,18 @@ normalize_model() {
130
130
  prices='{
131
131
  "input": {
132
132
  "claude-fable-5": 0.01,
133
- "claude-haiku-4-5": 0.0008,
133
+ "claude-haiku-4-5": 0.001,
134
+ "claude-opus-4-0": 0.015,
135
+ "claude-opus-4-1": 0.015,
136
+ "claude-opus-4-5": 0.005,
134
137
  "claude-opus-4-6": 0.005,
135
138
  "claude-opus-4-7": 0.005,
136
139
  "claude-opus-4-8": 0.005,
137
140
  "claude-sonnet-4-5": 0.003,
138
141
  "claude-sonnet-4-6": 0.003,
139
- "deepseek/deepseek-v4-flash": 0.00014,
140
- "deepseek/deepseek-v4-pro": 0.00174,
142
+ "claude-sonnet-5": 0.003,
143
+ "deepseek/deepseek-v4-flash": 0.0001134,
144
+ "deepseek/deepseek-v4-pro": 0.001318,
141
145
  "gemini-2.0-flash": 0.0001,
142
146
  "gemini-2.0-flash-lite": 0.000075,
143
147
  "gemini-2.5-flash": 0.0003,
@@ -148,6 +152,7 @@ prices='{
148
152
  "gemini-3.1-flash-lite-preview": 0.0001,
149
153
  "gemini-3.1-pro-preview": 0.002,
150
154
  "gemini-3.5-flash": 0.0015,
155
+ "google/gemma-4-26b-a4b-it": 0.00015,
151
156
  "gpt-4.1": 0.002,
152
157
  "gpt-4.1-mini": 0.0004,
153
158
  "gpt-4.1-nano": 0.0001,
@@ -157,10 +162,10 @@ prices='{
157
162
  "gpt-5-chat": 0.0025,
158
163
  "gpt-5-mini": 0.0005,
159
164
  "gpt-5-nano": 0.0001,
160
- "gpt-5.4": 0.003,
161
- "gpt-5.4-mini": 0.0004,
162
- "gpt-5.4-nano": 0.0001,
163
- "gpt-5.4-pro": 0.02,
165
+ "gpt-5.4": 0.0025,
166
+ "gpt-5.4-mini": 0.00075,
167
+ "gpt-5.4-nano": 0.0002,
168
+ "gpt-5.4-pro": 0.03,
164
169
  "gpt-5.5": 0.005,
165
170
  "gpt-5.5-mini": 0.0005,
166
171
  "gpt-5.5-nano": 0.00015,
@@ -177,23 +182,27 @@ prices='{
177
182
  "qwen/qwen3-coder-next": 0.0005,
178
183
  "qwen/qwen3-next-80b-a3b-instruct": 0.00015,
179
184
  "qwen/qwen3.5-flash-02-23": 0.00005,
180
- "qwen/qwen3.6-35b-a3b": 0.00015,
185
+ "qwen/qwen3.6-35b-a3b": 0.000172,
181
186
  "qwen/qwen3.7-plus": 0.0004,
182
187
  "xiaomi/mimo-v2.5-pro": 0.001,
183
- "z-ai/glm-5": 0.0006,
184
- "z-ai/glm-5.1": 0.00105,
188
+ "z-ai/glm-5": 0.001,
189
+ "z-ai/glm-5.1": 0.0014,
185
190
  "z-ai/glm-5.2": 0.0014
186
191
  },
187
192
  "output": {
188
193
  "claude-fable-5": 0.05,
189
- "claude-haiku-4-5": 0.004,
194
+ "claude-haiku-4-5": 0.005,
195
+ "claude-opus-4-0": 0.075,
196
+ "claude-opus-4-1": 0.075,
197
+ "claude-opus-4-5": 0.025,
190
198
  "claude-opus-4-6": 0.025,
191
199
  "claude-opus-4-7": 0.025,
192
200
  "claude-opus-4-8": 0.025,
193
201
  "claude-sonnet-4-5": 0.015,
194
202
  "claude-sonnet-4-6": 0.015,
195
- "deepseek/deepseek-v4-flash": 0.00028,
196
- "deepseek/deepseek-v4-pro": 0.00348,
203
+ "claude-sonnet-5": 0.015,
204
+ "deepseek/deepseek-v4-flash": 0.0002791,
205
+ "deepseek/deepseek-v4-pro": 0.0026361,
197
206
  "gemini-2.0-flash": 0.0004,
198
207
  "gemini-2.0-flash-lite": 0.0003,
199
208
  "gemini-2.5-flash": 0.0012,
@@ -204,6 +213,7 @@ prices='{
204
213
  "gemini-3.1-flash-lite-preview": 0.0004,
205
214
  "gemini-3.1-pro-preview": 0.008,
206
215
  "gemini-3.5-flash": 0.009,
216
+ "google/gemma-4-26b-a4b-it": 0.0006,
207
217
  "gpt-4.1": 0.008,
208
218
  "gpt-4.1-mini": 0.0016,
209
219
  "gpt-4.1-nano": 0.0004,
@@ -213,14 +223,14 @@ prices='{
213
223
  "gpt-5-chat": 0.01,
214
224
  "gpt-5-mini": 0.002,
215
225
  "gpt-5-nano": 0.0004,
216
- "gpt-5.4": 0.012,
217
- "gpt-5.4-mini": 0.0016,
218
- "gpt-5.4-nano": 0.0004,
219
- "gpt-5.4-pro": 0.08,
220
- "gpt-5.5": 0.04,
226
+ "gpt-5.4": 0.015,
227
+ "gpt-5.4-mini": 0.0045,
228
+ "gpt-5.4-nano": 0.00125,
229
+ "gpt-5.4-pro": 0.18,
230
+ "gpt-5.5": 0.03,
221
231
  "gpt-5.5-mini": 0.0025,
222
232
  "gpt-5.5-nano": 0.0006,
223
- "gpt-5.5-pro": 0.12,
233
+ "gpt-5.5-pro": 0.18,
224
234
  "minimax/minimax-m2.7": 0.0012,
225
235
  "minimax/minimax-m3": 0.0012,
226
236
  "mistralai/mistral-small-2603": 0.0006,
@@ -233,11 +243,11 @@ prices='{
233
243
  "qwen/qwen3-coder-next": 0.0012,
234
244
  "qwen/qwen3-next-80b-a3b-instruct": 0.0012,
235
245
  "qwen/qwen3.5-flash-02-23": 0.00015,
236
- "qwen/qwen3.6-35b-a3b": 0.00095,
246
+ "qwen/qwen3.6-35b-a3b": 0.0012002,
237
247
  "qwen/qwen3.7-plus": 0.0016,
238
248
  "xiaomi/mimo-v2.5-pro": 0.003,
239
- "z-ai/glm-5": 0.00208,
240
- "z-ai/glm-5.1": 0.0035,
249
+ "z-ai/glm-5": 0.0032,
250
+ "z-ai/glm-5.1": 0.0044,
241
251
  "z-ai/glm-5.2": 0.0044
242
252
  }
243
253
  }'
@@ -427,20 +437,23 @@ elif [[ "$routed" == "failure" ]]; then
427
437
  # swap or compute savings against a non-model.
428
438
  printf '%s — %s%s' "$brand" "$routed" "$tokens_clause"
429
439
  elif [[ -n "$routed" ]]; then
430
- # Show the savings clause only when the session is genuinely net-saving.
440
+ # Always show the savings clause, flooring a non-positive total at $0.00.
431
441
  # session_savings is "0.0000" on fresh sessions or sessions where every
432
- # turn routed back to the selected model; it can also go negative when
433
- # sticky routing forces a haiku-tagged side-call up to a cached
434
- # sonnet/opus decision. In both cases the word "saved" would mislead,
435
- # so drop the savings clause but keep the token totals.
436
- has_savings="false"
437
- if [[ -n "$session_savings" ]] \
438
- && awk -v v="$session_savings" 'BEGIN{exit !(v+0 > 0.005)}'; then
439
- has_savings="true"
442
+ # turn routed back to the selected model, and can go negative when routing
443
+ # upgrades a turn to a pricier model (e.g. a sticky/hard-pinned side-call,
444
+ # or a hard turn escalated to opus). "saved -$X" would mislead, so clamp
445
+ # the display to $0.00 rather than dropping the clause — a $0.00 readout
446
+ # tells the user the router ran and simply didn't beat their selection.
447
+ # When the CC selection is unknown ("?" or empty) there's nothing to
448
+ # compare against, so drop the "← selection" arrow and just show routed.
449
+ display_savings="$session_savings"
450
+ if [[ -z "$display_savings" ]] \
451
+ || awk -v v="$display_savings" 'BEGIN{exit !(v+0 < 0)}'; then
452
+ display_savings="0"
440
453
  fi
441
- if [[ "$has_savings" == "true" ]]; then
454
+ if [[ -n "$selected_display" && "$selected_display" != "?" ]]; then
442
455
  printf '%s — %s ← %s · saved %s%s' \
443
- "$brand" "$routed" "$selected_display" "$(fmt_money "$session_savings")" "$tokens_clause"
456
+ "$brand" "$routed" "$selected_display" "$(fmt_money "$display_savings")" "$tokens_clause"
444
457
  else
445
458
  printf '%s — %s%s' "$brand" "$routed" "$tokens_clause"
446
459
  fi
package/install.sh CHANGED
@@ -601,6 +601,7 @@ write_opencode_config() {
601
601
  name: "Weave Router",
602
602
  options: { apiKey: $key, baseURL: $url, headers: $headers },
603
603
  models: {
604
+ "claude-sonnet-5": { name: "Claude Sonnet 5 (via Weave Router)" },
604
605
  "claude-sonnet-4-6": { name: "Claude Sonnet 4.6 (via Weave Router)" },
605
606
  "claude-opus-4-8": { name: "Claude Opus 4.8 (via Weave Router)" },
606
607
  "claude-haiku-4-5": { name: "Claude Haiku 4.5 (via Weave Router)" },
@@ -1402,9 +1403,9 @@ toggle_claude() {
1402
1403
  else
1403
1404
  # Park just the router-owned env keys, then strip them so Claude Code
1404
1405
  # falls back to its own Anthropic login.
1405
- jq '{env: ((.env // {}) | {ANTHROPIC_BASE_URL, ANTHROPIC_CUSTOM_HEADERS} | with_entries(select(.value != null)))}' "$settings_file" >"$parked"
1406
+ jq '{env: ((.env // {}) | {ANTHROPIC_BASE_URL, ANTHROPIC_CUSTOM_HEADERS, ENABLE_TOOL_SEARCH} | with_entries(select(.value != null)))}' "$settings_file" >"$parked"
1406
1407
  chmod 600 "$parked"
1407
- merged="$(jq '(.env // {}) |= del(.ANTHROPIC_BASE_URL, .ANTHROPIC_CUSTOM_HEADERS)
1408
+ merged="$(jq '(.env // {}) |= del(.ANTHROPIC_BASE_URL, .ANTHROPIC_CUSTOM_HEADERS, .ENABLE_TOOL_SEARCH)
1408
1409
  | (if (.env // {} | length) == 0 then del(.env) else . end)' "$settings_file")"
1409
1410
  printf '%s\n' "$merged" >"$settings_file"
1410
1411
  fi
@@ -2070,14 +2071,18 @@ normalize_model() {
2070
2071
  prices='{
2071
2072
  "input": {
2072
2073
  "claude-fable-5": 0.01,
2073
- "claude-haiku-4-5": 0.0008,
2074
+ "claude-haiku-4-5": 0.001,
2075
+ "claude-opus-4-0": 0.015,
2076
+ "claude-opus-4-1": 0.015,
2077
+ "claude-opus-4-5": 0.005,
2074
2078
  "claude-opus-4-6": 0.005,
2075
2079
  "claude-opus-4-7": 0.005,
2076
2080
  "claude-opus-4-8": 0.005,
2077
2081
  "claude-sonnet-4-5": 0.003,
2078
2082
  "claude-sonnet-4-6": 0.003,
2079
- "deepseek/deepseek-v4-flash": 0.00014,
2080
- "deepseek/deepseek-v4-pro": 0.00174,
2083
+ "claude-sonnet-5": 0.003,
2084
+ "deepseek/deepseek-v4-flash": 0.0001134,
2085
+ "deepseek/deepseek-v4-pro": 0.001318,
2081
2086
  "gemini-2.0-flash": 0.0001,
2082
2087
  "gemini-2.0-flash-lite": 0.000075,
2083
2088
  "gemini-2.5-flash": 0.0003,
@@ -2088,6 +2093,7 @@ prices='{
2088
2093
  "gemini-3.1-flash-lite-preview": 0.0001,
2089
2094
  "gemini-3.1-pro-preview": 0.002,
2090
2095
  "gemini-3.5-flash": 0.0015,
2096
+ "google/gemma-4-26b-a4b-it": 0.00015,
2091
2097
  "gpt-4.1": 0.002,
2092
2098
  "gpt-4.1-mini": 0.0004,
2093
2099
  "gpt-4.1-nano": 0.0001,
@@ -2097,10 +2103,10 @@ prices='{
2097
2103
  "gpt-5-chat": 0.0025,
2098
2104
  "gpt-5-mini": 0.0005,
2099
2105
  "gpt-5-nano": 0.0001,
2100
- "gpt-5.4": 0.003,
2101
- "gpt-5.4-mini": 0.0004,
2102
- "gpt-5.4-nano": 0.0001,
2103
- "gpt-5.4-pro": 0.02,
2106
+ "gpt-5.4": 0.0025,
2107
+ "gpt-5.4-mini": 0.00075,
2108
+ "gpt-5.4-nano": 0.0002,
2109
+ "gpt-5.4-pro": 0.03,
2104
2110
  "gpt-5.5": 0.005,
2105
2111
  "gpt-5.5-mini": 0.0005,
2106
2112
  "gpt-5.5-nano": 0.00015,
@@ -2117,23 +2123,27 @@ prices='{
2117
2123
  "qwen/qwen3-coder-next": 0.0005,
2118
2124
  "qwen/qwen3-next-80b-a3b-instruct": 0.00015,
2119
2125
  "qwen/qwen3.5-flash-02-23": 0.00005,
2120
- "qwen/qwen3.6-35b-a3b": 0.00015,
2126
+ "qwen/qwen3.6-35b-a3b": 0.000172,
2121
2127
  "qwen/qwen3.7-plus": 0.0004,
2122
2128
  "xiaomi/mimo-v2.5-pro": 0.001,
2123
- "z-ai/glm-5": 0.0006,
2124
- "z-ai/glm-5.1": 0.00105,
2129
+ "z-ai/glm-5": 0.001,
2130
+ "z-ai/glm-5.1": 0.0014,
2125
2131
  "z-ai/glm-5.2": 0.0014
2126
2132
  },
2127
2133
  "output": {
2128
2134
  "claude-fable-5": 0.05,
2129
- "claude-haiku-4-5": 0.004,
2135
+ "claude-haiku-4-5": 0.005,
2136
+ "claude-opus-4-0": 0.075,
2137
+ "claude-opus-4-1": 0.075,
2138
+ "claude-opus-4-5": 0.025,
2130
2139
  "claude-opus-4-6": 0.025,
2131
2140
  "claude-opus-4-7": 0.025,
2132
2141
  "claude-opus-4-8": 0.025,
2133
2142
  "claude-sonnet-4-5": 0.015,
2134
2143
  "claude-sonnet-4-6": 0.015,
2135
- "deepseek/deepseek-v4-flash": 0.00028,
2136
- "deepseek/deepseek-v4-pro": 0.00348,
2144
+ "claude-sonnet-5": 0.015,
2145
+ "deepseek/deepseek-v4-flash": 0.0002791,
2146
+ "deepseek/deepseek-v4-pro": 0.0026361,
2137
2147
  "gemini-2.0-flash": 0.0004,
2138
2148
  "gemini-2.0-flash-lite": 0.0003,
2139
2149
  "gemini-2.5-flash": 0.0012,
@@ -2144,6 +2154,7 @@ prices='{
2144
2154
  "gemini-3.1-flash-lite-preview": 0.0004,
2145
2155
  "gemini-3.1-pro-preview": 0.008,
2146
2156
  "gemini-3.5-flash": 0.009,
2157
+ "google/gemma-4-26b-a4b-it": 0.0006,
2147
2158
  "gpt-4.1": 0.008,
2148
2159
  "gpt-4.1-mini": 0.0016,
2149
2160
  "gpt-4.1-nano": 0.0004,
@@ -2153,14 +2164,14 @@ prices='{
2153
2164
  "gpt-5-chat": 0.01,
2154
2165
  "gpt-5-mini": 0.002,
2155
2166
  "gpt-5-nano": 0.0004,
2156
- "gpt-5.4": 0.012,
2157
- "gpt-5.4-mini": 0.0016,
2158
- "gpt-5.4-nano": 0.0004,
2159
- "gpt-5.4-pro": 0.08,
2160
- "gpt-5.5": 0.04,
2167
+ "gpt-5.4": 0.015,
2168
+ "gpt-5.4-mini": 0.0045,
2169
+ "gpt-5.4-nano": 0.00125,
2170
+ "gpt-5.4-pro": 0.18,
2171
+ "gpt-5.5": 0.03,
2161
2172
  "gpt-5.5-mini": 0.0025,
2162
2173
  "gpt-5.5-nano": 0.0006,
2163
- "gpt-5.5-pro": 0.12,
2174
+ "gpt-5.5-pro": 0.18,
2164
2175
  "minimax/minimax-m2.7": 0.0012,
2165
2176
  "minimax/minimax-m3": 0.0012,
2166
2177
  "mistralai/mistral-small-2603": 0.0006,
@@ -2173,11 +2184,11 @@ prices='{
2173
2184
  "qwen/qwen3-coder-next": 0.0012,
2174
2185
  "qwen/qwen3-next-80b-a3b-instruct": 0.0012,
2175
2186
  "qwen/qwen3.5-flash-02-23": 0.00015,
2176
- "qwen/qwen3.6-35b-a3b": 0.00095,
2187
+ "qwen/qwen3.6-35b-a3b": 0.0012002,
2177
2188
  "qwen/qwen3.7-plus": 0.0016,
2178
2189
  "xiaomi/mimo-v2.5-pro": 0.003,
2179
- "z-ai/glm-5": 0.00208,
2180
- "z-ai/glm-5.1": 0.0035,
2190
+ "z-ai/glm-5": 0.0032,
2191
+ "z-ai/glm-5.1": 0.0044,
2181
2192
  "z-ai/glm-5.2": 0.0044
2182
2193
  }
2183
2194
  }'
@@ -2367,20 +2378,23 @@ elif [[ "$routed" == "failure" ]]; then
2367
2378
  # swap or compute savings against a non-model.
2368
2379
  printf '%s — %s%s' "$brand" "$routed" "$tokens_clause"
2369
2380
  elif [[ -n "$routed" ]]; then
2370
- # Show the savings clause only when the session is genuinely net-saving.
2381
+ # Always show the savings clause, flooring a non-positive total at $0.00.
2371
2382
  # session_savings is "0.0000" on fresh sessions or sessions where every
2372
- # turn routed back to the selected model; it can also go negative when
2373
- # sticky routing forces a haiku-tagged side-call up to a cached
2374
- # sonnet/opus decision. In both cases the word "saved" would mislead,
2375
- # so drop the savings clause but keep the token totals.
2376
- has_savings="false"
2377
- if [[ -n "$session_savings" ]] \
2378
- && awk -v v="$session_savings" 'BEGIN{exit !(v+0 > 0.005)}'; then
2379
- has_savings="true"
2380
- fi
2381
- if [[ "$has_savings" == "true" ]]; then
2383
+ # turn routed back to the selected model, and can go negative when routing
2384
+ # upgrades a turn to a pricier model (e.g. a sticky/hard-pinned side-call,
2385
+ # or a hard turn escalated to opus). "saved -$X" would mislead, so clamp
2386
+ # the display to $0.00 rather than dropping the clause — a $0.00 readout
2387
+ # tells the user the router ran and simply didn't beat their selection.
2388
+ # When the CC selection is unknown ("?" or empty) there's nothing to
2389
+ # compare against, so drop the "← selection" arrow and just show routed.
2390
+ display_savings="$session_savings"
2391
+ if [[ -z "$display_savings" ]] \
2392
+ || awk -v v="$display_savings" 'BEGIN{exit !(v+0 < 0)}'; then
2393
+ display_savings="0"
2394
+ fi
2395
+ if [[ -n "$selected_display" && "$selected_display" != "?" ]]; then
2382
2396
  printf '%s — %s ← %s · saved %s%s' \
2383
- "$brand" "$routed" "$selected_display" "$(fmt_money "$session_savings")" "$tokens_clause"
2397
+ "$brand" "$routed" "$selected_display" "$(fmt_money "$display_savings")" "$tokens_clause"
2384
2398
  else
2385
2399
  printf '%s — %s%s' "$brand" "$routed" "$tokens_clause"
2386
2400
  fi
@@ -2417,14 +2431,19 @@ if [ -n "$user_name" ]; then
2417
2431
  fi
2418
2432
  custom_headers="$custom_headers"$'\n'"X-App: claude-code"
2419
2433
 
2434
+ # Setting ANTHROPIC_BASE_URL makes Claude Code treat us as non-first-party and
2435
+ # disable MCP tool-search deferral, inlining every tool schema into every request
2436
+ # — a large uncompactable prefix that can push a session into an autocompact
2437
+ # thrash loop. ENABLE_TOOL_SEARCH=auto restores on-demand loading (Claude Code's
2438
+ # own first-party default).
2420
2439
  if [ "$scope" = "project" ] && [ -z "$install_dir" ]; then
2421
2440
  jq -n --arg url "$base_url" --arg sl "$statusline_path_for_settings" '{
2422
- env: { ANTHROPIC_BASE_URL: $url },
2441
+ env: { ANTHROPIC_BASE_URL: $url, ENABLE_TOOL_SEARCH: "auto" },
2423
2442
  statusLine: { type: "command", command: $sl }
2424
2443
  }' >"$tmp_patch"
2425
2444
  else
2426
2445
  jq -n --arg url "$base_url" --arg header "$custom_headers" --arg sl "$statusline_path_for_settings" '{
2427
- env: { ANTHROPIC_BASE_URL: $url, ANTHROPIC_CUSTOM_HEADERS: $header },
2446
+ env: { ANTHROPIC_BASE_URL: $url, ANTHROPIC_CUSTOM_HEADERS: $header, ENABLE_TOOL_SEARCH: "auto" },
2428
2447
  statusLine: { type: "command", command: $sl }
2429
2448
  }' >"$tmp_patch"
2430
2449
  fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workweave/router",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "One-command installer that points Claude Code, Codex, opencode, or pi at the Weave Router. For pi it also ships the routing extension, loaded via pi.extensions.",
5
5
  "bin": {
6
6
  "weave-router": "bin.js"
package/uninstall.sh CHANGED
@@ -475,13 +475,13 @@ else
475
475
  fi
476
476
 
477
477
  if [ -f "$settings_file" ]; then
478
- # Only remove keys we actually installed: scrub our two env vars, and only
478
+ # Only remove keys we actually installed: scrub our env vars, and only
479
479
  # delete `statusLine` / `apiKeyHelper` when they point at scripts this
480
480
  # installer used in older versions. Otherwise an unrelated user-configured
481
481
  # statusLine or apiKeyHelper would be silently clobbered.
482
482
  cleaned="$(jq '
483
483
  if .env then
484
- .env |= (del(.ANTHROPIC_BASE_URL, .ANTHROPIC_AUTH_TOKEN, .ANTHROPIC_CUSTOM_HEADERS))
484
+ .env |= (del(.ANTHROPIC_BASE_URL, .ANTHROPIC_AUTH_TOKEN, .ANTHROPIC_CUSTOM_HEADERS, .ENABLE_TOOL_SEARCH))
485
485
  | (if (.env | length) == 0 then del(.env) else . end)
486
486
  else . end
487
487
  | (if (.statusLine.command // "" | tostring | endswith("cc-statusline.sh"))
@@ -501,7 +501,7 @@ if [ -n "$local_settings_file" ] && [ -f "$local_settings_file" ]; then
501
501
  # uninstall fully reverts a toggled-off install.
502
502
  cleaned="$(jq '
503
503
  if .env then
504
- .env |= (del(.ANTHROPIC_BASE_URL, .ANTHROPIC_AUTH_TOKEN, .ANTHROPIC_CUSTOM_HEADERS))
504
+ .env |= (del(.ANTHROPIC_BASE_URL, .ANTHROPIC_AUTH_TOKEN, .ANTHROPIC_CUSTOM_HEADERS, .ENABLE_TOOL_SEARCH))
505
505
  | (if (.env | length) == 0 then del(.env) else . end)
506
506
  else . end
507
507
  | del(.apiKeyHelper)