@shipit-ai/cli 1.171.0 → 1.172.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/apis/json-schema/CodexCliProxyConfig.yaml +8 -0
- package/apis/json-schema/GeminiCliProxyConfig.yaml +8 -0
- package/apis/json-schema/LiteLLMProxyConfig.yaml +6 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +26 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +26 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-litellm-proxy-multi-agent.d.ts +12 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-litellm-proxy-multi-agent.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/056-add-litellm-proxy-multi-agent.js +20 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +7 -3
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.js +8 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.js +20 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.js +23 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +8 -0
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.js +79 -7
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts +10 -3
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.js +87 -13
- package/dist/translations/ar/web.json +6 -1
- package/dist/translations/de/web.json +6 -1
- package/dist/translations/en/web.json +6 -1
- package/dist/translations/es/web.json +6 -1
- package/dist/translations/fr/web.json +6 -1
- package/dist/translations/he/web.json +6 -1
- package/dist/translations/pt/web.json +6 -1
- package/dist/translations/ru/web.json +6 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +3 -3
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/plugins/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/plugins/page.js.nft.json +1 -1
- package/web/.next/server/app/plugins/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +12 -12
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
- package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0un-3~2.js +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dec29w._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dec29w._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11-~i9u._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
- package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
- package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
- package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
- package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
- package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_11hrdyl._.js → _0ik5uly._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_11hrdyl._.js.map → _0ik5uly._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0o.xc6x._.js +1 -1
- package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
- package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0q4ou83._.js → _0pqw.55._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0q4ou83._.js.map → _0pqw.55._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
- package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
- package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0tcccbb._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0u3d8.n._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
- package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_10joy2y._.js +1 -1
- package/web/.next/server/chunks/ssr/_10joy2y._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
- package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0h_81zd._.js → _13o1d1i._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0h_81zd._.js.map → _13o1d1i._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +55 -55
- package/web/.next/static/chunks/02e5.-kk~ag_i.js +1 -0
- package/web/.next/static/chunks/{0-glbn-_j79ge.js → 07e~pkh4ikdtq.js} +1 -1
- package/web/.next/static/chunks/0aom-74j.wtkt.js +1 -0
- package/web/.next/static/chunks/{0jpdu~hr9yant.js → 0aworyfo5xz3f.js} +1 -1
- package/web/.next/static/chunks/{0s1uxv-vz4g~..js → 0ddwj6.~yj.u5.js} +1 -1
- package/web/.next/static/chunks/{0nry24zef5x6d.js → 0m0hb2m1lgy.r.js} +1 -1
- package/web/.next/static/chunks/{0mmo8sojp2la5.js → 0prk~fhfyg~yg.js} +1 -1
- package/web/.next/static/chunks/{02z512ozs7al_.js → 0q.xmdro9u05g.js} +1 -1
- package/web/.next/static/chunks/{0x4yi7ly9kwn5.js → 0rd5nu5ru3gje.js} +1 -1
- package/web/.next/static/chunks/{017xamyz033tm.js → 0rm13o3bvc9o..js} +1 -1
- package/web/.next/static/chunks/{0eemg.2by.~76.js → 0uz.~ob1qtjhj.js} +1 -1
- package/web/.next/static/chunks/0vb84wrbin-ef.js +1 -0
- package/web/.next/static/chunks/{161s7._zxasc0.js → 100y4~jpwu8~t.js} +3 -3
- package/web/.next/static/chunks/{11f-uj04jrom-.js → 16678zkd7o7-z.js} +1 -1
- package/web/.next/static/chunks/01tzmtex7umeb.js +0 -1
- package/web/.next/static/chunks/0cx16obgb~.zq.js +0 -1
- package/web/.next/static/chunks/12lj54j~w8~13.js +0 -1
- /package/web/.next/static/{FNmgUvRV-pz0hqn250ePU → hWgOeXuQ6p-VoJvFXhk5g}/_buildManifest.js +0 -0
- /package/web/.next/static/{FNmgUvRV-pz0hqn250ePU → hWgOeXuQ6p-VoJvFXhk5g}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{FNmgUvRV-pz0hqn250ePU → hWgOeXuQ6p-VoJvFXhk5g}/_ssgManifest.js +0 -0
package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.js
CHANGED
|
@@ -10,11 +10,47 @@ import { SettingsSection, SettingsRow } from './settings-section-utils.js';
|
|
|
10
10
|
import { Input } from '../../ui/input.js';
|
|
11
11
|
import { Textarea } from '../../ui/textarea.js';
|
|
12
12
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../ui/select.js';
|
|
13
|
+
/** Agent types that support env-var-based proxy routing (Tier 1) */
|
|
14
|
+
const TIER1_AGENTS = new Set(['claude-code', 'gemini-cli', 'codex-cli']);
|
|
15
|
+
/** Agent types that need documentation-only panels (Tier 2) */
|
|
16
|
+
const TIER2_AGENTS = new Set(['cursor', 'copilot-cli']);
|
|
17
|
+
/** Get the per-agent proxy config key for building payloads */
|
|
18
|
+
function agentConfigKey(agentType) {
|
|
19
|
+
switch (agentType) {
|
|
20
|
+
case 'claude-code':
|
|
21
|
+
return 'claudeCode';
|
|
22
|
+
case 'gemini-cli':
|
|
23
|
+
return 'geminiCli';
|
|
24
|
+
case 'codex-cli':
|
|
25
|
+
return 'codexCli';
|
|
26
|
+
default:
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Get the current routing mode for the active agent */
|
|
31
|
+
function getRoutingMode(settings) {
|
|
32
|
+
const agentType = settings.agent.type;
|
|
33
|
+
switch (agentType) {
|
|
34
|
+
case 'claude-code':
|
|
35
|
+
return settings.litellmProxy?.claudeCode?.routingMode ?? LiteLLMProxyRoutingMode.direct;
|
|
36
|
+
case 'gemini-cli':
|
|
37
|
+
return settings.litellmProxy?.geminiCli?.routingMode ?? LiteLLMProxyRoutingMode.direct;
|
|
38
|
+
case 'codex-cli':
|
|
39
|
+
return settings.litellmProxy?.codexCli?.routingMode ?? LiteLLMProxyRoutingMode.direct;
|
|
40
|
+
default:
|
|
41
|
+
return LiteLLMProxyRoutingMode.direct;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Whether this agent supports passthrough mode */
|
|
45
|
+
function supportsPassthrough(agentType) {
|
|
46
|
+
return agentType === 'claude-code';
|
|
47
|
+
}
|
|
13
48
|
export function LiteLLMProxyRoutingSection({ settings }) {
|
|
14
49
|
const { t } = useTranslation('web');
|
|
15
50
|
const [, startTransition] = useTransition();
|
|
51
|
+
const agentType = settings.agent.type;
|
|
16
52
|
const cc = settings.litellmProxy?.claudeCode;
|
|
17
|
-
const [routingMode, setRoutingMode] = useState(
|
|
53
|
+
const [routingMode, setRoutingMode] = useState(getRoutingMode(settings));
|
|
18
54
|
const [customHeaders, setCustomHeaders] = useState(cc?.customHeaders ?? '');
|
|
19
55
|
const [sonnetModel, setSonnetModel] = useState(cc?.sonnetModel ?? '');
|
|
20
56
|
const [haikuModel, setHaikuModel] = useState(cc?.haikuModel ?? '');
|
|
@@ -24,6 +60,10 @@ export function LiteLLMProxyRoutingSection({ settings }) {
|
|
|
24
60
|
const originalHaikuModel = cc?.haikuModel ?? '';
|
|
25
61
|
const originalOpusModel = cc?.opusModel ?? '';
|
|
26
62
|
const showProxyFields = routingMode !== LiteLLMProxyRoutingMode.direct;
|
|
63
|
+
const isTier1 = TIER1_AGENTS.has(agentType);
|
|
64
|
+
const isTier2 = TIER2_AGENTS.has(agentType);
|
|
65
|
+
const proxyUrl = settings.litellmProxy?.baseUrl ?? '';
|
|
66
|
+
const proxyApiKey = settings.litellmProxy?.apiKey ?? '';
|
|
27
67
|
function save(payload) {
|
|
28
68
|
startTransition(async () => {
|
|
29
69
|
const result = await updateSettingsAction(payload);
|
|
@@ -33,14 +73,27 @@ export function LiteLLMProxyRoutingSection({ settings }) {
|
|
|
33
73
|
});
|
|
34
74
|
}
|
|
35
75
|
function buildPayload(overrides) {
|
|
76
|
+
const key = agentConfigKey(agentType);
|
|
77
|
+
if (!key)
|
|
78
|
+
return {};
|
|
79
|
+
if (agentType === 'claude-code') {
|
|
80
|
+
return {
|
|
81
|
+
litellmProxy: {
|
|
82
|
+
claudeCode: {
|
|
83
|
+
routingMode: overrides?.routingMode ?? routingMode,
|
|
84
|
+
customHeaders: overrides?.customHeaders ?? customHeaders,
|
|
85
|
+
sonnetModel: overrides?.sonnetModel ?? sonnetModel,
|
|
86
|
+
haikuModel: overrides?.haikuModel ?? haikuModel,
|
|
87
|
+
opusModel: overrides?.opusModel ?? opusModel,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// Gemini CLI and Codex CLI: only routingMode
|
|
36
93
|
return {
|
|
37
94
|
litellmProxy: {
|
|
38
|
-
|
|
95
|
+
[key]: {
|
|
39
96
|
routingMode: overrides?.routingMode ?? routingMode,
|
|
40
|
-
customHeaders: overrides?.customHeaders ?? customHeaders,
|
|
41
|
-
sonnetModel: overrides?.sonnetModel ?? sonnetModel,
|
|
42
|
-
haikuModel: overrides?.haikuModel ?? haikuModel,
|
|
43
|
-
opusModel: overrides?.opusModel ?? opusModel,
|
|
44
97
|
},
|
|
45
98
|
},
|
|
46
99
|
};
|
|
@@ -49,7 +102,26 @@ export function LiteLLMProxyRoutingSection({ settings }) {
|
|
|
49
102
|
setRoutingMode(value);
|
|
50
103
|
save(buildPayload({ routingMode: value }));
|
|
51
104
|
}
|
|
52
|
-
|
|
105
|
+
// Unsupported agent type
|
|
106
|
+
if (!isTier1 && !isTier2) {
|
|
107
|
+
return (_jsx(SettingsSection, { icon: Route, title: t('settings.litellmProxy.routing.title'), description: t('settings.litellmProxy.routing.description'), testId: "litellm-proxy-routing-section", tooltip: t('settings.litellmProxy.routing.hint'), children: _jsx(SettingsRow, { label: "", description: t('settings.litellmProxy.routing.notSupported'), children: _jsx("span", {}) }) }));
|
|
108
|
+
}
|
|
109
|
+
// Tier 2: Documentation-only panels
|
|
110
|
+
if (isTier2) {
|
|
111
|
+
const isCursor = agentType === 'cursor';
|
|
112
|
+
const displayUrl = proxyUrl
|
|
113
|
+
? isCursor
|
|
114
|
+
? `${proxyUrl.replace(/\/+$/, '')}/cursor`
|
|
115
|
+
: proxyUrl
|
|
116
|
+
: '';
|
|
117
|
+
return (_jsx(SettingsSection, { icon: Route, title: t('settings.litellmProxy.routing.title'), description: t('settings.litellmProxy.routing.description'), testId: "litellm-proxy-routing-section", tooltip: t('settings.litellmProxy.routing.hint'), children: _jsx(SettingsRow, { label: isCursor
|
|
118
|
+
? t('settings.litellmProxy.routing.cursorInstructions')
|
|
119
|
+
: t('settings.litellmProxy.routing.copilotInstructions'), description: isCursor
|
|
120
|
+
? t('settings.litellmProxy.routing.cursorDescription')
|
|
121
|
+
: t('settings.litellmProxy.routing.copilotDescription'), children: _jsxs("div", { className: "w-64 space-y-2", children: [_jsx("code", { className: "bg-muted block rounded px-2 py-1 text-xs break-all", children: displayUrl }), isCursor && proxyApiKey ? (_jsx("code", { className: "bg-muted block rounded px-2 py-1 text-xs break-all", children: proxyApiKey })) : null] }) }) }));
|
|
122
|
+
}
|
|
123
|
+
// Tier 1: Env-var-based proxy routing (Claude Code, Gemini CLI, Codex CLI)
|
|
124
|
+
return (_jsxs(SettingsSection, { icon: Route, title: t('settings.litellmProxy.routing.title'), description: t('settings.litellmProxy.routing.description'), testId: "litellm-proxy-routing-section", tooltip: t('settings.litellmProxy.routing.hint'), children: [_jsx(SettingsRow, { label: t('settings.litellmProxy.routing.mode'), description: t('settings.litellmProxy.routing.modeDescription'), htmlFor: "litellm-routing-mode", children: _jsxs(Select, { value: routingMode, onValueChange: handleModeChange, children: [_jsx(SelectTrigger, { id: "litellm-routing-mode", "data-testid": "litellm-routing-mode-select", className: "w-48 text-xs", children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: LiteLLMProxyRoutingMode.direct, children: t('settings.litellmProxy.routing.modeDirect') }), _jsx(SelectItem, { value: LiteLLMProxyRoutingMode.proxy, children: t('settings.litellmProxy.routing.modeProxy') }), supportsPassthrough(agentType) && (_jsx(SelectItem, { value: LiteLLMProxyRoutingMode.passthrough, children: t('settings.litellmProxy.routing.modePassthrough') }))] })] }) }), routingMode === LiteLLMProxyRoutingMode.passthrough && (_jsx(SettingsRow, { label: "", description: t('settings.litellmProxy.routing.passthroughHelp'), children: _jsx("span", {}) })), showProxyFields && agentType === 'claude-code' ? (_jsxs(_Fragment, { children: [_jsx(SettingsRow, { label: t('settings.litellmProxy.routing.customHeaders'), description: t('settings.litellmProxy.routing.customHeadersDescription'), htmlFor: "litellm-custom-headers", children: _jsx(Textarea, { id: "litellm-custom-headers", "data-testid": "litellm-custom-headers-input", placeholder: 'x-litellm-customer-id: my-user\nx-litellm-tags: project:acme', value: customHeaders, onChange: (e) => setCustomHeaders(e.target.value), onBlur: () => {
|
|
53
125
|
if (customHeaders !== originalCustomHeaders) {
|
|
54
126
|
save(buildPayload({ customHeaders }));
|
|
55
127
|
}
|
|
@@ -10,7 +10,14 @@ declare const meta: {
|
|
|
10
10
|
};
|
|
11
11
|
export default meta;
|
|
12
12
|
type Story = StoryObj<typeof meta>;
|
|
13
|
-
export declare const
|
|
14
|
-
export declare const
|
|
15
|
-
export declare const
|
|
13
|
+
export declare const ClaudeCodeDirect: Story;
|
|
14
|
+
export declare const ClaudeCodeProxy: Story;
|
|
15
|
+
export declare const ClaudeCodePassthrough: Story;
|
|
16
|
+
export declare const GeminiCliDirect: Story;
|
|
17
|
+
export declare const GeminiCliProxy: Story;
|
|
18
|
+
export declare const CodexCliDirect: Story;
|
|
19
|
+
export declare const CodexCliProxy: Story;
|
|
20
|
+
export declare const CursorDocs: Story;
|
|
21
|
+
export declare const CopilotDocs: Story;
|
|
22
|
+
export declare const UnsupportedAgent: Story;
|
|
16
23
|
//# sourceMappingURL=litellm-proxy-routing-section.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"litellm-proxy-routing-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAa7E,QAAA,MAAM,IAAI;;;;;;;CAOyC,CAAC;AAEpD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"litellm-proxy-routing-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAa7E,QAAA,MAAM,IAAI;;;;;;;CAOyC,CAAC;AAEpD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAInC,eAAO,MAAM,gBAAgB,EAAE,KAW9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAe7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAWnC,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,KAW7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAW5B,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,KAW5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAW3B,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC;AAIF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAIF,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC"}
|
|
@@ -18,47 +18,121 @@ const meta = {
|
|
|
18
18
|
},
|
|
19
19
|
};
|
|
20
20
|
export default meta;
|
|
21
|
-
|
|
21
|
+
// --- Claude Code (Tier 1, full features) ---
|
|
22
|
+
export const ClaudeCodeDirect = {
|
|
22
23
|
args: {
|
|
23
24
|
settings: {
|
|
24
25
|
...baseSettings,
|
|
26
|
+
agent: { ...baseSettings.agent, type: 'claude-code' },
|
|
25
27
|
litellmProxy: {
|
|
26
28
|
...baseSettings.litellmProxy,
|
|
27
|
-
claudeCode: {
|
|
28
|
-
routingMode: LiteLLMProxyRoutingMode.direct,
|
|
29
|
-
},
|
|
29
|
+
claudeCode: { routingMode: LiteLLMProxyRoutingMode.direct },
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
32
|
},
|
|
33
33
|
};
|
|
34
|
-
export const
|
|
34
|
+
export const ClaudeCodeProxy = {
|
|
35
35
|
args: {
|
|
36
36
|
settings: {
|
|
37
37
|
...baseSettings,
|
|
38
|
+
agent: { ...baseSettings.agent, type: 'claude-code' },
|
|
38
39
|
litellmProxy: {
|
|
39
40
|
...baseSettings.litellmProxy,
|
|
40
41
|
claudeCode: {
|
|
41
42
|
routingMode: LiteLLMProxyRoutingMode.proxy,
|
|
42
|
-
customHeaders: 'x-litellm-customer-id: user-123
|
|
43
|
+
customHeaders: 'x-litellm-customer-id: user-123',
|
|
43
44
|
sonnetModel: 'claude-sonnet-4-6',
|
|
44
|
-
haikuModel: 'claude-haiku-4-5',
|
|
45
|
-
opusModel: 'claude-opus-4-6',
|
|
46
45
|
},
|
|
47
46
|
},
|
|
48
47
|
},
|
|
49
48
|
},
|
|
50
49
|
};
|
|
51
|
-
export const
|
|
50
|
+
export const ClaudeCodePassthrough = {
|
|
52
51
|
args: {
|
|
53
52
|
settings: {
|
|
54
53
|
...baseSettings,
|
|
54
|
+
agent: { ...baseSettings.agent, type: 'claude-code' },
|
|
55
55
|
litellmProxy: {
|
|
56
56
|
...baseSettings.litellmProxy,
|
|
57
|
-
claudeCode: {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
claudeCode: { routingMode: LiteLLMProxyRoutingMode.passthrough },
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
// --- Gemini CLI (Tier 1, direct/proxy only) ---
|
|
63
|
+
export const GeminiCliDirect = {
|
|
64
|
+
args: {
|
|
65
|
+
settings: {
|
|
66
|
+
...baseSettings,
|
|
67
|
+
agent: { ...baseSettings.agent, type: 'gemini-cli' },
|
|
68
|
+
litellmProxy: {
|
|
69
|
+
...baseSettings.litellmProxy,
|
|
70
|
+
geminiCli: { routingMode: LiteLLMProxyRoutingMode.direct },
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
export const GeminiCliProxy = {
|
|
76
|
+
args: {
|
|
77
|
+
settings: {
|
|
78
|
+
...baseSettings,
|
|
79
|
+
agent: { ...baseSettings.agent, type: 'gemini-cli' },
|
|
80
|
+
litellmProxy: {
|
|
81
|
+
...baseSettings.litellmProxy,
|
|
82
|
+
geminiCli: { routingMode: LiteLLMProxyRoutingMode.proxy },
|
|
61
83
|
},
|
|
62
84
|
},
|
|
63
85
|
},
|
|
64
86
|
};
|
|
87
|
+
// --- Codex CLI (Tier 1, direct/proxy only) ---
|
|
88
|
+
export const CodexCliDirect = {
|
|
89
|
+
args: {
|
|
90
|
+
settings: {
|
|
91
|
+
...baseSettings,
|
|
92
|
+
agent: { ...baseSettings.agent, type: 'codex-cli' },
|
|
93
|
+
litellmProxy: {
|
|
94
|
+
...baseSettings.litellmProxy,
|
|
95
|
+
codexCli: { routingMode: LiteLLMProxyRoutingMode.direct },
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
export const CodexCliProxy = {
|
|
101
|
+
args: {
|
|
102
|
+
settings: {
|
|
103
|
+
...baseSettings,
|
|
104
|
+
agent: { ...baseSettings.agent, type: 'codex-cli' },
|
|
105
|
+
litellmProxy: {
|
|
106
|
+
...baseSettings.litellmProxy,
|
|
107
|
+
codexCli: { routingMode: LiteLLMProxyRoutingMode.proxy },
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
// --- Cursor (Tier 2, documentation panel) ---
|
|
113
|
+
export const CursorDocs = {
|
|
114
|
+
args: {
|
|
115
|
+
settings: {
|
|
116
|
+
...baseSettings,
|
|
117
|
+
agent: { ...baseSettings.agent, type: 'cursor' },
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
// --- Copilot CLI (Tier 2, documentation panel) ---
|
|
122
|
+
export const CopilotDocs = {
|
|
123
|
+
args: {
|
|
124
|
+
settings: {
|
|
125
|
+
...baseSettings,
|
|
126
|
+
agent: { ...baseSettings.agent, type: 'copilot-cli' },
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
// --- Unsupported agent ---
|
|
131
|
+
export const UnsupportedAgent = {
|
|
132
|
+
args: {
|
|
133
|
+
settings: {
|
|
134
|
+
...baseSettings,
|
|
135
|
+
agent: { ...baseSettings.agent, type: 'rovo-dev' },
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
};
|
|
@@ -242,7 +242,12 @@
|
|
|
242
242
|
"sonnetModel": "Sonnet Model Override",
|
|
243
243
|
"haikuModel": "Haiku Model Override",
|
|
244
244
|
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
245
|
+
"modelOverrideDescription": "Override the default model routed through LiteLLM",
|
|
246
|
+
"notSupported": "Proxy routing is not supported for this agent type.",
|
|
247
|
+
"cursorInstructions": "Cursor Setup Instructions",
|
|
248
|
+
"cursorDescription": "Add these values to Cursor Settings > Models > Override OpenAI Base URL and API Key. Only Ask and Plan modes support custom API keys — Agent mode does not.",
|
|
249
|
+
"copilotInstructions": "GitHub Copilot Setup Instructions",
|
|
250
|
+
"copilotDescription": "Add this to your VS Code settings.json under github.copilot.advanced: { \"debug.overrideProxyUrl\": \"<url>\", \"debug.testOverrideProxyUrl\": \"<url>\" }. These are undocumented debug settings."
|
|
246
251
|
}
|
|
247
252
|
},
|
|
248
253
|
"interactiveAgent": {
|
|
@@ -228,7 +228,12 @@
|
|
|
228
228
|
"sonnetModel": "Sonnet Model Override",
|
|
229
229
|
"haikuModel": "Haiku Model Override",
|
|
230
230
|
"opusModel": "Opus Model Override",
|
|
231
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
231
|
+
"modelOverrideDescription": "Override the default model routed through LiteLLM",
|
|
232
|
+
"notSupported": "Proxy routing is not supported for this agent type.",
|
|
233
|
+
"cursorInstructions": "Cursor Setup Instructions",
|
|
234
|
+
"cursorDescription": "Add these values to Cursor Settings > Models > Override OpenAI Base URL and API Key. Only Ask and Plan modes support custom API keys — Agent mode does not.",
|
|
235
|
+
"copilotInstructions": "GitHub Copilot Setup Instructions",
|
|
236
|
+
"copilotDescription": "Add this to your VS Code settings.json under github.copilot.advanced: { \"debug.overrideProxyUrl\": \"<url>\", \"debug.testOverrideProxyUrl\": \"<url>\" }. These are undocumented debug settings."
|
|
232
237
|
}
|
|
233
238
|
},
|
|
234
239
|
"interactiveAgent": {
|
|
@@ -242,7 +242,12 @@
|
|
|
242
242
|
"sonnetModel": "Sonnet Model Override",
|
|
243
243
|
"haikuModel": "Haiku Model Override",
|
|
244
244
|
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
245
|
+
"modelOverrideDescription": "Override the default model routed through LiteLLM",
|
|
246
|
+
"notSupported": "Proxy routing is not supported for this agent type.",
|
|
247
|
+
"cursorInstructions": "Cursor Setup Instructions",
|
|
248
|
+
"cursorDescription": "Add these values to Cursor Settings > Models > Override OpenAI Base URL and API Key. Only Ask and Plan modes support custom API keys — Agent mode does not.",
|
|
249
|
+
"copilotInstructions": "GitHub Copilot Setup Instructions",
|
|
250
|
+
"copilotDescription": "Add this to your VS Code settings.json under github.copilot.advanced: { \"debug.overrideProxyUrl\": \"<url>\", \"debug.testOverrideProxyUrl\": \"<url>\" }. These are undocumented debug settings."
|
|
246
251
|
}
|
|
247
252
|
},
|
|
248
253
|
"interactiveAgent": {
|
|
@@ -242,7 +242,12 @@
|
|
|
242
242
|
"sonnetModel": "Sonnet Model Override",
|
|
243
243
|
"haikuModel": "Haiku Model Override",
|
|
244
244
|
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
245
|
+
"modelOverrideDescription": "Override the default model routed through LiteLLM",
|
|
246
|
+
"notSupported": "Proxy routing is not supported for this agent type.",
|
|
247
|
+
"cursorInstructions": "Cursor Setup Instructions",
|
|
248
|
+
"cursorDescription": "Add these values to Cursor Settings > Models > Override OpenAI Base URL and API Key. Only Ask and Plan modes support custom API keys — Agent mode does not.",
|
|
249
|
+
"copilotInstructions": "GitHub Copilot Setup Instructions",
|
|
250
|
+
"copilotDescription": "Add this to your VS Code settings.json under github.copilot.advanced: { \"debug.overrideProxyUrl\": \"<url>\", \"debug.testOverrideProxyUrl\": \"<url>\" }. These are undocumented debug settings."
|
|
246
251
|
}
|
|
247
252
|
},
|
|
248
253
|
"interactiveAgent": {
|
|
@@ -242,7 +242,12 @@
|
|
|
242
242
|
"sonnetModel": "Sonnet Model Override",
|
|
243
243
|
"haikuModel": "Haiku Model Override",
|
|
244
244
|
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
245
|
+
"modelOverrideDescription": "Override the default model routed through LiteLLM",
|
|
246
|
+
"notSupported": "Proxy routing is not supported for this agent type.",
|
|
247
|
+
"cursorInstructions": "Cursor Setup Instructions",
|
|
248
|
+
"cursorDescription": "Add these values to Cursor Settings > Models > Override OpenAI Base URL and API Key. Only Ask and Plan modes support custom API keys — Agent mode does not.",
|
|
249
|
+
"copilotInstructions": "GitHub Copilot Setup Instructions",
|
|
250
|
+
"copilotDescription": "Add this to your VS Code settings.json under github.copilot.advanced: { \"debug.overrideProxyUrl\": \"<url>\", \"debug.testOverrideProxyUrl\": \"<url>\" }. These are undocumented debug settings."
|
|
246
251
|
}
|
|
247
252
|
},
|
|
248
253
|
"interactiveAgent": {
|
|
@@ -242,7 +242,12 @@
|
|
|
242
242
|
"sonnetModel": "Sonnet Model Override",
|
|
243
243
|
"haikuModel": "Haiku Model Override",
|
|
244
244
|
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
245
|
+
"modelOverrideDescription": "Override the default model routed through LiteLLM",
|
|
246
|
+
"notSupported": "Proxy routing is not supported for this agent type.",
|
|
247
|
+
"cursorInstructions": "Cursor Setup Instructions",
|
|
248
|
+
"cursorDescription": "Add these values to Cursor Settings > Models > Override OpenAI Base URL and API Key. Only Ask and Plan modes support custom API keys — Agent mode does not.",
|
|
249
|
+
"copilotInstructions": "GitHub Copilot Setup Instructions",
|
|
250
|
+
"copilotDescription": "Add this to your VS Code settings.json under github.copilot.advanced: { \"debug.overrideProxyUrl\": \"<url>\", \"debug.testOverrideProxyUrl\": \"<url>\" }. These are undocumented debug settings."
|
|
246
251
|
}
|
|
247
252
|
},
|
|
248
253
|
"interactiveAgent": {
|
|
@@ -242,7 +242,12 @@
|
|
|
242
242
|
"sonnetModel": "Sonnet Model Override",
|
|
243
243
|
"haikuModel": "Haiku Model Override",
|
|
244
244
|
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
245
|
+
"modelOverrideDescription": "Override the default model routed through LiteLLM",
|
|
246
|
+
"notSupported": "Proxy routing is not supported for this agent type.",
|
|
247
|
+
"cursorInstructions": "Cursor Setup Instructions",
|
|
248
|
+
"cursorDescription": "Add these values to Cursor Settings > Models > Override OpenAI Base URL and API Key. Only Ask and Plan modes support custom API keys — Agent mode does not.",
|
|
249
|
+
"copilotInstructions": "GitHub Copilot Setup Instructions",
|
|
250
|
+
"copilotDescription": "Add this to your VS Code settings.json under github.copilot.advanced: { \"debug.overrideProxyUrl\": \"<url>\", \"debug.testOverrideProxyUrl\": \"<url>\" }. These are undocumented debug settings."
|
|
246
251
|
}
|
|
247
252
|
},
|
|
248
253
|
"interactiveAgent": {
|
|
@@ -242,7 +242,12 @@
|
|
|
242
242
|
"sonnetModel": "Sonnet Model Override",
|
|
243
243
|
"haikuModel": "Haiku Model Override",
|
|
244
244
|
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
245
|
+
"modelOverrideDescription": "Override the default model routed through LiteLLM",
|
|
246
|
+
"notSupported": "Proxy routing is not supported for this agent type.",
|
|
247
|
+
"cursorInstructions": "Cursor Setup Instructions",
|
|
248
|
+
"cursorDescription": "Add these values to Cursor Settings > Models > Override OpenAI Base URL and API Key. Only Ask and Plan modes support custom API keys — Agent mode does not.",
|
|
249
|
+
"copilotInstructions": "GitHub Copilot Setup Instructions",
|
|
250
|
+
"copilotDescription": "Add this to your VS Code settings.json under github.copilot.advanced: { \"debug.overrideProxyUrl\": \"<url>\", \"debug.testOverrideProxyUrl\": \"<url>\" }. These are undocumented debug settings."
|
|
246
251
|
}
|
|
247
252
|
},
|
|
248
253
|
"interactiveAgent": {
|