@shipit-ai/cli 1.170.0-pr13.d3605b0 → 1.170.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/LiteLLMProxyConfig.yaml +1 -4
- package/dist/packages/core/src/domain/generated/output.d.ts +1 -35
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +0 -6
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +0 -5
- 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 +1 -24
- 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 +5 -36
- 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 +1 -7
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +1 -4
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +0 -44
- 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 +0 -5
- package/dist/src/presentation/web/components/features/plugins/plugins-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/plugins/plugins-page-client.js +2 -11
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +1 -3
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.js +8 -5
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +1 -2
- package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/skills-page-client.js +2 -6
- package/dist/src/presentation/web/components/features/tools/tools-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/tools/tools-page-client.js +4 -23
- package/dist/translations/ar/web.json +1 -18
- package/dist/translations/de/web.json +1 -18
- package/dist/translations/en/web.json +1 -18
- package/dist/translations/es/web.json +1 -18
- package/dist/translations/fr/web.json +1 -18
- package/dist/translations/he/web.json +1 -18
- package/dist/translations/pt/web.json +1 -18
- package/dist/translations/ru/web.json +1 -18
- 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 +3 -3
- package/web/.next/required-server-files.json +3 -3
- 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/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +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 +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/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]__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]__0dec29w._.js → [root-of-the-server]__0~v1~b9._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0dec29w._.js.map → [root-of-the-server]__0~v1~b9._.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]__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/{_0mdgz5u._.js → _0.ra89t._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0mdgz5u._.js.map → _0.ra89t._.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/{_02g0xyh._.js → _069ybyi._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_02g0xyh._.js.map → _069ybyi._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_083k45~._.js +1 -1
- package/web/.next/server/chunks/ssr/_083k45~._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0rqycsg._.js → _0_17.-n._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0rqycsg._.js.map → _0_17.-n._.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/{_0o.xc6x._.js → _0kt18~b._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0kt18~b._.js.map +1 -0
- 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/_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 +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/_12uy.45._.js +3 -0
- package/web/.next/server/chunks/ssr/_12uy.45._.js.map +1 -0
- 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/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_0aji.op._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_0aji.op._.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/{0wcqsl6fpljkf.js → 01zrwm.x3kpdo.js} +1 -1
- package/web/.next/static/chunks/{056k4f_cj86_m.js → 024vi1xxw5ccj.js} +2 -2
- package/web/.next/static/chunks/{0f1m9w6~4f-.w.js → 043zp6fpfaz07.js} +3 -3
- package/web/.next/static/chunks/{0dq~u_3-zgq73.js → 09lcrhxslt-u8.js} +1 -1
- package/web/.next/static/chunks/0aq9-lg.5r.nk.js +5 -0
- package/web/.next/static/chunks/{0pik.2.wvg.el.js → 0dprl~vdhvhk7.js} +1 -1
- package/web/.next/static/chunks/{13mkca.j8w.7_.js → 0e.8n42~fpeqa.js} +1 -1
- package/web/.next/static/chunks/0jt5jzg88skg5.js +1 -0
- package/web/.next/static/chunks/{14ulzux4y._m-.js → 0lwuepa24tqxy.js} +1 -1
- package/web/.next/static/chunks/0lz-oq74e_ciu.js +1 -0
- package/web/.next/static/chunks/{012cnd7koqv6d.js → 0nkujbu62z1jl.js} +1 -1
- package/web/.next/static/chunks/{0i~5fqskcb~~p.js → 0rb5cx51f5u8h.js} +1 -1
- package/web/.next/static/chunks/0tdbctvrma.oi.js +1 -0
- package/web/.next/static/chunks/{05_pa1uvg8ndq.js → 0vq.b40jzhi7r.js} +3 -3
- package/web/.next/static/chunks/0wd.i4f822qoa.js +1 -0
- package/web/.next/static/chunks/{0nfd9bvcnbcgl.js → 0xo.hi4px83w2.js} +1 -1
- package/web/.next/static/chunks/0xzs6jdtkmbic.js +1 -0
- package/web/.next/static/chunks/{0dbuetfm_wux5.js → 0~4c6tnw7xnnl.js} +1 -1
- package/web/.next/static/chunks/13q1peb_t9vj8.js +1 -0
- package/web/.next/static/chunks/{0r05-2~73nsxp.js → 16jgc8hqxrp.u.js} +1 -1
- package/apis/json-schema/ClaudeCodeProxyConfig.yaml +0 -20
- package/apis/json-schema/LiteLLMProxyRoutingMode.yaml +0 -8
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.d.ts +0 -15
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.js +0 -32
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.d.ts +0 -6
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.js +0 -72
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts +0 -16
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.js +0 -64
- package/web/.next/server/chunks/ssr/_0kaec~c._.js +0 -3
- package/web/.next/server/chunks/ssr/_0kaec~c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0o.xc6x._.js.map +0 -1
- package/web/.next/static/chunks/0.s8cxri-_s9l.js +0 -1
- package/web/.next/static/chunks/0inayq2zzadja.js +0 -1
- package/web/.next/static/chunks/0kjqz.9e9sou2.js +0 -1
- package/web/.next/static/chunks/0nnltbyg963sg.js +0 -1
- package/web/.next/static/chunks/0ug478hm-8bog.js +0 -5
- package/web/.next/static/chunks/10rtagfoabp3b.js +0 -1
- package/web/.next/static/chunks/112xn3.b2hrmh.js +0 -1
- /package/web/.next/static/{W6C3cWcub-2kZuXP7c21j → kDUolP-Zj2jCRleGJJGX0}/_buildManifest.js +0 -0
- /package/web/.next/static/{W6C3cWcub-2kZuXP7c21j → kDUolP-Zj2jCRleGJJGX0}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{W6C3cWcub-2kZuXP7c21j → kDUolP-Zj2jCRleGJJGX0}/_ssgManifest.js +0 -0
package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.js
CHANGED
|
@@ -6,7 +6,7 @@ import { toast } from 'sonner';
|
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
import { updateSettingsAction } from '../../../app/actions/update-settings.js';
|
|
8
8
|
import { addMarketplaceAction } from '../../../app/actions/add-marketplace.js';
|
|
9
|
-
import { SettingsSection, SettingsRow } from './settings-section-utils.js';
|
|
9
|
+
import { SettingsSection, SettingsRow, SwitchRow } from './settings-section-utils.js';
|
|
10
10
|
import { Input } from '../../ui/input.js';
|
|
11
11
|
import { Button } from '../../ui/button.js';
|
|
12
12
|
export function LiteLLMProxySettingsSection({ settings }) {
|
|
@@ -14,6 +14,7 @@ export function LiteLLMProxySettingsSection({ settings }) {
|
|
|
14
14
|
const [, startTransition] = useTransition();
|
|
15
15
|
const [baseUrl, setBaseUrl] = useState(settings.litellmProxy?.baseUrl ?? '');
|
|
16
16
|
const [apiKey, setApiKey] = useState(settings.litellmProxy?.apiKey ?? '');
|
|
17
|
+
const [marketplaceEnabled, setMarketplaceEnabled] = useState(settings.litellmProxy?.marketplaceEnabled ?? false);
|
|
17
18
|
const [testStatus, setTestStatus] = useState('idle');
|
|
18
19
|
const [isTesting, setIsTesting] = useState(false);
|
|
19
20
|
const originalBaseUrl = settings.litellmProxy?.baseUrl ?? '';
|
|
@@ -27,12 +28,11 @@ export function LiteLLMProxySettingsSection({ settings }) {
|
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
30
|
function buildPayload(overrides) {
|
|
30
|
-
const url = overrides?.baseUrl ?? baseUrl;
|
|
31
31
|
return {
|
|
32
32
|
litellmProxy: {
|
|
33
|
-
baseUrl:
|
|
33
|
+
baseUrl: overrides?.baseUrl ?? baseUrl,
|
|
34
34
|
apiKey: overrides?.apiKey ?? apiKey,
|
|
35
|
-
marketplaceEnabled:
|
|
35
|
+
marketplaceEnabled: overrides?.marketplaceEnabled ?? marketplaceEnabled,
|
|
36
36
|
},
|
|
37
37
|
};
|
|
38
38
|
}
|
|
@@ -69,5 +69,8 @@ export function LiteLLMProxySettingsSection({ settings }) {
|
|
|
69
69
|
}, className: "w-64 text-xs" }) }), _jsx(SettingsRow, { label: t('settings.litellmProxy.apiKey'), description: t('settings.litellmProxy.apiKeyDescription'), tooltip: "A virtual API key for authenticating with the LiteLLM proxy. Stored locally alongside other agent credentials.", htmlFor: "litellm-api-key", children: _jsx(Input, { id: "litellm-api-key", "data-testid": "litellm-api-key-input", type: "password", placeholder: "sk-...", value: apiKey, onChange: (e) => setApiKey(e.target.value), onBlur: () => {
|
|
70
70
|
if (apiKey !== originalApiKey)
|
|
71
71
|
save(buildPayload({ apiKey }));
|
|
72
|
-
}, className: "w-64 text-xs" }) }), _jsx(
|
|
72
|
+
}, className: "w-64 text-xs" }) }), _jsx(SwitchRow, { label: t('settings.litellmProxy.marketplaceEnabled'), description: t('settings.litellmProxy.marketplaceEnabledDescription'), tooltip: "When enabled, the plugin marketplace will fetch its catalog from this LiteLLM proxy instead of using built-in defaults.", id: "litellm-marketplace-enabled", testId: "switch-litellm-marketplace-enabled", checked: marketplaceEnabled, onChange: (v) => {
|
|
73
|
+
setMarketplaceEnabled(v);
|
|
74
|
+
save(buildPayload({ marketplaceEnabled: v }));
|
|
75
|
+
} }), _jsx(SettingsRow, { label: t('settings.litellmProxy.testConnection'), tooltip: "Attempt to connect to the proxy and fetch the marketplace catalog to verify the configuration is correct.", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { variant: "outline", size: "sm", "data-testid": "litellm-test-connection-btn", disabled: !baseUrl || isTesting, onClick: handleTestConnection, className: "cursor-pointer text-xs", children: isTesting ? t('settings.saving') : t('settings.litellmProxy.testConnection') }), testStatus === 'success' && (_jsx(CheckCircle2, { className: "h-4 w-4 text-emerald-500", "data-testid": "litellm-test-success" })), testStatus === 'failed' && (_jsx(XCircle, { className: "text-destructive h-4 w-4", "data-testid": "litellm-test-failed" }))] }) })] }));
|
|
73
76
|
}
|
package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAkBzE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,EAAE,uBAAuB,2CA4JzB"}
|
|
@@ -15,7 +15,6 @@ import { InteractiveAgentSettingsSection } from './interactive-agent-settings-se
|
|
|
15
15
|
import { FabLayoutSettingsSection } from './fab-layout-settings-section.js';
|
|
16
16
|
import { DatabaseSettingsSection } from './database-settings-section.js';
|
|
17
17
|
import { LiteLLMProxySettingsSection } from './litellm-proxy-settings-section.js';
|
|
18
|
-
import { LiteLLMProxyRoutingSection } from './litellm-proxy-routing-section.js';
|
|
19
18
|
const SECTIONS = [
|
|
20
19
|
{ id: 'agent', labelKey: 'settings.sections.agent', icon: Bot },
|
|
21
20
|
{ id: 'environment', labelKey: 'settings.sections.environment', icon: Terminal },
|
|
@@ -59,5 +58,5 @@ export function SettingsPageClient({ settings, shipitAiHome, dbFileSize, availab
|
|
|
59
58
|
return (_jsxs("button", { type: "button", onClick: () => setActiveTab(tab.id), className: cn('flex cursor-pointer items-center gap-1 rounded-md px-2 py-1.5 text-[11px] font-bold transition-all', isActive
|
|
60
59
|
? 'bg-muted text-primary shadow-sm ring-1 ring-slate-200/70 dark:ring-slate-700/50'
|
|
61
60
|
: 'text-muted-foreground hover:text-foreground hover:bg-accent/50'), children: [_jsx(TabIcon, { className: "h-3 w-3" }), _jsx("span", { className: "hidden sm:inline", children: t(tab.labelKey) })] }, tab.id));
|
|
62
|
-
}) })] }), _jsxs("div", { className: "flex flex-col gap-3", children: [(activeTab === 'all' || activeTab === 'agent') && (_jsx("div", { id: "section-agent", className: "scroll-mt-18 rounded-lg", children: _jsx(AgentSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'environment') && (_jsx("div", { id: "section-environment", className: "scroll-mt-18 rounded-lg", children: _jsx(EnvironmentSettingsSection, { settings: settings, availableEditors: availableEditors, availableShells: availableShells, availableTerminals: availableTerminals }) })), (activeTab === 'all' || activeTab === 'workflow') && (_jsx("div", { id: "section-workflow", className: "scroll-mt-18 rounded-lg", children: _jsx(WorkflowSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'ci') && (_jsx("div", { id: "section-ci", className: "scroll-mt-18 rounded-lg", children: _jsx(CiSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'stage-timeouts') && (_jsx("div", { id: "section-stage-timeouts", className: "scroll-mt-18 rounded-lg", children: _jsx(StageTimeoutsSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'notifications') && (_jsx("div", { id: "section-notifications", className: "scroll-mt-18 rounded-lg", children: _jsx(NotificationSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'feature-flags') && (_jsx("div", { id: "section-feature-flags", className: "scroll-mt-18 rounded-lg", children: _jsx(FeatureFlagsSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'interactive-agent') && (_jsx("div", { id: "section-interactive-agent", className: "scroll-mt-18 rounded-lg", children: _jsx(InteractiveAgentSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'fab-layout') && (_jsx("div", { id: "section-fab-layout", className: "scroll-mt-18 rounded-lg", children: _jsx(FabLayoutSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'database') && (_jsx("div", { id: "section-database", className: "scroll-mt-18 rounded-lg", children: _jsx(DatabaseSettingsSection, { shipitAiHome: shipitAiHome, dbFileSize: dbFileSize }) })), (activeTab === 'all' || activeTab === 'litellm-proxy') && (
|
|
61
|
+
}) })] }), _jsxs("div", { className: "flex flex-col gap-3", children: [(activeTab === 'all' || activeTab === 'agent') && (_jsx("div", { id: "section-agent", className: "scroll-mt-18 rounded-lg", children: _jsx(AgentSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'environment') && (_jsx("div", { id: "section-environment", className: "scroll-mt-18 rounded-lg", children: _jsx(EnvironmentSettingsSection, { settings: settings, availableEditors: availableEditors, availableShells: availableShells, availableTerminals: availableTerminals }) })), (activeTab === 'all' || activeTab === 'workflow') && (_jsx("div", { id: "section-workflow", className: "scroll-mt-18 rounded-lg", children: _jsx(WorkflowSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'ci') && (_jsx("div", { id: "section-ci", className: "scroll-mt-18 rounded-lg", children: _jsx(CiSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'stage-timeouts') && (_jsx("div", { id: "section-stage-timeouts", className: "scroll-mt-18 rounded-lg", children: _jsx(StageTimeoutsSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'notifications') && (_jsx("div", { id: "section-notifications", className: "scroll-mt-18 rounded-lg", children: _jsx(NotificationSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'feature-flags') && (_jsx("div", { id: "section-feature-flags", className: "scroll-mt-18 rounded-lg", children: _jsx(FeatureFlagsSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'interactive-agent') && (_jsx("div", { id: "section-interactive-agent", className: "scroll-mt-18 rounded-lg", children: _jsx(InteractiveAgentSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'fab-layout') && (_jsx("div", { id: "section-fab-layout", className: "scroll-mt-18 rounded-lg", children: _jsx(FabLayoutSettingsSection, { settings: settings }) })), (activeTab === 'all' || activeTab === 'database') && (_jsx("div", { id: "section-database", className: "scroll-mt-18 rounded-lg", children: _jsx(DatabaseSettingsSection, { shipitAiHome: shipitAiHome, dbFileSize: dbFileSize }) })), (activeTab === 'all' || activeTab === 'litellm-proxy') && (_jsx("div", { id: "section-litellm-proxy", className: "scroll-mt-18 rounded-lg", children: _jsx(LiteLLMProxySettingsSection, { settings: settings }) }))] })] }));
|
|
63
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAiB,SAAS,
|
|
1
|
+
{"version":3,"file":"skills-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAeD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,qBAAqB,2CAyFjE"}
|
|
@@ -24,7 +24,6 @@ function computeCategoryCounts(skills) {
|
|
|
24
24
|
export function SkillsPageClient({ skills }) {
|
|
25
25
|
const [searchQuery, setSearchQuery] = useState('');
|
|
26
26
|
const [activeCategory, setActiveCategory] = useState(null);
|
|
27
|
-
const [sourceFilter, setSourceFilter] = useState(null);
|
|
28
27
|
const [selectedSkill, setSelectedSkill] = useState(null);
|
|
29
28
|
const categoryCounts = useMemo(() => computeCategoryCounts(skills), [skills]);
|
|
30
29
|
const filteredSkills = useMemo(() => {
|
|
@@ -32,8 +31,6 @@ export function SkillsPageClient({ skills }) {
|
|
|
32
31
|
return skills.filter((skill) => {
|
|
33
32
|
if (activeCategory && skill.category !== activeCategory)
|
|
34
33
|
return false;
|
|
35
|
-
if (sourceFilter && skill.source !== sourceFilter)
|
|
36
|
-
return false;
|
|
37
34
|
if (query) {
|
|
38
35
|
const matchesName = skill.name.toLowerCase().includes(query);
|
|
39
36
|
const matchesDescription = skill.description.toLowerCase().includes(query);
|
|
@@ -42,15 +39,14 @@ export function SkillsPageClient({ skills }) {
|
|
|
42
39
|
}
|
|
43
40
|
return true;
|
|
44
41
|
});
|
|
45
|
-
}, [skills, searchQuery, activeCategory
|
|
42
|
+
}, [skills, searchQuery, activeCategory]);
|
|
46
43
|
const clearFilters = () => {
|
|
47
44
|
setSearchQuery('');
|
|
48
45
|
setActiveCategory(null);
|
|
49
|
-
setSourceFilter(null);
|
|
50
46
|
};
|
|
51
47
|
// No skills installed at all
|
|
52
48
|
if (skills.length === 0) {
|
|
53
49
|
return (_jsxs("div", { className: "flex flex-col gap-8 p-8", children: [_jsx(PageHeader, { eyebrow: "Developer Portal", title: "Skills", description: "Claude Code skills installed in this project" }), _jsx(EmptyState, { icon: _jsx(Puzzle, { className: "size-10" }), title: "No skills found", description: "No Claude Code skills are installed. Add skills to .claude/skills/ to get started." })] }));
|
|
54
50
|
}
|
|
55
|
-
return (_jsxs("div", { className: "flex flex-col gap-8 p-8", children: [_jsx(PageHeader, { eyebrow: "Developer Portal", title: "Skills", description: "Claude Code skills installed in this project" }), _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2" }), _jsx(Input, { placeholder: "Search skills...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), className: "ps-9" })] }), _jsx(CategoryFilter, { activeCategory: activeCategory, onCategoryChange: setActiveCategory, counts: categoryCounts }),
|
|
51
|
+
return (_jsxs("div", { className: "flex flex-col gap-8 p-8", children: [_jsx(PageHeader, { eyebrow: "Developer Portal", title: "Skills", description: "Claude Code skills installed in this project" }), _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2" }), _jsx(Input, { placeholder: "Search skills...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), className: "ps-9" })] }), _jsx(CategoryFilter, { activeCategory: activeCategory, onCategoryChange: setActiveCategory, counts: categoryCounts }), filteredSkills.length > 0 ? (_jsx(SkillList, { skills: filteredSkills, onSkillSelect: setSelectedSkill })) : (_jsx(EmptyState, { icon: _jsx(Search, { className: "size-10" }), title: "No matching skills", description: "No skills match your current search and filter criteria.", action: _jsx(Button, { variant: "outline", onClick: clearFilters, children: "Clear filters" }) })), _jsx(SkillDetailDrawer, { skill: selectedSkill, onClose: () => setSelectedSkill(null) })] }));
|
|
56
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/tools/tools-page-client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/tools/tools-page-client.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iEAAiE,CAAC;AAEhG,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,oBAAoB,2CAkIvF"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useCallback
|
|
4
|
-
import { Wrench
|
|
3
|
+
import { useState, useCallback } from 'react';
|
|
4
|
+
import { Wrench } from 'lucide-react';
|
|
5
5
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from '../../ui/tabs.js';
|
|
6
|
-
import { Input } from '../../ui/input.js';
|
|
7
|
-
import { Button } from '../../ui/button.js';
|
|
8
6
|
import { cn } from '../../../lib/utils.js';
|
|
9
7
|
import { ToolCard } from './tool-card.js';
|
|
10
8
|
const TAB_FILTER = {
|
|
@@ -17,8 +15,6 @@ const TAB_FILTER = {
|
|
|
17
15
|
export function ToolsPageClient({ tools: initialTools, className }) {
|
|
18
16
|
const [tools, setTools] = useState(initialTools);
|
|
19
17
|
const [activeTab, setActiveTab] = useState('all');
|
|
20
|
-
const [searchQuery, setSearchQuery] = useState('');
|
|
21
|
-
const [statusFilter, setStatusFilter] = useState(null);
|
|
22
18
|
const refreshTools = useCallback(async () => {
|
|
23
19
|
try {
|
|
24
20
|
const res = await fetch('/api/tools');
|
|
@@ -31,24 +27,9 @@ export function ToolsPageClient({ tools: initialTools, className }) {
|
|
|
31
27
|
// Silently ignore refresh errors; user can re-navigate to refresh
|
|
32
28
|
}
|
|
33
29
|
}, []);
|
|
34
|
-
const filtered =
|
|
35
|
-
const query = searchQuery.toLowerCase();
|
|
36
|
-
return tools.filter((tool) => {
|
|
37
|
-
if (!TAB_FILTER[activeTab](tool))
|
|
38
|
-
return false;
|
|
39
|
-
if (statusFilter && tool.status.status !== statusFilter)
|
|
40
|
-
return false;
|
|
41
|
-
if (query) {
|
|
42
|
-
const matchesName = tool.name.toLowerCase().includes(query);
|
|
43
|
-
const matchesSummary = tool.summary.toLowerCase().includes(query);
|
|
44
|
-
if (!matchesName && !matchesSummary)
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
return true;
|
|
48
|
-
});
|
|
49
|
-
}, [tools, activeTab, searchQuery, statusFilter]);
|
|
30
|
+
const filtered = tools.filter(TAB_FILTER[activeTab]);
|
|
50
31
|
const installedCount = tools.filter((t) => t.status.status === 'available').length;
|
|
51
|
-
return (_jsxs("div", { "data-testid": "tools-page-client", className: cn('space-y-8', className), children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsx("span", { className: "text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase", children: "Developer Portal" }) }), _jsxs("div", { className: "flex items-baseline gap-3", children: [_jsx("h1", { className: "text-foreground text-3xl font-black tracking-tight", children: "Tools" }), _jsxs("span", { className: "text-muted-foreground text-sm font-medium", children: [installedCount, " of ", tools.length, " installed"] })] })] }), _jsxs(
|
|
32
|
+
return (_jsxs("div", { "data-testid": "tools-page-client", className: cn('space-y-8', className), children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsx("span", { className: "text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase", children: "Developer Portal" }) }), _jsxs("div", { className: "flex items-baseline gap-3", children: [_jsx("h1", { className: "text-foreground text-3xl font-black tracking-tight", children: "Tools" }), _jsxs("span", { className: "text-muted-foreground text-sm font-medium", children: [installedCount, " of ", tools.length, " installed"] })] })] }), _jsxs(Tabs, { value: activeTab, onValueChange: (value) => setActiveTab(value), "data-testid": "tools-page-tabs", children: [_jsxs(TabsList, { "data-editorial": "true", className: "bg-card editorial-shadow h-10 p-1", children: [_jsx(TabsTrigger, { value: "all", "data-testid": "tools-tab-all", className: "cursor-pointer px-4 text-xs font-bold", children: "All" }), _jsx(TabsTrigger, { value: "ide", "data-testid": "tools-tab-ide", className: "cursor-pointer px-4 text-xs font-bold", children: "IDEs" }), _jsx(TabsTrigger, { value: "cli-agent", "data-testid": "tools-tab-cli-agent", className: "cursor-pointer px-4 text-xs font-bold", children: "CLI Agents" }), _jsx(TabsTrigger, { value: "vcs", "data-testid": "tools-tab-vcs", className: "cursor-pointer px-4 text-xs font-bold", children: "Version Control" }), _jsx(TabsTrigger, { value: "terminal", "data-testid": "tools-tab-terminal", className: "cursor-pointer px-4 text-xs font-bold", children: "Terminals" })] }), _jsx(TabsContent, { value: activeTab, className: "mt-6", children: filtered.length === 0 ? (_jsxs("div", { "data-testid": "tools-page-empty", className: "text-muted-foreground flex flex-col items-center justify-center py-16 text-center", children: [_jsx(Wrench, { className: "mb-3 h-8 w-8 opacity-20" }), _jsx("p", { className: "text-sm", children: "No tools in this category." })] })) : (_jsx("div", { "data-testid": "tools-page-grid",
|
|
52
33
|
// Editorial density: 3 columns max so cards stay wide enough to
|
|
53
34
|
// give the Stitch "magazine" feel. Previously xl:grid-cols-4 which
|
|
54
35
|
// squeezed cards and reduced background-vs-card contrast.
|
|
@@ -226,24 +226,7 @@
|
|
|
226
226
|
"hint": "Connect to a LiteLLM proxy to browse and install Claude Code plugins from your organization's curated marketplace.",
|
|
227
227
|
"testConnection": "Test Connection",
|
|
228
228
|
"testSuccess": "Connection successful",
|
|
229
|
-
"testFailed": "Connection failed"
|
|
230
|
-
"routing": {
|
|
231
|
-
"title": "Proxy Routing (Claude Code)",
|
|
232
|
-
"description": "Configure how Claude Code routes API traffic through LiteLLM",
|
|
233
|
-
"hint": "Control whether Claude Code uses the LiteLLM proxy for API requests. Supports full proxy routing, passthrough for Max/BYOK subscriptions, and model overrides.",
|
|
234
|
-
"mode": "Routing Mode",
|
|
235
|
-
"modeDescription": "How Claude Code routes API traffic",
|
|
236
|
-
"modeDirect": "Direct (own subscription)",
|
|
237
|
-
"modeProxy": "Proxy (full routing)",
|
|
238
|
-
"modePassthrough": "Passthrough (Max/BYOK)",
|
|
239
|
-
"passthroughHelp": "Passthrough mode requires the LiteLLM proxy to have forward_client_headers_to_llm_api or forward_llm_provider_auth_headers enabled.",
|
|
240
|
-
"customHeaders": "Custom Headers",
|
|
241
|
-
"customHeadersDescription": "Newline-separated headers for cost attribution (e.g., x-litellm-customer-id: user-123)",
|
|
242
|
-
"sonnetModel": "Sonnet Model Override",
|
|
243
|
-
"haikuModel": "Haiku Model Override",
|
|
244
|
-
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
246
|
-
}
|
|
229
|
+
"testFailed": "Connection failed"
|
|
247
230
|
},
|
|
248
231
|
"interactiveAgent": {
|
|
249
232
|
"title": "الوكيل التفاعلي",
|
|
@@ -212,24 +212,7 @@
|
|
|
212
212
|
"hint": "Connect to a LiteLLM proxy to browse and install Claude Code plugins from your organization's curated marketplace.",
|
|
213
213
|
"testConnection": "Test Connection",
|
|
214
214
|
"testSuccess": "Connection successful",
|
|
215
|
-
"testFailed": "Connection failed"
|
|
216
|
-
"routing": {
|
|
217
|
-
"title": "Proxy Routing (Claude Code)",
|
|
218
|
-
"description": "Configure how Claude Code routes API traffic through LiteLLM",
|
|
219
|
-
"hint": "Control whether Claude Code uses the LiteLLM proxy for API requests. Supports full proxy routing, passthrough for Max/BYOK subscriptions, and model overrides.",
|
|
220
|
-
"mode": "Routing Mode",
|
|
221
|
-
"modeDescription": "How Claude Code routes API traffic",
|
|
222
|
-
"modeDirect": "Direct (own subscription)",
|
|
223
|
-
"modeProxy": "Proxy (full routing)",
|
|
224
|
-
"modePassthrough": "Passthrough (Max/BYOK)",
|
|
225
|
-
"passthroughHelp": "Passthrough mode requires the LiteLLM proxy to have forward_client_headers_to_llm_api or forward_llm_provider_auth_headers enabled.",
|
|
226
|
-
"customHeaders": "Custom Headers",
|
|
227
|
-
"customHeadersDescription": "Newline-separated headers for cost attribution (e.g., x-litellm-customer-id: user-123)",
|
|
228
|
-
"sonnetModel": "Sonnet Model Override",
|
|
229
|
-
"haikuModel": "Haiku Model Override",
|
|
230
|
-
"opusModel": "Opus Model Override",
|
|
231
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
232
|
-
}
|
|
215
|
+
"testFailed": "Connection failed"
|
|
233
216
|
},
|
|
234
217
|
"interactiveAgent": {
|
|
235
218
|
"title": "Interaktiver Agent",
|
|
@@ -226,24 +226,7 @@
|
|
|
226
226
|
"hint": "Connect to a LiteLLM proxy to browse and install Claude Code plugins from your organization's curated marketplace.",
|
|
227
227
|
"testConnection": "Test Connection",
|
|
228
228
|
"testSuccess": "Connection successful",
|
|
229
|
-
"testFailed": "Connection failed"
|
|
230
|
-
"routing": {
|
|
231
|
-
"title": "Proxy Routing (Claude Code)",
|
|
232
|
-
"description": "Configure how Claude Code routes API traffic through LiteLLM",
|
|
233
|
-
"hint": "Control whether Claude Code uses the LiteLLM proxy for API requests. Supports full proxy routing, passthrough for Max/BYOK subscriptions, and model overrides.",
|
|
234
|
-
"mode": "Routing Mode",
|
|
235
|
-
"modeDescription": "How Claude Code routes API traffic",
|
|
236
|
-
"modeDirect": "Direct (own subscription)",
|
|
237
|
-
"modeProxy": "Proxy (full routing)",
|
|
238
|
-
"modePassthrough": "Passthrough (Max/BYOK)",
|
|
239
|
-
"passthroughHelp": "Passthrough mode requires the LiteLLM proxy to have forward_client_headers_to_llm_api or forward_llm_provider_auth_headers enabled.",
|
|
240
|
-
"customHeaders": "Custom Headers",
|
|
241
|
-
"customHeadersDescription": "Newline-separated headers for cost attribution (e.g., x-litellm-customer-id: user-123)",
|
|
242
|
-
"sonnetModel": "Sonnet Model Override",
|
|
243
|
-
"haikuModel": "Haiku Model Override",
|
|
244
|
-
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
246
|
-
}
|
|
229
|
+
"testFailed": "Connection failed"
|
|
247
230
|
},
|
|
248
231
|
"interactiveAgent": {
|
|
249
232
|
"title": "Interactive Agent",
|
|
@@ -226,24 +226,7 @@
|
|
|
226
226
|
"hint": "Connect to a LiteLLM proxy to browse and install Claude Code plugins from your organization's curated marketplace.",
|
|
227
227
|
"testConnection": "Test Connection",
|
|
228
228
|
"testSuccess": "Connection successful",
|
|
229
|
-
"testFailed": "Connection failed"
|
|
230
|
-
"routing": {
|
|
231
|
-
"title": "Proxy Routing (Claude Code)",
|
|
232
|
-
"description": "Configure how Claude Code routes API traffic through LiteLLM",
|
|
233
|
-
"hint": "Control whether Claude Code uses the LiteLLM proxy for API requests. Supports full proxy routing, passthrough for Max/BYOK subscriptions, and model overrides.",
|
|
234
|
-
"mode": "Routing Mode",
|
|
235
|
-
"modeDescription": "How Claude Code routes API traffic",
|
|
236
|
-
"modeDirect": "Direct (own subscription)",
|
|
237
|
-
"modeProxy": "Proxy (full routing)",
|
|
238
|
-
"modePassthrough": "Passthrough (Max/BYOK)",
|
|
239
|
-
"passthroughHelp": "Passthrough mode requires the LiteLLM proxy to have forward_client_headers_to_llm_api or forward_llm_provider_auth_headers enabled.",
|
|
240
|
-
"customHeaders": "Custom Headers",
|
|
241
|
-
"customHeadersDescription": "Newline-separated headers for cost attribution (e.g., x-litellm-customer-id: user-123)",
|
|
242
|
-
"sonnetModel": "Sonnet Model Override",
|
|
243
|
-
"haikuModel": "Haiku Model Override",
|
|
244
|
-
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
246
|
-
}
|
|
229
|
+
"testFailed": "Connection failed"
|
|
247
230
|
},
|
|
248
231
|
"interactiveAgent": {
|
|
249
232
|
"title": "Agente interactivo",
|
|
@@ -226,24 +226,7 @@
|
|
|
226
226
|
"hint": "Connect to a LiteLLM proxy to browse and install Claude Code plugins from your organization's curated marketplace.",
|
|
227
227
|
"testConnection": "Test Connection",
|
|
228
228
|
"testSuccess": "Connection successful",
|
|
229
|
-
"testFailed": "Connection failed"
|
|
230
|
-
"routing": {
|
|
231
|
-
"title": "Proxy Routing (Claude Code)",
|
|
232
|
-
"description": "Configure how Claude Code routes API traffic through LiteLLM",
|
|
233
|
-
"hint": "Control whether Claude Code uses the LiteLLM proxy for API requests. Supports full proxy routing, passthrough for Max/BYOK subscriptions, and model overrides.",
|
|
234
|
-
"mode": "Routing Mode",
|
|
235
|
-
"modeDescription": "How Claude Code routes API traffic",
|
|
236
|
-
"modeDirect": "Direct (own subscription)",
|
|
237
|
-
"modeProxy": "Proxy (full routing)",
|
|
238
|
-
"modePassthrough": "Passthrough (Max/BYOK)",
|
|
239
|
-
"passthroughHelp": "Passthrough mode requires the LiteLLM proxy to have forward_client_headers_to_llm_api or forward_llm_provider_auth_headers enabled.",
|
|
240
|
-
"customHeaders": "Custom Headers",
|
|
241
|
-
"customHeadersDescription": "Newline-separated headers for cost attribution (e.g., x-litellm-customer-id: user-123)",
|
|
242
|
-
"sonnetModel": "Sonnet Model Override",
|
|
243
|
-
"haikuModel": "Haiku Model Override",
|
|
244
|
-
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
246
|
-
}
|
|
229
|
+
"testFailed": "Connection failed"
|
|
247
230
|
},
|
|
248
231
|
"interactiveAgent": {
|
|
249
232
|
"title": "Agent interactif",
|
|
@@ -226,24 +226,7 @@
|
|
|
226
226
|
"hint": "Connect to a LiteLLM proxy to browse and install Claude Code plugins from your organization's curated marketplace.",
|
|
227
227
|
"testConnection": "Test Connection",
|
|
228
228
|
"testSuccess": "Connection successful",
|
|
229
|
-
"testFailed": "Connection failed"
|
|
230
|
-
"routing": {
|
|
231
|
-
"title": "Proxy Routing (Claude Code)",
|
|
232
|
-
"description": "Configure how Claude Code routes API traffic through LiteLLM",
|
|
233
|
-
"hint": "Control whether Claude Code uses the LiteLLM proxy for API requests. Supports full proxy routing, passthrough for Max/BYOK subscriptions, and model overrides.",
|
|
234
|
-
"mode": "Routing Mode",
|
|
235
|
-
"modeDescription": "How Claude Code routes API traffic",
|
|
236
|
-
"modeDirect": "Direct (own subscription)",
|
|
237
|
-
"modeProxy": "Proxy (full routing)",
|
|
238
|
-
"modePassthrough": "Passthrough (Max/BYOK)",
|
|
239
|
-
"passthroughHelp": "Passthrough mode requires the LiteLLM proxy to have forward_client_headers_to_llm_api or forward_llm_provider_auth_headers enabled.",
|
|
240
|
-
"customHeaders": "Custom Headers",
|
|
241
|
-
"customHeadersDescription": "Newline-separated headers for cost attribution (e.g., x-litellm-customer-id: user-123)",
|
|
242
|
-
"sonnetModel": "Sonnet Model Override",
|
|
243
|
-
"haikuModel": "Haiku Model Override",
|
|
244
|
-
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
246
|
-
}
|
|
229
|
+
"testFailed": "Connection failed"
|
|
247
230
|
},
|
|
248
231
|
"interactiveAgent": {
|
|
249
232
|
"title": "סוכן אינטראקטיבי",
|
|
@@ -226,24 +226,7 @@
|
|
|
226
226
|
"hint": "Connect to a LiteLLM proxy to browse and install Claude Code plugins from your organization's curated marketplace.",
|
|
227
227
|
"testConnection": "Test Connection",
|
|
228
228
|
"testSuccess": "Connection successful",
|
|
229
|
-
"testFailed": "Connection failed"
|
|
230
|
-
"routing": {
|
|
231
|
-
"title": "Proxy Routing (Claude Code)",
|
|
232
|
-
"description": "Configure how Claude Code routes API traffic through LiteLLM",
|
|
233
|
-
"hint": "Control whether Claude Code uses the LiteLLM proxy for API requests. Supports full proxy routing, passthrough for Max/BYOK subscriptions, and model overrides.",
|
|
234
|
-
"mode": "Routing Mode",
|
|
235
|
-
"modeDescription": "How Claude Code routes API traffic",
|
|
236
|
-
"modeDirect": "Direct (own subscription)",
|
|
237
|
-
"modeProxy": "Proxy (full routing)",
|
|
238
|
-
"modePassthrough": "Passthrough (Max/BYOK)",
|
|
239
|
-
"passthroughHelp": "Passthrough mode requires the LiteLLM proxy to have forward_client_headers_to_llm_api or forward_llm_provider_auth_headers enabled.",
|
|
240
|
-
"customHeaders": "Custom Headers",
|
|
241
|
-
"customHeadersDescription": "Newline-separated headers for cost attribution (e.g., x-litellm-customer-id: user-123)",
|
|
242
|
-
"sonnetModel": "Sonnet Model Override",
|
|
243
|
-
"haikuModel": "Haiku Model Override",
|
|
244
|
-
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
246
|
-
}
|
|
229
|
+
"testFailed": "Connection failed"
|
|
247
230
|
},
|
|
248
231
|
"interactiveAgent": {
|
|
249
232
|
"title": "Agente Interativo",
|
|
@@ -226,24 +226,7 @@
|
|
|
226
226
|
"hint": "Connect to a LiteLLM proxy to browse and install Claude Code plugins from your organization's curated marketplace.",
|
|
227
227
|
"testConnection": "Test Connection",
|
|
228
228
|
"testSuccess": "Connection successful",
|
|
229
|
-
"testFailed": "Connection failed"
|
|
230
|
-
"routing": {
|
|
231
|
-
"title": "Proxy Routing (Claude Code)",
|
|
232
|
-
"description": "Configure how Claude Code routes API traffic through LiteLLM",
|
|
233
|
-
"hint": "Control whether Claude Code uses the LiteLLM proxy for API requests. Supports full proxy routing, passthrough for Max/BYOK subscriptions, and model overrides.",
|
|
234
|
-
"mode": "Routing Mode",
|
|
235
|
-
"modeDescription": "How Claude Code routes API traffic",
|
|
236
|
-
"modeDirect": "Direct (own subscription)",
|
|
237
|
-
"modeProxy": "Proxy (full routing)",
|
|
238
|
-
"modePassthrough": "Passthrough (Max/BYOK)",
|
|
239
|
-
"passthroughHelp": "Passthrough mode requires the LiteLLM proxy to have forward_client_headers_to_llm_api or forward_llm_provider_auth_headers enabled.",
|
|
240
|
-
"customHeaders": "Custom Headers",
|
|
241
|
-
"customHeadersDescription": "Newline-separated headers for cost attribution (e.g., x-litellm-customer-id: user-123)",
|
|
242
|
-
"sonnetModel": "Sonnet Model Override",
|
|
243
|
-
"haikuModel": "Haiku Model Override",
|
|
244
|
-
"opusModel": "Opus Model Override",
|
|
245
|
-
"modelOverrideDescription": "Override the default model routed through LiteLLM"
|
|
246
|
-
}
|
|
229
|
+
"testFailed": "Connection failed"
|
|
247
230
|
},
|
|
248
231
|
"interactiveAgent": {
|
|
249
232
|
"title": "Интерактивный агент",
|