@shipit-ai/cli 1.170.0 → 1.171.0-pr14.c0a7138
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/ClaudeCodeProxyConfig.yaml +20 -0
- package/apis/json-schema/CodexCliProxyConfig.yaml +8 -0
- package/apis/json-schema/GeminiCliProxyConfig.yaml +8 -0
- package/apis/json-schema/LiteLLMProxyConfig.yaml +10 -1
- package/apis/json-schema/LiteLLMProxyRoutingMode.yaml +8 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +61 -1
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +6 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +7 -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 +63 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.d.ts +15 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.js +32 -0
- 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 +40 -5
- 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 +15 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +4 -1
- 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 +53 -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 +16 -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 +16 -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 +13 -0
- 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 +11 -2
- 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 +3 -1
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.d.ts +6 -0
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.js +137 -0
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts +23 -0
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.js +138 -0
- 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 +5 -8
- 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 +2 -1
- 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 +6 -2
- 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 +23 -4
- package/dist/translations/ar/web.json +23 -1
- package/dist/translations/de/web.json +23 -1
- package/dist/translations/en/web.json +23 -1
- package/dist/translations/es/web.json +23 -1
- package/dist/translations/fr/web.json +23 -1
- package/dist/translations/he/web.json +23 -1
- package/dist/translations/pt/web.json +23 -1
- package/dist/translations/ru/web.json +23 -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 +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]__0~v1~b9._.js → [root-of-the-server]__0dec29w._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0~v1~b9._.js.map → [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]__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/{_0.ra89t._.js → _02sfayk._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0.ra89t._.js.map → _02sfayk._.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/_083k45~._.js +1 -1
- package/web/.next/server/chunks/ssr/_083k45~._.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/{_0_17.-n._.js → _0fym52g._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0_17.-n._.js.map → _0fym52g._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0kaec~c._.js +3 -0
- package/web/.next/server/chunks/ssr/_0kaec~c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0kt18~b._.js → _0o.xc6x._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0o.xc6x._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_069ybyi._.js → _0o5jtpp._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_069ybyi._.js.map → _0o5jtpp._.js.map} +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/_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/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/{0xzs6jdtkmbic.js → 0.6cxpzg17sn6.js} +1 -1
- package/web/.next/static/chunks/{01zrwm.x3kpdo.js → 0.qnh4.ep7ao~.js} +1 -1
- package/web/.next/static/chunks/0.s8cxri-_s9l.js +1 -0
- package/web/.next/static/chunks/{0nkujbu62z1jl.js → 012cnd7koqv6d.js} +1 -1
- package/web/.next/static/chunks/{0lwuepa24tqxy.js → 04jionivp3_ez.js} +1 -1
- package/web/.next/static/chunks/{16jgc8hqxrp.u.js → 08.fojzqujth6.js} +1 -1
- package/web/.next/static/chunks/{0~4c6tnw7xnnl.js → 08vht-qo5~08s.js} +1 -1
- package/web/.next/static/chunks/{09lcrhxslt-u8.js → 09isotkx1pkzc.js} +1 -1
- package/web/.next/static/chunks/{024vi1xxw5ccj.js → 0a_ziudqwtxyy.js} +1 -1
- package/web/.next/static/chunks/{0vq.b40jzhi7r.js → 0d4iivq6b8jz7.js} +3 -3
- package/web/.next/static/chunks/0inayq2zzadja.js +1 -0
- package/web/.next/static/chunks/{0dprl~vdhvhk7.js → 0kq24x6qxo0yf.js} +1 -1
- package/web/.next/static/chunks/{0xo.hi4px83w2.js → 0nfd9bvcnbcgl.js} +1 -1
- package/web/.next/static/chunks/{0jt5jzg88skg5.js → 0p6wyufdajjl4.js} +1 -1
- package/web/.next/static/chunks/{0e.8n42~fpeqa.js → 0s_v4gsovl1-z.js} +1 -1
- package/web/.next/static/chunks/0ug478hm-8bog.js +5 -0
- package/web/.next/static/chunks/0xiij~eqq6_qk.js +1 -0
- package/web/.next/static/chunks/0~eah4x24wb1-.js +1 -0
- package/web/.next/static/chunks/{043zp6fpfaz07.js → 103~2jt99sx06.js} +3 -3
- package/web/.next/static/chunks/10rtagfoabp3b.js +1 -0
- package/web/.next/server/chunks/ssr/_0kt18~b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_12uy.45._.js +0 -3
- package/web/.next/server/chunks/ssr/_12uy.45._.js.map +0 -1
- package/web/.next/static/chunks/0aq9-lg.5r.nk.js +0 -5
- package/web/.next/static/chunks/0lz-oq74e_ciu.js +0 -1
- package/web/.next/static/chunks/0rb5cx51f5u8h.js +0 -1
- package/web/.next/static/chunks/0tdbctvrma.oi.js +0 -1
- package/web/.next/static/chunks/0wd.i4f822qoa.js +0 -1
- package/web/.next/static/chunks/13q1peb_t9vj8.js +0 -1
- /package/web/.next/static/{kDUolP-Zj2jCRleGJJGX0 → 3DHMcTcCWCDRMDGngyeVk}/_buildManifest.js +0 -0
- /package/web/.next/static/{kDUolP-Zj2jCRleGJJGX0 → 3DHMcTcCWCDRMDGngyeVk}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{kDUolP-Zj2jCRleGJJGX0 → 3DHMcTcCWCDRMDGngyeVk}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[2,a=>{"use strict";let b=(0,a.i(97624).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",0,b],2)},8685,a=>{"use strict";let b=(0,a.i(97624).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",0,b],8685)},78454,a=>{"use strict";a.i(24255),a.s([])},96867,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(59653),e=a.i(80303),f=a.i(95819),g=a.i(47427),h=a.i(41387),i=a.i(97045),j=a.i(30419),k="Switch",[l,m]=(0,f.createContextScope)(k),[n,o]=l(k),p=c.forwardRef((a,f)=>{let{__scopeSwitch:h,name:i,checked:l,defaultChecked:m,required:o,disabled:p,value:q="on",onCheckedChange:r,form:u,...v}=a,[w,x]=c.useState(null),y=(0,e.useComposedRefs)(f,a=>x(a)),z=c.useRef(!1),A=!w||u||!!w.closest("form"),[B,C]=(0,g.useControllableState)({prop:l,defaultProp:m??!1,onChange:r,caller:k});return(0,b.jsxs)(n,{scope:h,checked:B,disabled:p,children:[(0,b.jsx)(j.Primitive.button,{type:"button",role:"switch","aria-checked":B,"aria-required":o,"data-state":t(B),"data-disabled":p?"":void 0,disabled:p,value:q,...v,ref:y,onClick:(0,d.composeEventHandlers)(a.onClick,a=>{C(a=>!a),A&&(z.current=a.isPropagationStopped(),z.current||a.stopPropagation())})}),A&&(0,b.jsx)(s,{control:w,bubbles:!z.current,name:i,value:q,checked:B,required:o,disabled:p,form:u,style:{transform:"translateX(-100%)"}})]})});p.displayName=k;var q="SwitchThumb",r=c.forwardRef((a,c)=>{let{__scopeSwitch:d,...e}=a,f=o(q,d);return(0,b.jsx)(j.Primitive.span,{"data-state":t(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:c})});r.displayName=q;var s=c.forwardRef(({__scopeSwitch:a,control:d,checked:f,bubbles:g=!0,...j},k)=>{let l=c.useRef(null),m=(0,e.useComposedRefs)(l,k),n=(0,h.usePrevious)(f),o=(0,i.useSize)(d);return c.useEffect(()=>{let a=l.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(n!==f&&b){let c=new Event("click",{bubbles:g});b.call(a,f),a.dispatchEvent(c)}},[n,f,g]),(0,b.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:f,...j,tabIndex:-1,ref:m,style:{...j.style,...o,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function t(a){return a?"checked":"unchecked"}s.displayName="SwitchBubbleInput",a.s(["Root",0,p,"Switch",0,p,"SwitchThumb",0,r,"Thumb",0,r,"createSwitchScope",0,m],79195);var u=a.i(79195),u=u,v=a.i(85536);a.s(["Switch",0,function({className:a,size:c="default",...d}){return(0,b.jsx)(u.Root,{"data-slot":"switch","data-size":c,className:(0,v.cn)("peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6",a),...d,children:(0,b.jsx)(u.Thumb,{"data-slot":"switch-thumb",className:(0,v.cn)("bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 rtl:data-[state=checked]:-translate-x-[calc(100%-2px)]")})})}],96867)},84117,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(85536);let e=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("bg-card text-card-foreground editorial-shadow rounded-xl border",a),...c}));e.displayName="Card";let f=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex flex-col space-y-1.5 p-6",a),...c}));f.displayName="CardHeader";let g=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("leading-none font-semibold tracking-tight",a),...c}));g.displayName="CardTitle";let h=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-muted-foreground text-sm",a),...c}));h.displayName="CardDescription";let i=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("p-6 pt-0",a),...c}));i.displayName="CardContent",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex items-center p-6 pt-0",a),...c})).displayName="CardFooter",a.s(["Card",0,e,"CardContent",0,i,"CardDescription",0,h,"CardHeader",0,f,"CardTitle",0,g])},38702,16223,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g,...h}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",g),...h,children:[a?(0,b.jsx)("div",{className:"text-muted-foreground",children:a}):null,(0,b.jsx)("h3",{className:"text-lg font-semibold",children:d}),e?(0,b.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:e}):null,f?(0,b.jsx)("div",{className:"mt-2",children:f}):null]})}],16223),a.s([],38702)},55135,75550,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["PageHeader",0,function({title:a,description:d,eyebrow:e,children:f,className:g}){return(0,b.jsxs)("header",{className:(0,c.cn)("flex items-center justify-between gap-4",g),children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[e?(0,b.jsx)("span",{className:"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase",children:e}):null,(0,b.jsx)("div",{className:"flex items-baseline gap-3",children:(0,b.jsx)("h1",{className:"text-foreground text-3xl font-black tracking-tight",children:a})}),d?(0,b.jsx)("p",{className:"text-muted-foreground text-sm font-medium",children:d}):null]}),f?(0,b.jsx)("div",{"data-slot":"actions",children:f}):null]})}],75550),a.s([],55135)},69023,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(50950),e=a.i(85257),f=a.i(3403),f=f,g=a.i(52313),h=a.i(90920),i=a.i(18948);a.i(55135);var j=a.i(75550);a.i(38702);var k=a.i(16223),l=a.i(84117),m=a.i(58339),n=a.i(96867);a.i(98617);var o=a.i(50040);function p({plugin:a,installed:c,onSelect:d,onToggle:e}){let{t:f}=(0,o.useTranslation)("web");return(0,b.jsxs)(l.Card,{className:"cursor-pointer p-5 transition-all duration-300 hover:scale-[1.02] hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600",role:"button",tabIndex:0,onClick:()=>d(a),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),d(a))},"data-testid":`plugin-card-${a.name}`,children:[(0,b.jsx)("h3",{className:"text-foreground text-sm leading-tight font-bold tracking-tight",children:a.name}),a.version?(0,b.jsxs)("p",{className:"text-muted-foreground mt-1 font-mono text-xs",children:["v",a.version]}):null,(0,b.jsx)("p",{className:"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed",children:a.description}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[a.category?(0,b.jsx)(m.Badge,{variant:"outline",children:a.category}):null,c?(0,b.jsx)(m.Badge,{variant:"secondary",children:f("plugins.installed")}):(0,b.jsx)(m.Badge,{variant:"outline",className:"opacity-50",children:f("plugins.notInstalled")})]}),c?(0,b.jsxs)("div",{className:"mt-3 flex items-center gap-2",onClick:a=>a.stopPropagation(),onKeyDown:a=>a.stopPropagation(),children:[(0,b.jsx)(n.Switch,{checked:c.enabled,onCheckedChange:b=>e?.(a.name,b),"data-testid":`plugin-toggle-${a.name}`}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:f(c.enabled?"plugins.disable":"plugins.enable")})]}):null]})}a.i(78454);var q=a.i(24255),r=a.i(2824),s=a.i(13126),t=a.i(2);function u({plugin:a,installed:c,open:d,onClose:e,onInstall:f,onUninstall:g}){let{t:h}=(0,o.useTranslation)("web");if(!a)return null;let j=function(a){let{source:b}=a;if("github"===b.source&&b.repo)return`https://github.com/${b.repo}`;if(("url"===b.source||"git-subdir"===b.source)&&b.url)try{let a=new URL(b.url);if("https:"===a.protocol)return b.url}catch{}return null}(a);return(0,b.jsxs)(q.BaseDrawer,{open:d,onClose:e,children:[(0,b.jsx)(r.DrawerTitle,{className:"text-foreground text-lg font-bold tracking-tight",children:a.name}),(0,b.jsx)(r.DrawerDescription,{className:"text-muted-foreground mt-1 text-sm",children:a.description}),(0,b.jsx)(s.Separator,{className:"my-4"}),(0,b.jsxs)("div",{className:"space-y-3",children:[a.version?(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-sm",children:h("plugins.version")}),(0,b.jsxs)("span",{className:"font-mono text-sm",children:["v",a.version]})]}):null,a.category?(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-sm",children:h("plugins.category")}),(0,b.jsx)(m.Badge,{variant:"outline",children:a.category})]}):null,j?(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-sm",children:h("plugins.source")}),(0,b.jsxs)("a",{href:j,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:text-primary/80 inline-flex items-center gap-1 text-sm underline underline-offset-2",children:[a.source.repo??"Repository",(0,b.jsx)(t.ExternalLink,{className:"size-3"})]})]}):null,a.keywords&&a.keywords.length>0?(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5 pt-2",children:a.keywords.map(a=>(0,b.jsx)(m.Badge,{variant:"outline",className:"text-xs",children:a},a))}):null]}),(0,b.jsx)(s.Separator,{className:"my-4"}),(0,b.jsx)("div",{className:"flex gap-2",children:c?(0,b.jsx)(i.Button,{variant:"destructive",size:"sm",onClick:()=>g?.(a.name),"data-testid":"plugin-uninstall-button",children:h("plugins.uninstall")}):(0,b.jsx)(i.Button,{size:"sm",onClick:()=>f?.(a.name),"data-testid":"plugin-install-button",children:h("plugins.install")})})]})}var v=a.i(6120);let w=(0,v.createServerReference)("00425186092e8f157f7f69938da2571e7544ffcc9e",v.callServer,void 0,v.findSourceMapURL,"fetchPluginCatalogAction"),x=(0,v.createServerReference)("70c58f5fb7756301b307fcdc06f9a3299a7ae88ba4",v.callServer,void 0,v.findSourceMapURL,"installPluginAction"),y=(0,v.createServerReference)("60418c739948e9045a8f01b8a21c0a9b63c91da2e2",v.callServer,void 0,v.findSourceMapURL,"uninstallPluginAction"),z=(0,v.createServerReference)("70ddfec2653c4477600d5f8c140fa22c2e72ab43bd",v.callServer,void 0,v.findSourceMapURL,"togglePluginAction");a.s(["PluginsPageClient",0,function({proxyConfigured:a,isClaudeCode:l}){let{t:m}=(0,o.useTranslation)("web"),[,n]=(0,c.useTransition)(),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)(null),[v,A]=(0,c.useState)(null),[B,C]=(0,c.useState)([]),[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)(!0);(0,c.useEffect)(()=>{a?w().then(a=>{C(a.plugins),E(a.installedPlugins),G(!1)}):G(!1)},[a]);let H=(0,c.useMemo)(()=>{let a=new Set;for(let b of B)b.category&&a.add(b.category);return Array.from(a).sort()},[B]),I=(0,c.useMemo)(()=>{let a=q.toLowerCase();return B.filter(b=>{if(s&&b.category!==s)return!1;if(a){let c=b.name.toLowerCase().includes(a),d=b.description.toLowerCase().includes(a);if(!c&&!d)return!1}return!0})},[B,q,s]),J=a=>D.find(b=>b.id.startsWith(`${a}@`)),K=(a,b)=>{n(async()=>{let c=await z(a,"default",b);c.success?(g.toast.success(`${a} ${b?"enabled":"disabled"}`),E((await w()).installedPlugins)):g.toast.error(c.error??"Toggle failed")})};return l?a?F?(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsxs)("div",{className:"text-muted-foreground text-center text-sm",children:[m("accessibility.loading"),"..."]})]}):0===B.length?(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsx)(k.EmptyState,{icon:(0,b.jsx)(e.Blocks,{className:"size-10"}),title:m("plugins.emptyState")})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(d.Search,{className:"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2"}),(0,b.jsx)(h.Input,{placeholder:m("plugins.searchPlaceholder"),value:q,onChange:a=>r(a.target.value),className:"ps-9","data-testid":"plugin-search"})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(i.Button,{variant:null===s?"default":"outline",size:"sm",onClick:()=>t(null),children:m("plugins.allCategories")}),H.map(a=>(0,b.jsx)(i.Button,{variant:s===a?"default":"outline",size:"sm",onClick:()=>t(a===s?null:a),children:a},a))]}),I.length>0?(0,b.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:I.map(a=>(0,b.jsx)(p,{plugin:a,installed:J(a.name),onSelect:A,onToggle:K},a.name))}):(0,b.jsx)(k.EmptyState,{icon:(0,b.jsx)(d.Search,{className:"size-10"}),title:m("plugins.emptyState"),action:(0,b.jsx)(i.Button,{variant:"outline",onClick:()=>{r(""),t(null)},children:m("plugins.clearFilters")})}),(0,b.jsx)(u,{plugin:v,installed:v?J(v.name):void 0,open:!!v,onClose:()=>A(null),onInstall:a=>{n(async()=>{let b=await x(a,"default");b.success?(g.toast.success(`${a} installed`),E((await w()).installedPlugins)):g.toast.error(b.error??"Installation failed")})},onUninstall:a=>{n(async()=>{let b=await y(a,"default");b.success?(g.toast.success(`${a} uninstalled`),E((await w()).installedPlugins)):g.toast.error(b.error??"Uninstallation failed")})}})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsx)(k.EmptyState,{icon:(0,b.jsx)(f.default,{className:"size-10"}),title:m("plugins.noProxy")})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsx)(k.EmptyState,{icon:(0,b.jsx)(f.default,{className:"size-10"}),title:m("plugins.wrongAgent")})]})}],69023)}];
|
|
1
|
+
module.exports=[2,a=>{"use strict";let b=(0,a.i(97624).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",0,b],2)},8685,a=>{"use strict";let b=(0,a.i(97624).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",0,b],8685)},78454,a=>{"use strict";a.i(24255),a.s([])},96867,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(59653),e=a.i(80303),f=a.i(95819),g=a.i(47427),h=a.i(41387),i=a.i(97045),j=a.i(30419),k="Switch",[l,m]=(0,f.createContextScope)(k),[n,o]=l(k),p=c.forwardRef((a,f)=>{let{__scopeSwitch:h,name:i,checked:l,defaultChecked:m,required:o,disabled:p,value:q="on",onCheckedChange:r,form:u,...v}=a,[w,x]=c.useState(null),y=(0,e.useComposedRefs)(f,a=>x(a)),z=c.useRef(!1),A=!w||u||!!w.closest("form"),[B,C]=(0,g.useControllableState)({prop:l,defaultProp:m??!1,onChange:r,caller:k});return(0,b.jsxs)(n,{scope:h,checked:B,disabled:p,children:[(0,b.jsx)(j.Primitive.button,{type:"button",role:"switch","aria-checked":B,"aria-required":o,"data-state":t(B),"data-disabled":p?"":void 0,disabled:p,value:q,...v,ref:y,onClick:(0,d.composeEventHandlers)(a.onClick,a=>{C(a=>!a),A&&(z.current=a.isPropagationStopped(),z.current||a.stopPropagation())})}),A&&(0,b.jsx)(s,{control:w,bubbles:!z.current,name:i,value:q,checked:B,required:o,disabled:p,form:u,style:{transform:"translateX(-100%)"}})]})});p.displayName=k;var q="SwitchThumb",r=c.forwardRef((a,c)=>{let{__scopeSwitch:d,...e}=a,f=o(q,d);return(0,b.jsx)(j.Primitive.span,{"data-state":t(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:c})});r.displayName=q;var s=c.forwardRef(({__scopeSwitch:a,control:d,checked:f,bubbles:g=!0,...j},k)=>{let l=c.useRef(null),m=(0,e.useComposedRefs)(l,k),n=(0,h.usePrevious)(f),o=(0,i.useSize)(d);return c.useEffect(()=>{let a=l.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(n!==f&&b){let c=new Event("click",{bubbles:g});b.call(a,f),a.dispatchEvent(c)}},[n,f,g]),(0,b.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:f,...j,tabIndex:-1,ref:m,style:{...j.style,...o,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function t(a){return a?"checked":"unchecked"}s.displayName="SwitchBubbleInput",a.s(["Root",0,p,"Switch",0,p,"SwitchThumb",0,r,"Thumb",0,r,"createSwitchScope",0,m],79195);var u=a.i(79195),u=u,v=a.i(85536);a.s(["Switch",0,function({className:a,size:c="default",...d}){return(0,b.jsx)(u.Root,{"data-slot":"switch","data-size":c,className:(0,v.cn)("peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6",a),...d,children:(0,b.jsx)(u.Thumb,{"data-slot":"switch-thumb",className:(0,v.cn)("bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 rtl:data-[state=checked]:-translate-x-[calc(100%-2px)]")})})}],96867)},84117,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(85536);let e=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("bg-card text-card-foreground editorial-shadow rounded-xl border",a),...c}));e.displayName="Card";let f=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex flex-col space-y-1.5 p-6",a),...c}));f.displayName="CardHeader";let g=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("leading-none font-semibold tracking-tight",a),...c}));g.displayName="CardTitle";let h=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-muted-foreground text-sm",a),...c}));h.displayName="CardDescription";let i=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("p-6 pt-0",a),...c}));i.displayName="CardContent",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex items-center p-6 pt-0",a),...c})).displayName="CardFooter",a.s(["Card",0,e,"CardContent",0,i,"CardDescription",0,h,"CardHeader",0,f,"CardTitle",0,g])},38702,16223,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g,...h}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",g),...h,children:[a?(0,b.jsx)("div",{className:"text-muted-foreground",children:a}):null,(0,b.jsx)("h3",{className:"text-lg font-semibold",children:d}),e?(0,b.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:e}):null,f?(0,b.jsx)("div",{className:"mt-2",children:f}):null]})}],16223),a.s([],38702)},55135,75550,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["PageHeader",0,function({title:a,description:d,eyebrow:e,children:f,className:g}){return(0,b.jsxs)("header",{className:(0,c.cn)("flex items-center justify-between gap-4",g),children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[e?(0,b.jsx)("span",{className:"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase",children:e}):null,(0,b.jsx)("div",{className:"flex items-baseline gap-3",children:(0,b.jsx)("h1",{className:"text-foreground text-3xl font-black tracking-tight",children:a})}),d?(0,b.jsx)("p",{className:"text-muted-foreground text-sm font-medium",children:d}):null]}),f?(0,b.jsx)("div",{"data-slot":"actions",children:f}):null]})}],75550),a.s([],55135)},69023,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(50950),e=a.i(85257),f=a.i(3403),f=f,g=a.i(52313),h=a.i(90920),i=a.i(18948);a.i(55135);var j=a.i(75550);a.i(38702);var k=a.i(16223),l=a.i(84117),m=a.i(58339),n=a.i(96867);a.i(98617);var o=a.i(50040);function p({plugin:a,installed:c,onSelect:d,onToggle:e}){let{t:f}=(0,o.useTranslation)("web");return(0,b.jsxs)(l.Card,{className:"cursor-pointer p-5 transition-all duration-300 hover:scale-[1.02] hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600",role:"button",tabIndex:0,onClick:()=>d(a),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),d(a))},"data-testid":`plugin-card-${a.name}`,children:[(0,b.jsx)("h3",{className:"text-foreground text-sm leading-tight font-bold tracking-tight",children:a.name}),a.version?(0,b.jsxs)("p",{className:"text-muted-foreground mt-1 font-mono text-xs",children:["v",a.version]}):null,(0,b.jsx)("p",{className:"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed",children:a.description}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[a.category?(0,b.jsx)(m.Badge,{variant:"outline",children:a.category}):null,c?(0,b.jsx)(m.Badge,{variant:"secondary",children:f("plugins.installed")}):(0,b.jsx)(m.Badge,{variant:"outline",className:"opacity-50",children:f("plugins.notInstalled")})]}),c?(0,b.jsxs)("div",{className:"mt-3 flex items-center gap-2",onClick:a=>a.stopPropagation(),onKeyDown:a=>a.stopPropagation(),children:[(0,b.jsx)(n.Switch,{checked:c.enabled,onCheckedChange:b=>e?.(a.name,b),"data-testid":`plugin-toggle-${a.name}`}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:f(c.enabled?"plugins.disable":"plugins.enable")})]}):null]})}a.i(78454);var q=a.i(24255),r=a.i(2824),s=a.i(13126),t=a.i(2);function u({plugin:a,installed:c,open:d,onClose:e,onInstall:f,onUninstall:g}){let{t:h}=(0,o.useTranslation)("web");if(!a)return null;let j=function(a){let{source:b}=a;if("github"===b.source&&b.repo)return`https://github.com/${b.repo}`;if(("url"===b.source||"git-subdir"===b.source)&&b.url)try{let a=new URL(b.url);if("https:"===a.protocol)return b.url}catch{}return null}(a);return(0,b.jsxs)(q.BaseDrawer,{open:d,onClose:e,children:[(0,b.jsx)(r.DrawerTitle,{className:"text-foreground text-lg font-bold tracking-tight",children:a.name}),(0,b.jsx)(r.DrawerDescription,{className:"text-muted-foreground mt-1 text-sm",children:a.description}),(0,b.jsx)(s.Separator,{className:"my-4"}),(0,b.jsxs)("div",{className:"space-y-3",children:[a.version?(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-sm",children:h("plugins.version")}),(0,b.jsxs)("span",{className:"font-mono text-sm",children:["v",a.version]})]}):null,a.category?(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-sm",children:h("plugins.category")}),(0,b.jsx)(m.Badge,{variant:"outline",children:a.category})]}):null,j?(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-sm",children:h("plugins.source")}),(0,b.jsxs)("a",{href:j,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:text-primary/80 inline-flex items-center gap-1 text-sm underline underline-offset-2",children:[a.source.repo??"Repository",(0,b.jsx)(t.ExternalLink,{className:"size-3"})]})]}):null,a.keywords&&a.keywords.length>0?(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5 pt-2",children:a.keywords.map(a=>(0,b.jsx)(m.Badge,{variant:"outline",className:"text-xs",children:a},a))}):null]}),(0,b.jsx)(s.Separator,{className:"my-4"}),(0,b.jsx)("div",{className:"flex gap-2",children:c?(0,b.jsx)(i.Button,{variant:"destructive",size:"sm",onClick:()=>g?.(a.name),"data-testid":"plugin-uninstall-button",children:h("plugins.uninstall")}):(0,b.jsx)(i.Button,{size:"sm",onClick:()=>f?.(a.name),"data-testid":"plugin-install-button",children:h("plugins.install")})})]})}var v=a.i(6120);let w=(0,v.createServerReference)("000c5b7cafc7a8b33f941b92fbcb5205774f886405",v.callServer,void 0,v.findSourceMapURL,"fetchPluginCatalogAction"),x=(0,v.createServerReference)("7023359a49b5c9fa86703c803746c65b653628e386",v.callServer,void 0,v.findSourceMapURL,"installPluginAction"),y=(0,v.createServerReference)("605bb20e61b866f5a359cf7ac454a4379972446e35",v.callServer,void 0,v.findSourceMapURL,"uninstallPluginAction"),z=(0,v.createServerReference)("703dac2e4fa002ccfef10578f218533cae8d2e64db",v.callServer,void 0,v.findSourceMapURL,"togglePluginAction");a.s(["PluginsPageClient",0,function({proxyConfigured:a,isClaudeCode:l}){let{t:m}=(0,o.useTranslation)("web"),[,n]=(0,c.useTransition)(),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)(null),[v,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(null),[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)([]),[H,I]=(0,c.useState)(!0);(0,c.useEffect)(()=>{a?w().then(a=>{E(a.plugins),G(a.installedPlugins),I(!1)}):I(!1)},[a]);let J=(0,c.useMemo)(()=>{let a=new Set;for(let b of D)b.category&&a.add(b.category);return Array.from(a).sort()},[D]),K=(0,c.useMemo)(()=>{let a=q.toLowerCase();return D.filter(b=>{if(s&&b.category!==s)return!1;if(v){let a=!!F.find(a=>a.id.startsWith(`${b.name}@`));if("installed"===v&&!a||"not-installed"===v&&a)return!1}if(a){let c=b.name.toLowerCase().includes(a),d=b.description.toLowerCase().includes(a);if(!c&&!d)return!1}return!0})},[D,q,s,v,F]),L=a=>F.find(b=>b.id.startsWith(`${a}@`)),M=(a,b)=>{n(async()=>{let c=await z(a,"default",b);c.success?(g.toast.success(`${a} ${b?"enabled":"disabled"}`),G((await w()).installedPlugins)):g.toast.error(c.error??"Toggle failed")})};return l?a?H?(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsxs)("div",{className:"text-muted-foreground text-center text-sm",children:[m("accessibility.loading"),"..."]})]}):0===D.length?(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsx)(k.EmptyState,{icon:(0,b.jsx)(e.Blocks,{className:"size-10"}),title:m("plugins.emptyState")})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(d.Search,{className:"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2"}),(0,b.jsx)(h.Input,{placeholder:m("plugins.searchPlaceholder"),value:q,onChange:a=>r(a.target.value),className:"ps-9","data-testid":"plugin-search"})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(i.Button,{variant:null===s?"default":"outline",size:"sm",onClick:()=>t(null),children:m("plugins.allCategories")}),J.map(a=>(0,b.jsx)(i.Button,{variant:s===a?"default":"outline",size:"sm",onClick:()=>t(a===s?null:a),children:a},a))]}),(0,b.jsx)("div",{className:"bg-border h-6 w-px"}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(i.Button,{variant:null===v?"default":"outline",size:"sm",onClick:()=>A(null),children:"All Status"}),(0,b.jsx)(i.Button,{variant:"installed"===v?"default":"outline",size:"sm",onClick:()=>A("installed"===v?null:"installed"),children:m("plugins.installed")}),(0,b.jsx)(i.Button,{variant:"not-installed"===v?"default":"outline",size:"sm",onClick:()=>A("not-installed"===v?null:"not-installed"),children:m("plugins.notInstalled")})]})]}),K.length>0?(0,b.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:K.map(a=>(0,b.jsx)(p,{plugin:a,installed:L(a.name),onSelect:C,onToggle:M},a.name))}):(0,b.jsx)(k.EmptyState,{icon:(0,b.jsx)(d.Search,{className:"size-10"}),title:m("plugins.emptyState"),action:(0,b.jsx)(i.Button,{variant:"outline",onClick:()=>{r(""),t(null),A(null)},children:m("plugins.clearFilters")})}),(0,b.jsx)(u,{plugin:B,installed:B?L(B.name):void 0,open:!!B,onClose:()=>C(null),onInstall:a=>{n(async()=>{let b=await x(a,"default");b.success?(g.toast.success(`${a} installed`),G((await w()).installedPlugins)):g.toast.error(b.error??"Installation failed")})},onUninstall:a=>{n(async()=>{let b=await y(a,"default");b.success?(g.toast.success(`${a} uninstalled`),G((await w()).installedPlugins)):g.toast.error(b.error??"Uninstallation failed")})}})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsx)(k.EmptyState,{icon:(0,b.jsx)(f.default,{className:"size-10"}),title:m("plugins.noProxy")})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(j.PageHeader,{eyebrow:"Developer Portal",title:m("plugins.title")}),(0,b.jsx)(k.EmptyState,{icon:(0,b.jsx)(f.default,{className:"size-10"}),title:m("plugins.wrongAgent")})]})}],69023)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_10joy2y._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/terminal.ts","../../../../../../../src/presentation/web/components/common/base-drawer/index.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-switch%401.2.6_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Breact_e3738c514c10df2ef7e24af5ee461853/node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/switch.tsx","../../../../../../../src/presentation/web/components/ui/card.tsx","../../../../../../../src/presentation/web/components/common/empty-state/empty-state.tsx","../../../../../../../src/presentation/web/components/common/page-header/page-header.tsx","../../../../../../../src/presentation/web/components/features/plugins/plugins-page-client.tsx","../../../../../../../src/presentation/web/components/features/plugins/plugin-card.tsx","../../../../../../../src/presentation/web/components/features/plugins/plugin-detail-drawer.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ad9f1dc%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Abd1ee4%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A22bfc7%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A82036e%20%3Ctext/javascript%3E"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19h8', key: 'baeox8' }],\n ['path', { d: 'm4 17 6-6-6-6', key: '1yngyt' }],\n];\n\n/**\n * @component @name Terminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Terminal = createLucideIcon('terminal', __iconNode);\n\nexport default Terminal;\n","export { BaseDrawer, type BaseDrawerProps } from './base-drawer';\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Switch as SwitchPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Switch({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 rtl:data-[state=checked]:-translate-x-[calc(100%-2px)]'\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/*\n * Card — shadcn primitive extended with Stitch's editorial-shadow utility.\n * The `editorial-shadow` class (globals.css) replaces the old `shadow` class\n * with a subtle shadow + ring combination that gives cards a \"lifted\" look\n * and renders consistently against the editorial surface palette in both\n * light and dark modes. The `border` class stays for explicit border visibility\n * in dense grids; editorial-shadow's ring provides the soft lift on top.\n */\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground editorial-shadow rounded-xl border', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n className,\n ...props\n}: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center gap-4 px-4 py-12 text-center', className)}\n {...props}\n >\n {icon ? <div className=\"text-muted-foreground\">{icon}</div> : null}\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description ? <p className=\"text-muted-foreground max-w-md text-sm\">{description}</p> : null}\n {action ? <div className=\"mt-2\">{action}</div> : null}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n /** Optional eyebrow label above the title (e.g., \"DEVELOPER PORTAL\") */\n eyebrow?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\n/*\n * PageHeader — Stitch editorial page header pattern.\n * Renders: tiny uppercase eyebrow → large bold title → muted description.\n * Matches the tools-page-client.tsx header treatment.\n * See .scratchpad/stitch/shipit-developer-portal/src/App.tsx:161\n */\nexport function PageHeader({ title, description, eyebrow, children, className }: PageHeaderProps) {\n return (\n <header className={cn('flex items-center justify-between gap-4', className)}>\n <div className=\"space-y-1.5\">\n {eyebrow ? (\n <span className=\"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase\">\n {eyebrow}\n </span>\n ) : null}\n <div className=\"flex items-baseline gap-3\">\n <h1 className=\"text-foreground text-3xl font-black tracking-tight\">{title}</h1>\n </div>\n {description ? (\n <p className=\"text-muted-foreground text-sm font-medium\">{description}</p>\n ) : null}\n </div>\n {children ? <div data-slot=\"actions\">{children}</div> : null}\n </header>\n );\n}\n","'use client';\n\nimport { useState, useMemo, useEffect, useTransition } from 'react';\nimport { Search, Blocks, AlertCircle } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { PageHeader } from '@/components/common/page-header';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { PluginCard } from './plugin-card';\nimport { PluginDetailDrawer } from './plugin-detail-drawer';\nimport { useTranslation } from 'react-i18next';\nimport { fetchPluginCatalogAction } from '@/app/actions/fetch-plugin-catalog';\nimport { installPluginAction } from '@/app/actions/install-plugin';\nimport { uninstallPluginAction } from '@/app/actions/uninstall-plugin';\nimport { togglePluginAction } from '@/app/actions/toggle-plugin';\nimport type {\n PluginMarketplaceEntry,\n InstalledPlugin,\n} from '@shipit-ai/core/application/ports/output/services/plugin-marketplace.interface';\n\nexport interface PluginsPageClientProps {\n proxyConfigured: boolean;\n isClaudeCode: boolean;\n}\n\nexport function PluginsPageClient({ proxyConfigured, isClaudeCode }: PluginsPageClientProps) {\n const { t } = useTranslation('web');\n const [, startTransition] = useTransition();\n const [searchQuery, setSearchQuery] = useState('');\n const [activeCategory, setActiveCategory] = useState<string | null>(null);\n const [selectedPlugin, setSelectedPlugin] = useState<PluginMarketplaceEntry | null>(null);\n const [plugins, setPlugins] = useState<PluginMarketplaceEntry[]>([]);\n const [installedPlugins, setInstalledPlugins] = useState<InstalledPlugin[]>([]);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n if (!proxyConfigured) {\n setLoading(false);\n return;\n }\n fetchPluginCatalogAction().then((result) => {\n setPlugins(result.plugins);\n setInstalledPlugins(result.installedPlugins);\n setLoading(false);\n });\n }, [proxyConfigured]);\n\n const categories = useMemo(() => {\n const cats = new Set<string>();\n for (const p of plugins) {\n if (p.category) cats.add(p.category);\n }\n return Array.from(cats).sort();\n }, [plugins]);\n\n const filteredPlugins = useMemo(() => {\n const query = searchQuery.toLowerCase();\n return plugins.filter((p) => {\n if (activeCategory && p.category !== activeCategory) return false;\n if (query) {\n const matchesName = p.name.toLowerCase().includes(query);\n const matchesDescription = p.description.toLowerCase().includes(query);\n if (!matchesName && !matchesDescription) return false;\n }\n return true;\n });\n }, [plugins, searchQuery, activeCategory]);\n\n const getInstalled = (pluginName: string) =>\n installedPlugins.find((ip) => ip.id.startsWith(`${pluginName}@`));\n\n const handleInstall = (pluginName: string) => {\n startTransition(async () => {\n const result = await installPluginAction(pluginName, 'default');\n if (result.success) {\n toast.success(`${pluginName} installed`);\n const catalog = await fetchPluginCatalogAction();\n setInstalledPlugins(catalog.installedPlugins);\n } else {\n toast.error(result.error ?? 'Installation failed');\n }\n });\n };\n\n const handleUninstall = (pluginName: string) => {\n startTransition(async () => {\n const result = await uninstallPluginAction(pluginName, 'default');\n if (result.success) {\n toast.success(`${pluginName} uninstalled`);\n const catalog = await fetchPluginCatalogAction();\n setInstalledPlugins(catalog.installedPlugins);\n } else {\n toast.error(result.error ?? 'Uninstallation failed');\n }\n });\n };\n\n const handleToggle = (pluginName: string, enabled: boolean) => {\n startTransition(async () => {\n const result = await togglePluginAction(pluginName, 'default', enabled);\n if (result.success) {\n toast.success(`${pluginName} ${enabled ? 'enabled' : 'disabled'}`);\n const catalog = await fetchPluginCatalogAction();\n setInstalledPlugins(catalog.installedPlugins);\n } else {\n toast.error(result.error ?? 'Toggle failed');\n }\n });\n };\n\n if (!isClaudeCode) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n <EmptyState icon={<AlertCircle className=\"size-10\" />} title={t('plugins.wrongAgent')} />\n </div>\n );\n }\n\n if (!proxyConfigured) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n <EmptyState icon={<AlertCircle className=\"size-10\" />} title={t('plugins.noProxy')} />\n </div>\n );\n }\n\n if (loading) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n <div className=\"text-muted-foreground text-center text-sm\">\n {t('accessibility.loading')}...\n </div>\n </div>\n );\n }\n\n if (plugins.length === 0) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n <EmptyState icon={<Blocks className=\"size-10\" />} title={t('plugins.emptyState')} />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n <Input\n placeholder={t('plugins.searchPlaceholder')}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"ps-9\"\n data-testid=\"plugin-search\"\n />\n </div>\n\n {/* Category filter pills */}\n <div className=\"flex flex-wrap gap-2\">\n <Button\n variant={activeCategory === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setActiveCategory(null)}\n >\n {t('plugins.allCategories')}\n </Button>\n {categories.map((cat) => (\n <Button\n key={cat}\n variant={activeCategory === cat ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setActiveCategory(cat === activeCategory ? null : cat)}\n >\n {cat}\n </Button>\n ))}\n </div>\n\n {/* Plugin grid */}\n {filteredPlugins.length > 0 ? (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {filteredPlugins.map((plugin) => (\n <PluginCard\n key={plugin.name}\n plugin={plugin}\n installed={getInstalled(plugin.name)}\n onSelect={setSelectedPlugin}\n onToggle={handleToggle}\n />\n ))}\n </div>\n ) : (\n <EmptyState\n icon={<Search className=\"size-10\" />}\n title={t('plugins.emptyState')}\n action={\n <Button\n variant=\"outline\"\n onClick={() => {\n setSearchQuery('');\n setActiveCategory(null);\n }}\n >\n {t('plugins.clearFilters')}\n </Button>\n }\n />\n )}\n\n {/* Detail drawer */}\n <PluginDetailDrawer\n plugin={selectedPlugin}\n installed={selectedPlugin ? getInstalled(selectedPlugin.name) : undefined}\n open={!!selectedPlugin}\n onClose={() => setSelectedPlugin(null)}\n onInstall={handleInstall}\n onUninstall={handleUninstall}\n />\n </div>\n );\n}\n","'use client';\n\nimport { Card } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport { Switch } from '@/components/ui/switch';\nimport type {\n PluginMarketplaceEntry,\n InstalledPlugin,\n} from '@shipit-ai/core/application/ports/output/services/plugin-marketplace.interface';\nimport { useTranslation } from 'react-i18next';\n\nexport interface PluginCardProps {\n plugin: PluginMarketplaceEntry;\n installed?: InstalledPlugin;\n onSelect: (plugin: PluginMarketplaceEntry) => void;\n onToggle?: (pluginName: string, enabled: boolean) => void;\n}\n\nexport function PluginCard({ plugin, installed, onSelect, onToggle }: PluginCardProps) {\n const { t } = useTranslation('web');\n\n return (\n <Card\n className=\"cursor-pointer p-5 transition-all duration-300 hover:scale-[1.02] hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(plugin)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(plugin);\n }\n }}\n data-testid={`plugin-card-${plugin.name}`}\n >\n <h3 className=\"text-foreground text-sm leading-tight font-bold tracking-tight\">\n {plugin.name}\n </h3>\n\n {plugin.version ? (\n <p className=\"text-muted-foreground mt-1 font-mono text-xs\">v{plugin.version}</p>\n ) : null}\n\n <p className=\"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed\">\n {plugin.description}\n </p>\n\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n {plugin.category ? <Badge variant=\"outline\">{plugin.category}</Badge> : null}\n {installed ? (\n <Badge variant=\"secondary\">{t('plugins.installed')}</Badge>\n ) : (\n <Badge variant=\"outline\" className=\"opacity-50\">\n {t('plugins.notInstalled')}\n </Badge>\n )}\n </div>\n\n {installed ? (\n <div\n className=\"mt-3 flex items-center gap-2\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Switch\n checked={installed.enabled}\n onCheckedChange={(checked) => onToggle?.(plugin.name, checked)}\n data-testid={`plugin-toggle-${plugin.name}`}\n />\n <span className=\"text-muted-foreground text-xs\">\n {installed.enabled ? t('plugins.disable') : t('plugins.enable')}\n </span>\n </div>\n ) : null}\n </Card>\n );\n}\n","'use client';\n\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { ExternalLink } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport type {\n PluginMarketplaceEntry,\n InstalledPlugin,\n} from '@shipit-ai/core/application/ports/output/services/plugin-marketplace.interface';\n\nexport interface PluginDetailDrawerProps {\n plugin: PluginMarketplaceEntry | null;\n installed?: InstalledPlugin;\n open: boolean;\n onClose: () => void;\n onInstall?: (pluginName: string) => void;\n onUninstall?: (pluginName: string) => void;\n}\n\nfunction getSourceUrl(plugin: PluginMarketplaceEntry): string | null {\n const { source } = plugin;\n if (source.source === 'github' && source.repo) {\n return `https://github.com/${source.repo}`;\n }\n if ((source.source === 'url' || source.source === 'git-subdir') && source.url) {\n try {\n const url = new URL(source.url);\n if (url.protocol === 'https:') return source.url;\n } catch {\n // Invalid URL — don't render as link\n }\n }\n return null;\n}\n\nexport function PluginDetailDrawer({\n plugin,\n installed,\n open,\n onClose,\n onInstall,\n onUninstall,\n}: PluginDetailDrawerProps) {\n const { t } = useTranslation('web');\n\n if (!plugin) return null;\n\n const sourceUrl = getSourceUrl(plugin);\n\n return (\n <BaseDrawer open={open} onClose={onClose}>\n <DrawerTitle className=\"text-foreground text-lg font-bold tracking-tight\">\n {plugin.name}\n </DrawerTitle>\n <DrawerDescription className=\"text-muted-foreground mt-1 text-sm\">\n {plugin.description}\n </DrawerDescription>\n\n <Separator className=\"my-4\" />\n\n <div className=\"space-y-3\">\n {plugin.version ? (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-muted-foreground text-sm\">{t('plugins.version')}</span>\n <span className=\"font-mono text-sm\">v{plugin.version}</span>\n </div>\n ) : null}\n\n {plugin.category ? (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-muted-foreground text-sm\">{t('plugins.category')}</span>\n <Badge variant=\"outline\">{plugin.category}</Badge>\n </div>\n ) : null}\n\n {sourceUrl ? (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-muted-foreground text-sm\">{t('plugins.source')}</span>\n <a\n href={sourceUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:text-primary/80 inline-flex items-center gap-1 text-sm underline underline-offset-2\"\n >\n {plugin.source.repo ?? 'Repository'}\n <ExternalLink className=\"size-3\" />\n </a>\n </div>\n ) : null}\n\n {plugin.keywords && plugin.keywords.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5 pt-2\">\n {plugin.keywords.map((kw) => (\n <Badge key={kw} variant=\"outline\" className=\"text-xs\">\n {kw}\n </Badge>\n ))}\n </div>\n ) : null}\n </div>\n\n <Separator className=\"my-4\" />\n\n <div className=\"flex gap-2\">\n {installed ? (\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => onUninstall?.(plugin.name)}\n data-testid=\"plugin-uninstall-button\"\n >\n {t('plugins.uninstall')}\n </Button>\n ) : (\n <Button\n size=\"sm\"\n onClick={() => onInstall?.(plugin.name)}\n data-testid=\"plugin-install-button\"\n >\n {t('plugins.install')}\n </Button>\n )}\n </div>\n </BaseDrawer>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"00425186092e8f157f7f69938da2571e7544ffcc9e\":{\"name\":\"fetchPluginCatalogAction\"}},\"src/presentation/web/app/actions/fetch-plugin-catalog.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"00425186092e8f157f7f69938da2571e7544ffcc9e\",callServer,void 0,findSourceMapURL,\"fetchPluginCatalogAction\");export{$$RSC_SERVER_ACTION_0 as fetchPluginCatalogAction};","/* __next_internal_action_entry_do_not_use__ [{\"70c58f5fb7756301b307fcdc06f9a3299a7ae88ba4\":{\"name\":\"installPluginAction\"}},\"src/presentation/web/app/actions/install-plugin.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"70c58f5fb7756301b307fcdc06f9a3299a7ae88ba4\",callServer,void 0,findSourceMapURL,\"installPluginAction\");export{$$RSC_SERVER_ACTION_0 as installPluginAction};","/* __next_internal_action_entry_do_not_use__ [{\"60418c739948e9045a8f01b8a21c0a9b63c91da2e2\":{\"name\":\"uninstallPluginAction\"}},\"src/presentation/web/app/actions/uninstall-plugin.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"60418c739948e9045a8f01b8a21c0a9b63c91da2e2\",callServer,void 0,findSourceMapURL,\"uninstallPluginAction\");export{$$RSC_SERVER_ACTION_0 as uninstallPluginAction};","/* __next_internal_action_entry_do_not_use__ [{\"70ddfec2653c4477600d5f8c140fa22c2e72ab43bd\":{\"name\":\"togglePluginAction\"}},\"src/presentation/web/app/actions/toggle-plugin.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"70ddfec2653c4477600d5f8c140fa22c2e72ab43bd\",callServer,void 0,findSourceMapURL,\"togglePluginAction\");export{$$RSC_SERVER_ACTION_0 as togglePluginAction};"],"names":["SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProvider","useSwitchContext","Switch","props","forwardedRef","__scopeSwitch","name","checked","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","switchProps","button","setButton","composedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","closest","setChecked","prop","defaultProp","onChange","caller","scope","children","type","role","getState","ref","onClick","event","prevChecked","current","isPropagationStopped","stopPropagation","SwitchBubbleInput","control","bubbles","style","transform","displayName","THUMB_NAME","SwitchThumb","thumbProps","context","span","BUBBLE_INPUT_NAME","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","set","Event","call","dispatchEvent","tabIndex","position","pointerEvents","opacity","margin","Root","Thumb","Card","className","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","EmptyState","icon","title","description","action","PageHeader","eyebrow"],"mappings":"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","ignoreList":[0,1,3]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/terminal.ts","../../../../../../../src/presentation/web/components/common/base-drawer/index.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-switch%401.2.6_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Breact_e3738c514c10df2ef7e24af5ee461853/node_modules/%40radix-ui/react-switch/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/switch.tsx","../../../../../../../src/presentation/web/components/ui/card.tsx","../../../../../../../src/presentation/web/components/common/empty-state/empty-state.tsx","../../../../../../../src/presentation/web/components/common/page-header/page-header.tsx","../../../../../../../src/presentation/web/components/features/plugins/plugins-page-client.tsx","../../../../../../../src/presentation/web/components/features/plugins/plugin-card.tsx","../../../../../../../src/presentation/web/components/features/plugins/plugin-detail-drawer.tsx","../../../../../../../src/presentation/web/app/actions/data%3Aacef29%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A3ae5cf%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A6d69fb%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Aabd3ea%20%3Ctext/javascript%3E"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19h8', key: 'baeox8' }],\n ['path', { d: 'm4 17 6-6-6-6', key: '1yngyt' }],\n];\n\n/**\n * @component @name Terminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Terminal = createLucideIcon('terminal', __iconNode);\n\nexport default Terminal;\n","export { BaseDrawer, type BaseDrawerProps } from './base-drawer';\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Switch as SwitchPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Switch({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 rtl:data-[state=checked]:-translate-x-[calc(100%-2px)]'\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/*\n * Card — shadcn primitive extended with Stitch's editorial-shadow utility.\n * The `editorial-shadow` class (globals.css) replaces the old `shadow` class\n * with a subtle shadow + ring combination that gives cards a \"lifted\" look\n * and renders consistently against the editorial surface palette in both\n * light and dark modes. The `border` class stays for explicit border visibility\n * in dense grids; editorial-shadow's ring provides the soft lift on top.\n */\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground editorial-shadow rounded-xl border', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n className,\n ...props\n}: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center gap-4 px-4 py-12 text-center', className)}\n {...props}\n >\n {icon ? <div className=\"text-muted-foreground\">{icon}</div> : null}\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description ? <p className=\"text-muted-foreground max-w-md text-sm\">{description}</p> : null}\n {action ? <div className=\"mt-2\">{action}</div> : null}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n /** Optional eyebrow label above the title (e.g., \"DEVELOPER PORTAL\") */\n eyebrow?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\n/*\n * PageHeader — Stitch editorial page header pattern.\n * Renders: tiny uppercase eyebrow → large bold title → muted description.\n * Matches the tools-page-client.tsx header treatment.\n * See .scratchpad/stitch/shipit-developer-portal/src/App.tsx:161\n */\nexport function PageHeader({ title, description, eyebrow, children, className }: PageHeaderProps) {\n return (\n <header className={cn('flex items-center justify-between gap-4', className)}>\n <div className=\"space-y-1.5\">\n {eyebrow ? (\n <span className=\"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase\">\n {eyebrow}\n </span>\n ) : null}\n <div className=\"flex items-baseline gap-3\">\n <h1 className=\"text-foreground text-3xl font-black tracking-tight\">{title}</h1>\n </div>\n {description ? (\n <p className=\"text-muted-foreground text-sm font-medium\">{description}</p>\n ) : null}\n </div>\n {children ? <div data-slot=\"actions\">{children}</div> : null}\n </header>\n );\n}\n","'use client';\n\nimport { useState, useMemo, useEffect, useTransition } from 'react';\nimport { Search, Blocks, AlertCircle } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { PageHeader } from '@/components/common/page-header';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { PluginCard } from './plugin-card';\nimport { PluginDetailDrawer } from './plugin-detail-drawer';\nimport { useTranslation } from 'react-i18next';\nimport { fetchPluginCatalogAction } from '@/app/actions/fetch-plugin-catalog';\nimport { installPluginAction } from '@/app/actions/install-plugin';\nimport { uninstallPluginAction } from '@/app/actions/uninstall-plugin';\nimport { togglePluginAction } from '@/app/actions/toggle-plugin';\nimport type {\n PluginMarketplaceEntry,\n InstalledPlugin,\n} from '@shipit-ai/core/application/ports/output/services/plugin-marketplace.interface';\n\nexport interface PluginsPageClientProps {\n proxyConfigured: boolean;\n isClaudeCode: boolean;\n}\n\nexport function PluginsPageClient({ proxyConfigured, isClaudeCode }: PluginsPageClientProps) {\n const { t } = useTranslation('web');\n const [, startTransition] = useTransition();\n const [searchQuery, setSearchQuery] = useState('');\n const [activeCategory, setActiveCategory] = useState<string | null>(null);\n const [statusFilter, setStatusFilter] = useState<'installed' | 'not-installed' | null>(null);\n const [selectedPlugin, setSelectedPlugin] = useState<PluginMarketplaceEntry | null>(null);\n const [plugins, setPlugins] = useState<PluginMarketplaceEntry[]>([]);\n const [installedPlugins, setInstalledPlugins] = useState<InstalledPlugin[]>([]);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n if (!proxyConfigured) {\n setLoading(false);\n return;\n }\n fetchPluginCatalogAction().then((result) => {\n setPlugins(result.plugins);\n setInstalledPlugins(result.installedPlugins);\n setLoading(false);\n });\n }, [proxyConfigured]);\n\n const categories = useMemo(() => {\n const cats = new Set<string>();\n for (const p of plugins) {\n if (p.category) cats.add(p.category);\n }\n return Array.from(cats).sort();\n }, [plugins]);\n\n const filteredPlugins = useMemo(() => {\n const query = searchQuery.toLowerCase();\n return plugins.filter((p) => {\n if (activeCategory && p.category !== activeCategory) return false;\n if (statusFilter) {\n const isInstalled = !!installedPlugins.find((ip) => ip.id.startsWith(`${p.name}@`));\n if (statusFilter === 'installed' && !isInstalled) return false;\n if (statusFilter === 'not-installed' && isInstalled) return false;\n }\n if (query) {\n const matchesName = p.name.toLowerCase().includes(query);\n const matchesDescription = p.description.toLowerCase().includes(query);\n if (!matchesName && !matchesDescription) return false;\n }\n return true;\n });\n }, [plugins, searchQuery, activeCategory, statusFilter, installedPlugins]);\n\n const getInstalled = (pluginName: string) =>\n installedPlugins.find((ip) => ip.id.startsWith(`${pluginName}@`));\n\n const handleInstall = (pluginName: string) => {\n startTransition(async () => {\n const result = await installPluginAction(pluginName, 'default');\n if (result.success) {\n toast.success(`${pluginName} installed`);\n const catalog = await fetchPluginCatalogAction();\n setInstalledPlugins(catalog.installedPlugins);\n } else {\n toast.error(result.error ?? 'Installation failed');\n }\n });\n };\n\n const handleUninstall = (pluginName: string) => {\n startTransition(async () => {\n const result = await uninstallPluginAction(pluginName, 'default');\n if (result.success) {\n toast.success(`${pluginName} uninstalled`);\n const catalog = await fetchPluginCatalogAction();\n setInstalledPlugins(catalog.installedPlugins);\n } else {\n toast.error(result.error ?? 'Uninstallation failed');\n }\n });\n };\n\n const handleToggle = (pluginName: string, enabled: boolean) => {\n startTransition(async () => {\n const result = await togglePluginAction(pluginName, 'default', enabled);\n if (result.success) {\n toast.success(`${pluginName} ${enabled ? 'enabled' : 'disabled'}`);\n const catalog = await fetchPluginCatalogAction();\n setInstalledPlugins(catalog.installedPlugins);\n } else {\n toast.error(result.error ?? 'Toggle failed');\n }\n });\n };\n\n if (!isClaudeCode) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n <EmptyState icon={<AlertCircle className=\"size-10\" />} title={t('plugins.wrongAgent')} />\n </div>\n );\n }\n\n if (!proxyConfigured) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n <EmptyState icon={<AlertCircle className=\"size-10\" />} title={t('plugins.noProxy')} />\n </div>\n );\n }\n\n if (loading) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n <div className=\"text-muted-foreground text-center text-sm\">\n {t('accessibility.loading')}...\n </div>\n </div>\n );\n }\n\n if (plugins.length === 0) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n <EmptyState icon={<Blocks className=\"size-10\" />} title={t('plugins.emptyState')} />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader eyebrow=\"Developer Portal\" title={t('plugins.title')} />\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n <Input\n placeholder={t('plugins.searchPlaceholder')}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"ps-9\"\n data-testid=\"plugin-search\"\n />\n </div>\n\n {/* Filter pills */}\n <div className=\"flex flex-wrap items-center gap-4\">\n {/* Category */}\n <div className=\"flex flex-wrap gap-2\">\n <Button\n variant={activeCategory === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setActiveCategory(null)}\n >\n {t('plugins.allCategories')}\n </Button>\n {categories.map((cat) => (\n <Button\n key={cat}\n variant={activeCategory === cat ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setActiveCategory(cat === activeCategory ? null : cat)}\n >\n {cat}\n </Button>\n ))}\n </div>\n\n <div className=\"bg-border h-6 w-px\" />\n\n {/* Status */}\n <div className=\"flex flex-wrap gap-2\">\n <Button\n variant={statusFilter === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setStatusFilter(null)}\n >\n All Status\n </Button>\n <Button\n variant={statusFilter === 'installed' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setStatusFilter(statusFilter === 'installed' ? null : 'installed')}\n >\n {t('plugins.installed')}\n </Button>\n <Button\n variant={statusFilter === 'not-installed' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() =>\n setStatusFilter(statusFilter === 'not-installed' ? null : 'not-installed')\n }\n >\n {t('plugins.notInstalled')}\n </Button>\n </div>\n </div>\n\n {/* Plugin grid */}\n {filteredPlugins.length > 0 ? (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {filteredPlugins.map((plugin) => (\n <PluginCard\n key={plugin.name}\n plugin={plugin}\n installed={getInstalled(plugin.name)}\n onSelect={setSelectedPlugin}\n onToggle={handleToggle}\n />\n ))}\n </div>\n ) : (\n <EmptyState\n icon={<Search className=\"size-10\" />}\n title={t('plugins.emptyState')}\n action={\n <Button\n variant=\"outline\"\n onClick={() => {\n setSearchQuery('');\n setActiveCategory(null);\n setStatusFilter(null);\n }}\n >\n {t('plugins.clearFilters')}\n </Button>\n }\n />\n )}\n\n {/* Detail drawer */}\n <PluginDetailDrawer\n plugin={selectedPlugin}\n installed={selectedPlugin ? getInstalled(selectedPlugin.name) : undefined}\n open={!!selectedPlugin}\n onClose={() => setSelectedPlugin(null)}\n onInstall={handleInstall}\n onUninstall={handleUninstall}\n />\n </div>\n );\n}\n","'use client';\n\nimport { Card } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport { Switch } from '@/components/ui/switch';\nimport type {\n PluginMarketplaceEntry,\n InstalledPlugin,\n} from '@shipit-ai/core/application/ports/output/services/plugin-marketplace.interface';\nimport { useTranslation } from 'react-i18next';\n\nexport interface PluginCardProps {\n plugin: PluginMarketplaceEntry;\n installed?: InstalledPlugin;\n onSelect: (plugin: PluginMarketplaceEntry) => void;\n onToggle?: (pluginName: string, enabled: boolean) => void;\n}\n\nexport function PluginCard({ plugin, installed, onSelect, onToggle }: PluginCardProps) {\n const { t } = useTranslation('web');\n\n return (\n <Card\n className=\"cursor-pointer p-5 transition-all duration-300 hover:scale-[1.02] hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(plugin)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(plugin);\n }\n }}\n data-testid={`plugin-card-${plugin.name}`}\n >\n <h3 className=\"text-foreground text-sm leading-tight font-bold tracking-tight\">\n {plugin.name}\n </h3>\n\n {plugin.version ? (\n <p className=\"text-muted-foreground mt-1 font-mono text-xs\">v{plugin.version}</p>\n ) : null}\n\n <p className=\"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed\">\n {plugin.description}\n </p>\n\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n {plugin.category ? <Badge variant=\"outline\">{plugin.category}</Badge> : null}\n {installed ? (\n <Badge variant=\"secondary\">{t('plugins.installed')}</Badge>\n ) : (\n <Badge variant=\"outline\" className=\"opacity-50\">\n {t('plugins.notInstalled')}\n </Badge>\n )}\n </div>\n\n {installed ? (\n <div\n className=\"mt-3 flex items-center gap-2\"\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Switch\n checked={installed.enabled}\n onCheckedChange={(checked) => onToggle?.(plugin.name, checked)}\n data-testid={`plugin-toggle-${plugin.name}`}\n />\n <span className=\"text-muted-foreground text-xs\">\n {installed.enabled ? t('plugins.disable') : t('plugins.enable')}\n </span>\n </div>\n ) : null}\n </Card>\n );\n}\n","'use client';\n\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Separator } from '@/components/ui/separator';\nimport { ExternalLink } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport type {\n PluginMarketplaceEntry,\n InstalledPlugin,\n} from '@shipit-ai/core/application/ports/output/services/plugin-marketplace.interface';\n\nexport interface PluginDetailDrawerProps {\n plugin: PluginMarketplaceEntry | null;\n installed?: InstalledPlugin;\n open: boolean;\n onClose: () => void;\n onInstall?: (pluginName: string) => void;\n onUninstall?: (pluginName: string) => void;\n}\n\nfunction getSourceUrl(plugin: PluginMarketplaceEntry): string | null {\n const { source } = plugin;\n if (source.source === 'github' && source.repo) {\n return `https://github.com/${source.repo}`;\n }\n if ((source.source === 'url' || source.source === 'git-subdir') && source.url) {\n try {\n const url = new URL(source.url);\n if (url.protocol === 'https:') return source.url;\n } catch {\n // Invalid URL — don't render as link\n }\n }\n return null;\n}\n\nexport function PluginDetailDrawer({\n plugin,\n installed,\n open,\n onClose,\n onInstall,\n onUninstall,\n}: PluginDetailDrawerProps) {\n const { t } = useTranslation('web');\n\n if (!plugin) return null;\n\n const sourceUrl = getSourceUrl(plugin);\n\n return (\n <BaseDrawer open={open} onClose={onClose}>\n <DrawerTitle className=\"text-foreground text-lg font-bold tracking-tight\">\n {plugin.name}\n </DrawerTitle>\n <DrawerDescription className=\"text-muted-foreground mt-1 text-sm\">\n {plugin.description}\n </DrawerDescription>\n\n <Separator className=\"my-4\" />\n\n <div className=\"space-y-3\">\n {plugin.version ? (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-muted-foreground text-sm\">{t('plugins.version')}</span>\n <span className=\"font-mono text-sm\">v{plugin.version}</span>\n </div>\n ) : null}\n\n {plugin.category ? (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-muted-foreground text-sm\">{t('plugins.category')}</span>\n <Badge variant=\"outline\">{plugin.category}</Badge>\n </div>\n ) : null}\n\n {sourceUrl ? (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-muted-foreground text-sm\">{t('plugins.source')}</span>\n <a\n href={sourceUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:text-primary/80 inline-flex items-center gap-1 text-sm underline underline-offset-2\"\n >\n {plugin.source.repo ?? 'Repository'}\n <ExternalLink className=\"size-3\" />\n </a>\n </div>\n ) : null}\n\n {plugin.keywords && plugin.keywords.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5 pt-2\">\n {plugin.keywords.map((kw) => (\n <Badge key={kw} variant=\"outline\" className=\"text-xs\">\n {kw}\n </Badge>\n ))}\n </div>\n ) : null}\n </div>\n\n <Separator className=\"my-4\" />\n\n <div className=\"flex gap-2\">\n {installed ? (\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => onUninstall?.(plugin.name)}\n data-testid=\"plugin-uninstall-button\"\n >\n {t('plugins.uninstall')}\n </Button>\n ) : (\n <Button\n size=\"sm\"\n onClick={() => onInstall?.(plugin.name)}\n data-testid=\"plugin-install-button\"\n >\n {t('plugins.install')}\n </Button>\n )}\n </div>\n </BaseDrawer>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"000c5b7cafc7a8b33f941b92fbcb5205774f886405\":{\"name\":\"fetchPluginCatalogAction\"}},\"src/presentation/web/app/actions/fetch-plugin-catalog.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"000c5b7cafc7a8b33f941b92fbcb5205774f886405\",callServer,void 0,findSourceMapURL,\"fetchPluginCatalogAction\");export{$$RSC_SERVER_ACTION_0 as fetchPluginCatalogAction};","/* __next_internal_action_entry_do_not_use__ [{\"7023359a49b5c9fa86703c803746c65b653628e386\":{\"name\":\"installPluginAction\"}},\"src/presentation/web/app/actions/install-plugin.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"7023359a49b5c9fa86703c803746c65b653628e386\",callServer,void 0,findSourceMapURL,\"installPluginAction\");export{$$RSC_SERVER_ACTION_0 as installPluginAction};","/* __next_internal_action_entry_do_not_use__ [{\"605bb20e61b866f5a359cf7ac454a4379972446e35\":{\"name\":\"uninstallPluginAction\"}},\"src/presentation/web/app/actions/uninstall-plugin.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"605bb20e61b866f5a359cf7ac454a4379972446e35\",callServer,void 0,findSourceMapURL,\"uninstallPluginAction\");export{$$RSC_SERVER_ACTION_0 as uninstallPluginAction};","/* __next_internal_action_entry_do_not_use__ [{\"703dac2e4fa002ccfef10578f218533cae8d2e64db\":{\"name\":\"togglePluginAction\"}},\"src/presentation/web/app/actions/toggle-plugin.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"703dac2e4fa002ccfef10578f218533cae8d2e64db\",callServer,void 0,findSourceMapURL,\"togglePluginAction\");export{$$RSC_SERVER_ACTION_0 as togglePluginAction};"],"names":["SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProvider","useSwitchContext","Switch","props","forwardedRef","__scopeSwitch","name","checked","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","switchProps","button","setButton","composedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","closest","setChecked","prop","defaultProp","onChange","caller","scope","children","type","role","getState","ref","onClick","event","prevChecked","current","isPropagationStopped","stopPropagation","SwitchBubbleInput","control","bubbles","style","transform","displayName","THUMB_NAME","SwitchThumb","thumbProps","context","span","BUBBLE_INPUT_NAME","controlSize","input","inputProto","window","HTMLInputElement","prototype","descriptor","Object","getOwnPropertyDescriptor","set","Event","call","dispatchEvent","tabIndex","position","pointerEvents","opacity","margin","Root","Thumb","Card","className","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","EmptyState","icon","title","description","action","PageHeader","eyebrow"],"mappings":"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","ignoreList":[0,1,3]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
module.exports=[2211,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(28446)},50961,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},23504,33244,27900,12513,73101,54775,65324,a=>{"use strict";var b=a.i(2211),c=a.i(96380);let d={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},e={displayName:"",description:""};var f=a.i(50961);let g={"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"GitHub Copilot CLI",cursor:"Cursor CLI","gemini-cli":"Gemini CLI","rovo-dev":"Rovo Dev CLI"},h={"claude-code":0,"codex-cli":1,"copilot-cli":2,cursor:3,"gemini-cli":4,"rovo-dev":5},i={"claude-code":"claude-code","codex-cli":"codex-cli","copilot-cli":"copilot-cli",cursor:"cursor-cli","gemini-cli":"gemini-cli","rovo-dev":"rovo-dev"};async function j(){try{let a=(0,c.resolve)("IAgentExecutorFactory"),b=a.getSupportedAgents().map(b=>({agentType:b,label:g[b]??b,models:a.getSupportedModels(b).map(a=>{let b;return{id:a,...(b=d[a])||{...e,displayName:a.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,a=>a.toUpperCase())}}})})).filter(a=>a.models.length>0),f=(0,c.resolve)("IToolInstallerService");return(await Promise.all(b.map(async a=>{let b=i[a.agentType];if(!b)return{...a,installed:!0};try{let c=await f.checkAvailability(b);return{...a,installed:"available"===c.status}}catch{return{...a,installed:!1}}}))).sort((a,b)=>(h[a.agentType]??50)-(h[b.agentType]??50))}catch{return[]}}(0,f.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"006ffa246e488f5da03d382fec4879ee26ae033fb2",null),a.s(["getAllAgentModels",0,j],23504);let k="__shipitAiSettings";function l(){let a=globalThis[k];if(null!=a)return a;let b=process[k];return null!=b?b:null}function m(a){globalThis[k]=a,process[k]=a}function n(a){if(null!==l())throw Error("Settings already initialized. Cannot re-initialize.");m(a)}function o(){m(null)}async function p(a,b){if(!a.trim())return{ok:!1,error:"agent type is required"};try{let d=(0,c.resolve)("CompleteWebOnboardingUseCase"),e=await d.execute({agentType:a.trim(),model:b});return o(),n(e),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to update agent and model"}}}a.s(["initializeSettings",0,n,"resetSettings",0,o,"updateSettings",0,function(a){if(null===l())throw Error("Settings not initialized. Cannot update before initialization.");m(a)}],33244),(0,f.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"60629bc489f343ac1edd6d91a047554f59a89fc843",null),a.s(["updateAgentAndModel",0,p],27900),a.i(1442);var q=a.i(63128);async function r(){let a=new q.FolderDialogService;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,f.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"006f404c48afbb96195e3fc5a673998b8ee75f1049",null),a.s(["pickFolder",0,r],12513);class s extends Error{constructor(a,b){super(a),this.name="GitHubAuthError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class t extends Error{constructor(a,b){super(a),this.name="GitHubCloneError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class u extends Error{constructor(a,b){super(a),this.name="GitHubUrlParseError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}async function v(a){try{let b=(0,c.resolve)("ListGitHubRepositoriesUseCase");return{repos:await b.execute(a)}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list repositories"}}}async function w(){try{let a=(0,c.resolve)("ListGitHubOrganizationsUseCase");return{orgs:await a.execute()}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list organizations"}}}async function x(a){let{url:b,dest:d}=a;if(!b?.trim())return{error:"GitHub URL is required"};try{let a=(0,c.resolve)("ImportGitHubRepositoryUseCase");return{repository:await a.execute({url:b,dest:d})}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};if(a instanceof u)return{error:`Invalid GitHub URL: ${a.message}`};if(a instanceof t)return{error:`Clone failed: ${a.message}`};return{error:a instanceof Error?a.message:"Failed to import repository"}}}(0,f.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"40c0d76e3f8aae8a41cd1b2cdc248965928f818cf3",null),a.s(["listGitHubRepositories",0,v],73101),(0,f.ensureServerEntryExports)([w]),(0,b.registerServerReference)(w,"00c0e8084e692e3df1eda007d1bd634a59e491d3de",null),a.s(["listGitHubOrganizations",0,w],54775),(0,f.ensureServerEntryExports)([x]),(0,b.registerServerReference)(x,"40617fac451357c9a4faef65db266a915e4872a472",null),a.s(["importGitHubRepository",0,x],65324)},33841,46646,68670,85321,a=>{"use strict";var b=a.i(2211),c=a.i(2157),d=a.i(96380);a.i(1442);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shipit/shipit/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(50961);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for features of the repository ShipIT is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"401b4acb5374d46f9311b127d61e4215c027205b04",null),a.s(["deployFeature",0,m],33841);let n=f("[deployRepository]");async function o(a){let b;if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{b=(0,c.realpathSync)(a)}catch{return n.warn(`directory does not exist: "${a}"`),{success:!1,error:"Directory does not exist"}}try{if(j(b))return n.warn("rejected — target is the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for the repository ShipIT is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(b,b,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"404b75c046731abf1eaf7114bcd8eadbf4583378c2",null),a.s(["deployRepository",0,o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"407b0b8df7355842dffec3719ef4ee43fd852ecee1",null),a.s(["stopDeployment",0,p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"4093ab106c98a5f5c2a0dd8bbb06de9d2e45d66612",null),a.s(["getDeploymentStatus",0,q],85321)},94691,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"4015277cad6ef643d1ac166d2508176c0e771f44b0",null),a.s(["getDeploymentLogs",0,d])},3391,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353);a.s([],85192),a.i(85192),a.s(["006f404c48afbb96195e3fc5a673998b8ee75f1049",()=>d.pickFolder,"006ffa246e488f5da03d382fec4879ee26ae033fb2",()=>b.getAllAgentModels,"009b861a65761e8ec9a0099705efffe209302e5078",()=>r.checkAgentAuth,"00c0e8084e692e3df1eda007d1bd634a59e491d3de",()=>f.listGitHubOrganizations,"00d2ea9d9cae689585ef03a5bbfc49e95ff2db974b",()=>s.checkToolStatus,"00e4d0fc6ed963b004c29d432fe764d25f0640bcc5",()=>q.isAgentSetupComplete,"4001d3b3b0ec9710c8a8b848267a94039833cfdaf0",()=>u.archiveFeature,"4014a40a31cf611500dd14f1ee4409c3279343d678",()=>n.openFolder,"4015277cad6ef643d1ac166d2508176c0e771f44b0",()=>p.getDeploymentLogs,"401b4acb5374d46f9311b127d61e4215c027205b04",()=>h.deployFeature,"403002a5d42a27e3c95885bf13471f284ae14ae3ad",()=>t.getFeatureMetadata,"403b50818c4c8a3d6d430ae3439eb3037c4ca54755",()=>l.openIde,"4048c36a0b7ee96f66b8a6ee9c835725c8734cca57",()=>B.deleteRepository,"404b75c046731abf1eaf7114bcd8eadbf4583378c2",()=>i.deployRepository,"405532d73211298ef9e3d7a5cdea5b5dc6b2060d47",()=>w.resumeFeature,"40561d29661f661688842173586e2787a89109395a",()=>A.addRepository,"40617fac451357c9a4faef65db266a915e4872a472",()=>g.importGitHubRepository,"4071344824aa7e6436c93eefd044901a17073177b1",()=>z.unarchiveFeature,"40792ab294bf027b28044da4c8ef078009d30f6a86",()=>m.openShell,"407b0b8df7355842dffec3719ef4ee43fd852ecee1",()=>j.stopDeployment,"40892a3ecf37c1aa089d95848e605fa687dd8ff413",()=>y.stopFeature,"4093ab106c98a5f5c2a0dd8bbb06de9d2e45d66612",()=>k.getDeploymentStatus,"40bcce76e841141cd8d5df1027db29237885f36a41",()=>o.syncRepository,"40c0d76e3f8aae8a41cd1b2cdc248965928f818cf3",()=>e.listGitHubRepositories,"40f73c96f198d69599abba115e0886c2d25f304703",()=>x.startFeature,"60629bc489f343ac1edd6d91a047554f59a89fc843",()=>c.updateAgentAndModel,"7844aa4bea0a883f1482e3dbb3025e8f9dd441eeb9",()=>v.deleteFeature],3391)}];
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},23504,33244,27900,12513,73101,54775,65324,a=>{"use strict";var b=a.i(2211),c=a.i(96380);let d={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},e={displayName:"",description:""};var f=a.i(50961);let g={"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"GitHub Copilot CLI",cursor:"Cursor CLI","gemini-cli":"Gemini CLI","rovo-dev":"Rovo Dev CLI"},h={"claude-code":0,"codex-cli":1,"copilot-cli":2,cursor:3,"gemini-cli":4,"rovo-dev":5},i={"claude-code":"claude-code","codex-cli":"codex-cli","copilot-cli":"copilot-cli",cursor:"cursor-cli","gemini-cli":"gemini-cli","rovo-dev":"rovo-dev"};async function j(){try{let a=(0,c.resolve)("IAgentExecutorFactory"),b=a.getSupportedAgents().map(b=>({agentType:b,label:g[b]??b,models:a.getSupportedModels(b).map(a=>{let b;return{id:a,...(b=d[a])||{...e,displayName:a.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,a=>a.toUpperCase())}}})})).filter(a=>a.models.length>0),f=(0,c.resolve)("IToolInstallerService");return(await Promise.all(b.map(async a=>{let b=i[a.agentType];if(!b)return{...a,installed:!0};try{let c=await f.checkAvailability(b);return{...a,installed:"available"===c.status}}catch{return{...a,installed:!1}}}))).sort((a,b)=>(h[a.agentType]??50)-(h[b.agentType]??50))}catch{return[]}}(0,f.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"00b1336928938505eea7d114fe266874507fb5edc1",null),a.s(["getAllAgentModels",0,j],23504);let k="__shipitAiSettings";function l(){let a=globalThis[k];if(null!=a)return a;let b=process[k];return null!=b?b:null}function m(a){globalThis[k]=a,process[k]=a}function n(a){if(null!==l())throw Error("Settings already initialized. Cannot re-initialize.");m(a)}function o(){m(null)}async function p(a,b){if(!a.trim())return{ok:!1,error:"agent type is required"};try{let d=(0,c.resolve)("CompleteWebOnboardingUseCase"),e=await d.execute({agentType:a.trim(),model:b});return o(),n(e),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to update agent and model"}}}a.s(["initializeSettings",0,n,"resetSettings",0,o,"updateSettings",0,function(a){if(null===l())throw Error("Settings not initialized. Cannot update before initialization.");m(a)}],33244),(0,f.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"606d90c59d41b6617bcb5be5c63bb8b77d6fc69dfe",null),a.s(["updateAgentAndModel",0,p],27900),a.i(1442);var q=a.i(63128);async function r(){let a=new q.FolderDialogService;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,f.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"00634d2f27379e936750bba96c4c22c99babd5153b",null),a.s(["pickFolder",0,r],12513);class s extends Error{constructor(a,b){super(a),this.name="GitHubAuthError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class t extends Error{constructor(a,b){super(a),this.name="GitHubCloneError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class u extends Error{constructor(a,b){super(a),this.name="GitHubUrlParseError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}async function v(a){try{let b=(0,c.resolve)("ListGitHubRepositoriesUseCase");return{repos:await b.execute(a)}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list repositories"}}}async function w(){try{let a=(0,c.resolve)("ListGitHubOrganizationsUseCase");return{orgs:await a.execute()}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list organizations"}}}async function x(a){let{url:b,dest:d}=a;if(!b?.trim())return{error:"GitHub URL is required"};try{let a=(0,c.resolve)("ImportGitHubRepositoryUseCase");return{repository:await a.execute({url:b,dest:d})}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};if(a instanceof u)return{error:`Invalid GitHub URL: ${a.message}`};if(a instanceof t)return{error:`Clone failed: ${a.message}`};return{error:a instanceof Error?a.message:"Failed to import repository"}}}(0,f.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"409b1bb2ad3e158ef7f67cd5016940b6fa50c6fe63",null),a.s(["listGitHubRepositories",0,v],73101),(0,f.ensureServerEntryExports)([w]),(0,b.registerServerReference)(w,"0032abcaad86bf4e81dd118555783dfcd33d47df3e",null),a.s(["listGitHubOrganizations",0,w],54775),(0,f.ensureServerEntryExports)([x]),(0,b.registerServerReference)(x,"403680eed26a0d763bef6fa43336f36ad0c722cc6f",null),a.s(["importGitHubRepository",0,x],65324)},33841,46646,68670,85321,a=>{"use strict";var b=a.i(2211),c=a.i(2157),d=a.i(96380);a.i(1442);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shipit/shipit/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(50961);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for features of the repository ShipIT is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"40209b8f69c4924cdd856cbbb9111ff6bf709b3d15",null),a.s(["deployFeature",0,m],33841);let n=f("[deployRepository]");async function o(a){let b;if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{b=(0,c.realpathSync)(a)}catch{return n.warn(`directory does not exist: "${a}"`),{success:!1,error:"Directory does not exist"}}try{if(j(b))return n.warn("rejected — target is the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for the repository ShipIT is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(b,b,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"40e1505b1d7c7069669b8725dde39326faa25da811",null),a.s(["deployRepository",0,o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"402b809d6dd2a6e95ac5a65bcb6fec3fcb5a10e5c7",null),a.s(["stopDeployment",0,p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"402edca5d04b34634ce043276b471ca9841c60cdea",null),a.s(["getDeploymentStatus",0,q],85321)},94691,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"4019559c9b5395d33741fe21b403268a098496b2b7",null),a.s(["getDeploymentLogs",0,d])},3391,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353);a.s([],85192),a.i(85192),a.s(["0032abcaad86bf4e81dd118555783dfcd33d47df3e",()=>f.listGitHubOrganizations,"00342af554586b92e6d7d8ea6dc642a8adb3dbcd01",()=>q.isAgentSetupComplete,"00634d2f27379e936750bba96c4c22c99babd5153b",()=>d.pickFolder,"009af7188a2b9c559a039d2e64c9a4eb89a421bbf3",()=>s.checkToolStatus,"00b1336928938505eea7d114fe266874507fb5edc1",()=>b.getAllAgentModels,"00b38bc28ceec1610f546fd90fbdd3b08c1f13b977",()=>r.checkAgentAuth,"4013fb39f5bda579e84f9df556df73889ebecfedda",()=>o.syncRepository,"40158812102c87a68f90eb0d9e859b06cfc5875225",()=>z.unarchiveFeature,"4019559c9b5395d33741fe21b403268a098496b2b7",()=>p.getDeploymentLogs,"401d7219d1f469870ef5d23beb449377e8fc5255d9",()=>l.openIde,"40209b8f69c4924cdd856cbbb9111ff6bf709b3d15",()=>h.deployFeature,"402718d616e0725c35625ed4887f81bf85c6d17618",()=>x.startFeature,"402b809d6dd2a6e95ac5a65bcb6fec3fcb5a10e5c7",()=>j.stopDeployment,"402edca5d04b34634ce043276b471ca9841c60cdea",()=>k.getDeploymentStatus,"403680eed26a0d763bef6fa43336f36ad0c722cc6f",()=>g.importGitHubRepository,"403e87b014bc6853041edc590922ef2355d8bf88cf",()=>m.openShell,"40444ea50fec22637d611d070efdeca3413c6291b6",()=>y.stopFeature,"4087ad7cfd9ea13fe841f435c18e3660238917ad2c",()=>n.openFolder,"409b1bb2ad3e158ef7f67cd5016940b6fa50c6fe63",()=>e.listGitHubRepositories,"40a4088b338b45bc1766df66d3f6921de09834ffb3",()=>A.addRepository,"40a6e8f198e98793f489a60b42e27e8b2e8b2e55d9",()=>w.resumeFeature,"40c754991a262c975808d169d63273fc8a233e2140",()=>u.archiveFeature,"40ca898f49594a63ae2cc3ab53073522b143c9279e",()=>B.deleteRepository,"40e1505b1d7c7069669b8725dde39326faa25da811",()=>i.deployRepository,"40f725012002f78b6c3771de9adf9a8fa48ac03e45",()=>t.getFeatureMetadata,"606d90c59d41b6617bcb5be5c63bb8b77d6fc69dfe",()=>c.updateAgentAndModel,"7884ed1e29ce19881797b08fe327e21eeb5467182c",()=>v.deleteFeature],3391)}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=_1161g9x._.js.map
|