@shipit-ai/cli 1.167.0 → 1.168.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/antigravity.json +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/bash.json +1 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor-cli.json +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor.json +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/fish.json +1 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/powershell.json +1 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/zsh.json +1 -0
- package/dist/src/presentation/web/app/actions/get-merge-review-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-merge-review-data.js +5 -1
- package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-shell.js +5 -1
- package/dist/src/presentation/web/app/layout.d.ts.map +1 -1
- package/dist/src/presentation/web/app/layout.js +15 -2
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +47 -10
- package/dist/src/presentation/web/components/common/page-header/page-header.d.ts +3 -1
- package/dist/src/presentation/web/components/common/page-header/page-header.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/page-header/page-header.js +8 -2
- package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.js +6 -1
- package/dist/src/presentation/web/components/common/shipit-ai-logo/shipit-ai-logo.d.ts +9 -1
- package/dist/src/presentation/web/components/common/shipit-ai-logo/shipit-ai-logo.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/shipit-ai-logo/shipit-ai-logo.js +12 -6
- package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.js +5 -1
- package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.js +15 -0
- package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatSheet.js +18 -5
- package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +5 -1
- 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 +43 -45
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.d.ts +5 -2
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-section-utils.js +8 -5
- package/dist/src/presentation/web/components/features/skills/category-filter.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/category-filter.js +12 -2
- package/dist/src/presentation/web/components/features/skills/skill-card.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/skill-card.js +3 -3
- package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/skill-detail-drawer.js +27 -1
- package/dist/src/presentation/web/components/features/skills/skill-list.js +2 -2
- package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/skills/skills-page-client.js +2 -2
- package/dist/src/presentation/web/components/features/tools/tool-card.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/tools/tool-card.js +20 -11
- package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.js +1 -1
- 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 +6 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +39 -43
- package/dist/src/presentation/web/components/ui/card.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/card.js +9 -1
- package/dist/src/presentation/web/components/ui/drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/drawer.js +8 -2
- package/dist/src/presentation/web/lib/path-sanitizers.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/path-sanitizers.js +5 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +3 -3
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/next-font-manifest.json +6 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
- 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/next-font-manifest.json +6 -2
- 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 +1 -1
- 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/next-font-manifest.json +6 -2
- 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 +1 -1
- 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/next-font-manifest.json +6 -2
- 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 +2 -2
- 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/next-font-manifest.json +6 -2
- 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 +2 -2
- 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/next-font-manifest.json +6 -2
- 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 +1 -1
- 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/next-font-manifest.json +6 -2
- 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 +1 -1
- 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/next-font-manifest.json +6 -2
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
- 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/next-font-manifest.json +6 -2
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/create/page.js +1 -1
- 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/next-font-manifest.json +6 -2
- 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 +2 -2
- 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/next-font-manifest.json +6 -2
- 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 +2 -2
- 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/next-font-manifest.json +6 -2
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js +1 -1
- 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/next-font-manifest.json +6 -2
- 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 +1 -1
- 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/next-font-manifest.json +6 -2
- 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 +1 -1
- 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/next-font-manifest.json +6 -2
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js +1 -1
- 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/settings/page/next-font-manifest.json +6 -2
- package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/settings/page.js +1 -1
- 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/next-font-manifest.json +6 -2
- package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/skills/page.js +1 -1
- 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/next-font-manifest.json +6 -2
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js +1 -1
- 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/next-font-manifest.json +6 -2
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js +1 -1
- 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/[root-of-the-server]__0_-chcy._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0e9p7em._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
- package/web/.next/server/chunks/ssr/08qz_lucide-react_dist_esm_icons_0c0dui7._.js +3 -0
- package/web/.next/server/chunks/ssr/08qz_lucide-react_dist_esm_icons_0c0dui7._.js.map +1 -0
- 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]__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]__0uy_5rw._.js → [root-of-the-server]__0ge~xny._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0uy_5rw._.js.map → [root-of-the-server]__0ge~xny._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0jy4nha._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0jy4nha._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0e5cv3q._.js → [root-of-the-server]__0n~o-g-._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0n~o-g-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__02.89uf._.js → [root-of-the-server]__0qda~yi._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__02.89uf._.js.map → [root-of-the-server]__0qda~yi._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0c0xoi_._.js → [root-of-the-server]__0qxd563._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0c0xoi_._.js.map → [root-of-the-server]__0qxd563._.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]__0rvrr1j._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js.map +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]__0r5zhk.._.js → [root-of-the-server]__0t~u8sd._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0r5zhk.._.js.map → [root-of-the-server]__0t~u8sd._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__04rq9lr._.js → [root-of-the-server]__10tll_l._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__04rq9lr._.js.map → [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/_0-09vq7._.js +1 -1
- package/web/.next/server/chunks/ssr/_0-09vq7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
- package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0mvhe_2._.js → _08_079y._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0mvhe_2._.js.map → _08_079y._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_09r54oy._.js +7 -0
- package/web/.next/server/chunks/ssr/_09r54oy._.js.map +1 -0
- 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/_0dy8.0k._.js +3 -0
- package/web/.next/server/chunks/ssr/_0dy8.0k._.js.map +1 -0
- 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/_0l2~~pi._.js +3 -0
- package/web/.next/server/chunks/ssr/_0l2~~pi._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0mi5qj~._.js +3 -0
- package/web/.next/server/chunks/ssr/_0mi5qj~._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0n.magx._.js +1 -1
- package/web/.next/server/chunks/ssr/_0n.magx._.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/{_0l10ccg._.js → _0r04xhw._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0l10ccg._.js.map → _0r04xhw._.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/{_00k65h-._.js → _0txr945._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0txr945._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0vjw-e_._.js +7 -0
- package/web/.next/server/chunks/ssr/_0vjw-e_._.js.map +1 -0
- 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/{_0hwjfpu._.js → _0~0jkp_._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0~0jkp_._.js.map +1 -0
- 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/_1161g9x._.js +1 -1
- package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0y11iiz._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0y11iiz._.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_approve-feature_ts_0pjb_re._.js.map +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_app_actions_open-ide_ts_0w2wqvu._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_0sk2qdt._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_0sk2qdt._.js.map +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/next-font-manifest.js +1 -1
- package/web/.next/server/next-font-manifest.json +60 -2
- 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 +50 -50
- package/web/.next/static/chunks/{05enics63g._-.js → 0-ud~1jj7chzu.js} +4 -4
- package/web/.next/static/chunks/01znjuvi5t9~q.js +5 -0
- package/web/.next/static/chunks/033sl_l5o3uo8.css +1 -0
- package/web/.next/static/chunks/04r9m_5p953mf.js +1 -0
- package/web/.next/static/chunks/{11~m1ei9bh269.js → 06nsv-_ec9ehn.js} +1 -1
- package/web/.next/static/chunks/{0qqe9hx_txhso.js → 078lp287u~c~b.js} +1 -1
- package/web/.next/static/chunks/07i3-aamszsoh.js +1 -0
- package/web/.next/static/chunks/{0n3u~4ytndfyd.js → 0_v4t6gzx.332.js} +1 -1
- package/web/.next/static/chunks/{0hti2r43x0~b7.js → 0_xww9bsde~1x.js} +1 -1
- package/web/.next/static/chunks/{0.8ue6wwr7ni~.js → 0cv09-g0prv4o.js} +1 -1
- package/web/.next/static/chunks/0ee1d3_y40g9f.js +1 -0
- package/web/.next/static/chunks/0hg8qgtv~kuys.js +1 -0
- package/web/.next/static/chunks/{11bi612fz8agh.js → 0in4l8mne5y~_.js} +1 -1
- package/web/.next/static/chunks/0inayq2zzadja.js +1 -0
- package/web/.next/static/chunks/{0t3xjndx2s1_j.css → 0j.1nx3ly591i.css} +1 -0
- package/web/.next/static/chunks/0o4m0k3642219.js +1 -0
- package/web/.next/static/chunks/0pt-d18f7zxvv.js +1 -0
- package/web/.next/static/chunks/0udlnp30o1kjd.js +5 -0
- package/web/.next/static/chunks/{13w6ziae82sjy.js → 0ygtupas8pxdi.js} +1 -1
- package/web/.next/static/chunks/12pd180jp8zu..js +5 -0
- package/web/.next/static/chunks/{028x3z97mchhz.js → 133q8d69p6cl0.js} +1 -1
- package/web/.next/static/chunks/13fcwhkw7dle2.js +1 -0
- package/web/.next/static/chunks/13q1peb_t9vj8.js +1 -0
- package/web/.next/static/chunks/15mks7_3venc1.js +1 -0
- package/web/.next/static/chunks/{0_.x~txb5da7d.js → 17c31c1biwfyi.js} +1 -1
- package/web/.next/static/media/1bffadaabf893a1e-s.16ipb6fqu393i.woff2 +0 -0
- package/web/.next/static/media/2bbe8d2671613f1f-s.067x_6k0k23tk.woff2 +0 -0
- package/web/.next/static/media/2c55a0e60120577a-s.0bjc5tiuqdqro.woff2 +0 -0
- package/web/.next/static/media/5476f68d60460930-s.0wxq9webf.ew4.woff2 +0 -0
- package/web/.next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2 +0 -0
- package/web/.next/static/media/9c72aa0f40e4eef8-s.0m6w47a4e5dy9.woff2 +0 -0
- package/web/.next/static/media/ad66f9afd8947f86-s.11u06r12fd6v_.woff2 +0 -0
- package/web/package.json +2 -2
- package/web/public/favicon.svg +10 -0
- package/web/public/icons/tools/antigravity.svg +1 -0
- package/web/public/icons/tools/bash.svg +38 -0
- package/web/public/icons/tools/cursor-cli.svg +12 -0
- package/web/public/icons/tools/cursor.svg +1 -0
- package/web/public/icons/tools/fish.svg +153 -0
- package/web/public/icons/tools/powershell.svg +29 -0
- package/web/public/icons/tools/zsh.svg +1 -0
- package/web/.next/server/chunks/ssr/08qz_lucide-react_dist_esm_icons_0zwb4s4._.js +0 -3
- package/web/.next/server/chunks/ssr/08qz_lucide-react_dist_esm_icons_0zwb4s4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0lslgap._.js +0 -7
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0lslgap._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_00k65h-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_08i-c2n._.js +0 -3
- package/web/.next/server/chunks/ssr/_08i-c2n._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0e5cv3q._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0hwjfpu._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0mo6j.n._.js +0 -3
- package/web/.next/server/chunks/ssr/_0mo6j.n._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0phryzt._.js +0 -3
- package/web/.next/server/chunks/ssr/_0phryzt._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_12un22l._.js +0 -7
- package/web/.next/server/chunks/ssr/_12un22l._.js.map +0 -1
- package/web/.next/static/chunks/0-lu0b1ewsb0_.js +0 -1
- package/web/.next/static/chunks/01~dudieyb7wl.js +0 -5
- package/web/.next/static/chunks/02kpdawdtqcxm.js +0 -1
- package/web/.next/static/chunks/044f5piy5pt5t.js +0 -1
- package/web/.next/static/chunks/04~sw.nhpwy6s.css +0 -1
- package/web/.next/static/chunks/0_9k2ybutuphq.js +0 -1
- package/web/.next/static/chunks/0jo5-_q.1n69j.js +0 -1
- package/web/.next/static/chunks/0m5~9kij3s~81.js +0 -1
- package/web/.next/static/chunks/0pyz97q7eg0jz.js +0 -1
- package/web/.next/static/chunks/0q~uf2s33.48w.js +0 -1
- package/web/.next/static/chunks/0vx7ldqj8436q.js +0 -5
- package/web/.next/static/chunks/15m2wfd5k_7fj.js +0 -1
- package/web/.next/static/chunks/16.83v.xq8bn9.js +0 -1
- package/web/.next/static/chunks/164dnpi666fv_.js +0 -5
- /package/web/.next/static/{ksBer6au8b_fS1_7dCF2D → LQMB6QAutWzPQnLUZG96y}/_buildManifest.js +0 -0
- /package/web/.next/static/{ksBer6au8b_fS1_7dCF2D → LQMB6QAutWzPQnLUZG96y}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{ksBer6au8b_fS1_7dCF2D → LQMB6QAutWzPQnLUZG96y}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[79020,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(60197),e=a.i(87638),f=a.i(8685),g=a.i(37545),h=a.i(51423),i=a.i(97624);let j=(0,i.default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]),k=(0,i.default)("flag",[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",key:"1jaruq"}]]),l=(0,i.default)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var m=a.i(77213);let n=(0,i.default)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);var o=a.i(69210),p=a.i(73952);let q=(0,i.default)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);var r=a.i(52313);a.i(98617);var s=a.i(50040),t=a.i(85536),u=a.i(59175),v=a.i(58339),w=a.i(6120);let x=(0,w.createServerReference)("40758a03be3b51d9ad52236c72019964a59cd47655",w.callServer,void 0,w.findSourceMapURL,"updateSettingsAction");var y=a.i(46847),z=a.i(7077),A=a.i(11036),B=a.i(96436);function C(a){return(0,b.jsx)(A.Code,{className:(0,t.cn)("h-4 w-4",a.className),...a})}function D({className:a}){return(0,b.jsx)(z.default,{src:"/icons/editors/vscode.svg",alt:"VS Code",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function E({className:a}){return(0,b.jsx)(z.default,{src:"/icons/agents/cursor.jpeg",alt:"Cursor",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function F({className:a}){return(0,b.jsx)(z.default,{src:"/icons/editors/windsurf.svg",alt:"Windsurf",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function G({className:a}){return(0,b.jsx)(z.default,{src:"/icons/editors/zed.svg",alt:"Zed",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function H({className:a,...c}){return(0,b.jsx)(B.Rocket,{className:(0,t.cn)("h-4 w-4",a),...c})}D.displayName="VsCodeIcon",E.displayName="CursorEditorIcon",F.displayName="WindsurfIcon",G.displayName="ZedIcon",H.displayName="AntigravityIcon";let I={vscode:D,cursor:E,windsurf:F,zed:G,antigravity:H};var J=a.i(61781),K=a.i(84117),L=a.i(58860);let M=[{value:y.Language.English,label:"English",nativeName:"English"},{value:y.Language.Russian,label:"Русский",nativeName:"Русский"},{value:y.Language.Portuguese,label:"Português",nativeName:"Português"},{value:y.Language.Spanish,label:"Español",nativeName:"Español"},{value:y.Language.Arabic,label:"العربية",nativeName:"العربية"},{value:y.Language.Hebrew,label:"עברית",nativeName:"עברית"},{value:y.Language.French,label:"Français",nativeName:"Français"},{value:y.Language.German,label:"Deutsch",nativeName:"Deutsch"}];function N({language:a}){let{t:e,i18n:f}=(0,s.useTranslation)("web"),[g,h]=(0,c.useState)(a),[i,j]=(0,c.useTransition)(),[k,l]=(0,c.useState)(!1),n=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{if(n.current&&!i){l(!0);let a=setTimeout(()=>l(!1),2e3);return()=>clearTimeout(a)}n.current=i},[i]),(0,b.jsxs)(K.Card,{id:"language",className:"scroll-mt-6","data-testid":"language-settings-section",children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(m.Globe,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)(K.CardTitle,{children:e("settings.language.title")})]}),i?(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:e("common:labels.saving")}):null,k&&!i?(0,b.jsxs)("span",{className:"flex items-center gap-1 text-xs text-green-600",children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),e("common:labels.saved")]}):null]}),(0,b.jsx)(K.CardDescription,{children:e("settings.language.description")})]}),(0,b.jsx)(K.CardContent,{className:"space-y-4",children:(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(L.Label,{htmlFor:"display-language",children:e("settings.language.label")}),(0,b.jsxs)(u.Select,{value:g,onValueChange:function(a){h(a),f.changeLanguage(a);let b="ar"===a||"he"===a?"rtl":"ltr";document.documentElement.lang=a,document.documentElement.dir=b,j(async()=>{let b=await x({user:{preferredLanguage:a}});b.success||r.toast.error(b.error??e("settings.language.failedToSave","Failed to save language settings"))})},children:[(0,b.jsx)(u.SelectTrigger,{id:"display-language","data-testid":"language-select",children:(0,b.jsx)(u.SelectValue,{placeholder:e("settings.language.placeholder")})}),(0,b.jsx)(u.SelectContent,{children:M.map(a=>(0,b.jsx)(u.SelectItem,{value:a.value,children:a.nativeName},a.value))})]})]})})]})}var O=a.i(49853),O=O,P=a.i(29370),Q=a.i(2),R=a.i(96867);function S({label:a,description:c,htmlFor:d,children:e}){return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b py-2.5 last:border-b-0",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)(L.Label,{htmlFor:d,className:"cursor-pointer text-sm font-normal whitespace-nowrap",children:a}),c?(0,b.jsx)("p",{className:"text-muted-foreground text-[11px] leading-tight",children:c}):null]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:e})]})}function T({label:a,description:c,id:d,testId:e,checked:f,onChange:g,disabled:h}){return(0,b.jsx)(S,{label:a,description:c,htmlFor:d,children:(0,b.jsx)(R.Switch,{id:d,"data-testid":e,checked:f,onCheckedChange:g,disabled:h,className:(0,t.cn)("cursor-pointer",h&&"cursor-not-allowed opacity-50")})})}function U({icon:a,title:c,description:d,badge:e,testId:f,children:g}){return(0,b.jsxs)("div",{className:"bg-background rounded-lg border","data-testid":f,children:[(0,b.jsxs)("div",{className:"bg-muted/30 border-b px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(a,{className:"text-muted-foreground h-3.5 w-3.5"}),(0,b.jsx)("h2",{className:"text-sm font-semibold",children:c}),e?(0,b.jsx)("span",{className:"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-[9px] font-medium tracking-wider uppercase",children:e}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground mt-0.5 text-[11px]",children:d})]}),(0,b.jsx)("div",{className:"px-4",children:g})]})}function V({id:a,testId:c,value:d,onChange:e,onBlur:f,placeholder:g,min:h=1,max:i,step:j=1,suffix:k}){let{t:l}=(0,s.useTranslation)("web"),m=""===d?void 0:parseInt(d,10);return(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center overflow-hidden rounded-md border",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{e(String(Math.max(h,(m??parseInt(g,10))-j)))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-r transition-colors","aria-label":l("common.decrease"),children:(0,b.jsx)(O.default,{className:"h-3 w-3"})}),(0,b.jsx)("input",{id:a,"data-testid":c,type:"text",inputMode:"numeric",pattern:"[0-9]*",value:d,placeholder:g,onChange:a=>{e(a.target.value.replace(/[^0-9]/g,""))},onBlur:f,className:"h-8 w-14 bg-transparent text-center text-xs outline-none"}),(0,b.jsx)("button",{type:"button",onClick:()=>{let a;a=m??parseInt(g,10),e(String(null!=i?Math.min(i,a+j):a+j))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-l transition-colors","aria-label":l("common.increase"),children:(0,b.jsx)(P.Plus,{className:"h-3 w-3"})})]}),k?(0,b.jsx)("span",{className:"text-muted-foreground text-[11px]",children:k}):null]})}function W({children:a}){return(0,b.jsx)("div",{className:"border-b pt-3 pb-1",children:(0,b.jsx)("span",{className:"text-muted-foreground text-[10px] font-semibold tracking-wider uppercase",children:a})})}function X({children:a,links:c}){return(0,b.jsxs)("div",{className:"hidden pt-2 lg:block",children:[(0,b.jsx)("p",{className:"text-muted-foreground/70 text-[11px] leading-relaxed",children:a}),null!=c&&c.length>0?(0,b.jsx)("div",{className:"mt-2 flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-[10px] transition-colors",children:[(0,b.jsx)(Q.ExternalLink,{className:"h-2.5 w-2.5"}),a.label]},a.href))}):null]})}function Y(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}function Z({settings:a}){let{t:d}=(0,s.useTranslation)("web"),[,e]=(0,c.useTransition)(),[f,g]=(0,c.useState)(null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):""),[i,j]=(0,c.useState)(null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):""),[k,l]=(0,c.useState)(null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):""),[m,n]=(0,c.useState)(null!=a.workflow.ciWatchPollIntervalSeconds?String(a.workflow.ciWatchPollIntervalSeconds):""),[o,p]=(0,c.useState)(!1!==a.workflow.hideCiStatus),q=null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):"",t=null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):"",u=null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):"",v=null!=a.workflow.ciWatchPollIntervalSeconds?String(a.workflow.ciWatchPollIntervalSeconds):"";function w(a){e(async()=>{let b=await x(a);b.success||r.toast.error(b.error??d("settings.failedToSave"))})}function y(a){let b=Y(a.ciTimeout??i);return{workflow:{ciMaxFixAttempts:Y(a.ciMaxFix??f),ciWatchTimeoutMs:null!=b?1e3*b:void 0,ciLogMaxChars:Y(a.ciLogMax??k),ciWatchPollIntervalSeconds:Y(a.ciPollInterval??m),hideCiStatus:a.hideCiStatus??o}}}return(0,b.jsxs)(U,{icon:h.Activity,title:d("settings.ci.title"),description:d("settings.ci.description"),testId:"ci-settings-section",children:[(0,b.jsx)(S,{label:d("settings.ci.maxFixAttempts"),description:d("settings.ci.maxFixAttemptsDescription"),htmlFor:"ci-max-fix",children:(0,b.jsx)(V,{id:"ci-max-fix",testId:"ci-max-fix-input",placeholder:"3",value:f,onChange:g,onBlur:()=>{f!==q&&w(y({ciMaxFix:f}))},min:1,max:10})}),(0,b.jsx)(S,{label:d("settings.ci.watchTimeout"),description:d("settings.ci.watchTimeoutDescription"),htmlFor:"ci-timeout",children:(0,b.jsx)(V,{id:"ci-timeout",testId:"ci-timeout-input",placeholder:"300",value:i,onChange:j,onBlur:()=>{i!==t&&w(y({ciTimeout:i}))},min:30,step:30,suffix:"sec"})}),(0,b.jsx)(S,{label:d("settings.ci.maxLogSize"),description:d("settings.ci.maxLogSizeDescription"),htmlFor:"ci-log-max",children:(0,b.jsx)(V,{id:"ci-log-max",testId:"ci-log-max-input",placeholder:"50000",value:k,onChange:l,onBlur:()=>{k!==u&&w(y({ciLogMax:k}))},min:1e3,step:5e3,suffix:"chars"})}),(0,b.jsx)(S,{label:d("settings.ci.pollInterval"),description:d("settings.ci.pollIntervalDescription"),htmlFor:"ci-poll-interval",children:(0,b.jsx)(V,{id:"ci-poll-interval",testId:"ci-poll-interval-input",placeholder:"30",value:m,onChange:n,onBlur:()=>{m!==v&&w(y({ciPollInterval:m}))},min:5,step:5,suffix:"sec"})}),(0,b.jsx)(T,{label:d("settings.ci.hideCiStatus"),description:d("settings.ci.hideCiStatusDescription"),id:"hide-ci-status",testId:"switch-hide-ci-status",checked:o,onChange:a=>{p(a),w(y({hideCiStatus:a}))}})]})}var $=a.i(48972),_=a.i(59653),aa=a.i(80303),ab=a.i(95819),ac=a.i(47427),ad=a.i(60380),ae=a.i(41387),af=a.i(97045),ag=a.i(30419),ah=a.i(69471),ai=["PageUp","PageDown"],aj=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],ak={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},al="Slider",[am,an,ao]=(0,ah.createCollection)(al),[ap,aq]=(0,ab.createContextScope)(al,[ao]),[ar,as]=ap(al),at=c.forwardRef((a,d)=>{let{name:e,min:f=0,max:g=100,step:h=1,orientation:i="horizontal",disabled:j=!1,minStepsBetweenThumbs:k=0,defaultValue:l=[f],value:m,onValueChange:n=()=>{},onValueCommit:o=()=>{},inverted:p=!1,form:q,...r}=a,s=c.useRef(new Set),t=c.useRef(0),u="horizontal"===i,[v=[],w]=(0,ac.useControllableState)({prop:m,defaultProp:l,onChange:a=>{let b=[...s.current];b[t.current]?.focus(),n(a)}}),x=c.useRef(v);function y(a,b,{commit:c}={commit:!1}){let d,e=(String(h).split(".")[1]||"").length,i=Math.round((Math.round((a-f)/h)*h+f)*(d=Math.pow(10,e)))/d,j=(0,$.clamp)(i,[f,g]);w((a=[])=>{let d=function(a=[],b,c){let d=[...a];return d[c]=b,d.sort((a,b)=>a-b)}(a,j,b);if(!function(a,b){if(b>0)return Math.min(...a.slice(0,-1).map((b,c)=>a[c+1]-b))>=b;return!0}(d,k*h))return a;{t.current=d.indexOf(j);let b=String(d)!==String(a);return b&&c&&o(d),b?d:a}})}return(0,b.jsx)(ar,{scope:a.__scopeSlider,name:e,disabled:j,min:f,max:g,valueIndexToChangeRef:t,thumbs:s.current,values:v,orientation:i,form:q,children:(0,b.jsx)(am.Provider,{scope:a.__scopeSlider,children:(0,b.jsx)(am.Slot,{scope:a.__scopeSlider,children:(0,b.jsx)(u?aw:ax,{"aria-disabled":j,"data-disabled":j?"":void 0,...r,ref:d,onPointerDown:(0,_.composeEventHandlers)(r.onPointerDown,()=>{j||(x.current=v)}),min:f,max:g,inverted:p,onSlideStart:j?void 0:function(a){let b=function(a,b){if(1===a.length)return 0;let c=a.map(a=>Math.abs(a-b)),d=Math.min(...c);return c.indexOf(d)}(v,a);y(a,b)},onSlideMove:j?void 0:function(a){y(a,t.current)},onSlideEnd:j?void 0:function(){let a=x.current[t.current];v[t.current]!==a&&o(v)},onHomeKeyDown:()=>!j&&y(f,0,{commit:!0}),onEndKeyDown:()=>!j&&y(g,v.length-1,{commit:!0}),onStepKeyDown:({event:a,direction:b})=>{if(!j){let c=ai.includes(a.key)||a.shiftKey&&aj.includes(a.key),d=t.current;y(v[d]+h*(c?10:1)*b,d,{commit:!0})}}})})})})});at.displayName=al;var[au,av]=ap(al,{startEdge:"left",endEdge:"right",size:"width",direction:1}),aw=c.forwardRef((a,d)=>{let{min:e,max:f,dir:g,inverted:h,onSlideStart:i,onSlideMove:j,onSlideEnd:k,onStepKeyDown:l,...m}=a,[n,o]=c.useState(null),p=(0,aa.useComposedRefs)(d,a=>o(a)),q=c.useRef(void 0),r=(0,ad.useDirection)(g),s="ltr"===r,t=s&&!h||!s&&h;function u(a){let b=q.current||n.getBoundingClientRect(),c=aI([0,b.width],t?[e,f]:[f,e]);return q.current=b,c(a-b.left)}return(0,b.jsx)(au,{scope:a.__scopeSlider,startEdge:t?"left":"right",endEdge:t?"right":"left",direction:t?1:-1,size:"width",children:(0,b.jsx)(ay,{dir:r,"data-orientation":"horizontal",...m,ref:p,style:{...m.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:a=>{let b=u(a.clientX);i?.(b)},onSlideMove:a=>{let b=u(a.clientX);j?.(b)},onSlideEnd:()=>{q.current=void 0,k?.()},onStepKeyDown:a=>{let b=ak[t?"from-left":"from-right"].includes(a.key);l?.({event:a,direction:b?-1:1})}})})}),ax=c.forwardRef((a,d)=>{let{min:e,max:f,inverted:g,onSlideStart:h,onSlideMove:i,onSlideEnd:j,onStepKeyDown:k,...l}=a,m=c.useRef(null),n=(0,aa.useComposedRefs)(d,m),o=c.useRef(void 0),p=!g;function q(a){let b=o.current||m.current.getBoundingClientRect(),c=aI([0,b.height],p?[f,e]:[e,f]);return o.current=b,c(a-b.top)}return(0,b.jsx)(au,{scope:a.__scopeSlider,startEdge:p?"bottom":"top",endEdge:p?"top":"bottom",size:"height",direction:p?1:-1,children:(0,b.jsx)(ay,{"data-orientation":"vertical",...l,ref:n,style:{...l.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:a=>{let b=q(a.clientY);h?.(b)},onSlideMove:a=>{let b=q(a.clientY);i?.(b)},onSlideEnd:()=>{o.current=void 0,j?.()},onStepKeyDown:a=>{let b=ak[p?"from-bottom":"from-top"].includes(a.key);k?.({event:a,direction:b?-1:1})}})})}),ay=c.forwardRef((a,c)=>{let{__scopeSlider:d,onSlideStart:e,onSlideMove:f,onSlideEnd:g,onHomeKeyDown:h,onEndKeyDown:i,onStepKeyDown:j,...k}=a,l=as(al,d);return(0,b.jsx)(ag.Primitive.span,{...k,ref:c,onKeyDown:(0,_.composeEventHandlers)(a.onKeyDown,a=>{"Home"===a.key?(h(a),a.preventDefault()):"End"===a.key?(i(a),a.preventDefault()):ai.concat(aj).includes(a.key)&&(j(a),a.preventDefault())}),onPointerDown:(0,_.composeEventHandlers)(a.onPointerDown,a=>{let b=a.target;b.setPointerCapture(a.pointerId),a.preventDefault(),l.thumbs.has(b)?b.focus():e(a)}),onPointerMove:(0,_.composeEventHandlers)(a.onPointerMove,a=>{a.target.hasPointerCapture(a.pointerId)&&f(a)}),onPointerUp:(0,_.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&(b.releasePointerCapture(a.pointerId),g(a))})})}),az="SliderTrack",aA=c.forwardRef((a,c)=>{let{__scopeSlider:d,...e}=a,f=as(az,d);return(0,b.jsx)(ag.Primitive.span,{"data-disabled":f.disabled?"":void 0,"data-orientation":f.orientation,...e,ref:c})});aA.displayName=az;var aB="SliderRange",aC=c.forwardRef((a,d)=>{let{__scopeSlider:e,...f}=a,g=as(aB,e),h=av(aB,e),i=c.useRef(null),j=(0,aa.useComposedRefs)(d,i),k=g.values.length,l=g.values.map(a=>aH(a,g.min,g.max)),m=k>1?Math.min(...l):0,n=100-Math.max(...l);return(0,b.jsx)(ag.Primitive.span,{"data-orientation":g.orientation,"data-disabled":g.disabled?"":void 0,...f,ref:j,style:{...a.style,[h.startEdge]:m+"%",[h.endEdge]:n+"%"}})});aC.displayName=aB;var aD="SliderThumb",aE=c.forwardRef((a,d)=>{let e=an(a.__scopeSlider),[f,g]=c.useState(null),h=(0,aa.useComposedRefs)(d,a=>g(a)),i=c.useMemo(()=>f?e().findIndex(a=>a.ref.current===f):-1,[e,f]);return(0,b.jsx)(aF,{...a,ref:h,index:i})}),aF=c.forwardRef((a,d)=>{var e,f,g,h,i;let j,k,{__scopeSlider:l,index:m,name:n,...o}=a,p=as(aD,l),q=av(aD,l),[r,s]=c.useState(null),t=(0,aa.useComposedRefs)(d,a=>s(a)),u=!r||p.form||!!r.closest("form"),v=(0,af.useSize)(r),w=p.values[m],x=void 0===w?0:aH(w,p.min,p.max),y=(e=m,(f=p.values.length)>2?`Value ${e+1} of ${f}`:2===f?["Minimum","Maximum"][e]:void 0),z=v?.[q.size],A=z?(g=z,h=x,i=q.direction,k=aI([0,50],[0,j=g/2]),(j-k(h)*i)*i):0;return c.useEffect(()=>{if(r)return p.thumbs.add(r),()=>{p.thumbs.delete(r)}},[r,p.thumbs]),(0,b.jsxs)("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[q.startEdge]:`calc(${x}% + ${A}px)`},children:[(0,b.jsx)(am.ItemSlot,{scope:a.__scopeSlider,children:(0,b.jsx)(ag.Primitive.span,{role:"slider","aria-label":a["aria-label"]||y,"aria-valuemin":p.min,"aria-valuenow":w,"aria-valuemax":p.max,"aria-orientation":p.orientation,"data-orientation":p.orientation,"data-disabled":p.disabled?"":void 0,tabIndex:p.disabled?void 0:0,...o,ref:t,style:void 0===w?{display:"none"}:a.style,onFocus:(0,_.composeEventHandlers)(a.onFocus,()=>{p.valueIndexToChangeRef.current=m})})}),u&&(0,b.jsx)(aG,{name:n??(p.name?p.name+(p.values.length>1?"[]":""):void 0),form:p.form,value:w},m)]})});aE.displayName=aD;var aG=c.forwardRef(({__scopeSlider:a,value:d,...e},f)=>{let g=c.useRef(null),h=(0,aa.useComposedRefs)(g,f),i=(0,ae.usePrevious)(d);return c.useEffect(()=>{let a=g.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;if(i!==d&&b){let c=new Event("input",{bubbles:!0});b.call(a,d),a.dispatchEvent(c)}},[i,d]),(0,b.jsx)(ag.Primitive.input,{style:{display:"none"},...e,ref:h,defaultValue:d})});function aH(a,b,c){return(0,$.clamp)(100/(c-b)*(a-b),[0,100])}function aI(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}aG.displayName="RadioBubbleInput",a.s(["Range",0,aC,"Root",0,at,"Slider",0,at,"SliderRange",0,aC,"SliderThumb",0,aE,"SliderTrack",0,aA,"Thumb",0,aE,"Track",0,aA,"createSliderScope",0,aq],40432);var aJ=a.i(40432),aJ=aJ;function aK({className:a,defaultValue:d,value:e,min:f=0,max:g=100,...h}){let i=c.useMemo(()=>Array.isArray(e)?e:Array.isArray(d)?d:[f,g],[e,d,f,g]);return(0,b.jsxs)(aJ.Root,{"data-slot":"slider",defaultValue:d,value:e,min:f,max:g,className:(0,t.cn)("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",a),...h,children:[(0,b.jsx)(aJ.Track,{"data-slot":"slider-track",className:(0,t.cn)("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"),children:(0,b.jsx)(aJ.Range,{"data-slot":"slider-range",className:(0,t.cn)("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),Array.from({length:i.length},(a,c)=>(0,b.jsx)(aJ.Thumb,{"data-slot":"slider-thumb",className:"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"},c))]})}let aL=[60,120,300,600,900,1800,2700,3600,7200,10800,14400,21600,28800,43200,86400],aM=aL.length-1;function aN(a){let b=0,c=Math.abs(a-aL[0]);for(let d=1;d<aL.length;d++){let e=Math.abs(a-aL[d]);e<c&&(c=e,b=d)}return b}function aO({id:a,testId:d,value:e,onChange:f,onBlur:g,defaultSeconds:h=1800}){var i;let j,k,l=(""===e?h:parseInt(e,10))||h,[m,n]=(0,c.useState)(()=>aN(l)),o=aN(l);o!==m&&aL[m]!==l&&n(o);let p=(0,c.useCallback)(([a])=>{n(a),f(String(aL[a]))},[f]);return(0,b.jsxs)("div",{className:"flex w-55 items-center gap-2",children:[(0,b.jsx)(aK,{id:a,"data-testid":d,min:0,max:aM,step:1,value:[m],onValueChange:p,onValueCommit:()=>g(),className:"min-w-0 flex-1"}),(0,b.jsx)("span",{className:"text-muted-foreground shrink-0 text-end text-xs tabular-nums",children:(j=Math.floor((i=aL[m])/3600),k=Math.round(i%3600/60),0===j?`${k}m`:0===k?`${j}h`:`${j}h ${k}m`)})]})}function aP(a){if(void 0===a)return;let b=function(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}(a);return null!=b?1e3*b:void 0}function aQ({settings:a}){let{t:d}=(0,s.useTranslation)("web"),[,e]=(0,c.useTransition)(),f=a.workflow.stageTimeouts,g=a.workflow.analyzeRepoTimeouts,[h,i]=(0,c.useState)(String(Math.round((f?.analyzeMs??18e5)/1e3))),[j,k]=(0,c.useState)(String(Math.round((f?.requirementsMs??18e5)/1e3))),[l,m]=(0,c.useState)(String(Math.round((f?.researchMs??18e5)/1e3))),[n,p]=(0,c.useState)(String(Math.round((f?.planMs??18e5)/1e3))),[q,t]=(0,c.useState)(String(Math.round((f?.implementMs??18e5)/1e3))),[u,v]=(0,c.useState)(String(Math.round((f?.mergeMs??18e5)/1e3))),[w,y]=(0,c.useState)(String(Math.round((g?.analyzeMs??6e5)/1e3))),z=f?.analyzeMs!=null?String(Math.round(f.analyzeMs/1e3)):"",A=f?.requirementsMs!=null?String(Math.round(f.requirementsMs/1e3)):"",B=f?.researchMs!=null?String(Math.round(f.researchMs/1e3)):"",C=f?.planMs!=null?String(Math.round(f.planMs/1e3)):"",D=f?.implementMs!=null?String(Math.round(f.implementMs/1e3)):"",E=f?.mergeMs!=null?String(Math.round(f.mergeMs/1e3)):"",F=g?.analyzeMs!=null?String(Math.round(g.analyzeMs/1e3)):"";function G(a){return{workflow:{stageTimeouts:{analyzeMs:aP(a.analyzeTimeout??h),requirementsMs:aP(a.requirementsTimeout??j),researchMs:aP(a.researchTimeout??l),planMs:aP(a.planTimeout??n),implementMs:aP(a.implementTimeout??q),mergeMs:aP(a.mergeTimeout??u)},analyzeRepoTimeouts:{analyzeMs:aP(a.analyzeRepoTimeout??w)}}}}function H(a){e(async()=>{let b=await x(a);b.success||r.toast.error(b.error??d("settings.failedToSave"))})}return(0,b.jsxs)(U,{icon:o.Timer,title:d("settings.stageTimeouts.title"),description:d("settings.stageTimeouts.description"),testId:"stage-timeouts-settings-section",children:[(0,b.jsx)(W,{children:d("settings.stageTimeouts.subsections.featureAgent")}),(0,b.jsx)(S,{label:d("settings.stageTimeouts.analyze"),description:d("settings.stageTimeouts.analyzeDescription"),htmlFor:"timeout-analyze",children:(0,b.jsx)(aO,{id:"timeout-analyze",testId:"timeout-analyze-input",value:h,onChange:i,onBlur:()=>{h!==z&&H(G({analyzeTimeout:h}))},defaultSeconds:1800})}),(0,b.jsx)(S,{label:d("settings.stageTimeouts.requirements"),description:d("settings.stageTimeouts.requirementsDescription"),htmlFor:"timeout-requirements",children:(0,b.jsx)(aO,{id:"timeout-requirements",testId:"timeout-requirements-input",value:j,onChange:k,onBlur:()=>{j!==A&&H(G({requirementsTimeout:j}))},defaultSeconds:1800})}),(0,b.jsx)(S,{label:d("settings.stageTimeouts.research"),description:d("settings.stageTimeouts.researchDescription"),htmlFor:"timeout-research",children:(0,b.jsx)(aO,{id:"timeout-research",testId:"timeout-research-input",value:l,onChange:m,onBlur:()=>{l!==B&&H(G({researchTimeout:l}))},defaultSeconds:1800})}),(0,b.jsx)(S,{label:d("settings.stageTimeouts.plan"),description:d("settings.stageTimeouts.planDescription"),htmlFor:"timeout-plan",children:(0,b.jsx)(aO,{id:"timeout-plan",testId:"timeout-plan-input",value:n,onChange:p,onBlur:()=>{n!==C&&H(G({planTimeout:n}))},defaultSeconds:1800})}),(0,b.jsx)(S,{label:d("settings.stageTimeouts.implement"),description:d("settings.stageTimeouts.implementDescription"),htmlFor:"timeout-implement",children:(0,b.jsx)(aO,{id:"timeout-implement",testId:"timeout-implement-input",value:q,onChange:t,onBlur:()=>{q!==D&&H(G({implementTimeout:q}))},defaultSeconds:1800})}),(0,b.jsx)(S,{label:d("settings.stageTimeouts.merge"),description:d("settings.stageTimeouts.mergeDescription"),htmlFor:"timeout-merge",children:(0,b.jsx)(aO,{id:"timeout-merge",testId:"timeout-merge-input",value:u,onChange:v,onBlur:()=>{u!==E&&H(G({mergeTimeout:u}))},defaultSeconds:1800})}),(0,b.jsx)(W,{children:d("settings.stageTimeouts.subsections.analyzeRepoAgent")}),(0,b.jsx)(S,{label:d("settings.stageTimeouts.analyze"),description:d("settings.stageTimeouts.analyzeDescription"),htmlFor:"timeout-analyze-repo",children:(0,b.jsx)(aO,{id:"timeout-analyze-repo",testId:"timeout-analyze-repo-input",value:w,onChange:y,onBlur:()=>{w!==F&&H(G({analyzeRepoTimeout:w}))},defaultSeconds:600})})]})}function aR({settings:a}){let{t:d}=(0,s.useTranslation)("web"),[,e]=(0,c.useTransition)(),f=a.interactiveAgent??{enabled:!0,autoTimeoutMinutes:15,maxConcurrentSessions:3},[g,h]=(0,c.useState)(f.enabled),[i,j]=(0,c.useState)(String(f.autoTimeoutMinutes)),[k,l]=(0,c.useState)(String(f.maxConcurrentSessions));function m(a){e(async()=>{let b=await x(a);b.success||r.toast.error(b.error??d("settings.failedToSave"))})}return(0,b.jsxs)(U,{icon:p.MessageSquare,title:d("settings.interactiveAgent.title"),description:d("settings.interactiveAgent.description"),testId:"interactive-agent-settings-section",children:[(0,b.jsx)(T,{label:d("settings.interactiveAgent.enableChatTab"),description:d("settings.interactiveAgent.enableChatTabDescription"),id:"interactive-agent-enabled",testId:"switch-interactive-agent-enabled",checked:g,onChange:a=>{h(a),m({interactiveAgent:{enabled:a,autoTimeoutMinutes:parseInt(i,10)||15,maxConcurrentSessions:parseInt(k,10)||3}})}}),(0,b.jsx)(S,{label:d("settings.interactiveAgent.autoTimeout"),description:d("settings.interactiveAgent.autoTimeoutDescription"),htmlFor:"interactive-agent-timeout",children:(0,b.jsx)(V,{id:"interactive-agent-timeout",testId:"input-interactive-agent-timeout",value:i,placeholder:"15",min:1,max:120,suffix:"min",onChange:j,onBlur:()=>{let a=parseInt(i,10),b=Number.isNaN(a)?15:Math.min(120,Math.max(1,a));j(String(b)),m({interactiveAgent:{enabled:g,autoTimeoutMinutes:b,maxConcurrentSessions:parseInt(k,10)||3}})}})}),(0,b.jsx)(S,{label:d("settings.interactiveAgent.maxConcurrentSessions"),description:d("settings.interactiveAgent.maxConcurrentSessionsDescription"),htmlFor:"interactive-agent-sessions",children:(0,b.jsx)(V,{id:"interactive-agent-sessions",testId:"input-interactive-agent-sessions",value:k,placeholder:"3",min:1,max:10,onChange:l,onBlur:()=>{let a=parseInt(k,10),b=Number.isNaN(a)?3:Math.min(10,Math.max(1,a));l(String(b)),m({interactiveAgent:{enabled:g,autoTimeoutMinutes:parseInt(i,10)||15,maxConcurrentSessions:b}})}})})]})}function aS({settings:a}){let{t:d}=(0,s.useTranslation)("web"),[,e]=(0,c.useTransition)(),f=a.fabLayout??{swapPosition:!1},[g,h]=(0,c.useState)(f.swapPosition);return(0,b.jsx)(U,{icon:q,title:d("settings.fabLayout.title"),description:d("settings.fabLayout.description"),testId:"fab-layout-settings-section",children:(0,b.jsx)(T,{label:d("settings.fabLayout.swapPosition"),description:d("settings.fabLayout.swapPositionDescription"),id:"fab-swap-position",testId:"switch-fab-swap-position",checked:g,onChange:a=>{var b;h(a),b={fabLayout:{swapPosition:a}},e(async()=>{let a=await x(b);a.success||r.toast.error(a.error??d("settings.failedToSave"))})}})})}let aT=[{id:"vscode",name:"VS Code",available:!0},{id:"cursor",name:"Cursor",available:!0},{id:"windsurf",name:"Windsurf",available:!0},{id:"zed",name:"Zed",available:!0},{id:"antigravity",name:"Antigravity",available:!0}],aU=[{id:"bash",name:"Bash",available:!0},{id:"zsh",name:"Zsh",available:!0},{id:"fish",name:"Fish",available:!0}],aV=[{id:"language",labelKey:"settings.sections.language",icon:m.Globe},{id:"agent",labelKey:"settings.sections.agent",icon:e.Bot},{id:"environment",labelKey:"settings.sections.environment",icon:f.Terminal},{id:"workflow",labelKey:"settings.sections.workflow",icon:g.GitBranch},{id:"ci",labelKey:"settings.sections.ci",icon:h.Activity},{id:"stage-timeouts",labelKey:"settings.sections.timeouts",icon:o.Timer},{id:"notifications",labelKey:"settings.sections.notifications",icon:j},{id:"feature-flags",labelKey:"settings.sections.flags",icon:k},{id:"interactive-agent",labelKey:"settings.sections.chat",icon:p.MessageSquare},{id:"fab-layout",labelKey:"settings.sections.layout",icon:q},{id:"database",labelKey:"settings.sections.database",icon:l}];a.s(["SettingsPageClient",0,function({settings:a,shipitAiHome:h,dbFileSize:i,availableTerminals:m,availableEditors:o,availableShells:p}){let{t:q}=(0,s.useTranslation)("web"),{showSaving:w,showSaved:z,save:A}=function(){let{t:a}=(0,s.useTranslation)("web"),[b,d]=(0,c.useTransition)(),[e,f]=(0,c.useState)(!1),[g,h]=(0,c.useState)(!1),i=(0,c.useRef)(null),j=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{b&&!e&&(f(!0),j.current=!1,i.current=setTimeout(()=>{i.current=null,j.current&&(f(!1),h(!0),setTimeout(()=>h(!1),2e3))},350)),!b&&e&&(j.current=!0,i.current||(f(!1),h(!0),setTimeout(()=>h(!1),2e3)))},[b,e]),{showSaving:e,showSaved:g,save:(0,c.useCallback)(b=>{d(async()=>{let c=await x(b);c.success||r.toast.error(c.error??a("settings.failedToSave"))})},[d,a])}}(),B=a.featureFlags??{skills:!1,envDeploy:!1,debug:!1,githubImport:!1,adoptBranch:!1,gitRebaseSync:!1,reactFileManager:!1},[D,E]=(0,c.useState)(a.agent.type),[F,G]=(0,c.useState)(a.environment.defaultEditor),[H,K]=(0,c.useState)(a.environment.shellPreference),[L,M]=(0,c.useState)(a.environment.terminalPreference??y.TerminalType.System),O=m??[{id:y.TerminalType.System,name:q("settings.environment.systemTerminal"),available:!0}],[P,Q]=(0,c.useState)(a.workflow.openPrOnImplementationComplete),[R,Y]=(0,c.useState)(a.workflow.approvalGateDefaults.pushOnImplementationComplete),[$,_]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPrd),[aa,ab]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPlan),[ac,ad]=(0,c.useState)(a.workflow.approvalGateDefaults.allowMerge),[ae,af]=(0,c.useState)(a.workflow.enableEvidence),[ag,ah]=(0,c.useState)(a.workflow.commitEvidence),[ai,aj]=(0,c.useState)(!1!==a.workflow.ciWatchEnabled),[ak,al]=(0,c.useState)(!1!==a.workflow.defaultFastMode),[am,an]=(0,c.useState)((a.workflow.autoArchiveDelayMinutes??10)>0),[ao,ap]=(0,c.useState)(String(a.workflow.autoArchiveDelayMinutes??10)),[aq,ar]=(0,c.useState)(a.notifications.inApp.enabled),[as,at]=(0,c.useState)({...a.notifications.events}),[au,av]=(0,c.useState)({...B});function aw(a={}){let b=a.autoArchiveEnabled??am,c=parseInt(a.autoArchiveDelay??ao,10);return{workflow:{openPrOnImplementationComplete:a.openPr??P,approvalGateDefaults:{pushOnImplementationComplete:a.pushOnComplete??R,allowPrd:a.allowPrd??$,allowPlan:a.allowPlan??aa,allowMerge:a.allowMerge??ac},enableEvidence:a.enableEvidence??ae,commitEvidence:a.commitEvidence??ag,ciWatchEnabled:a.ciWatchEnabled??ai,defaultFastMode:a.defaultFastMode??ak,autoArchiveDelayMinutes:b?Number.isNaN(c)||c<1?10:c:0}}}function ax(a={}){return{notifications:{inApp:{enabled:a.inApp??aq},events:a.events??as}}}let[ay,az]=(0,c.useState)("agent");(0,c.useEffect)(()=>{let a=aV.map(a=>document.getElementById(`section-${a.id}`)).filter(Boolean);if(0===a.length)return;let b=new IntersectionObserver(a=>{for(let b of a)b.isIntersecting&&az(b.target.id.replace("section-",""))},{rootMargin:"-65px 0px -60% 0px",threshold:0});for(let c of a)b.observe(c);return()=>b.disconnect()},[]);let aA=(0,c.useCallback)(a=>{let b=document.getElementById(`section-${a}`);b&&(b.scrollIntoView({behavior:"smooth",block:"start"}),b.style.animation="none",b.offsetHeight,b.style.animation="section-flash 1s ease-out")},[]);return(0,b.jsxs)("div",{"data-testid":"settings-page-client",className:"max-w-5xl",children:[(0,b.jsx)("div",{className:"bg-background/95 supports-backdrop-filter:bg-background/80 sticky top-0 z-10 grid grid-cols-1 gap-x-5 pt-6 pb-4 backdrop-blur lg:grid-cols-[1fr_280px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:q("settings.title")}),(0,b.jsxs)("span",{className:"relative h-4 w-16",children:[(0,b.jsx)("span",{className:(0,t.cn)("text-muted-foreground absolute inset-0 flex items-center text-xs transition-opacity duration-300",w?"opacity-100":"opacity-0"),children:q("settings.saving")}),(0,b.jsxs)("span",{className:(0,t.cn)("absolute inset-0 flex items-center gap-1 text-xs text-green-600 transition-opacity duration-300",z&&!w?"opacity-100":"opacity-0"),children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),q("settings.saved")]})]}),(0,b.jsx)("nav",{className:"ml-auto flex items-center gap-0.5",children:aV.map(a=>{let c=a.icon,d=ay===a.id;return(0,b.jsxs)("button",{type:"button",onClick:()=>aA(a.id),className:(0,t.cn)("flex cursor-pointer items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-all",d?"bg-accent text-foreground font-medium":"text-muted-foreground/60 hover:text-foreground hover:bg-accent/50"),children:[(0,b.jsx)(c,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:q(a.labelKey)})]},a.id)})})]})}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsx)("div",{id:"section-language",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:(0,b.jsx)(N,{language:a.user?.preferredLanguage??y.Language.English})}),(0,b.jsxs)("div",{id:"section-agent",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(U,{icon:e.Bot,title:q("settings.agent.sectionTitle"),description:q("settings.agent.sectionDescription"),testId:"agent-settings-section",children:(0,b.jsx)(S,{label:q("settings.agent.agentAndModel"),description:q("settings.agent.agentAndModelDescription"),htmlFor:"agent-model-picker",children:(0,b.jsx)(J.AgentModelPicker,{initialAgentType:D,initialModel:a.models.default,mode:"settings",onAgentModelChange:a=>E(a),className:"w-55"})})}),(0,b.jsx)(X,{links:[{label:q("settings.agent.links.agentSystem"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/architecture/agent-system.md"},{label:q("settings.agent.links.addingAgents"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/development/adding-agents.md"},{label:q("settings.agent.links.configurationGuide"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/guides/configuration.md"}],children:q("settings.agent.hint")})]}),(0,b.jsxs)("div",{id:"section-environment",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(U,{icon:f.Terminal,title:q("settings.environment.sectionTitle"),description:q("settings.environment.sectionDescription"),testId:"environment-settings-section",children:[(0,b.jsx)(S,{label:q("settings.environment.defaultEditor"),description:q("settings.environment.defaultEditorDescription"),htmlFor:"default-editor",children:(0,b.jsxs)(u.Select,{value:F,onValueChange:a=>{G(a),A({environment:{defaultEditor:a,shellPreference:H,terminalPreference:L}})},children:[(0,b.jsx)(u.SelectTrigger,{id:"default-editor","data-testid":"editor-select",className:"w-64 cursor-pointer text-xs",children:(0,b.jsx)(u.SelectValue,{})}),(0,b.jsx)(u.SelectContent,{children:(o??aT).map(a=>{var c;let d=(c=a.id)&&c in I?I[c]:C;return(0,b.jsx)(u.SelectItem,{value:a.id,disabled:!a.available,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(d,{className:"h-4 w-4 shrink-0"}),a.name,(0,b.jsx)(v.Badge,{variant:"outline",className:(0,t.cn)("ml-auto px-1.5 py-0 text-[10px] leading-4 font-normal",a.available?"border-emerald-500/30 text-emerald-500":"border-muted-foreground/30 text-muted-foreground"),children:a.available?"Installed":"Not Installed"})]})},a.id)})})]})}),(0,b.jsx)(S,{label:q("settings.environment.shell"),description:q("settings.environment.shellDescription"),htmlFor:"shell-preference",children:(0,b.jsxs)(u.Select,{value:H,onValueChange:a=>{K(a),A({environment:{defaultEditor:F,shellPreference:a,terminalPreference:L}})},children:[(0,b.jsx)(u.SelectTrigger,{id:"shell-preference","data-testid":"shell-select",className:"w-64 cursor-pointer text-xs",children:(0,b.jsx)(u.SelectValue,{})}),(0,b.jsx)(u.SelectContent,{children:(p??aU).map(a=>(0,b.jsx)(u.SelectItem,{value:a.id,disabled:!a.available,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[a.name,(0,b.jsx)(v.Badge,{variant:"outline",className:(0,t.cn)("ml-auto px-1.5 py-0 text-[10px] leading-4 font-normal",a.available?"border-emerald-500/30 text-emerald-500":"border-muted-foreground/30 text-muted-foreground"),children:a.available?"Installed":"Not Installed"})]})},a.id))})]})}),(0,b.jsx)(S,{label:q("settings.environment.terminal"),description:q("settings.environment.terminalDescription"),htmlFor:"terminal-preference",children:(0,b.jsxs)(u.Select,{value:L,onValueChange:a=>{M(a),A({environment:{defaultEditor:F,shellPreference:H,terminalPreference:a}})},children:[(0,b.jsx)(u.SelectTrigger,{id:"terminal-preference","data-testid":"terminal-select",className:"w-64 cursor-pointer text-xs",children:(0,b.jsx)(u.SelectValue,{})}),(0,b.jsx)(u.SelectContent,{children:O.map(a=>(0,b.jsx)(u.SelectItem,{value:a.id,disabled:!a.available,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[a.name,(0,b.jsx)(v.Badge,{variant:"outline",className:(0,t.cn)("ml-auto px-1.5 py-0 text-[10px] leading-4 font-normal",a.available?"border-emerald-500/30 text-emerald-500":"border-muted-foreground/30 text-muted-foreground"),children:a.available?"Installed":"Not Installed"})]})},a.id))})]})})]}),(0,b.jsx)(X,{links:[{label:q("settings.environment.links.configurationGuide"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/guides/configuration.md"}],children:q("settings.environment.hint")})]}),(0,b.jsxs)("div",{id:"section-workflow",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(U,{icon:g.GitBranch,title:q("settings.workflow.title"),description:q("settings.workflow.sectionDescription"),testId:"workflow-settings-section",children:[(0,b.jsx)(T,{label:q("settings.workflow.defaultFastMode"),description:q("settings.workflow.defaultFastModeDescription"),id:"default-fast-mode",testId:"switch-default-fast-mode",checked:ak,onChange:a=>{al(a),A(aw({defaultFastMode:a}))}}),(0,b.jsx)(W,{children:q("settings.workflow.subsections.approve")}),(0,b.jsx)(T,{label:q("settings.workflow.autoApprovePrd"),description:q("settings.workflow.autoApprovePrdDescription"),id:"allow-prd",testId:"switch-allow-prd",checked:$,onChange:a=>{_(a),A(aw({allowPrd:a}))}}),(0,b.jsx)(T,{label:q("settings.workflow.autoApprovePlan"),description:q("settings.workflow.autoApprovePlanDescription"),id:"allow-plan",testId:"switch-allow-plan",checked:aa,onChange:a=>{ab(a),A(aw({allowPlan:a}))}}),(0,b.jsx)(T,{label:q("settings.workflow.autoApproveMerge"),description:q("settings.workflow.autoApproveMergeDescription"),id:"allow-merge",testId:"switch-allow-merge",checked:ac,onChange:a=>{ad(a),A(aw({allowMerge:a}))}}),(0,b.jsx)(W,{children:q("settings.workflow.subsections.evidence")}),(0,b.jsx)(T,{label:q("settings.workflow.collectEvidence"),description:q("settings.workflow.collectEvidenceDescription"),id:"enable-evidence",testId:"switch-enable-evidence",checked:ae,onChange:a=>{af(a),a?A(aw({enableEvidence:a})):(ah(!1),A(aw({enableEvidence:a,commitEvidence:!1})))}}),(0,b.jsx)(T,{label:q("settings.workflow.addEvidenceToPr"),description:q("settings.workflow.addEvidenceToPrDescription"),id:"commit-evidence",testId:"switch-commit-evidence",checked:ag,disabled:!ae||!P,onChange:a=>{ah(a),A(aw({commitEvidence:a}))}}),(0,b.jsx)(W,{children:q("settings.workflow.subsections.git")}),(0,b.jsx)(T,{label:q("settings.workflow.pushOnComplete"),description:q("settings.workflow.pushOnCompleteDescription"),id:"push-on-complete",testId:"switch-push-on-complete",checked:R,onChange:a=>{Y(a),A(aw({pushOnComplete:a}))}}),(0,b.jsx)(T,{label:q("settings.workflow.openPrOnComplete"),description:q("settings.workflow.openPrOnCompleteDescription"),id:"open-pr",testId:"switch-open-pr",checked:P,onChange:a=>{Q(a),a?A(aw({openPr:a})):(ah(!1),A(aw({openPr:a,commitEvidence:!1})))}}),(0,b.jsx)(T,{label:q("settings.workflow.watchCiAfterPush"),description:q("settings.workflow.watchCiAfterPushDescription"),id:"ci-watch-enabled",testId:"switch-ci-watch-enabled",checked:ai,onChange:a=>{aj(a),A(aw({ciWatchEnabled:a}))}}),(0,b.jsx)(W,{children:"Archive"}),(0,b.jsx)(T,{label:"Auto-archive completed",description:"Automatically archive features after they reach the completed state",id:"auto-archive-enabled",testId:"switch-auto-archive-enabled",checked:am,onChange:a=>{an(a),A(aw({autoArchiveEnabled:a}))}}),(0,b.jsx)(S,{label:"Archive delay",description:"Minutes to wait after completion before archiving (1–1440)",htmlFor:"auto-archive-delay",children:(0,b.jsx)(V,{id:"auto-archive-delay",testId:"input-auto-archive-delay",value:ao,placeholder:"10",min:1,max:1440,suffix:"min",onChange:a=>{ap(a)},onBlur:()=>{if(!am)return;let a=parseInt(ao,10),b=Number.isNaN(a)?10:Math.min(1440,Math.max(1,a));ap(String(b)),A(aw({autoArchiveDelay:String(b)}))}})})]}),(0,b.jsx)(X,{links:[{label:q("settings.workflow.links.approvalGates"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/016-hitl-approval-gates/spec.yaml"},{label:q("settings.workflow.links.pushAndPrFlags"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/037-feature-pr-push-flags/spec.yaml"}],children:q("settings.workflow.hint")})]}),(0,b.jsxs)("div",{id:"section-ci",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(Z,{settings:a}),(0,b.jsx)(X,{links:[{label:q("settings.ci.links.cicdPipeline"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/development/cicd.md"},{label:q("settings.ci.links.ciSecurityGates"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/003-cicd-security-gates/spec.md"}],children:q("settings.ci.hint")})]}),(0,b.jsxs)("div",{id:"section-stage-timeouts",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(aQ,{settings:a}),(0,b.jsx)(X,{children:q("settings.stageTimeouts.hint")})]}),(0,b.jsxs)("div",{id:"section-notifications",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(U,{icon:j,title:q("settings.notifications.title"),description:q("settings.notifications.sectionDescription"),testId:"notification-settings-section",children:[(0,b.jsx)(W,{children:q("settings.notifications.channels")}),(0,b.jsx)(T,{label:q("settings.notifications.inAppLabel"),description:q("settings.notifications.inAppDescription"),id:"notif-in-app",testId:"switch-in-app",checked:aq,onChange:a=>{ar(a),A(ax({inApp:a}))}}),(0,b.jsx)(W,{children:q("settings.notifications.subsections.agentEvents")}),(0,b.jsx)(T,{label:q("settings.notifications.events.agentStarted"),id:"notif-event-agentStarted",testId:"switch-event-agentStarted",checked:as.agentStarted,onChange:a=>{let b={...as,agentStarted:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.phaseCompleted"),id:"notif-event-phaseCompleted",testId:"switch-event-phaseCompleted",checked:as.phaseCompleted,onChange:a=>{let b={...as,phaseCompleted:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.waitingApproval"),id:"notif-event-waitingApproval",testId:"switch-event-waitingApproval",checked:as.waitingApproval,onChange:a=>{let b={...as,waitingApproval:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.agentCompleted"),id:"notif-event-agentCompleted",testId:"switch-event-agentCompleted",checked:as.agentCompleted,onChange:a=>{let b={...as,agentCompleted:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.agentFailed"),id:"notif-event-agentFailed",testId:"switch-event-agentFailed",checked:as.agentFailed,onChange:a=>{let b={...as,agentFailed:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(W,{children:q("settings.notifications.subsections.pullRequestEvents")}),(0,b.jsx)(T,{label:q("settings.notifications.events.prMerged"),id:"notif-event-prMerged",testId:"switch-event-prMerged",checked:as.prMerged,onChange:a=>{let b={...as,prMerged:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.prClosed"),id:"notif-event-prClosed",testId:"switch-event-prClosed",checked:as.prClosed,onChange:a=>{let b={...as,prClosed:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.prChecksPassed"),id:"notif-event-prChecksPassed",testId:"switch-event-prChecksPassed",checked:as.prChecksPassed,onChange:a=>{let b={...as,prChecksPassed:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.prChecksFailed"),id:"notif-event-prChecksFailed",testId:"switch-event-prChecksFailed",checked:as.prChecksFailed,onChange:a=>{let b={...as,prChecksFailed:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.prBlocked"),id:"notif-event-prBlocked",testId:"switch-event-prBlocked",checked:as.prBlocked,onChange:a=>{let b={...as,prBlocked:a};at(b),A(ax({events:b}))}}),(0,b.jsx)(T,{label:q("settings.notifications.events.mergeReviewReady"),id:"notif-event-mergeReviewReady",testId:"switch-event-mergeReviewReady",checked:as.mergeReviewReady,onChange:a=>{let b={...as,mergeReviewReady:a};at(b),A(ax({events:b}))}})]}),(0,b.jsx)(X,{links:[{label:q("settings.notifications.links.notificationSystem"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/021-agent-notifications/spec.yaml"}],children:q("settings.notifications.hint")})]}),(0,b.jsxs)("div",{id:"section-feature-flags",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(U,{icon:k,title:q("settings.featureFlags.title"),description:q("settings.featureFlags.sectionDescription"),badge:q("settings.featureFlags.badge"),testId:"feature-flags-settings-section",children:[(0,b.jsx)(T,{label:q("settings.featureFlags.skills"),description:q("settings.featureFlags.skillsDescription"),id:"flag-skills",testId:"switch-flag-skills",checked:au.skills,onChange:a=>{let b={...au,skills:a};av(b),A({featureFlags:b})}}),(0,b.jsx)(T,{label:q("settings.featureFlags.deployments"),description:q("settings.featureFlags.deploymentsDescription"),id:"flag-envDeploy",testId:"switch-flag-envDeploy",checked:au.envDeploy,onChange:a=>{let b={...au,envDeploy:a};av(b),A({featureFlags:b})}}),(0,b.jsx)(T,{label:q("settings.featureFlags.debug"),description:q("settings.featureFlags.debugDescription"),id:"flag-debug",testId:"switch-flag-debug",checked:au.debug,onChange:a=>{let b={...au,debug:a};av(b),A({featureFlags:b})}}),(0,b.jsx)(T,{label:q("settings.featureFlags.githubImport"),description:q("settings.featureFlags.githubImportDescription"),id:"flag-githubImport",testId:"switch-flag-githubImport",checked:au.githubImport,onChange:a=>{let b={...au,githubImport:a};av(b),A({featureFlags:b})}}),(0,b.jsx)(T,{label:q("settings.featureFlags.adoptBranch"),description:q("settings.featureFlags.adoptBranchDescription"),id:"flag-adoptBranch",testId:"switch-flag-adoptBranch",checked:au.adoptBranch,onChange:a=>{let b={...au,adoptBranch:a};av(b),A({featureFlags:b})}}),(0,b.jsx)(T,{label:q("settings.featureFlags.gitRebaseSync"),description:q("settings.featureFlags.gitRebaseSyncDescription"),id:"flag-gitRebaseSync",testId:"switch-flag-gitRebaseSync",checked:au.gitRebaseSync,onChange:a=>{let b={...au,gitRebaseSync:a};av(b),A({featureFlags:b})}}),(0,b.jsx)(T,{label:q("settings.featureFlags.reactFileManager"),description:q("settings.featureFlags.reactFileManagerDescription"),id:"flag-reactFileManager",testId:"switch-flag-reactFileManager",checked:au.reactFileManager,onChange:a=>{let b={...au,reactFileManager:a};av(b),A({featureFlags:b})}})]}),(0,b.jsx)(X,{children:q("settings.featureFlags.hint")})]}),(0,b.jsxs)("div",{id:"section-interactive-agent",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(aR,{settings:a}),(0,b.jsx)(X,{children:q("settings.interactiveAgent.hint")})]}),(0,b.jsxs)("div",{id:"section-fab-layout",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(aS,{settings:a}),(0,b.jsx)(X,{children:q("settings.fabLayout.hint")})]}),(0,b.jsxs)("div",{id:"section-database",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(U,{icon:l,title:q("settings.database.title"),description:q("settings.database.sectionDescription"),testId:"database-settings-section",children:[(0,b.jsx)(S,{label:q("settings.database.location"),description:q("settings.database.locationDescription"),children:(0,b.jsx)("span",{className:"text-muted-foreground max-w-50 truncate font-mono text-xs","data-testid":"shipit-ai-home-path",children:h})}),(0,b.jsx)(S,{label:q("settings.database.size"),children:(0,b.jsx)("span",{className:"text-muted-foreground text-xs","data-testid":"db-file-size",children:i})})]}),(0,b.jsx)(X,{links:[{label:q("settings.database.links.settingsService"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/architecture/settings-service.md"},{label:q("settings.database.links.settingsSpec"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/005-global-settings-service/spec.md"}],children:q("settings.database.hint")})]})]})]})}],79020)}];
|
|
1
|
+
module.exports=[79020,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(60197),e=a.i(87638),f=a.i(8685),g=a.i(37545),h=a.i(51423),i=a.i(97624);let j=(0,i.default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]),k=(0,i.default)("flag",[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",key:"1jaruq"}]]),l=(0,i.default)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var m=a.i(69210),n=a.i(73952);let o=(0,i.default)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);var p=a.i(52313);a.i(98617);var q=a.i(50040),r=a.i(85536),s=a.i(59175),t=a.i(58339),u=a.i(6120);let v=(0,u.createServerReference)("40c1307357b24ffda8dc75b56558f1a78e79d49cba",u.callServer,void 0,u.findSourceMapURL,"updateSettingsAction");var w=a.i(46847),x=a.i(7077),y=a.i(11036),z=a.i(96436);function A(a){return(0,b.jsx)(y.Code,{className:(0,r.cn)("h-4 w-4",a.className),...a})}function B({className:a}){return(0,b.jsx)(x.default,{src:"/icons/editors/vscode.svg",alt:"VS Code",width:24,height:24,className:(0,r.cn)("rounded-sm object-contain",a)})}function C({className:a}){return(0,b.jsx)(x.default,{src:"/icons/agents/cursor.jpeg",alt:"Cursor",width:24,height:24,className:(0,r.cn)("rounded-sm object-contain",a)})}function D({className:a}){return(0,b.jsx)(x.default,{src:"/icons/editors/windsurf.svg",alt:"Windsurf",width:24,height:24,className:(0,r.cn)("rounded-sm object-contain",a)})}function E({className:a}){return(0,b.jsx)(x.default,{src:"/icons/editors/zed.svg",alt:"Zed",width:24,height:24,className:(0,r.cn)("rounded-sm object-contain",a)})}function F({className:a,...c}){return(0,b.jsx)(z.Rocket,{className:(0,r.cn)("h-4 w-4",a),...c})}B.displayName="VsCodeIcon",C.displayName="CursorEditorIcon",D.displayName="WindsurfIcon",E.displayName="ZedIcon",F.displayName="AntigravityIcon";let G={vscode:B,cursor:C,windsurf:D,zed:E,antigravity:F};var H=a.i(61781),I=a.i(49853),I=I,J=a.i(29370),K=a.i(2),L=a.i(77612),M=a.i(58860),N=a.i(96867),O=a.i(82934);function P({label:a,description:c,htmlFor:d,tooltip:e,children:f}){let g=e??c;return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b py-2.5 last:border-b-0",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(M.Label,{htmlFor:d,className:"cursor-pointer text-sm font-normal whitespace-nowrap",children:a}),g?(0,b.jsxs)(O.Tooltip,{children:[(0,b.jsx)(O.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(L.Info,{className:"text-muted-foreground/40 hover:text-muted-foreground h-3.5 w-3.5 shrink-0 cursor-help transition-colors"})}),(0,b.jsx)(O.TooltipContent,{side:"top",className:"max-w-72 text-xs leading-relaxed",children:g})]}):null]}),c?(0,b.jsx)("p",{className:"text-muted-foreground text-[11px] leading-tight",children:c}):null]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:f})]})}function Q({label:a,description:c,id:d,testId:e,checked:f,onChange:g,disabled:h,tooltip:i}){return(0,b.jsx)(P,{label:a,description:c,htmlFor:d,tooltip:i,children:(0,b.jsx)(N.Switch,{id:d,"data-testid":e,checked:f,onCheckedChange:g,disabled:h,className:(0,r.cn)("cursor-pointer",h&&"cursor-not-allowed opacity-50")})})}function R({icon:a,title:c,description:d,badge:e,testId:f,children:g}){return(0,b.jsxs)("div",{className:"bg-background rounded-lg border","data-testid":f,children:[(0,b.jsxs)("div",{className:"bg-muted/30 border-b px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(a,{className:"text-muted-foreground h-3.5 w-3.5"}),(0,b.jsx)("h2",{className:"text-sm font-semibold",children:c}),e?(0,b.jsx)("span",{className:"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-[9px] font-medium tracking-wider uppercase",children:e}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground mt-0.5 text-[11px]",children:d})]}),(0,b.jsx)("div",{className:"px-4",children:g})]})}function S({id:a,testId:c,value:d,onChange:e,onBlur:f,placeholder:g,min:h=1,max:i,step:j=1,suffix:k}){let{t:l}=(0,q.useTranslation)("web"),m=""===d?void 0:parseInt(d,10);return(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center overflow-hidden rounded-md border",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{e(String(Math.max(h,(m??parseInt(g,10))-j)))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-r transition-colors","aria-label":l("common.decrease"),children:(0,b.jsx)(I.default,{className:"h-3 w-3"})}),(0,b.jsx)("input",{id:a,"data-testid":c,type:"text",inputMode:"numeric",pattern:"[0-9]*",value:d,placeholder:g,onChange:a=>{e(a.target.value.replace(/[^0-9]/g,""))},onBlur:f,className:"h-8 w-14 bg-transparent text-center text-xs outline-none"}),(0,b.jsx)("button",{type:"button",onClick:()=>{let a;a=m??parseInt(g,10),e(String(null!=i?Math.min(i,a+j):a+j))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-l transition-colors","aria-label":l("common.increase"),children:(0,b.jsx)(J.Plus,{className:"h-3 w-3"})})]}),k?(0,b.jsx)("span",{className:"text-muted-foreground text-[11px]",children:k}):null]})}function T({children:a}){return(0,b.jsx)("div",{className:"border-b pt-3 pb-1",children:(0,b.jsx)("span",{className:"text-muted-foreground text-[10px] font-semibold tracking-wider uppercase",children:a})})}function U({children:a,links:c}){return(0,b.jsxs)("div",{className:"hidden pt-2 lg:block",children:[(0,b.jsx)("p",{className:"text-muted-foreground/70 text-[11px] leading-relaxed",children:a}),null!=c&&c.length>0?(0,b.jsx)("div",{className:"mt-2 flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-[10px] transition-colors",children:[(0,b.jsx)(K.ExternalLink,{className:"h-2.5 w-2.5"}),a.label]},a.href))}):null]})}function V(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}function W({settings:a}){let{t:d}=(0,q.useTranslation)("web"),[,e]=(0,c.useTransition)(),[f,g]=(0,c.useState)(null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):""),[i,j]=(0,c.useState)(null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):""),[k,l]=(0,c.useState)(null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):""),[m,n]=(0,c.useState)(null!=a.workflow.ciWatchPollIntervalSeconds?String(a.workflow.ciWatchPollIntervalSeconds):""),[o,r]=(0,c.useState)(!1!==a.workflow.hideCiStatus),s=null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):"",t=null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):"",u=null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):"",w=null!=a.workflow.ciWatchPollIntervalSeconds?String(a.workflow.ciWatchPollIntervalSeconds):"";function x(a){e(async()=>{let b=await v(a);b.success||p.toast.error(b.error??d("settings.failedToSave"))})}function y(a){let b=V(a.ciTimeout??i);return{workflow:{ciMaxFixAttempts:V(a.ciMaxFix??f),ciWatchTimeoutMs:null!=b?1e3*b:void 0,ciLogMaxChars:V(a.ciLogMax??k),ciWatchPollIntervalSeconds:V(a.ciPollInterval??m),hideCiStatus:a.hideCiStatus??o}}}return(0,b.jsxs)(R,{icon:h.Activity,title:d("settings.ci.title"),description:d("settings.ci.description"),testId:"ci-settings-section",children:[(0,b.jsx)(P,{label:d("settings.ci.maxFixAttempts"),description:d("settings.ci.maxFixAttemptsDescription"),htmlFor:"ci-max-fix",children:(0,b.jsx)(S,{id:"ci-max-fix",testId:"ci-max-fix-input",placeholder:"3",value:f,onChange:g,onBlur:()=>{f!==s&&x(y({ciMaxFix:f}))},min:1,max:10})}),(0,b.jsx)(P,{label:d("settings.ci.watchTimeout"),description:d("settings.ci.watchTimeoutDescription"),htmlFor:"ci-timeout",children:(0,b.jsx)(S,{id:"ci-timeout",testId:"ci-timeout-input",placeholder:"300",value:i,onChange:j,onBlur:()=>{i!==t&&x(y({ciTimeout:i}))},min:30,step:30,suffix:"sec"})}),(0,b.jsx)(P,{label:d("settings.ci.maxLogSize"),description:d("settings.ci.maxLogSizeDescription"),htmlFor:"ci-log-max",children:(0,b.jsx)(S,{id:"ci-log-max",testId:"ci-log-max-input",placeholder:"50000",value:k,onChange:l,onBlur:()=>{k!==u&&x(y({ciLogMax:k}))},min:1e3,step:5e3,suffix:"chars"})}),(0,b.jsx)(P,{label:d("settings.ci.pollInterval"),description:d("settings.ci.pollIntervalDescription"),htmlFor:"ci-poll-interval",children:(0,b.jsx)(S,{id:"ci-poll-interval",testId:"ci-poll-interval-input",placeholder:"30",value:m,onChange:n,onBlur:()=>{m!==w&&x(y({ciPollInterval:m}))},min:5,step:5,suffix:"sec"})}),(0,b.jsx)(Q,{label:d("settings.ci.hideCiStatus"),description:d("settings.ci.hideCiStatusDescription"),id:"hide-ci-status",testId:"switch-hide-ci-status",checked:o,onChange:a=>{r(a),x(y({hideCiStatus:a}))}})]})}var X=a.i(48972),Y=a.i(59653),Z=a.i(80303),$=a.i(95819),_=a.i(47427),aa=a.i(60380),ab=a.i(41387),ac=a.i(97045),ad=a.i(30419),ae=a.i(69471),af=["PageUp","PageDown"],ag=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],ah={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},ai="Slider",[aj,ak,al]=(0,ae.createCollection)(ai),[am,an]=(0,$.createContextScope)(ai,[al]),[ao,ap]=am(ai),aq=c.forwardRef((a,d)=>{let{name:e,min:f=0,max:g=100,step:h=1,orientation:i="horizontal",disabled:j=!1,minStepsBetweenThumbs:k=0,defaultValue:l=[f],value:m,onValueChange:n=()=>{},onValueCommit:o=()=>{},inverted:p=!1,form:q,...r}=a,s=c.useRef(new Set),t=c.useRef(0),u="horizontal"===i,[v=[],w]=(0,_.useControllableState)({prop:m,defaultProp:l,onChange:a=>{let b=[...s.current];b[t.current]?.focus(),n(a)}}),x=c.useRef(v);function y(a,b,{commit:c}={commit:!1}){let d,e=(String(h).split(".")[1]||"").length,i=Math.round((Math.round((a-f)/h)*h+f)*(d=Math.pow(10,e)))/d,j=(0,X.clamp)(i,[f,g]);w((a=[])=>{let d=function(a=[],b,c){let d=[...a];return d[c]=b,d.sort((a,b)=>a-b)}(a,j,b);if(!function(a,b){if(b>0)return Math.min(...a.slice(0,-1).map((b,c)=>a[c+1]-b))>=b;return!0}(d,k*h))return a;{t.current=d.indexOf(j);let b=String(d)!==String(a);return b&&c&&o(d),b?d:a}})}return(0,b.jsx)(ao,{scope:a.__scopeSlider,name:e,disabled:j,min:f,max:g,valueIndexToChangeRef:t,thumbs:s.current,values:v,orientation:i,form:q,children:(0,b.jsx)(aj.Provider,{scope:a.__scopeSlider,children:(0,b.jsx)(aj.Slot,{scope:a.__scopeSlider,children:(0,b.jsx)(u?at:au,{"aria-disabled":j,"data-disabled":j?"":void 0,...r,ref:d,onPointerDown:(0,Y.composeEventHandlers)(r.onPointerDown,()=>{j||(x.current=v)}),min:f,max:g,inverted:p,onSlideStart:j?void 0:function(a){let b=function(a,b){if(1===a.length)return 0;let c=a.map(a=>Math.abs(a-b)),d=Math.min(...c);return c.indexOf(d)}(v,a);y(a,b)},onSlideMove:j?void 0:function(a){y(a,t.current)},onSlideEnd:j?void 0:function(){let a=x.current[t.current];v[t.current]!==a&&o(v)},onHomeKeyDown:()=>!j&&y(f,0,{commit:!0}),onEndKeyDown:()=>!j&&y(g,v.length-1,{commit:!0}),onStepKeyDown:({event:a,direction:b})=>{if(!j){let c=af.includes(a.key)||a.shiftKey&&ag.includes(a.key),d=t.current;y(v[d]+h*(c?10:1)*b,d,{commit:!0})}}})})})})});aq.displayName=ai;var[ar,as]=am(ai,{startEdge:"left",endEdge:"right",size:"width",direction:1}),at=c.forwardRef((a,d)=>{let{min:e,max:f,dir:g,inverted:h,onSlideStart:i,onSlideMove:j,onSlideEnd:k,onStepKeyDown:l,...m}=a,[n,o]=c.useState(null),p=(0,Z.useComposedRefs)(d,a=>o(a)),q=c.useRef(void 0),r=(0,aa.useDirection)(g),s="ltr"===r,t=s&&!h||!s&&h;function u(a){let b=q.current||n.getBoundingClientRect(),c=aF([0,b.width],t?[e,f]:[f,e]);return q.current=b,c(a-b.left)}return(0,b.jsx)(ar,{scope:a.__scopeSlider,startEdge:t?"left":"right",endEdge:t?"right":"left",direction:t?1:-1,size:"width",children:(0,b.jsx)(av,{dir:r,"data-orientation":"horizontal",...m,ref:p,style:{...m.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:a=>{let b=u(a.clientX);i?.(b)},onSlideMove:a=>{let b=u(a.clientX);j?.(b)},onSlideEnd:()=>{q.current=void 0,k?.()},onStepKeyDown:a=>{let b=ah[t?"from-left":"from-right"].includes(a.key);l?.({event:a,direction:b?-1:1})}})})}),au=c.forwardRef((a,d)=>{let{min:e,max:f,inverted:g,onSlideStart:h,onSlideMove:i,onSlideEnd:j,onStepKeyDown:k,...l}=a,m=c.useRef(null),n=(0,Z.useComposedRefs)(d,m),o=c.useRef(void 0),p=!g;function q(a){let b=o.current||m.current.getBoundingClientRect(),c=aF([0,b.height],p?[f,e]:[e,f]);return o.current=b,c(a-b.top)}return(0,b.jsx)(ar,{scope:a.__scopeSlider,startEdge:p?"bottom":"top",endEdge:p?"top":"bottom",size:"height",direction:p?1:-1,children:(0,b.jsx)(av,{"data-orientation":"vertical",...l,ref:n,style:{...l.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:a=>{let b=q(a.clientY);h?.(b)},onSlideMove:a=>{let b=q(a.clientY);i?.(b)},onSlideEnd:()=>{o.current=void 0,j?.()},onStepKeyDown:a=>{let b=ah[p?"from-bottom":"from-top"].includes(a.key);k?.({event:a,direction:b?-1:1})}})})}),av=c.forwardRef((a,c)=>{let{__scopeSlider:d,onSlideStart:e,onSlideMove:f,onSlideEnd:g,onHomeKeyDown:h,onEndKeyDown:i,onStepKeyDown:j,...k}=a,l=ap(ai,d);return(0,b.jsx)(ad.Primitive.span,{...k,ref:c,onKeyDown:(0,Y.composeEventHandlers)(a.onKeyDown,a=>{"Home"===a.key?(h(a),a.preventDefault()):"End"===a.key?(i(a),a.preventDefault()):af.concat(ag).includes(a.key)&&(j(a),a.preventDefault())}),onPointerDown:(0,Y.composeEventHandlers)(a.onPointerDown,a=>{let b=a.target;b.setPointerCapture(a.pointerId),a.preventDefault(),l.thumbs.has(b)?b.focus():e(a)}),onPointerMove:(0,Y.composeEventHandlers)(a.onPointerMove,a=>{a.target.hasPointerCapture(a.pointerId)&&f(a)}),onPointerUp:(0,Y.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&(b.releasePointerCapture(a.pointerId),g(a))})})}),aw="SliderTrack",ax=c.forwardRef((a,c)=>{let{__scopeSlider:d,...e}=a,f=ap(aw,d);return(0,b.jsx)(ad.Primitive.span,{"data-disabled":f.disabled?"":void 0,"data-orientation":f.orientation,...e,ref:c})});ax.displayName=aw;var ay="SliderRange",az=c.forwardRef((a,d)=>{let{__scopeSlider:e,...f}=a,g=ap(ay,e),h=as(ay,e),i=c.useRef(null),j=(0,Z.useComposedRefs)(d,i),k=g.values.length,l=g.values.map(a=>aE(a,g.min,g.max)),m=k>1?Math.min(...l):0,n=100-Math.max(...l);return(0,b.jsx)(ad.Primitive.span,{"data-orientation":g.orientation,"data-disabled":g.disabled?"":void 0,...f,ref:j,style:{...a.style,[h.startEdge]:m+"%",[h.endEdge]:n+"%"}})});az.displayName=ay;var aA="SliderThumb",aB=c.forwardRef((a,d)=>{let e=ak(a.__scopeSlider),[f,g]=c.useState(null),h=(0,Z.useComposedRefs)(d,a=>g(a)),i=c.useMemo(()=>f?e().findIndex(a=>a.ref.current===f):-1,[e,f]);return(0,b.jsx)(aC,{...a,ref:h,index:i})}),aC=c.forwardRef((a,d)=>{var e,f,g,h,i;let j,k,{__scopeSlider:l,index:m,name:n,...o}=a,p=ap(aA,l),q=as(aA,l),[r,s]=c.useState(null),t=(0,Z.useComposedRefs)(d,a=>s(a)),u=!r||p.form||!!r.closest("form"),v=(0,ac.useSize)(r),w=p.values[m],x=void 0===w?0:aE(w,p.min,p.max),y=(e=m,(f=p.values.length)>2?`Value ${e+1} of ${f}`:2===f?["Minimum","Maximum"][e]:void 0),z=v?.[q.size],A=z?(g=z,h=x,i=q.direction,k=aF([0,50],[0,j=g/2]),(j-k(h)*i)*i):0;return c.useEffect(()=>{if(r)return p.thumbs.add(r),()=>{p.thumbs.delete(r)}},[r,p.thumbs]),(0,b.jsxs)("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[q.startEdge]:`calc(${x}% + ${A}px)`},children:[(0,b.jsx)(aj.ItemSlot,{scope:a.__scopeSlider,children:(0,b.jsx)(ad.Primitive.span,{role:"slider","aria-label":a["aria-label"]||y,"aria-valuemin":p.min,"aria-valuenow":w,"aria-valuemax":p.max,"aria-orientation":p.orientation,"data-orientation":p.orientation,"data-disabled":p.disabled?"":void 0,tabIndex:p.disabled?void 0:0,...o,ref:t,style:void 0===w?{display:"none"}:a.style,onFocus:(0,Y.composeEventHandlers)(a.onFocus,()=>{p.valueIndexToChangeRef.current=m})})}),u&&(0,b.jsx)(aD,{name:n??(p.name?p.name+(p.values.length>1?"[]":""):void 0),form:p.form,value:w},m)]})});aB.displayName=aA;var aD=c.forwardRef(({__scopeSlider:a,value:d,...e},f)=>{let g=c.useRef(null),h=(0,Z.useComposedRefs)(g,f),i=(0,ab.usePrevious)(d);return c.useEffect(()=>{let a=g.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;if(i!==d&&b){let c=new Event("input",{bubbles:!0});b.call(a,d),a.dispatchEvent(c)}},[i,d]),(0,b.jsx)(ad.Primitive.input,{style:{display:"none"},...e,ref:h,defaultValue:d})});function aE(a,b,c){return(0,X.clamp)(100/(c-b)*(a-b),[0,100])}function aF(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}aD.displayName="RadioBubbleInput",a.s(["Range",0,az,"Root",0,aq,"Slider",0,aq,"SliderRange",0,az,"SliderThumb",0,aB,"SliderTrack",0,ax,"Thumb",0,aB,"Track",0,ax,"createSliderScope",0,an],40432);var aG=a.i(40432),aG=aG;function aH({className:a,defaultValue:d,value:e,min:f=0,max:g=100,...h}){let i=c.useMemo(()=>Array.isArray(e)?e:Array.isArray(d)?d:[f,g],[e,d,f,g]);return(0,b.jsxs)(aG.Root,{"data-slot":"slider",defaultValue:d,value:e,min:f,max:g,className:(0,r.cn)("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",a),...h,children:[(0,b.jsx)(aG.Track,{"data-slot":"slider-track",className:(0,r.cn)("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"),children:(0,b.jsx)(aG.Range,{"data-slot":"slider-range",className:(0,r.cn)("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),Array.from({length:i.length},(a,c)=>(0,b.jsx)(aG.Thumb,{"data-slot":"slider-thumb",className:"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"},c))]})}let aI=[60,120,300,600,900,1800,2700,3600,7200,10800,14400,21600,28800,43200,86400],aJ=aI.length-1;function aK(a){let b=0,c=Math.abs(a-aI[0]);for(let d=1;d<aI.length;d++){let e=Math.abs(a-aI[d]);e<c&&(c=e,b=d)}return b}function aL({id:a,testId:d,value:e,onChange:f,onBlur:g,defaultSeconds:h=1800}){var i;let j,k,l=(""===e?h:parseInt(e,10))||h,[m,n]=(0,c.useState)(()=>aK(l)),o=aK(l);o!==m&&aI[m]!==l&&n(o);let p=(0,c.useCallback)(([a])=>{n(a),f(String(aI[a]))},[f]);return(0,b.jsxs)("div",{className:"flex w-55 items-center gap-2",children:[(0,b.jsx)(aH,{id:a,"data-testid":d,min:0,max:aJ,step:1,value:[m],onValueChange:p,onValueCommit:()=>g(),className:"min-w-0 flex-1"}),(0,b.jsx)("span",{className:"text-muted-foreground shrink-0 text-end text-xs tabular-nums",children:(j=Math.floor((i=aI[m])/3600),k=Math.round(i%3600/60),0===j?`${k}m`:0===k?`${j}h`:`${j}h ${k}m`)})]})}function aM(a){if(void 0===a)return;let b=function(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}(a);return null!=b?1e3*b:void 0}function aN({settings:a}){let{t:d}=(0,q.useTranslation)("web"),[,e]=(0,c.useTransition)(),f=a.workflow.stageTimeouts,g=a.workflow.analyzeRepoTimeouts,[h,i]=(0,c.useState)(String(Math.round((f?.analyzeMs??18e5)/1e3))),[j,k]=(0,c.useState)(String(Math.round((f?.requirementsMs??18e5)/1e3))),[l,n]=(0,c.useState)(String(Math.round((f?.researchMs??18e5)/1e3))),[o,r]=(0,c.useState)(String(Math.round((f?.planMs??18e5)/1e3))),[s,t]=(0,c.useState)(String(Math.round((f?.implementMs??18e5)/1e3))),[u,w]=(0,c.useState)(String(Math.round((f?.mergeMs??18e5)/1e3))),[x,y]=(0,c.useState)(String(Math.round((g?.analyzeMs??6e5)/1e3))),z=f?.analyzeMs!=null?String(Math.round(f.analyzeMs/1e3)):"",A=f?.requirementsMs!=null?String(Math.round(f.requirementsMs/1e3)):"",B=f?.researchMs!=null?String(Math.round(f.researchMs/1e3)):"",C=f?.planMs!=null?String(Math.round(f.planMs/1e3)):"",D=f?.implementMs!=null?String(Math.round(f.implementMs/1e3)):"",E=f?.mergeMs!=null?String(Math.round(f.mergeMs/1e3)):"",F=g?.analyzeMs!=null?String(Math.round(g.analyzeMs/1e3)):"";function G(a){return{workflow:{stageTimeouts:{analyzeMs:aM(a.analyzeTimeout??h),requirementsMs:aM(a.requirementsTimeout??j),researchMs:aM(a.researchTimeout??l),planMs:aM(a.planTimeout??o),implementMs:aM(a.implementTimeout??s),mergeMs:aM(a.mergeTimeout??u)},analyzeRepoTimeouts:{analyzeMs:aM(a.analyzeRepoTimeout??x)}}}}function H(a){e(async()=>{let b=await v(a);b.success||p.toast.error(b.error??d("settings.failedToSave"))})}return(0,b.jsxs)(R,{icon:m.Timer,title:d("settings.stageTimeouts.title"),description:d("settings.stageTimeouts.description"),testId:"stage-timeouts-settings-section",children:[(0,b.jsx)(T,{children:d("settings.stageTimeouts.subsections.featureAgent")}),(0,b.jsx)(P,{label:d("settings.stageTimeouts.analyze"),description:d("settings.stageTimeouts.analyzeDescription"),htmlFor:"timeout-analyze",children:(0,b.jsx)(aL,{id:"timeout-analyze",testId:"timeout-analyze-input",value:h,onChange:i,onBlur:()=>{h!==z&&H(G({analyzeTimeout:h}))},defaultSeconds:1800})}),(0,b.jsx)(P,{label:d("settings.stageTimeouts.requirements"),description:d("settings.stageTimeouts.requirementsDescription"),htmlFor:"timeout-requirements",children:(0,b.jsx)(aL,{id:"timeout-requirements",testId:"timeout-requirements-input",value:j,onChange:k,onBlur:()=>{j!==A&&H(G({requirementsTimeout:j}))},defaultSeconds:1800})}),(0,b.jsx)(P,{label:d("settings.stageTimeouts.research"),description:d("settings.stageTimeouts.researchDescription"),htmlFor:"timeout-research",children:(0,b.jsx)(aL,{id:"timeout-research",testId:"timeout-research-input",value:l,onChange:n,onBlur:()=>{l!==B&&H(G({researchTimeout:l}))},defaultSeconds:1800})}),(0,b.jsx)(P,{label:d("settings.stageTimeouts.plan"),description:d("settings.stageTimeouts.planDescription"),htmlFor:"timeout-plan",children:(0,b.jsx)(aL,{id:"timeout-plan",testId:"timeout-plan-input",value:o,onChange:r,onBlur:()=>{o!==C&&H(G({planTimeout:o}))},defaultSeconds:1800})}),(0,b.jsx)(P,{label:d("settings.stageTimeouts.implement"),description:d("settings.stageTimeouts.implementDescription"),htmlFor:"timeout-implement",children:(0,b.jsx)(aL,{id:"timeout-implement",testId:"timeout-implement-input",value:s,onChange:t,onBlur:()=>{s!==D&&H(G({implementTimeout:s}))},defaultSeconds:1800})}),(0,b.jsx)(P,{label:d("settings.stageTimeouts.merge"),description:d("settings.stageTimeouts.mergeDescription"),htmlFor:"timeout-merge",children:(0,b.jsx)(aL,{id:"timeout-merge",testId:"timeout-merge-input",value:u,onChange:w,onBlur:()=>{u!==E&&H(G({mergeTimeout:u}))},defaultSeconds:1800})}),(0,b.jsx)(T,{children:d("settings.stageTimeouts.subsections.analyzeRepoAgent")}),(0,b.jsx)(P,{label:d("settings.stageTimeouts.analyze"),description:d("settings.stageTimeouts.analyzeDescription"),htmlFor:"timeout-analyze-repo",children:(0,b.jsx)(aL,{id:"timeout-analyze-repo",testId:"timeout-analyze-repo-input",value:x,onChange:y,onBlur:()=>{x!==F&&H(G({analyzeRepoTimeout:x}))},defaultSeconds:600})})]})}function aO({settings:a}){let{t:d}=(0,q.useTranslation)("web"),[,e]=(0,c.useTransition)(),f=a.interactiveAgent??{enabled:!0,autoTimeoutMinutes:15,maxConcurrentSessions:3},[g,h]=(0,c.useState)(f.enabled),[i,j]=(0,c.useState)(String(f.autoTimeoutMinutes)),[k,l]=(0,c.useState)(String(f.maxConcurrentSessions));function m(a){e(async()=>{let b=await v(a);b.success||p.toast.error(b.error??d("settings.failedToSave"))})}return(0,b.jsxs)(R,{icon:n.MessageSquare,title:d("settings.interactiveAgent.title"),description:d("settings.interactiveAgent.description"),testId:"interactive-agent-settings-section",children:[(0,b.jsx)(Q,{label:d("settings.interactiveAgent.enableChatTab"),description:d("settings.interactiveAgent.enableChatTabDescription"),id:"interactive-agent-enabled",testId:"switch-interactive-agent-enabled",checked:g,onChange:a=>{h(a),m({interactiveAgent:{enabled:a,autoTimeoutMinutes:parseInt(i,10)||15,maxConcurrentSessions:parseInt(k,10)||3}})}}),(0,b.jsx)(P,{label:d("settings.interactiveAgent.autoTimeout"),description:d("settings.interactiveAgent.autoTimeoutDescription"),htmlFor:"interactive-agent-timeout",children:(0,b.jsx)(S,{id:"interactive-agent-timeout",testId:"input-interactive-agent-timeout",value:i,placeholder:"15",min:1,max:120,suffix:"min",onChange:j,onBlur:()=>{let a=parseInt(i,10),b=Number.isNaN(a)?15:Math.min(120,Math.max(1,a));j(String(b)),m({interactiveAgent:{enabled:g,autoTimeoutMinutes:b,maxConcurrentSessions:parseInt(k,10)||3}})}})}),(0,b.jsx)(P,{label:d("settings.interactiveAgent.maxConcurrentSessions"),description:d("settings.interactiveAgent.maxConcurrentSessionsDescription"),htmlFor:"interactive-agent-sessions",children:(0,b.jsx)(S,{id:"interactive-agent-sessions",testId:"input-interactive-agent-sessions",value:k,placeholder:"3",min:1,max:10,onChange:l,onBlur:()=>{let a=parseInt(k,10),b=Number.isNaN(a)?3:Math.min(10,Math.max(1,a));l(String(b)),m({interactiveAgent:{enabled:g,autoTimeoutMinutes:parseInt(i,10)||15,maxConcurrentSessions:b}})}})})]})}function aP({settings:a}){let{t:d}=(0,q.useTranslation)("web"),[,e]=(0,c.useTransition)(),f=a.fabLayout??{swapPosition:!1},[g,h]=(0,c.useState)(f.swapPosition);return(0,b.jsx)(R,{icon:o,title:d("settings.fabLayout.title"),description:d("settings.fabLayout.description"),testId:"fab-layout-settings-section",children:(0,b.jsx)(Q,{label:d("settings.fabLayout.swapPosition"),description:d("settings.fabLayout.swapPositionDescription"),id:"fab-swap-position",testId:"switch-fab-swap-position",checked:g,onChange:a=>{var b;h(a),b={fabLayout:{swapPosition:a}},e(async()=>{let a=await v(b);a.success||p.toast.error(a.error??d("settings.failedToSave"))})}})})}let aQ=[{id:"vscode",name:"VS Code",available:!0},{id:"cursor",name:"Cursor",available:!0},{id:"windsurf",name:"Windsurf",available:!0},{id:"zed",name:"Zed",available:!0},{id:"antigravity",name:"Antigravity",available:!0}],aR=[{id:"bash",name:"Bash",available:!0},{id:"zsh",name:"Zsh",available:!0},{id:"fish",name:"Fish",available:!0}],aS=[{id:"agent",labelKey:"settings.sections.agent",icon:e.Bot},{id:"environment",labelKey:"settings.sections.environment",icon:f.Terminal},{id:"workflow",labelKey:"settings.sections.workflow",icon:g.GitBranch},{id:"ci",labelKey:"settings.sections.ci",icon:h.Activity},{id:"stage-timeouts",labelKey:"settings.sections.timeouts",icon:m.Timer},{id:"notifications",labelKey:"settings.sections.notifications",icon:j},{id:"feature-flags",labelKey:"settings.sections.flags",icon:k},{id:"interactive-agent",labelKey:"settings.sections.chat",icon:n.MessageSquare},{id:"fab-layout",labelKey:"settings.sections.layout",icon:o},{id:"database",labelKey:"settings.sections.database",icon:l}];a.s(["SettingsPageClient",0,function({settings:a,shipitAiHome:h,dbFileSize:i,availableTerminals:m,availableEditors:n,availableShells:o}){let{t:u}=(0,q.useTranslation)("web"),{showSaving:x,showSaved:y,save:z}=function(){let{t:a}=(0,q.useTranslation)("web"),[b,d]=(0,c.useTransition)(),[e,f]=(0,c.useState)(!1),[g,h]=(0,c.useState)(!1),i=(0,c.useRef)(null),j=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{b&&!e&&(f(!0),j.current=!1,i.current=setTimeout(()=>{i.current=null,j.current&&(f(!1),h(!0),setTimeout(()=>h(!1),2e3))},350)),!b&&e&&(j.current=!0,i.current||(f(!1),h(!0),setTimeout(()=>h(!1),2e3)))},[b,e]),{showSaving:e,showSaved:g,save:(0,c.useCallback)(b=>{d(async()=>{let c=await v(b);c.success||p.toast.error(c.error??a("settings.failedToSave"))})},[d,a])}}(),B=a.featureFlags??{skills:!1,envDeploy:!1,debug:!1,githubImport:!1,adoptBranch:!1,gitRebaseSync:!1,reactFileManager:!1},[C,D]=(0,c.useState)(a.agent.type),[E,F]=(0,c.useState)(a.environment.defaultEditor),[I,J]=(0,c.useState)(a.environment.shellPreference),[K,L]=(0,c.useState)(a.environment.terminalPreference??w.TerminalType.System),M=m??[{id:w.TerminalType.System,name:u("settings.environment.systemTerminal"),available:!0}],[N,O]=(0,c.useState)(a.workflow.openPrOnImplementationComplete),[V,X]=(0,c.useState)(a.workflow.approvalGateDefaults.pushOnImplementationComplete),[Y,Z]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPrd),[$,_]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPlan),[aa,ab]=(0,c.useState)(a.workflow.approvalGateDefaults.allowMerge),[ac,ad]=(0,c.useState)(a.workflow.enableEvidence),[ae,af]=(0,c.useState)(a.workflow.commitEvidence),[ag,ah]=(0,c.useState)(!1!==a.workflow.ciWatchEnabled),[ai,aj]=(0,c.useState)(!1!==a.workflow.defaultFastMode),[ak,al]=(0,c.useState)((a.workflow.autoArchiveDelayMinutes??10)>0),[am,an]=(0,c.useState)(String(a.workflow.autoArchiveDelayMinutes??10)),[ao,ap]=(0,c.useState)(a.notifications.inApp.enabled),[aq,ar]=(0,c.useState)({...a.notifications.events}),[as,at]=(0,c.useState)({...B});function au(a={}){let b=a.autoArchiveEnabled??ak,c=parseInt(a.autoArchiveDelay??am,10);return{workflow:{openPrOnImplementationComplete:a.openPr??N,approvalGateDefaults:{pushOnImplementationComplete:a.pushOnComplete??V,allowPrd:a.allowPrd??Y,allowPlan:a.allowPlan??$,allowMerge:a.allowMerge??aa},enableEvidence:a.enableEvidence??ac,commitEvidence:a.commitEvidence??ae,ciWatchEnabled:a.ciWatchEnabled??ag,defaultFastMode:a.defaultFastMode??ai,autoArchiveDelayMinutes:b?Number.isNaN(c)||c<1?10:c:0}}}function av(a={}){return{notifications:{inApp:{enabled:a.inApp??ao},events:a.events??aq}}}let[aw,ax]=(0,c.useState)("agent");(0,c.useEffect)(()=>{let a=aS.map(a=>document.getElementById(`section-${a.id}`)).filter(Boolean);if(0===a.length)return;let b=new IntersectionObserver(a=>{for(let b of a)b.isIntersecting&&ax(b.target.id.replace("section-",""))},{rootMargin:"-65px 0px -60% 0px",threshold:0});for(let c of a)b.observe(c);return()=>b.disconnect()},[]);let ay=(0,c.useCallback)(a=>{let b=document.getElementById(`section-${a}`);b&&(b.scrollIntoView({behavior:"smooth",block:"start"}),b.style.animation="none",b.offsetHeight,b.style.animation="section-flash 1s ease-out")},[]);return(0,b.jsxs)("div",{"data-testid":"settings-page-client",className:"max-w-5xl px-8 pt-8",children:[(0,b.jsxs)("div",{className:"bg-background/95 supports-backdrop-filter:bg-background/80 sticky top-0 z-10 pb-4 backdrop-blur",children:[(0,b.jsxs)("div",{className:"mb-4 space-y-1.5",children:[(0,b.jsx)("span",{className:"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase",children:"Developer Portal"}),(0,b.jsxs)("div",{className:"flex items-baseline gap-3",children:[(0,b.jsx)("h1",{className:"text-foreground text-3xl font-black tracking-tight",children:u("settings.title")}),(0,b.jsxs)("span",{className:"relative h-4 w-16",children:[(0,b.jsx)("span",{className:(0,r.cn)("text-muted-foreground absolute inset-0 flex items-center text-xs transition-opacity duration-300",x?"opacity-100":"opacity-0"),children:u("settings.saving")}),(0,b.jsxs)("span",{className:(0,r.cn)("absolute inset-0 flex items-center gap-1 text-xs text-green-600 transition-opacity duration-300",y&&!x?"opacity-100":"opacity-0"),children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),u("settings.saved")]})]})]})]}),(0,b.jsx)("nav",{className:"bg-card editorial-shadow flex flex-wrap items-center gap-0.5 rounded-lg p-1",children:aS.map(a=>{let c=a.icon,d=aw===a.id;return(0,b.jsxs)("button",{type:"button",onClick:()=>ay(a.id),className:(0,r.cn)("flex cursor-pointer items-center gap-1 rounded-md px-2 py-1.5 text-[11px] font-bold transition-all",d?"bg-muted text-primary shadow-sm ring-1 ring-slate-200/70 dark:ring-slate-700/50":"text-muted-foreground hover:text-foreground hover:bg-accent/50"),children:[(0,b.jsx)(c,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:u(a.labelKey)})]},a.id)})})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{id:"section-agent",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(R,{icon:e.Bot,title:u("settings.agent.sectionTitle"),description:u("settings.agent.sectionDescription"),testId:"agent-settings-section",children:(0,b.jsx)(P,{label:u("settings.agent.agentAndModel"),description:u("settings.agent.agentAndModelDescription"),tooltip:"Changing the agent switches which AI CLI tool runs your features. Each agent has different capabilities, speed, and cost tradeoffs.",htmlFor:"agent-model-picker",children:(0,b.jsx)(H.AgentModelPicker,{initialAgentType:C,initialModel:a.models.default,mode:"settings",onAgentModelChange:a=>D(a),className:"w-55"})})}),(0,b.jsx)(U,{links:[{label:u("settings.agent.links.agentSystem"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/architecture/agent-system.md"},{label:u("settings.agent.links.addingAgents"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/development/adding-agents.md"},{label:u("settings.agent.links.configurationGuide"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/guides/configuration.md"}],children:u("settings.agent.hint")})]}),(0,b.jsxs)("div",{id:"section-environment",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(R,{icon:f.Terminal,title:u("settings.environment.sectionTitle"),description:u("settings.environment.sectionDescription"),testId:"environment-settings-section",children:[(0,b.jsx)(P,{label:u("settings.environment.defaultEditor"),description:u("settings.environment.defaultEditorDescription"),tooltip:"The editor that opens when you click 'Launch' on a tool card or when ShipIT needs to open a file for review.",htmlFor:"default-editor",children:(0,b.jsxs)(s.Select,{value:E,onValueChange:a=>{F(a),z({environment:{defaultEditor:a,shellPreference:I,terminalPreference:K}})},children:[(0,b.jsx)(s.SelectTrigger,{id:"default-editor","data-testid":"editor-select",className:"w-64 cursor-pointer text-xs",children:(0,b.jsx)(s.SelectValue,{})}),(0,b.jsx)(s.SelectContent,{children:(n??aQ).map(a=>{var c;let d=(c=a.id)&&c in G?G[c]:A;return(0,b.jsx)(s.SelectItem,{value:a.id,disabled:!a.available,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(d,{className:"h-4 w-4 shrink-0"}),a.name,(0,b.jsx)(t.Badge,{variant:"outline",className:(0,r.cn)("ml-auto px-1.5 py-0 text-[10px] leading-4 font-normal",a.available?"border-emerald-500/30 text-emerald-500":"border-muted-foreground/30 text-muted-foreground"),children:a.available?"Installed":"Not Installed"})]})},a.id)})})]})}),(0,b.jsx)(P,{label:u("settings.environment.shell"),description:u("settings.environment.shellDescription"),tooltip:"Controls which shell runs generated scripts like install commands and git operations. Match this to your daily driver shell.",htmlFor:"shell-preference",children:(0,b.jsxs)(s.Select,{value:I,onValueChange:a=>{J(a),z({environment:{defaultEditor:E,shellPreference:a,terminalPreference:K}})},children:[(0,b.jsx)(s.SelectTrigger,{id:"shell-preference","data-testid":"shell-select",className:"w-64 cursor-pointer text-xs",children:(0,b.jsx)(s.SelectValue,{})}),(0,b.jsx)(s.SelectContent,{children:(o??aR).map(a=>(0,b.jsx)(s.SelectItem,{value:a.id,disabled:!a.available,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[a.name,(0,b.jsx)(t.Badge,{variant:"outline",className:(0,r.cn)("ml-auto px-1.5 py-0 text-[10px] leading-4 font-normal",a.available?"border-emerald-500/30 text-emerald-500":"border-muted-foreground/30 text-muted-foreground"),children:a.available?"Installed":"Not Installed"})]})},a.id))})]})}),(0,b.jsx)(P,{label:u("settings.environment.terminal"),description:u("settings.environment.terminalDescription"),tooltip:"The terminal emulator launched when opening shell sessions from the web UI. Only affects web-launched terminals, not CLI usage.",htmlFor:"terminal-preference",children:(0,b.jsxs)(s.Select,{value:K,onValueChange:a=>{L(a),z({environment:{defaultEditor:E,shellPreference:I,terminalPreference:a}})},children:[(0,b.jsx)(s.SelectTrigger,{id:"terminal-preference","data-testid":"terminal-select",className:"w-64 cursor-pointer text-xs",children:(0,b.jsx)(s.SelectValue,{})}),(0,b.jsx)(s.SelectContent,{children:M.map(a=>(0,b.jsx)(s.SelectItem,{value:a.id,disabled:!a.available,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[a.name,(0,b.jsx)(t.Badge,{variant:"outline",className:(0,r.cn)("ml-auto px-1.5 py-0 text-[10px] leading-4 font-normal",a.available?"border-emerald-500/30 text-emerald-500":"border-muted-foreground/30 text-muted-foreground"),children:a.available?"Installed":"Not Installed"})]})},a.id))})]})})]}),(0,b.jsx)(U,{links:[{label:u("settings.environment.links.configurationGuide"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/guides/configuration.md"}],children:u("settings.environment.hint")})]}),(0,b.jsxs)("div",{id:"section-workflow",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(R,{icon:g.GitBranch,title:u("settings.workflow.title"),description:u("settings.workflow.sectionDescription"),testId:"workflow-settings-section",children:[(0,b.jsx)(Q,{label:u("settings.workflow.defaultFastMode"),description:u("settings.workflow.defaultFastModeDescription"),tooltip:"When enabled, new features skip the PRD and Plan phases and go straight to implementation. Useful for quick fixes, risky for complex features.",id:"default-fast-mode",testId:"switch-default-fast-mode",checked:ai,onChange:a=>{aj(a),z(au({defaultFastMode:a}))}}),(0,b.jsx)(T,{children:u("settings.workflow.subsections.approve")}),(0,b.jsx)(Q,{label:u("settings.workflow.autoApprovePrd"),description:u("settings.workflow.autoApprovePrdDescription"),tooltip:"Automatically approves the requirements document without pausing for your review. Saves time but you lose the chance to refine requirements before planning.",id:"allow-prd",testId:"switch-allow-prd",checked:Y,onChange:a=>{Z(a),z(au({allowPrd:a}))}}),(0,b.jsx)(Q,{label:u("settings.workflow.autoApprovePlan"),description:u("settings.workflow.autoApprovePlanDescription"),tooltip:"Automatically approves the implementation plan. The agent proceeds to coding without waiting for your plan review.",id:"allow-plan",testId:"switch-allow-plan",checked:$,onChange:a=>{_(a),z(au({allowPlan:a}))}}),(0,b.jsx)(Q,{label:u("settings.workflow.autoApproveMerge"),description:u("settings.workflow.autoApproveMergeDescription"),tooltip:"Automatically merges the PR after implementation without requiring your final review. Use with caution on production branches.",id:"allow-merge",testId:"switch-allow-merge",checked:aa,onChange:a=>{ab(a),z(au({allowMerge:a}))}}),(0,b.jsx)(T,{children:u("settings.workflow.subsections.evidence")}),(0,b.jsx)(Q,{label:u("settings.workflow.collectEvidence"),description:u("settings.workflow.collectEvidenceDescription"),tooltip:"Captures screenshots and test outputs during implementation as proof of work. Useful for audit trails and PR documentation.",id:"enable-evidence",testId:"switch-enable-evidence",checked:ac,onChange:a=>{ad(a),a?z(au({enableEvidence:a})):(af(!1),z(au({enableEvidence:a,commitEvidence:!1})))}}),(0,b.jsx)(Q,{label:u("settings.workflow.addEvidenceToPr"),description:u("settings.workflow.addEvidenceToPrDescription"),tooltip:"Attaches collected evidence artifacts (screenshots, logs) directly to the pull request description.",id:"commit-evidence",testId:"switch-commit-evidence",checked:ae,disabled:!ac||!N,onChange:a=>{af(a),z(au({commitEvidence:a}))}}),(0,b.jsx)(T,{children:u("settings.workflow.subsections.git")}),(0,b.jsx)(Q,{label:u("settings.workflow.pushOnComplete"),description:u("settings.workflow.pushOnCompleteDescription"),tooltip:"Automatically pushes the implementation branch to the remote repository when the agent finishes coding.",id:"push-on-complete",testId:"switch-push-on-complete",checked:V,onChange:a=>{X(a),z(au({pushOnComplete:a}))}}),(0,b.jsx)(Q,{label:u("settings.workflow.openPrOnComplete"),description:u("settings.workflow.openPrOnCompleteDescription"),tooltip:"Creates a pull request automatically after pushing. Combined with push-on-complete, this fully automates the delivery pipeline.",id:"open-pr",testId:"switch-open-pr",checked:N,onChange:a=>{O(a),a?z(au({openPr:a})):(af(!1),z(au({openPr:a,commitEvidence:!1})))}}),(0,b.jsx)(Q,{label:u("settings.workflow.watchCiAfterPush"),description:u("settings.workflow.watchCiAfterPushDescription"),tooltip:"Monitors CI/CD pipeline status after pushing and can attempt fixes if tests fail. Disable if you prefer to handle CI failures manually.",id:"ci-watch-enabled",testId:"switch-ci-watch-enabled",checked:ag,onChange:a=>{ah(a),z(au({ciWatchEnabled:a}))}}),(0,b.jsx)(T,{children:"Archive"}),(0,b.jsx)(Q,{label:"Auto-archive completed",description:"Automatically archive features after they reach the completed state",tooltip:"Automatically archives features from the control center canvas after they reach the completed state, keeping the board clean.",id:"auto-archive-enabled",testId:"switch-auto-archive-enabled",checked:ak,onChange:a=>{al(a),z(au({autoArchiveEnabled:a}))}}),(0,b.jsx)(P,{label:"Archive delay",description:"Minutes to wait after completion before archiving (1–1440)",tooltip:"How long to wait after a feature completes before archiving it. Gives you time to review results before the feature moves off the board.",htmlFor:"auto-archive-delay",children:(0,b.jsx)(S,{id:"auto-archive-delay",testId:"input-auto-archive-delay",value:am,placeholder:"10",min:1,max:1440,suffix:"min",onChange:a=>{an(a)},onBlur:()=>{if(!ak)return;let a=parseInt(am,10),b=Number.isNaN(a)?10:Math.min(1440,Math.max(1,a));an(String(b)),z(au({autoArchiveDelay:String(b)}))}})})]}),(0,b.jsx)(U,{links:[{label:u("settings.workflow.links.approvalGates"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/016-hitl-approval-gates/spec.yaml"},{label:u("settings.workflow.links.pushAndPrFlags"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/037-feature-pr-push-flags/spec.yaml"}],children:u("settings.workflow.hint")})]}),(0,b.jsxs)("div",{id:"section-ci",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(W,{settings:a}),(0,b.jsx)(U,{links:[{label:u("settings.ci.links.cicdPipeline"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/development/cicd.md"},{label:u("settings.ci.links.ciSecurityGates"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/003-cicd-security-gates/spec.md"}],children:u("settings.ci.hint")})]}),(0,b.jsxs)("div",{id:"section-stage-timeouts",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(aN,{settings:a}),(0,b.jsx)(U,{children:u("settings.stageTimeouts.hint")})]}),(0,b.jsxs)("div",{id:"section-notifications",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(R,{icon:j,title:u("settings.notifications.title"),description:u("settings.notifications.sectionDescription"),testId:"notification-settings-section",children:[(0,b.jsx)(T,{children:u("settings.notifications.channels")}),(0,b.jsx)(Q,{label:u("settings.notifications.inAppLabel"),description:u("settings.notifications.inAppDescription"),tooltip:"Master toggle for in-app toast notifications. When disabled, no event toasts will appear regardless of individual event settings below.",id:"notif-in-app",testId:"switch-in-app",checked:ao,onChange:a=>{ap(a),z(av({inApp:a}))}}),(0,b.jsx)(T,{children:u("settings.notifications.subsections.agentEvents")}),(0,b.jsx)(Q,{label:u("settings.notifications.events.agentStarted"),tooltip:"Controls whether you receive an in-app toast notification when an agent begins working on a feature.",id:"notif-event-agentStarted",testId:"switch-event-agentStarted",checked:aq.agentStarted,onChange:a=>{let b={...aq,agentStarted:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.phaseCompleted"),tooltip:"Controls whether you receive an in-app toast notification when an agent completes a workflow phase (e.g., requirements, planning, implementation).",id:"notif-event-phaseCompleted",testId:"switch-event-phaseCompleted",checked:aq.phaseCompleted,onChange:a=>{let b={...aq,phaseCompleted:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.waitingApproval"),tooltip:"Controls whether you receive an in-app toast notification when a feature is paused and waiting for your approval to continue.",id:"notif-event-waitingApproval",testId:"switch-event-waitingApproval",checked:aq.waitingApproval,onChange:a=>{let b={...aq,waitingApproval:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.agentCompleted"),tooltip:"Controls whether you receive an in-app toast notification when an agent finishes all work on a feature successfully.",id:"notif-event-agentCompleted",testId:"switch-event-agentCompleted",checked:aq.agentCompleted,onChange:a=>{let b={...aq,agentCompleted:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.agentFailed"),tooltip:"Controls whether you receive an in-app toast notification when an agent encounters an error and stops working on a feature.",id:"notif-event-agentFailed",testId:"switch-event-agentFailed",checked:aq.agentFailed,onChange:a=>{let b={...aq,agentFailed:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(T,{children:u("settings.notifications.subsections.pullRequestEvents")}),(0,b.jsx)(Q,{label:u("settings.notifications.events.prMerged"),tooltip:"Controls whether you receive an in-app toast notification when a feature's pull request is merged into the target branch.",id:"notif-event-prMerged",testId:"switch-event-prMerged",checked:aq.prMerged,onChange:a=>{let b={...aq,prMerged:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.prClosed"),tooltip:"Controls whether you receive an in-app toast notification when a feature's pull request is closed without merging.",id:"notif-event-prClosed",testId:"switch-event-prClosed",checked:aq.prClosed,onChange:a=>{let b={...aq,prClosed:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.prChecksPassed"),tooltip:"Controls whether you receive an in-app toast notification when all CI checks pass on a feature's pull request.",id:"notif-event-prChecksPassed",testId:"switch-event-prChecksPassed",checked:aq.prChecksPassed,onChange:a=>{let b={...aq,prChecksPassed:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.prChecksFailed"),tooltip:"Controls whether you receive an in-app toast notification when CI checks fail on a feature's pull request.",id:"notif-event-prChecksFailed",testId:"switch-event-prChecksFailed",checked:aq.prChecksFailed,onChange:a=>{let b={...aq,prChecksFailed:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.prBlocked"),tooltip:"Controls whether you receive an in-app toast notification when a pull request is blocked by merge conflicts or branch protection rules.",id:"notif-event-prBlocked",testId:"switch-event-prBlocked",checked:aq.prBlocked,onChange:a=>{let b={...aq,prBlocked:a};ar(b),z(av({events:b}))}}),(0,b.jsx)(Q,{label:u("settings.notifications.events.mergeReviewReady"),tooltip:"Controls whether you receive an in-app toast notification when a feature's PR passes all checks and is ready for your merge review.",id:"notif-event-mergeReviewReady",testId:"switch-event-mergeReviewReady",checked:aq.mergeReviewReady,onChange:a=>{let b={...aq,mergeReviewReady:a};ar(b),z(av({events:b}))}})]}),(0,b.jsx)(U,{links:[{label:u("settings.notifications.links.notificationSystem"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/021-agent-notifications/spec.yaml"}],children:u("settings.notifications.hint")})]}),(0,b.jsxs)("div",{id:"section-feature-flags",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(R,{icon:k,title:u("settings.featureFlags.title"),description:u("settings.featureFlags.sectionDescription"),badge:u("settings.featureFlags.badge"),testId:"feature-flags-settings-section",children:[(0,b.jsx)(Q,{label:u("settings.featureFlags.skills"),description:u("settings.featureFlags.skillsDescription"),tooltip:"Enables the Skills page in the sidebar for browsing and managing Claude Code skills.",id:"flag-skills",testId:"switch-flag-skills",checked:as.skills,onChange:a=>{let b={...as,skills:a};at(b),z({featureFlags:b})}}),(0,b.jsx)(Q,{label:u("settings.featureFlags.deployments"),description:u("settings.featureFlags.deploymentsDescription"),tooltip:"Enables experimental deployment features for environment management.",id:"flag-envDeploy",testId:"switch-flag-envDeploy",checked:as.envDeploy,onChange:a=>{let b={...as,envDeploy:a};at(b),z({featureFlags:b})}}),(0,b.jsx)(Q,{label:u("settings.featureFlags.debug"),description:u("settings.featureFlags.debugDescription"),tooltip:"Shows additional debugging information in the UI for troubleshooting.",id:"flag-debug",testId:"switch-flag-debug",checked:as.debug,onChange:a=>{let b={...as,debug:a};at(b),z({featureFlags:b})}}),(0,b.jsx)(Q,{label:u("settings.featureFlags.githubImport"),description:u("settings.featureFlags.githubImportDescription"),tooltip:"Enables importing repositories directly from GitHub.",id:"flag-githubImport",testId:"switch-flag-githubImport",checked:as.githubImport,onChange:a=>{let b={...as,githubImport:a};at(b),z({featureFlags:b})}}),(0,b.jsx)(Q,{label:u("settings.featureFlags.adoptBranch"),description:u("settings.featureFlags.adoptBranchDescription"),tooltip:"Enables adopting existing git branches as ShipIT features.",id:"flag-adoptBranch",testId:"switch-flag-adoptBranch",checked:as.adoptBranch,onChange:a=>{let b={...as,adoptBranch:a};at(b),z({featureFlags:b})}}),(0,b.jsx)(Q,{label:u("settings.featureFlags.gitRebaseSync"),description:u("settings.featureFlags.gitRebaseSyncDescription"),tooltip:"Uses git rebase instead of merge when syncing feature branches with the upstream branch.",id:"flag-gitRebaseSync",testId:"switch-flag-gitRebaseSync",checked:as.gitRebaseSync,onChange:a=>{let b={...as,gitRebaseSync:a};at(b),z({featureFlags:b})}}),(0,b.jsx)(Q,{label:u("settings.featureFlags.reactFileManager"),description:u("settings.featureFlags.reactFileManagerDescription"),tooltip:"Replaces the native file picker dialog with a React-based file browser for selecting project folders.",id:"flag-reactFileManager",testId:"switch-flag-reactFileManager",checked:as.reactFileManager,onChange:a=>{let b={...as,reactFileManager:a};at(b),z({featureFlags:b})}})]}),(0,b.jsx)(U,{children:u("settings.featureFlags.hint")})]}),(0,b.jsxs)("div",{id:"section-interactive-agent",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(aO,{settings:a}),(0,b.jsx)(U,{children:u("settings.interactiveAgent.hint")})]}),(0,b.jsxs)("div",{id:"section-fab-layout",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(aP,{settings:a}),(0,b.jsx)(U,{children:u("settings.fabLayout.hint")})]}),(0,b.jsxs)("div",{id:"section-database",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(R,{icon:l,title:u("settings.database.title"),description:u("settings.database.sectionDescription"),testId:"database-settings-section",children:[(0,b.jsx)(P,{label:u("settings.database.location"),description:u("settings.database.locationDescription"),tooltip:"The directory where ShipIT stores its SQLite database, logs, and configuration files. Change this via the SHIPIT_AI_HOME environment variable.",children:(0,b.jsx)("span",{className:"text-muted-foreground max-w-50 truncate font-mono text-xs","data-testid":"shipit-ai-home-path",children:h})}),(0,b.jsx)(P,{label:u("settings.database.size"),tooltip:"Current size of the SQLite database file on disk. Large databases may slow down startup; consider archiving old features if this grows significantly.",children:(0,b.jsx)("span",{className:"text-muted-foreground text-xs","data-testid":"db-file-size",children:i})})]}),(0,b.jsx)(U,{links:[{label:u("settings.database.links.settingsService"),href:"https://github.com/jrmatherly/shipit/blob/main/docs/architecture/settings-service.md"},{label:u("settings.database.links.settingsSpec"),href:"https://github.com/jrmatherly/shipit/blob/main/specs/005-global-settings-service/spec.md"}],children:u("settings.database.hint")})]})]})]})}],79020)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map
|