@shepai/cli 1.174.0 → 1.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apis/json-schema/Repository.yaml +6 -0
- package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.d.ts +3 -1
- package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +28 -0
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +2 -0
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts +47 -0
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/github-repository-service.interface.js +12 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature-from-remote.use-case.d.ts +67 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature-from-remote.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature-from-remote.use-case.js +128 -0
- package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.d.ts +16 -5
- package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.js +76 -14
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts +30 -0
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/repositories/init-remote-repository.use-case.js +51 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +8 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +10 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.js +4 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.d.ts +12 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-repository-fork-fields.js +26 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts +2 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +14 -0
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts +4 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +55 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +15 -0
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +62 -0
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +32 -6
- package/dist/src/presentation/cli/commands/repo/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/repo/index.js +3 -1
- package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts +15 -0
- package/dist/src/presentation/cli/commands/repo/init-remote.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/repo/init-remote.command.js +44 -0
- package/dist/src/presentation/web/app/actions/create-feature-from-remote.d.ts +31 -0
- package/dist/src/presentation/web/app/actions/create-feature-from-remote.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/create-feature-from-remote.js +69 -0
- package/dist/src/presentation/web/app/actions/import-github-repository.d.ts +1 -0
- package/dist/src/presentation/web/app/actions/import-github-repository.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/import-github-repository.js +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/repository-combobox.stories.js +22 -0
- package/dist/src/presentation/web/lib/feature-flags.js +1 -1
- package/dist/translations/ar/cli.json +12 -0
- package/dist/translations/de/cli.json +12 -0
- package/dist/translations/en/cli.json +12 -0
- package/dist/translations/es/cli.json +12 -0
- package/dist/translations/fr/cli.json +12 -0
- package/dist/translations/he/cli.json +12 -0
- package/dist/translations/pt/cli.json +12 -0
- package/dist/translations/ru/cli.json +12 -0
- 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 +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -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/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +2 -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/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -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/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +2 -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/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -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/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js +2 -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/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js +2 -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/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js +2 -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/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +2 -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/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -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 +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/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/features/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
- package/web/.next/server/app/skills/page.js +2 -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/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js +2 -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/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__b020c17d._.js → [root-of-the-server]__540c615f._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_fd595af2._.js → _2b021b35._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_fd595af2._.js.map → _2b021b35._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
- package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
- package/web/.next/server/chunks/ssr/_6abfa39e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_3a71f39b._.js → _af6b8b94._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_3a71f39b._.js.map → _af6b8b94._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_7953be4d._.js → _e0dd6fcf._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_7953be4d._.js.map → _e0dd6fcf._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js +4 -0
- package/web/.next/server/chunks/ssr/_f8c55130._.js.map +1 -0
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +5 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +5 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -0
- package/web/.next/server/pages/500.html +2 -2
- 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/{ad47bc6ddec7508e.js → 0b07ee72b0c639ef.js} +1 -1
- package/web/.next/static/chunks/{f5abbc495d496f5b.js → 1b336d1266a0aa3d.js} +1 -1
- package/web/.next/static/chunks/{d9c9db1823b4dffd.js → 238fdbed09dc61b6.js} +2 -2
- package/web/.next/static/chunks/{5a2e1c8699897c26.js → 28f6b1cab38ab025.js} +3 -3
- package/web/.next/static/chunks/2ad924f5ba5ec0a6.js +1 -0
- package/web/.next/static/chunks/2ceebcc839ee0d4b.js +1 -0
- package/web/.next/static/chunks/{6dc0a23d333274ae.js → 39054eabee156e55.js} +2 -2
- package/web/.next/static/chunks/{a2a03ecb10000974.js → 873e837cd1179cdd.js} +1 -1
- package/web/.next/static/chunks/{a060ad1bb509687f.js → 940c842293a6ee9b.js} +1 -1
- package/web/.next/static/chunks/a20f2d6f76f469b7.css +1 -0
- package/web/.next/static/chunks/{393b27ab5de6c454.js → a22ee308ae1509ca.js} +1 -1
- package/web/.next/static/chunks/{e30aa6d2cf824fa1.js → b2aa69e4b0b032d9.js} +1 -1
- package/web/.next/static/chunks/{6bc240cd4ae43267.js → b7b5d65a5dd2fff1.js} +1 -1
- package/web/.next/static/chunks/{0baf5a2e56d191cf.js → ba0e0fa2d1a650bb.js} +1 -1
- package/web/.next/static/chunks/{c164b157638b2a8b.js → bc41a393614b1192.js} +1 -1
- package/web/.next/static/chunks/{534194b584a151ed.js → d26542df5ecc8717.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_02e01240._.js +0 -4
- package/web/.next/server/chunks/ssr/_02e01240._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_18886033._.js +0 -4
- package/web/.next/server/chunks/ssr/_18886033._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js +0 -4
- package/web/.next/server/chunks/ssr/_22e00a14._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_a5a5901d._.js +0 -4
- package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_ad09f271._.js +0 -4
- package/web/.next/server/chunks/ssr/_ad09f271._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js +0 -4
- package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_ea9e1556._.js +0 -4
- package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js +0 -6
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f33cd07e._.js +0 -6
- package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js +0 -4
- package/web/.next/server/chunks/ssr/_f8b45233._.js.map +0 -1
- package/web/.next/static/chunks/32c46154c31c58fc.js +0 -1
- package/web/.next/static/chunks/84b480808bd74fa9.css +0 -1
- /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → 9rcv3ICw0kZNuv3TVdO8E}/_buildManifest.js +0 -0
- /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → 9rcv3ICw0kZNuv3TVdO8E}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{nLYXtW5TIrvQiMl1yyD4O → 9rcv3ICw0kZNuv3TVdO8E}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
module.exports=[92658,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(28478)},12581,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},23504,27900,12513,73101,54775,65324,a=>{"use strict";var b=a.i(92658),c=a.i(96380);let d={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},e={displayName:"",description:""};function f(a){let b=d[a];return b||{...e,displayName:a.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,a=>a.toUpperCase())}}var g=a.i(12581);let h={"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"Copilot CLI",cursor:"Cursor CLI","gemini-cli":"Gemini CLI",dev:"Demo"},i={"claude-code":0,"codex-cli":1,"copilot-cli":2,cursor:3,"gemini-cli":4,dev:99};async function j(){try{let a=(0,c.resolve)("IAgentExecutorFactory");return a.getSupportedAgents().map(b=>({agentType:b,label:h[b]??b,models:a.getSupportedModels(b).map(a=>({id:a,...f(a)}))})).map(a=>"dev"===a.agentType&&0===a.models.length?{...a,models:[{id:"gpt-8",...f("gpt-8")},{id:"opus-7",...f("opus-7")}]}:a).filter(a=>a.models.length>0).sort((a,b)=>(i[a.agentType]??50)-(i[b.agentType]??50))}catch{return[]}}(0,g.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"006bc1e402f8227543541ef0b32eae38d48451b177",null),a.s(["getAllAgentModels",()=>j],23504);var k=a.i(33244);async function l(a,b){if(!a.trim())return{ok:!1,error:"agent type is required"};try{let d=(0,c.resolve)("CompleteWebOnboardingUseCase"),e=await d.execute({agentType:a.trim(),model:b});return(0,k.resetSettings)(),(0,k.initializeSettings)(e),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to update agent and model"}}}(0,g.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"60ee7cd212b9b72a55135dcf12e34dea5eeef0121f",null),a.s(["updateAgentAndModel",()=>l],27900);var m=a.i(74533);let n={platform:process.platform,exec:(a,b)=>(0,m.execSync)(a,b)},o={darwin:"osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'",linux:'zenity --file-selection --directory --title="Select a repository folder" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\""};class p{deps;constructor(a={}){this.deps={...n,...a}}getCommand(){return o[this.deps.platform]??null}pickFolder(){let a=this.getCommand();if(!a)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let b=this.deps.exec(a,{encoding:"utf-8",timeout:6e4}).trim();return b.length>0?b:null}catch(a){var b;if("object"==typeof(b=a)&&null!==b&&"status"in b&&1===a.status)return null;throw a}}}async function q(){let a=new p;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,g.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"0007c2e0526aa58dd3af65f12572ddbce953dd5771",null),a.s(["pickFolder",()=>q],12513);class r extends Error{constructor(a,b){super(a),this.name="GitHubAuthError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class s extends Error{constructor(a,b){super(a),this.name="GitHubCloneError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class t extends Error{constructor(a,b){super(a),this.name="GitHubUrlParseError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}async function u(a){try{let b=(0,c.resolve)("ListGitHubRepositoriesUseCase");return{repos:await b.execute(a)}}catch(a){if(a instanceof r)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list repositories"}}}async function v(){try{let a=(0,c.resolve)("ListGitHubOrganizationsUseCase");return{orgs:await a.execute()}}catch(a){if(a instanceof r)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list organizations"}}}async function w(a){let{url:b,dest:d}=a;if(!b?.trim())return{error:"GitHub URL is required"};try{let a=(0,c.resolve)("ImportGitHubRepositoryUseCase"),e=await a.execute({url:b,dest:d});return{repository:e,forked:!0===e.isFork}}catch(a){if(a instanceof r)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};if(a instanceof t)return{error:`Invalid GitHub URL: ${a.message}`};if(a instanceof s)return{error:`Clone failed: ${a.message}`};return{error:a instanceof Error?a.message:"Failed to import repository"}}}(0,g.ensureServerEntryExports)([u]),(0,b.registerServerReference)(u,"40e4025e4c9932faa0ebda58ad29d3404b30c6f65e",null),a.s(["listGitHubRepositories",()=>u],73101),(0,g.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"0069abc5d93b0b63b576bb972cd2fd15444f242de8",null),a.s(["listGitHubOrganizations",()=>v],54775),(0,g.ensureServerEntryExports)([w]),(0,b.registerServerReference)(w,"40b5cd6b473cc57e91de3be3314647e1313abd789e",null),a.s(["importGitHubRepository",()=>w],65324)},33841,46646,68670,85321,a=>{"use strict";var b=a.i(92658),c=a.i(2157),d=a.i(96380);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shep/shep/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(12581);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running shep instance"),{success:!1,error:"Cannot start a dev server for features of the repository Shep is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"403e9c92d89fd8b3205c2243ba69034f1e87834884",null),a.s(["deployFeature",()=>m],33841);let n=f("[deployRepository]");async function o(a){if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,c.existsSync)(a))return n.warn(`directory does not exist: "${a}"`),{success:!1,error:`Directory does not exist: ${a}`};if(j(a))return n.warn("rejected — target is the running shep instance"),{success:!1,error:"Cannot start a dev server for the repository Shep is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,a,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"4055afdd273830ed017154c61bbba972935f755664",null),a.s(["deployRepository",()=>o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"401900c9334ca0aa2b2c20cc90f3e800e9a4a19f2b",null),a.s(["stopDeployment",()=>p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40c62234a418db717dffd8588d8e2c4593542a6ca2",null),a.s(["getDeploymentStatus",()=>q],85321)},94691,a=>{"use strict";var b=a.i(92658),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40468dc71b0e6684979d39fb438f9f04af1f2ff31c",null),a.s(["getDeploymentLogs",()=>d])}];
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=_f8c55130._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../../../src/presentation/web/app/actions/get-all-agent-models.ts","../../../../../../../src/presentation/web/lib/model-metadata.ts","../../../../../../../src/presentation/web/app/actions/update-agent-and-model.ts","../../../../../../../packages/core/src/infrastructure/services/folder-dialog.service.ts","../../../../../../../src/presentation/web/app/actions/pick-folder.ts","../../../../../../../packages/core/src/application/ports/output/services/github-repository-service.interface.ts","../../../../../../../src/presentation/web/app/actions/list-github-repositories.ts","../../../../../../../src/presentation/web/app/actions/list-github-organizations.ts","../../../../../../../src/presentation/web/app/actions/import-github-repository.ts","../../../../../../../src/presentation/web/app/actions/deploy-feature.ts","../../../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.ts","../../../../../../../src/presentation/web/lib/is-same-shep-instance.ts","../../../../../../../src/presentation/web/app/actions/deploy-repository.ts","../../../../../../../src/presentation/web/app/actions/stop-deployment.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-status.ts","../../../../../../../src/presentation/web/app/actions/get-deployment-logs.ts"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport { getModelMeta } from '@/lib/model-metadata';\nimport type { IAgentExecutorFactory } from '@shepai/core/application/ports/output/agents/agent-executor-factory.interface';\n\nexport interface ModelInfo {\n id: string;\n displayName: string;\n description: string;\n}\n\nexport interface AgentModelGroup {\n agentType: string;\n label: string;\n models: ModelInfo[];\n}\n\nconst AGENT_LABELS: Record<string, string> = {\n 'claude-code': 'Claude Code',\n 'codex-cli': 'Codex CLI',\n 'copilot-cli': 'Copilot CLI',\n cursor: 'Cursor CLI',\n 'gemini-cli': 'Gemini CLI',\n dev: 'Demo',\n};\n\n/** Sort weight — higher = further down. Demo always last. */\nconst AGENT_ORDER: Record<string, number> = {\n 'claude-code': 0,\n 'codex-cli': 1,\n 'copilot-cli': 2,\n cursor: 3,\n 'gemini-cli': 4,\n dev: 99,\n};\n\nexport async function getAllAgentModels(): Promise<AgentModelGroup[]> {\n try {\n const factory = resolve<IAgentExecutorFactory>('IAgentExecutorFactory');\n const agents = factory.getSupportedAgents();\n return agents\n .map((agentType) => ({\n agentType: agentType as string,\n label: AGENT_LABELS[agentType as string] ?? (agentType as string),\n models: factory.getSupportedModels(agentType).map((id) => ({\n id,\n ...getModelMeta(id),\n })),\n }))\n .map((g) => {\n // Dev agent gets fun demo models\n if (g.agentType === 'dev' && g.models.length === 0) {\n return {\n ...g,\n models: [\n { id: 'gpt-8', ...getModelMeta('gpt-8') },\n { id: 'opus-7', ...getModelMeta('opus-7') },\n ],\n };\n }\n return g;\n })\n .filter((g) => g.models.length > 0)\n .sort((a, b) => (AGENT_ORDER[a.agentType] ?? 50) - (AGENT_ORDER[b.agentType] ?? 50));\n } catch {\n return [];\n }\n}\n","export interface ModelMeta {\n displayName: string;\n description: string;\n}\n\n/**\n * Presentation-layer metadata for known LLM model identifiers.\n * Maps raw model IDs to human-friendly display names and short descriptions.\n */\nconst MODEL_METADATA: Record<string, ModelMeta> = {\n // Claude models\n 'claude-opus-4-6': { displayName: 'Opus 4.6', description: 'Most capable, complex tasks' },\n 'claude-sonnet-4-6': { displayName: 'Sonnet 4.6', description: 'Fast & balanced' },\n 'claude-haiku-4-5': { displayName: 'Haiku 4.5', description: 'Lightweight & quick' },\n\n // Gemini models\n 'gemini-3.1-pro': { displayName: 'Gemini 3.1 Pro', description: 'Advanced reasoning' },\n 'gemini-3-flash': { displayName: 'Gemini 3 Flash', description: 'Ultra-fast responses' },\n 'gemini-2.5-pro': { displayName: 'Gemini 2.5 Pro', description: 'Reliable workhorse' },\n 'gemini-2.5-flash': { displayName: 'Gemini 2.5 Flash', description: 'Speed-optimized' },\n\n // OpenAI models\n 'gpt-5.4-high': { displayName: 'GPT-5.4', description: 'Latest reasoning model' },\n 'gpt-5.2': { displayName: 'GPT-5.2', description: 'Flagship model' },\n 'gpt-5.3-codex': { displayName: 'GPT-5.3 Codex', description: 'Code specialist' },\n\n // Other\n 'composer-1.5': { displayName: 'Composer 1.5', description: 'Multi-file editing' },\n 'grok-code': { displayName: 'Grok Code', description: 'xAI code model' },\n\n // Demo / fun models\n 'gpt-8': { displayName: 'GPT-8', description: 'Writes code before you think it' },\n 'opus-7': { displayName: 'Opus 7', description: 'Achieved consciousness, ships on time' },\n};\n\nconst FALLBACK: ModelMeta = { displayName: '', description: '' };\n\nexport function getModelMeta(modelId: string): ModelMeta {\n const meta = MODEL_METADATA[modelId];\n if (meta) return meta;\n // Fallback: prettify the raw ID\n return {\n ...FALLBACK,\n displayName: modelId\n .replace(/^claude-/, '')\n .replace(/^gemini-/, 'Gemini ')\n .replace(/^gpt-/, 'GPT-')\n .replace(/-/g, ' ')\n .replace(/\\b\\w/g, (c) => c.toUpperCase()),\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport {\n resetSettings,\n initializeSettings,\n} from '@shepai/core/infrastructure/services/settings.service';\nimport type { CompleteWebOnboardingUseCase } from '@shepai/core/application/use-cases/settings/complete-web-onboarding.use-case';\nimport type { AgentType } from '@shepai/core/domain/generated/output';\n\nexport async function updateAgentAndModel(\n agentType: string,\n model: string | null\n): Promise<{ ok: boolean; error?: string }> {\n if (!agentType.trim()) {\n return { ok: false, error: 'agent type is required' };\n }\n\n try {\n const useCase = resolve<CompleteWebOnboardingUseCase>('CompleteWebOnboardingUseCase');\n const updatedSettings = await useCase.execute({\n agentType: agentType.trim() as AgentType,\n model,\n });\n\n resetSettings();\n initializeSettings(updatedSettings);\n\n return { ok: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to update agent and model';\n return { ok: false, error: message };\n }\n}\n","import { execSync } from 'node:child_process';\n\nexport interface FolderDialogDeps {\n platform: NodeJS.Platform;\n exec: (cmd: string, opts?: { encoding: BufferEncoding; timeout?: number }) => string;\n}\n\nconst defaultDeps: FolderDialogDeps = {\n platform: process.platform,\n exec: (cmd, opts) => execSync(cmd, opts) as unknown as string,\n};\n\n/**\n * Platform-specific commands that open a native OS folder picker dialog.\n * Each returns the chosen absolute folder path on stdout, or exits non-zero / returns empty on cancel.\n */\nconst PLATFORM_COMMANDS: Record<string, string> = {\n darwin: `osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'`,\n linux: `zenity --file-selection --directory --title=\"Select a repository folder\" 2>/dev/null`,\n win32: `powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\"`,\n};\n\nexport class FolderDialogService {\n private deps: FolderDialogDeps;\n\n constructor(deps: Partial<FolderDialogDeps> = {}) {\n this.deps = { ...defaultDeps, ...deps };\n }\n\n /** Returns the OS-specific command string, or null if the platform is unsupported. */\n getCommand(): string | null {\n return PLATFORM_COMMANDS[this.deps.platform] ?? null;\n }\n\n /**\n * Opens a native folder picker dialog and returns the selected absolute path.\n * Returns `null` if the user cancels the dialog.\n * Throws if the platform is unsupported or the command fails unexpectedly.\n */\n pickFolder(): string | null {\n const command = this.getCommand();\n if (!command) {\n throw new Error(`Unsupported platform: ${this.deps.platform}`);\n }\n\n try {\n const result = this.deps.exec(command, { encoding: 'utf-8', timeout: 60_000 });\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n } catch (error: unknown) {\n // User cancelled the dialog — exit code 1 from osascript/zenity/powershell\n if (isExecError(error) && error.status === 1) {\n return null;\n }\n throw error;\n }\n }\n}\n\nfunction isExecError(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n","'use server';\n\nimport { FolderDialogService } from '@shepai/core/infrastructure/services/folder-dialog.service';\n\nexport async function pickFolder(): Promise<{ path: string | null; error?: string }> {\n const service = new FolderDialogService();\n\n try {\n const path = service.pickFolder();\n return { path };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to open folder dialog';\n return { path: null, error: message };\n }\n}\n","/**\n * GitHub Repository Service Interface\n *\n * Output port for GitHub repository operations via the gh CLI.\n * Implementations manage authentication checks, repository cloning,\n * user repository listing, and GitHub URL parsing.\n */\n\n// ---------------------------------------------------------------------------\n// Error classes\n// ---------------------------------------------------------------------------\n\n/**\n * Thrown when the GitHub CLI is not authenticated.\n */\nexport class GitHubAuthError extends Error {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = 'GitHubAuthError';\n Object.setPrototypeOf(this, new.target.prototype);\n if (cause) this.cause = cause;\n }\n}\n\n/**\n * Thrown when a `gh repo clone` operation fails.\n */\nexport class GitHubCloneError extends Error {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = 'GitHubCloneError';\n Object.setPrototypeOf(this, new.target.prototype);\n if (cause) this.cause = cause;\n }\n}\n\n/**\n * Thrown when a GitHub URL cannot be parsed into owner/repo.\n */\nexport class GitHubUrlParseError extends Error {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = 'GitHubUrlParseError';\n Object.setPrototypeOf(this, new.target.prototype);\n if (cause) this.cause = cause;\n }\n}\n\n/**\n * Thrown when listing the user's GitHub repositories fails.\n */\nexport class GitHubRepoListError extends Error {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = 'GitHubRepoListError';\n Object.setPrototypeOf(this, new.target.prototype);\n if (cause) this.cause = cause;\n }\n}\n\n/**\n * Thrown when checking the viewer's permission on a repository fails.\n */\nexport class GitHubPermissionError extends Error {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = 'GitHubPermissionError';\n Object.setPrototypeOf(this, new.target.prototype);\n if (cause) this.cause = cause;\n }\n}\n\n/**\n * Thrown when a fork operation fails.\n */\nexport class GitHubForkError extends Error {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = 'GitHubForkError';\n Object.setPrototypeOf(this, new.target.prototype);\n if (cause) this.cause = cause;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/**\n * A GitHub repository as returned by `gh repo list --json`.\n */\nexport interface GitHubRepo {\n /** Repository name (e.g. \"my-project\") */\n name: string;\n /** Full owner/repo identifier (e.g. \"octocat/my-project\") */\n nameWithOwner: string;\n /** Repository description (may be empty string) */\n description: string;\n /** Whether the repository is private */\n isPrivate: boolean;\n /** ISO 8601 timestamp of the most recent push */\n pushedAt: string;\n}\n\n/**\n * Options for listing user repositories.\n */\nexport interface ListUserRepositoriesOptions {\n /** Maximum number of repos to return (default: 30) */\n limit?: number;\n /** Filter repos by name substring */\n search?: string;\n /** Owner (user or organization) to list repos for. Omit for the authenticated user's repos. */\n owner?: string;\n}\n\n/**\n * A GitHub organization the authenticated user belongs to.\n */\nexport interface GitHubOrganization {\n /** Organization login handle (e.g. \"my-org\") */\n login: string;\n /** Organization description (may be empty string) */\n description: string;\n}\n\n/**\n * Options for cloning a repository.\n */\nexport interface CloneOptions {\n /** Callback invoked with stderr chunks during clone for progress display */\n onProgress?: (data: string) => void;\n}\n\n/**\n * Result of parsing a GitHub URL.\n */\nexport interface ParsedGitHubUrl {\n /** Repository owner (e.g. \"octocat\") */\n owner: string;\n /** Repository name (e.g. \"my-project\") */\n repo: string;\n /** Combined owner/repo (e.g. \"octocat/my-project\") */\n nameWithOwner: string;\n}\n\n/**\n * Options for forking a repository.\n */\nexport interface ForkOptions {\n onProgress?: (message: string) => void;\n}\n\n/**\n * Result of checking push access on a repository.\n */\nexport interface PushAccessResult {\n hasPushAccess: boolean;\n viewerLogin: string;\n}\n\n/**\n * Result of forking a repository.\n */\nexport interface ForkResult {\n nameWithOwner: string;\n alreadyExisted: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Service interface\n// ---------------------------------------------------------------------------\n\n/**\n * Output port for GitHub repository operations.\n *\n * Implementations use the `gh` CLI for all GitHub interactions.\n */\nexport interface IGitHubRepositoryService {\n /**\n * Verify that the GitHub CLI is authenticated.\n *\n * @throws {GitHubAuthError} if `gh auth status` indicates the user is not logged in\n */\n checkAuth(): Promise<void>;\n\n /**\n * Clone a GitHub repository to a local destination directory.\n *\n * @param nameWithOwner - Full owner/repo identifier (e.g. \"octocat/my-project\")\n * @param destination - Absolute path to clone into\n * @param options - Optional clone configuration (e.g. progress callback)\n * @throws {GitHubCloneError} if the clone subprocess fails\n */\n cloneRepository(\n nameWithOwner: string,\n destination: string,\n options?: CloneOptions\n ): Promise<void>;\n\n /**\n * List the authenticated user's GitHub repositories.\n *\n * When `options.owner` is provided, lists repositories for that user or organization instead.\n *\n * @param options - Optional filtering and pagination\n * @returns Array of GitHub repositories sorted by most recently pushed\n * @throws {GitHubRepoListError} if the list operation fails\n */\n listUserRepositories(options?: ListUserRepositoriesOptions): Promise<GitHubRepo[]>;\n\n /**\n * List organizations the authenticated user belongs to.\n *\n * @returns Array of GitHub organizations\n * @throws {GitHubRepoListError} if the list operation fails\n */\n listOrganizations(): Promise<GitHubOrganization[]>;\n\n /**\n * Parse a GitHub URL or shorthand into its owner/repo components.\n *\n * Supported formats:\n * - `https://github.com/owner/repo`\n * - `https://github.com/owner/repo.git`\n * - `git@github.com:owner/repo.git`\n * - `owner/repo` (shorthand)\n *\n * @param url - The GitHub URL or shorthand to parse\n * @returns Parsed owner, repo, and nameWithOwner\n * @throws {GitHubUrlParseError} if the URL does not match any supported format\n */\n parseGitHubUrl(url: string): ParsedGitHubUrl;\n\n /**\n * Get the authenticated user's permission level on a GitHub repository.\n *\n * Uses `gh repo view --json viewerPermission` with the given repo path\n * as the working directory.\n *\n * @param repoPath - Absolute path to a local clone of the repository\n * @returns The viewer's permission level: \"ADMIN\", \"MAINTAIN\", \"WRITE\", \"TRIAGE\", or \"READ\"\n * @throws {GitHubPermissionError} if the permission check fails (e.g. gh not installed, not authenticated)\n */\n getViewerPermission(repoPath: string): Promise<string>;\n\n /**\n * Get the authenticated GitHub user's login.\n * @returns The login username\n * @throws {GitHubAuthError} if not authenticated\n */\n getAuthenticatedUser(): Promise<string>;\n\n /**\n * Check if the authenticated user has push access to a repository.\n * @param nameWithOwner - Full owner/repo identifier\n * @returns Push access result with viewer login\n * @throws {GitHubPermissionError} on failure\n */\n checkPushAccess(nameWithOwner: string): Promise<PushAccessResult>;\n\n /**\n * Fork a repository to the authenticated user's account.\n * @param nameWithOwner - Full owner/repo identifier to fork\n * @param options - Optional progress callback\n * @returns Fork result with the fork's nameWithOwner\n * @throws {GitHubForkError} on failure\n */\n forkRepository(nameWithOwner: string, options?: ForkOptions): Promise<ForkResult>;\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ListGitHubRepositoriesUseCase } from '@shepai/core/application/use-cases/repositories/list-github-repositories.use-case';\nimport type { GitHubRepo } from '@shepai/core/application/ports/output/services/github-repository-service.interface';\nimport { GitHubAuthError } from '@shepai/core/application/ports/output/services/github-repository-service.interface';\n\ninterface ListGitHubRepositoriesInput {\n search?: string;\n limit?: number;\n owner?: string;\n}\n\nexport async function listGitHubRepositories(\n input?: ListGitHubRepositoriesInput\n): Promise<{ repos?: GitHubRepo[]; error?: string }> {\n try {\n const useCase = resolve<ListGitHubRepositoriesUseCase>('ListGitHubRepositoriesUseCase');\n const repos = await useCase.execute(input);\n return { repos };\n } catch (error: unknown) {\n if (error instanceof GitHubAuthError) {\n return { error: 'GitHub CLI is not authenticated. Run `gh auth login` to sign in.' };\n }\n const message = error instanceof Error ? error.message : 'Failed to list repositories';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ListGitHubOrganizationsUseCase } from '@shepai/core/application/use-cases/repositories/list-github-organizations.use-case';\nimport type { GitHubOrganization } from '@shepai/core/application/ports/output/services/github-repository-service.interface';\nimport { GitHubAuthError } from '@shepai/core/application/ports/output/services/github-repository-service.interface';\n\nexport async function listGitHubOrganizations(): Promise<{\n orgs?: GitHubOrganization[];\n error?: string;\n}> {\n try {\n const useCase = resolve<ListGitHubOrganizationsUseCase>('ListGitHubOrganizationsUseCase');\n const orgs = await useCase.execute();\n return { orgs };\n } catch (error: unknown) {\n if (error instanceof GitHubAuthError) {\n return { error: 'GitHub CLI is not authenticated. Run `gh auth login` to sign in.' };\n }\n const message = error instanceof Error ? error.message : 'Failed to list organizations';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ImportGitHubRepositoryUseCase } from '@shepai/core/application/use-cases/repositories/import-github-repository.use-case';\nimport type { Repository } from '@shepai/core/domain/generated/output';\nimport {\n GitHubAuthError,\n GitHubUrlParseError,\n GitHubCloneError,\n} from '@shepai/core/application/ports/output/services/github-repository-service.interface';\n\ninterface ImportGitHubRepositoryInput {\n url: string;\n dest?: string;\n}\n\nexport async function importGitHubRepository(\n input: ImportGitHubRepositoryInput\n): Promise<{ repository?: Repository; forked?: boolean; error?: string }> {\n const { url, dest } = input;\n\n if (!url?.trim()) {\n return { error: 'GitHub URL is required' };\n }\n\n try {\n const useCase = resolve<ImportGitHubRepositoryUseCase>('ImportGitHubRepositoryUseCase');\n const repository = await useCase.execute({ url, dest });\n return { repository, forked: repository.isFork === true };\n } catch (error: unknown) {\n if (error instanceof GitHubAuthError) {\n return { error: 'GitHub CLI is not authenticated. Run `gh auth login` to sign in.' };\n }\n if (error instanceof GitHubUrlParseError) {\n return { error: `Invalid GitHub URL: ${error.message}` };\n }\n if (error instanceof GitHubCloneError) {\n return { error: `Clone failed: ${error.message}` };\n }\n const message = error instanceof Error ? error.message : 'Failed to import repository';\n return { error: message };\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger } from '@shepai/core/infrastructure/services/deployment/deployment-logger';\nimport { computeWorktreePath } from '@shepai/core/infrastructure/services/ide-launchers/compute-worktree-path';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IDeploymentService } from '@shepai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shepai/core/domain/generated/output';\nimport { isSameShepInstance } from '@/lib/is-same-shep-instance';\n\nconst log = createDeploymentLogger('[deployFeature]');\n\nexport async function deployFeature(\n featureId: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — featureId=\"${featureId}\"`);\n\n if (!featureId?.trim()) {\n log.warn('rejected — featureId is empty');\n return { success: false, error: 'featureId is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n log.warn(`feature not found in repository: \"${featureId}\"`);\n return { success: false, error: `Feature not found: ${featureId}` };\n }\n\n log.info(\n `feature found — repositoryPath=\"${feature.repositoryPath}\", branch=\"${feature.branch}\"`\n );\n\n const worktreePath = computeWorktreePath(feature.repositoryPath, feature.branch);\n log.info(`computed worktreePath=\"${worktreePath}\"`);\n\n if (!existsSync(worktreePath)) {\n log.warn(`worktree path does not exist on disk: \"${worktreePath}\"`);\n return { success: false, error: `Worktree path does not exist: ${worktreePath}` };\n }\n\n if (isSameShepInstance(feature.repositoryPath)) {\n log.warn('rejected — feature belongs to the running shep instance');\n return {\n success: false,\n error: 'Cannot start a dev server for features of the repository Shep is running from',\n };\n }\n\n log.info('worktree path exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(featureId, worktreePath, 'feature');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy feature';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","/* eslint-disable no-console */\n\n/**\n * Debug-gated logger for deployment services.\n *\n * - `info` and `debug` only emit when `process.env.DEBUG` is set.\n * - `warn` and `error` always emit (they indicate real problems).\n */\n\nconst noop = () => undefined;\n\nexport function createDeploymentLogger(prefix: string) {\n const isDebug = !!process.env.DEBUG;\n\n return {\n info: isDebug ? (...args: unknown[]) => console.info(prefix, ...args) : noop,\n debug: isDebug ? (...args: unknown[]) => console.debug(prefix, ...args) : noop,\n warn: (...args: unknown[]) => console.warn(prefix, ...args),\n error: (...args: unknown[]) => console.error(prefix, ...args),\n };\n}\n","import { realpathSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\n/**\n * Check if a target path is the same directory (or a worktree of) the\n * currently running shep instance. Starting a dev server there would spawn\n * another shep instance that conflicts with the shared ~/.shep/data DB.\n */\nexport function isSameShepInstance(targetPath: string): boolean {\n const instancePath = process.env.NEXT_PUBLIC_SHEP_INSTANCE_PATH ?? process.cwd();\n\n try {\n const normalizedTarget = realpathSync(resolve(targetPath)).replace(/\\\\/g, '/');\n const normalizedInstance = realpathSync(resolve(instancePath)).replace(/\\\\/g, '/');\n return normalizedTarget === normalizedInstance;\n } catch {\n return false;\n }\n}\n","'use server';\n\nimport { existsSync } from 'node:fs';\nimport { isAbsolute } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport { createDeploymentLogger } from '@shepai/core/infrastructure/services/deployment/deployment-logger';\nimport type { IDeploymentService } from '@shepai/core/application/ports/output/services/deployment-service.interface';\nimport { DeploymentState } from '@shepai/core/domain/generated/output';\nimport { isSameShepInstance } from '@/lib/is-same-shep-instance';\n\nconst log = createDeploymentLogger('[deployRepository]');\n\nexport async function deployRepository(\n repositoryPath: string\n): Promise<{ success: boolean; error?: string; state?: DeploymentState }> {\n log.info(`called — repositoryPath=\"${repositoryPath}\"`);\n\n if (!repositoryPath || !isAbsolute(repositoryPath)) {\n log.warn('rejected — not an absolute path');\n return { success: false, error: 'repositoryPath must be an absolute path' };\n }\n\n try {\n if (!existsSync(repositoryPath)) {\n log.warn(`directory does not exist: \"${repositoryPath}\"`);\n return { success: false, error: `Directory does not exist: ${repositoryPath}` };\n }\n\n if (isSameShepInstance(repositoryPath)) {\n log.warn('rejected — target is the running shep instance');\n return {\n success: false,\n error: 'Cannot start a dev server for the repository Shep is running from',\n };\n }\n\n log.info('directory exists, calling deploymentService.start()');\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n deploymentService.start(repositoryPath, repositoryPath, 'repository');\n\n log.info('start() returned successfully — state=Booting');\n return { success: true, state: DeploymentState.Booting };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to deploy repository';\n log.error(`error: ${message}`, error);\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IDeploymentService } from '@shepai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function stopDeployment(\n targetId: string\n): Promise<{ success: boolean; error?: string }> {\n if (!targetId?.trim()) {\n return { success: false, error: 'targetId is required' };\n }\n\n try {\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n await deploymentService.stop(targetId);\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to stop deployment';\n return { success: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n DeploymentStatus,\n} from '@shepai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentStatus(targetId: string): Promise<DeploymentStatus | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getStatus(targetId);\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type {\n IDeploymentService,\n LogEntry,\n} from '@shepai/core/application/ports/output/services/deployment-service.interface';\n\nexport async function getDeploymentLogs(targetId: string): Promise<LogEntry[] | null> {\n if (!targetId?.trim()) {\n return null;\n }\n\n const deploymentService = resolve<IDeploymentService>('IDeploymentService');\n return deploymentService.getLogs(targetId);\n}\n"],"names":["registerServerReference","ensureServerEntryExports","actions","i","length","action","Error"],"mappings":"6CAAoD,OAAA,cAAA,CAAA,EAAA,aAAA,oCAC3CA,0BAAAA,qCAAAA,EAAAA,uBAAuB,YAAQ,CAAA,CAAA,IAAA,iCCEjC,SAASC,EAAyBC,CAAc,EACrD,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQE,MAAM,CAAED,IAAK,CACvC,IAAME,EAASH,CAAO,CAACC,EAAE,CACzB,GAAsB,AAAlB,YAA8B,OAAvBE,EACT,MAAM,OAAA,cAEL,CAFK,AAAIC,MACR,CAAC,2DAA2D,EAAE,OAAOD,EAAO;AAAA,oEAAuE,CAAC,EADhJ,oBAAA,OAAA,mBAAA,gBAAA,CAEN,EAEJ,CACF,0EATgBJ,2BAAAA,qCAAAA,4ECDhB,EAAA,EAAA,CAAA,CAAA,OCOA,IAAM,EAA4C,CAEhD,kBAAmB,CAAE,YAAa,WAAY,YAAa,6BAA8B,EACzF,oBAAqB,CAAE,YAAa,aAAc,YAAa,iBAAkB,EACjF,mBAAoB,CAAE,YAAa,YAAa,YAAa,qBAAsB,EAGnF,iBAAkB,CAAE,YAAa,iBAAkB,YAAa,oBAAqB,EACrF,iBAAkB,CAAE,YAAa,iBAAkB,YAAa,sBAAuB,EACvF,iBAAkB,CAAE,YAAa,iBAAkB,YAAa,oBAAqB,EACrF,mBAAoB,CAAE,YAAa,mBAAoB,YAAa,iBAAkB,EAGtF,eAAgB,CAAE,YAAa,UAAW,YAAa,wBAAyB,EAChF,UAAW,CAAE,YAAa,UAAW,YAAa,gBAAiB,EACnE,gBAAiB,CAAE,YAAa,gBAAiB,YAAa,iBAAkB,EAGhF,eAAgB,CAAE,YAAa,eAAgB,YAAa,oBAAqB,EACjF,YAAa,CAAE,YAAa,YAAa,YAAa,gBAAiB,EAGvE,QAAS,CAAE,YAAa,QAAS,YAAa,iCAAkC,EAChF,SAAU,CAAE,YAAa,SAAU,YAAa,uCAAwC,CAC1F,EAEM,EAAsB,CAAE,YAAa,GAAI,YAAa,EAAG,EAExD,SAAS,EAAa,CAAe,EAC1C,IAAM,EAAO,CAAc,CAAC,EAAQ,QACpC,AAAI,GAEG,CACL,EAHQ,CAGL,CAAQ,CACX,IAJe,QAIF,EACV,OAAO,CAAC,WAAY,IACpB,OAAO,CAAC,WAAY,WACpB,OAAO,CAAC,QAAS,QACjB,OAAO,CAAC,KAAM,KACd,OAAO,CAAC,QAAS,AAAC,GAAM,EAAE,WAAW,GAC1C,CACF,kBDhCA,IAAM,EAAuC,CAC3C,cAAe,cACf,YAAa,YACb,cAAe,cACf,OAAQ,aACR,aAAc,aACd,IAAK,MACP,EAGM,EAAsC,CAC1C,cAAe,EACf,YAAa,EACb,cAAe,EACf,OAAQ,EACR,aAAc,EACd,IAAK,EACP,EAEO,eAAe,IACpB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAwB,yBAE/C,OADe,AACR,EADgB,kBAAkB,GAEtC,GAAG,CAAC,AAAC,GAAe,EACnB,OADkB,GACP,EACX,MAAO,CAAY,CAAC,EAAoB,EAAK,EAC7C,OAAQ,EAAQ,kBAAkB,CAAC,GAAW,GAAG,CAAC,AAAC,IAAQ,CAAD,AACxD,KACA,GAAG,EAAa,EAAG,CACrB,CAAC,EACH,CAAC,EACA,GAAG,CAAE,AAAD,GAEiB,AAApB,QAAI,EAAE,SAAS,EAAkC,GAAG,CAAvB,EAAE,MAAM,CAAC,MAAM,CACnC,CACL,GAAG,CAAC,CACJ,OAAQ,CACN,CAAE,GAAI,QAAS,GAAG,EAAa,QAAQ,AAAC,EACxC,CAAE,GAAI,SAAU,GAAG,EAAa,SAAS,AAAC,EAC3C,AACH,EAEK,GAER,MAAM,CAAC,AAAC,GAAM,EAAE,MAAM,CAAC,MAAM,CAAG,GAChC,IAAI,CAAC,CAAC,EAAG,IAAM,AAAC,EAAW,CAAC,EAAE,SAAS,CAAC,EAAI,EAAA,CAAE,EAAK,CAAW,CAAZ,AAAa,EAAE,SAAS,CAAC,EAAI,EAAA,CAAE,CACtF,CAAE,KAAM,CACN,MAAO,EAAE,AACX,CACF,iCA/BsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,6CElCtB,IAAA,EAAA,EAAA,CAAA,CAAA,OAOO,eAAe,EACpB,CAAiB,CACjB,CAAoB,EAEpB,GAAI,CAAC,EAAU,IAAI,GACjB,CADqB,KACd,CAAE,IAAI,EAAO,MAAO,wBAAyB,EAGtD,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA+B,gCAChD,EAAkB,MAAM,EAAQ,OAAO,CAAC,CAC5C,UAAW,EAAU,IAAI,SACzB,CACF,GAKA,MAHA,CAAA,EAAA,EAAA,aAAA,AAAa,IACb,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,GAEZ,CAAE,IAAI,CAAK,CACpB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,GAAI,GAAO,MADJ,CACW,YADM,MAAQ,EAAM,OAAO,CAAG,kCACtB,CACrC,CACF,iCAvBsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,+CCVtB,IAAA,EAAA,EAAA,CAAA,CAAA,OAOA,IAAM,EAAgC,CACpC,SAAU,QAAQ,QAAQ,CAC1B,KAAM,CAAC,EAAK,IAAS,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,EAAK,EACrC,EAMM,EAA4C,CAChD,OAAQ,CAAC,qFAAqF,CAAC,GAC/F,MAAO,CAAC,oFAAoF,CAAC,CAC7F,MAAO,CAAC,wPAAwP,CAAC,EACnQ,CAEO,OAAM,EACH,IAER,AAF+B,aAEnB,EAAkC,CAAC,CAAC,CAAE,CAChD,IAAI,CAAC,IAAI,CAAG,CAAE,GAAG,CAAW,CAAE,GAAG,CAAI,AAAC,CACxC,CAGA,YAA4B,CAC1B,OAAO,CAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAI,IAClD,CAOA,YAA4B,CAC1B,IAAM,EAAU,IAAI,CAAC,UAAU,GAC/B,GAAI,CAAC,EACH,MAAM,AAAI,CADE,KACI,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAE,EAG/D,GAAI,CAEF,IAAM,EADS,AACC,IADG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAS,CAAE,SAAU,QAAS,QAAS,GAAO,GACrD,IAAI,GAC3B,OAAO,EAAQ,MAAM,CAAG,EAAI,EAAU,IACxC,CAAE,MAAO,EAAgB,KAUR,EARf,GAAI,AAQyB,AACT,UAAjB,OAAO,EATM,IAS0B,OAAV,GAAkB,WAAY,GATnB,GAAG,CAApB,EAAM,MAAM,CACpC,OAAO,IAET,OAAM,CACR,CACF,CACF,CCrDO,eAAe,IACpB,IAAM,EAAU,IAAI,EAEpB,GAAI,CAEF,MAAO,CAAE,KADI,EAAQ,UAAU,EACjB,CAChB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,KAAM,KAAM,MADL,CACY,YADK,MAAQ,EAAM,OAAO,CAAG,8BACrB,CACtC,CACF,iCAVsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,qCCWf,OAAM,UAAwB,MACnC,YAAY,CAAe,CAAE,CAAa,CAAE,CAC1C,KAAK,CAAC,GACN,IAAI,CAAC,IAAI,CAAG,kBACZ,OAAO,cAAc,CAAC,IAAI,CAAE,WAAW,SAAS,EAC5C,IAAO,IAAI,CAAC,KAAK,CAAG,CAAA,CAC1B,CACF,CAKO,MAAM,UAAyB,MACpC,YAAY,CAAe,CAAE,CAAa,CAAE,CAC1C,KAAK,CAAC,GACN,IAAI,CAAC,IAAI,CAAG,mBACZ,OAAO,cAAc,CAAC,IAAI,CAAE,WAAW,SAAS,EAC5C,IAAO,IAAI,CAAC,KAAK,CAAG,CAAA,CAC1B,CACF,CAKO,MAAM,UAA4B,MACvC,YAAY,CAAe,CAAE,CAAa,CAAE,CAC1C,KAAK,CAAC,GACN,IAAI,CAAC,IAAI,CAAG,sBACZ,OAAO,cAAc,CAAC,IAAI,CAAE,WAAW,SAAS,EAC5C,IAAO,IAAI,CAAC,KAAK,CAAG,CAAA,CAC1B,CACF,CCjCO,eAAe,EACpB,CAAmC,EAEnC,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAgC,iCAEvD,MAAO,CAAE,MADK,MAAM,EAAQ,OAAO,CAAC,EACrB,CACjB,CAAE,MAAO,EAAgB,CACvB,GAAI,aAAiB,EACnB,MAAO,CAAE,MAAO,EADoB,gEAC+C,EAGrF,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,6BACjC,CAC1B,CACF,CCpBO,eAAe,IAIpB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAiC,kCAExD,MAAO,CAAE,KADI,MAAM,EAAQ,OAAO,EACpB,CAChB,CAAE,MAAO,EAAgB,CACvB,GAAI,aAAiB,EACnB,MAAO,CAAE,MAAO,EADoB,gEAC+C,EAGrF,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,8BACjC,CAC1B,CACF,CCNO,eAAe,EACpB,CAAkC,EAElC,GAAM,KAAE,CAAG,MAAE,CAAI,CAAE,CAAG,EAEtB,GAAI,CAAC,GAAK,OACR,CADgB,KACT,CAAE,MAAO,wBAAyB,EAG3C,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAgC,iCACjD,EAAa,MAAM,EAAQ,OAAO,CAAC,KAAE,OAAK,CAAK,GACrD,MAAO,YAAE,EAAY,QAA8B,IAAtB,EAAW,MAAM,AAAU,CAC1D,CAAE,MAAO,EAAgB,CACvB,GAAI,aAAiB,EACnB,MAAO,CAAE,MAAO,EADoB,gEAC+C,EAErF,GAAI,aAAiB,EACnB,MAAO,CAAE,MAAO,CAAC,KADuB,eACH,EAAE,EAAM,OAAO,CAAA,CAAE,AAAC,EAEzD,GAAI,aAAiB,EACnB,MAAO,CAAE,MAAO,CAAC,EADoB,YACN,EAAE,EAAM,OAAO,CAAA,CAAE,AAAC,EAGnD,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,6BACjC,CAC1B,CACF,iCF7BsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kFCNA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,mFCSA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,6GCdtB,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OCMA,IAAM,EAAO,IAAM,OAEZ,SAAS,EAAuB,CAAc,EACnD,IAAM,EAAU,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,CAEnC,MAAO,CACL,KAAM,EAAU,CAAC,GAAG,IAAoB,QAAQ,IAAI,CAAC,KAAW,GAAQ,EACxE,MAAO,EAAU,CAAC,GAAG,IAAoB,QAAQ,KAAK,CAAC,KAAW,GAAQ,EAC1E,KAAM,CAAC,GAAG,IAAoB,QAAQ,IAAI,CAAC,KAAW,GACtD,MAAO,CAAC,GAAG,IAAoB,QAAQ,KAAK,CAAC,KAAW,EAC1D,CACF,CDfA,IAAA,EAAA,EAAA,CAAA,CAAA,OAGA,EAAA,EAAA,CAAA,CAAA,OEPA,EAAA,EAAA,CAAA,CAAA,OAOO,SAAS,EAAmB,CAAkB,EAGnD,GAAI,CACF,IAAM,EAAmB,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,IAAa,OAAO,CAAC,MAAO,KACpE,EAAqB,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,CAAA,EAAA,EAAA,OAAA,AAAO,EAJ5B,AAI6B,qDAAe,EAJE,KAIK,CAAC,EAJE,GAAG,CAIE,KAC9E,OAAO,IAAqB,CAC9B,CAAE,KAAM,CACN,OAAO,CACT,CACF,kBFPA,IAAM,EAAM,EAAuB,mBAE5B,eAAe,EACpB,CAAiB,EAIjB,GAFA,EAAI,IAAI,CAAC,CAAC,oBAAoB,EAAE,EAAU,CAAC,CAAC,EAExC,CAAC,GAAW,OAEd,CAFsB,MACtB,EAAI,IAAI,CAAC,iCACF,CAAE,SAAS,EAAO,MAAO,uBAAwB,EAG1D,GAAI,CACF,IAAM,EAAc,CAAA,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC1C,EAAU,MAAM,EAAY,QAAQ,CAAC,GAE3C,GAAI,CAAC,EAEH,OAFY,AACZ,EAAI,IAAI,CAAC,CAAC,kCAAkC,EAAE,EAAU,CAAC,CAAC,EACnD,CAAE,SAAS,EAAO,MAAO,CAAC,mBAAmB,EAAE,EAAA,CAAW,AAAC,EAGpE,EAAI,IAAI,CACN,CAAC,gCAAgC,EAAE,EAAQ,cAAc,CAAC,WAAW,EAAE,EAAQ,MAAM,CAAC,CAAC,CAAC,EAG1F,IAAM,EAAe,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,EAAQ,cAAc,CAAE,EAAQ,MAAM,EAG/E,GAFA,EAAI,IAAI,CAAC,CAAC,uBAAuB,EAAE,EAAa,CAAC,CAAC,EAE9C,CAAC,CAAA,EAAA,EAAA,UAAU,AAAV,EAAW,GAEd,OADA,EAAI,GADyB,CACrB,CAAC,CAAC,uCAAuC,EAAE,EAAa,CAAC,CAAC,EAC3D,CAAE,SAAS,EAAO,MAAO,CAAC,8BAA8B,EAAE,EAAA,CAAe,AAAD,EAGjF,GAAI,EAAmB,EAAQ,cAAc,EAE3C,CAF8C,MAC9C,EAAI,IAAI,CAAC,2DACF,CACL,SAAS,EACT,MAAO,+EACT,EAQF,OALA,EAAI,IAAI,CAAC,2DAET,AAD0B,CAAA,EAAA,EAAA,OAAA,AAAO,EAAqB,sBACpC,KAAK,CAAC,EAAW,EAAc,WAEjD,EAAI,IAAI,CAAC,iDACF,CAAE,SAAS,EAAM,MAAO,EAAA,eAAe,CAAC,OAAO,AAAC,CACzD,CAAE,MAAO,EAAgB,CACvB,IAAM,EAAU,aAAiB,MAAQ,EAAM,OAAO,CAAG,2BAEzD,OADA,EAAI,KAAK,CAAC,CAAC,OAAO,EAAE,EAAA,CAAS,CAAE,GACxB,CAAE,SAAS,EAAO,MAAO,CAAQ,CAC1C,CACF,iCAlDsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,yCGHtB,IAAM,EAAM,EAAuB,sBAE5B,eAAe,EACpB,CAAsB,EAItB,GAFA,EAAI,IAAI,CAAC,CAAC,yBAAyB,EAAE,EAAe,CAAC,CAAC,EAElD,CAAC,GAAkB,CAAC,CAAA,EAAA,EAAA,UAAA,AAAU,EAAC,GAEjC,OADA,EAAI,IAAI,CAD0C,AACzC,mCACF,CAAE,QAAS,GAAO,MAAO,yCAA0C,EAG5E,GAAI,CACF,GAAI,CAAC,CAAA,EAAA,EAAA,UAAA,AAAU,EAAC,GAEd,OADA,EAAI,IAAI,CADuB,AACtB,CAAC,2BAA2B,EAAE,EAAe,CAAC,CAAC,EACjD,CAAE,SAAS,EAAO,MAAO,CAAC,0BAA0B,EAAE,EAAA,CAAgB,AAAC,EAGhF,GAAI,EAAmB,GAErB,OADA,EAAI,IAAI,CAD8B,AAC7B,kDACF,CACL,SAAS,EACT,MAAO,mEACT,EAQF,OALA,EAAI,IAAI,CAAC,uDACiB,AAC1B,CAD0B,EAAA,EAAA,OAAA,AAAO,EAAqB,sBACpC,KAAK,CAAC,EAAgB,EAAgB,cAExD,EAAI,IAAI,CAAC,iDACF,CAAE,SAAS,EAAM,MAAO,EAAA,eAAe,CAAC,OAAO,AAAC,CACzD,CAAE,MAAO,EAAgB,CACvB,IAAM,EAAU,aAAiB,MAAQ,EAAM,OAAO,CAAG,8BAEzD,OADA,EAAI,KAAK,CAAC,CAAC,OAAO,EAAE,EAAA,CAAS,CAAE,GACxB,CAAE,SAAS,EAAO,MAAO,CAAQ,CAC1C,CACF,CC1CO,eAAe,EACpB,CAAgB,EAEhB,GAAI,CAAC,GAAU,OACb,CADqB,KACd,CAAE,QAAS,GAAO,MAAO,sBAAuB,EAGzD,GAAI,CACF,IAAM,EAAoB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAGtD,OAFA,MAAM,EAAkB,IAAI,CAAC,GAEtB,CAAE,SAAS,CAAK,CACzB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,QAAS,GAAO,MADT,CACgB,YADC,MAAQ,EAAM,OAAO,CAAG,2BACjB,CAC1C,CACF,CCbO,eAAe,EAAoB,CAAgB,SACxD,AAAK,GAAU,CAAX,MAIsB,AACnB,CALgB,AAIG,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC7B,SAAS,CAAC,GAJ1B,IAKX,iCFHsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,4ECPA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,0ECGA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,wFCNtB,EAAA,EAAA,CAAA,CAAA,OAMO,eAAe,EAAkB,CAAgB,SACtD,AAAK,GAAU,CAAX,MAIsB,AACnB,CALgB,AAIG,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC7B,OAAO,CAAC,GAJxB,IAKX,0CAPsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA","ignoreList":[0,1]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[79020,a=>{"use strict";var b=a.i(12656),c=a.i(96960),d=a.i(72016),e=a.i(34644),f=a.i(63698),g=a.i(53170),h=a.i(44981),i=a.i(25700);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(84494),n=a.i(96853),n=n,o=a.i(67837),p=a.i(71238);let q=(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 r=a.i(7421),s=a.i(12882);let t=(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 u=a.i(52313);a.i(90370);var v=a.i(24640),w=a.i(85536),x=a.i(584),y=a.i(96867),z=a.i(59175),A=a.i(25674);let B=(0,A.createServerReference)("40085679f2d4906a680c06701d36beb6d9c91b3197",A.callServer,void 0,A.findSourceMapURL,"updateSettingsAction");var C=a.i(46847),D=a.i(61640),E=a.i(44447),F=a.i(87926);function G(a){return(0,b.jsx)(E.Code,{className:(0,w.cn)("h-4 w-4",a.className),...a})}function H({className:a}){return(0,b.jsx)(D.default,{src:"/icons/editors/vscode.svg",alt:"VS Code",width:24,height:24,className:(0,w.cn)("rounded-sm object-contain",a)})}function I({className:a}){return(0,b.jsx)(D.default,{src:"/icons/agents/cursor.jpeg",alt:"Cursor",width:24,height:24,className:(0,w.cn)("rounded-sm object-contain",a)})}function J({className:a}){return(0,b.jsx)(D.default,{src:"/icons/editors/windsurf.svg",alt:"Windsurf",width:24,height:24,className:(0,w.cn)("rounded-sm object-contain",a)})}function K({className:a}){return(0,b.jsx)(D.default,{src:"/icons/editors/zed.svg",alt:"Zed",width:24,height:24,className:(0,w.cn)("rounded-sm object-contain",a)})}function L({className:a,...c}){return(0,b.jsx)(F.Rocket,{className:(0,w.cn)("h-4 w-4",a),...c})}H.displayName="VsCodeIcon",I.displayName="CursorEditorIcon",J.displayName="WindsurfIcon",K.displayName="ZedIcon",L.displayName="AntigravityIcon";let M={vscode:H,cursor:I,windsurf:J,zed:K,antigravity:L};var N=a.i(61781),O=a.i(84117);let P=[{value:C.Language.English,label:"English",nativeName:"English"},{value:C.Language.Russian,label:"Русский",nativeName:"Русский"},{value:C.Language.Portuguese,label:"Português",nativeName:"Português"},{value:C.Language.Spanish,label:"Español",nativeName:"Español"},{value:C.Language.Arabic,label:"العربية",nativeName:"العربية"},{value:C.Language.Hebrew,label:"עברית",nativeName:"עברית"},{value:C.Language.French,label:"Français",nativeName:"Français"},{value:C.Language.German,label:"Deutsch",nativeName:"Deutsch"}];function Q({language:a}){let{t:e,i18n:f}=(0,v.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)(O.Card,{id:"language",className:"scroll-mt-6","data-testid":"language-settings-section",children:[(0,b.jsxs)(O.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)(O.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)(O.CardDescription,{children:e("settings.language.description")})]}),(0,b.jsx)(O.CardContent,{className:"space-y-4",children:(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(x.Label,{htmlFor:"display-language",children:e("settings.language.label")}),(0,b.jsxs)(z.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 B({user:{preferredLanguage:a}});b.success||u.toast.error(b.error??e("settings.language.failedToSave","Failed to save language settings"))})},children:[(0,b.jsx)(z.SelectTrigger,{id:"display-language","data-testid":"language-select",children:(0,b.jsx)(z.SelectValue,{placeholder:e("settings.language.placeholder")})}),(0,b.jsx)(z.SelectContent,{children:P.map(a=>(0,b.jsx)(z.SelectItem,{value:a.value,children:a.nativeName},a.value))})]})]})})]})}var R=a.i(48972),S=a.i(59653),T=a.i(6175),U=a.i(7420),V=a.i(17329),W=a.i(48939),X=a.i(64005),Y=a.i(74432),Z=a.i(66873),$=a.i(63496),_=["PageUp","PageDown"],aa=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],ab={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},ac="Slider",[ad,ae,af]=(0,$.createCollection)(ac),[ag,ah]=(0,U.createContextScope)(ac,[af]),[ai,aj]=ag(ac),ak=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,V.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,R.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)(ai,{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)(ad.Provider,{scope:a.__scopeSlider,children:(0,b.jsx)(ad.Slot,{scope:a.__scopeSlider,children:(0,b.jsx)(u?an:ao,{"aria-disabled":j,"data-disabled":j?"":void 0,...r,ref:d,onPointerDown:(0,S.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=_.includes(a.key)||a.shiftKey&&aa.includes(a.key),d=t.current;y(v[d]+h*(c?10:1)*b,d,{commit:!0})}}})})})})});ak.displayName=ac;var[al,am]=ag(ac,{startEdge:"left",endEdge:"right",size:"width",direction:1}),an=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,T.useComposedRefs)(d,a=>o(a)),q=c.useRef(void 0),r=(0,W.useDirection)(g),s="ltr"===r,t=s&&!h||!s&&h;function u(a){let b=q.current||n.getBoundingClientRect(),c=az([0,b.width],t?[e,f]:[f,e]);return q.current=b,c(a-b.left)}return(0,b.jsx)(al,{scope:a.__scopeSlider,startEdge:t?"left":"right",endEdge:t?"right":"left",direction:t?1:-1,size:"width",children:(0,b.jsx)(ap,{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=ab[t?"from-left":"from-right"].includes(a.key);l?.({event:a,direction:b?-1:1})}})})}),ao=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,T.useComposedRefs)(d,m),o=c.useRef(void 0),p=!g;function q(a){let b=o.current||m.current.getBoundingClientRect(),c=az([0,b.height],p?[f,e]:[e,f]);return o.current=b,c(a-b.top)}return(0,b.jsx)(al,{scope:a.__scopeSlider,startEdge:p?"bottom":"top",endEdge:p?"top":"bottom",size:"height",direction:p?1:-1,children:(0,b.jsx)(ap,{"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=ab[p?"from-bottom":"from-top"].includes(a.key);k?.({event:a,direction:b?-1:1})}})})}),ap=c.forwardRef((a,c)=>{let{__scopeSlider:d,onSlideStart:e,onSlideMove:f,onSlideEnd:g,onHomeKeyDown:h,onEndKeyDown:i,onStepKeyDown:j,...k}=a,l=aj(ac,d);return(0,b.jsx)(Z.Primitive.span,{...k,ref:c,onKeyDown:(0,S.composeEventHandlers)(a.onKeyDown,a=>{"Home"===a.key?(h(a),a.preventDefault()):"End"===a.key?(i(a),a.preventDefault()):_.concat(aa).includes(a.key)&&(j(a),a.preventDefault())}),onPointerDown:(0,S.composeEventHandlers)(a.onPointerDown,a=>{let b=a.target;b.setPointerCapture(a.pointerId),a.preventDefault(),l.thumbs.has(b)?b.focus():e(a)}),onPointerMove:(0,S.composeEventHandlers)(a.onPointerMove,a=>{a.target.hasPointerCapture(a.pointerId)&&f(a)}),onPointerUp:(0,S.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&(b.releasePointerCapture(a.pointerId),g(a))})})}),aq="SliderTrack",ar=c.forwardRef((a,c)=>{let{__scopeSlider:d,...e}=a,f=aj(aq,d);return(0,b.jsx)(Z.Primitive.span,{"data-disabled":f.disabled?"":void 0,"data-orientation":f.orientation,...e,ref:c})});ar.displayName=aq;var as="SliderRange",at=c.forwardRef((a,d)=>{let{__scopeSlider:e,...f}=a,g=aj(as,e),h=am(as,e),i=c.useRef(null),j=(0,T.useComposedRefs)(d,i),k=g.values.length,l=g.values.map(a=>ay(a,g.min,g.max)),m=k>1?Math.min(...l):0,n=100-Math.max(...l);return(0,b.jsx)(Z.Primitive.span,{"data-orientation":g.orientation,"data-disabled":g.disabled?"":void 0,...f,ref:j,style:{...a.style,[h.startEdge]:m+"%",[h.endEdge]:n+"%"}})});at.displayName=as;var au="SliderThumb",av=c.forwardRef((a,d)=>{let e=ae(a.__scopeSlider),[f,g]=c.useState(null),h=(0,T.useComposedRefs)(d,a=>g(a)),i=c.useMemo(()=>f?e().findIndex(a=>a.ref.current===f):-1,[e,f]);return(0,b.jsx)(aw,{...a,ref:h,index:i})}),aw=c.forwardRef((a,d)=>{var e,f,g,h,i;let j,k,{__scopeSlider:l,index:m,name:n,...o}=a,p=aj(au,l),q=am(au,l),[r,s]=c.useState(null),t=(0,T.useComposedRefs)(d,a=>s(a)),u=!r||p.form||!!r.closest("form"),v=(0,Y.useSize)(r),w=p.values[m],x=void 0===w?0:ay(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=az([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)(ad.ItemSlot,{scope:a.__scopeSlider,children:(0,b.jsx)(Z.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,S.composeEventHandlers)(a.onFocus,()=>{p.valueIndexToChangeRef.current=m})})}),u&&(0,b.jsx)(ax,{name:n??(p.name?p.name+(p.values.length>1?"[]":""):void 0),form:p.form,value:w},m)]})});av.displayName=au;var ax=c.forwardRef(({__scopeSlider:a,value:d,...e},f)=>{let g=c.useRef(null),h=(0,T.useComposedRefs)(g,f),i=(0,X.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)(Z.Primitive.input,{style:{display:"none"},...e,ref:h,defaultValue:d})});function ay(a,b,c){return(0,R.clamp)(100/(c-b)*(a-b),[0,100])}function az(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])}}ax.displayName="RadioBubbleInput",a.s(["Range",()=>at,"Root",()=>ak,"Slider",()=>ak,"SliderRange",()=>at,"SliderThumb",()=>av,"SliderTrack",()=>ar,"Thumb",()=>av,"Track",()=>ar,"createSliderScope",()=>ah],61569);var aA=a.i(61569),aA=aA;function aB({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)(aA.Root,{"data-slot":"slider",defaultValue:d,value:e,min:f,max:g,className:(0,w.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)(aA.Track,{"data-slot":"slider-track",className:(0,w.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)(aA.Range,{"data-slot":"slider-range",className:(0,w.cn)("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),Array.from({length:i.length},(a,c)=>(0,b.jsx)(aA.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 aC=[60,120,300,600,900,1800,2700,3600,7200,10800,14400,21600,28800,43200,86400],aD=aC.length-1;function aE(a){let b=0,c=Math.abs(a-aC[0]);for(let d=1;d<aC.length;d++){let e=Math.abs(a-aC[d]);e<c&&(c=e,b=d)}return b}function aF({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)(()=>aE(l)),o=aE(l);o!==m&&aC[m]!==l&&n(o);let p=(0,c.useCallback)(([a])=>{n(a),f(String(aC[a]))},[f]);return(0,b.jsxs)("div",{className:"flex w-55 items-center gap-2",children:[(0,b.jsx)(aB,{id:a,"data-testid":d,min:0,max:aD,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=aC[m])/3600),k=Math.round(i%3600/60),0===j?`${k}m`:0===k?`${j}h`:`${j}h ${k}m`)})]})}let aG=[{value:C.EditorType.VsCode,label:"VS Code"},{value:C.EditorType.Cursor,label:"Cursor"},{value:C.EditorType.Windsurf,label:"Windsurf"},{value:C.EditorType.Zed,label:"Zed"},{value:C.EditorType.Antigravity,label:"Antigravity"}],aH=[{value:"bash",label:"Bash"},{value:"zsh",label:"Zsh"},{value:"fish",label:"Fish"}],aI=[{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:r.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:s.MessageSquare},{id:"fab-layout",labelKey:"settings.sections.layout",icon:t},{id:"database",labelKey:"settings.sections.database",icon:l}];function aJ({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)(x.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 aK({label:a,description:c,id:d,testId:e,checked:f,onChange:g,disabled:h}){return(0,b.jsx)(aJ,{label:a,description:c,htmlFor:d,children:(0,b.jsx)(y.Switch,{id:d,"data-testid":e,checked:f,onCheckedChange:g,disabled:h,className:(0,w.cn)("cursor-pointer",h&&"cursor-not-allowed opacity-50")})})}function aL({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 aM({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,v.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)(n.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)(o.Plus,{className:"h-3 w-3"})})]}),k?(0,b.jsx)("span",{className:"text-muted-foreground text-[11px]",children:k}):null]})}function aN({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 aO({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)(p.ExternalLink,{className:"h-2.5 w-2.5"}),a.label]},a.href))}):null]})}function aP({settings:a,shepHome:i,dbFileSize:m,availableTerminals:n}){let{t:o}=(0,v.useTranslation)("web"),{showSaving:p,showSaved:x,save:y}=function(){let{t:a}=(0,v.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 B(b);c.success||u.toast.error(c.error??a("settings.failedToSave"))})},[d,a])}}(),A=a.featureFlags??{skills:!1,envDeploy:!1,debug:!1,githubImport:!1,adoptBranch:!1,gitRebaseSync:!1,reactFileManager:!1,inventory:!1},[D,E]=(0,c.useState)(a.agent.type),[F,H]=(0,c.useState)(a.environment.defaultEditor),[I,J]=(0,c.useState)(a.environment.shellPreference),[K,L]=(0,c.useState)(a.environment.terminalPreference??C.TerminalType.System),O=n?n.filter(a=>a.available):[{id:C.TerminalType.System,name:o("settings.environment.systemTerminal"),available:!0}],[P,R]=(0,c.useState)(a.workflow.openPrOnImplementationComplete),[S,T]=(0,c.useState)(a.workflow.approvalGateDefaults.pushOnImplementationComplete),[U,V]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPrd),[W,X]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPlan),[Y,Z]=(0,c.useState)(a.workflow.approvalGateDefaults.allowMerge),[$,_]=(0,c.useState)(a.workflow.enableEvidence),[aa,ab]=(0,c.useState)(a.workflow.commitEvidence),[ac,ad]=(0,c.useState)(!1!==a.workflow.ciWatchEnabled),[ae,af]=(0,c.useState)(!1!==a.workflow.hideCiStatus),[ag,ah]=(0,c.useState)(!1!==a.workflow.defaultFastMode),[ai,aj]=(0,c.useState)((a.workflow.autoArchiveDelayMinutes??10)>0),[ak,al]=(0,c.useState)(String(a.workflow.autoArchiveDelayMinutes??10)),[am,an]=(0,c.useState)(null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):""),[ao,ap]=(0,c.useState)(null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):""),[aq,ar]=(0,c.useState)(null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):""),[as,at]=(0,c.useState)(null!=a.workflow.ciWatchPollIntervalSeconds?String(a.workflow.ciWatchPollIntervalSeconds):""),au=a.workflow.stageTimeouts,[av,aw]=(0,c.useState)(String(Math.round((au?.analyzeMs??18e5)/1e3))),[ax,ay]=(0,c.useState)(String(Math.round((au?.requirementsMs??18e5)/1e3))),[az,aA]=(0,c.useState)(String(Math.round((au?.researchMs??18e5)/1e3))),[aB,aC]=(0,c.useState)(String(Math.round((au?.planMs??18e5)/1e3))),[aD,aE]=(0,c.useState)(String(Math.round((au?.implementMs??18e5)/1e3))),[aP,aQ]=(0,c.useState)(String(Math.round((au?.fastImplementMs??18e5)/1e3))),[aR,aS]=(0,c.useState)(String(Math.round((au?.mergeMs??18e5)/1e3))),aT=a.workflow.analyzeRepoTimeouts,[aU,aV]=(0,c.useState)(String(Math.round((aT?.analyzeMs??6e5)/1e3))),aW=a.interactiveAgent??{enabled:!0,autoTimeoutMinutes:15,maxConcurrentSessions:3},[aX,aY]=(0,c.useState)(aW.enabled),[aZ,a$]=(0,c.useState)(String(aW.autoTimeoutMinutes)),[a_,a0]=(0,c.useState)(String(aW.maxConcurrentSessions)),a1=a.fabLayout??{swapPosition:!1},[a2,a3]=(0,c.useState)(a1.swapPosition),[a4,a5]=(0,c.useState)(a.notifications.inApp.enabled),[a6,a7]=(0,c.useState)({...a.notifications.events}),[a8,a9]=(0,c.useState)({...A}),ba=null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):"",bb=null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):"",bc=null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):"",bd=null!=a.workflow.ciWatchPollIntervalSeconds?String(a.workflow.ciWatchPollIntervalSeconds):"",be=au?.analyzeMs!=null?String(Math.round(au.analyzeMs/1e3)):"",bf=au?.requirementsMs!=null?String(Math.round(au.requirementsMs/1e3)):"",bg=au?.researchMs!=null?String(Math.round(au.researchMs/1e3)):"",bh=au?.planMs!=null?String(Math.round(au.planMs/1e3)):"",bi=au?.implementMs!=null?String(Math.round(au.implementMs/1e3)):"",bj=au?.fastImplementMs!=null?String(Math.round(au.fastImplementMs/1e3)):"",bk=au?.mergeMs!=null?String(Math.round(au.mergeMs/1e3)):"",bl=aT?.analyzeMs!=null?String(Math.round(aT.analyzeMs/1e3)):"";function bm(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}function bn(a){if(void 0===a)return;let b=bm(a);return null!=b?1e3*b:void 0}function bo(a={}){let b=bm(a.ciTimeout??ao),c=a.autoArchiveEnabled??ai,d=parseInt(a.autoArchiveDelay??ak,10);return{workflow:{openPrOnImplementationComplete:a.openPr??P,approvalGateDefaults:{pushOnImplementationComplete:a.pushOnComplete??S,allowPrd:a.allowPrd??U,allowPlan:a.allowPlan??W,allowMerge:a.allowMerge??Y},enableEvidence:a.enableEvidence??$,commitEvidence:a.commitEvidence??aa,ciWatchEnabled:a.ciWatchEnabled??ac,hideCiStatus:a.hideCiStatus??ae,defaultFastMode:a.defaultFastMode??ag,autoArchiveDelayMinutes:c?Number.isNaN(d)||d<1?10:d:0,ciMaxFixAttempts:bm(a.ciMaxFix??am),ciWatchTimeoutMs:null!=b?1e3*b:void 0,ciLogMaxChars:bm(a.ciLogMax??aq),ciWatchPollIntervalSeconds:bm(a.ciPollInterval??as),stageTimeouts:{analyzeMs:bn(a.analyzeTimeout??av),requirementsMs:bn(a.requirementsTimeout??ax),researchMs:bn(a.researchTimeout??az),planMs:bn(a.planTimeout??aB),implementMs:bn(a.implementTimeout??aD),fastImplementMs:bn(a.fastImplementTimeout??aP),mergeMs:bn(a.mergeTimeout??aR)},analyzeRepoTimeouts:{analyzeMs:bn(a.analyzeRepoTimeout??aU)}}}}function bp(a={}){return{notifications:{inApp:{enabled:a.inApp??a4},events:a.events??a6}}}let[bq,br]=(0,c.useState)("agent");(0,c.useEffect)(()=>{let a=aI.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&&br(b.target.id.replace("section-",""))},{rootMargin:"-65px 0px -60% 0px",threshold:0});for(let c of a)b.observe(c);return()=>b.disconnect()},[]);let bs=(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)(q,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:o("settings.title")}),(0,b.jsxs)("span",{className:"relative h-4 w-16",children:[(0,b.jsx)("span",{className:(0,w.cn)("text-muted-foreground absolute inset-0 flex items-center text-xs transition-opacity duration-300",p?"opacity-100":"opacity-0"),children:o("settings.saving")}),(0,b.jsxs)("span",{className:(0,w.cn)("absolute inset-0 flex items-center gap-1 text-xs text-green-600 transition-opacity duration-300",x&&!p?"opacity-100":"opacity-0"),children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),o("settings.saved")]})]}),(0,b.jsx)("nav",{className:"ml-auto flex items-center gap-0.5",children:aI.map(a=>{let c=a.icon,d=bq===a.id;return(0,b.jsxs)("button",{type:"button",onClick:()=>bs(a.id),className:(0,w.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:o(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)(Q,{language:a.user?.preferredLanguage??C.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)(aL,{icon:e.Bot,title:o("settings.agent.sectionTitle"),description:o("settings.agent.sectionDescription"),testId:"agent-settings-section",children:(0,b.jsx)(aJ,{label:o("settings.agent.agentAndModel"),description:o("settings.agent.agentAndModelDescription"),htmlFor:"agent-model-picker",children:(0,b.jsx)(N.AgentModelPicker,{initialAgentType:D,initialModel:a.models.default,mode:"settings",onAgentModelChange:a=>E(a),className:"w-55"})})}),(0,b.jsx)(aO,{links:[{label:o("settings.agent.links.agentSystem"),href:"https://github.com/shep-ai/shep/blob/main/docs/architecture/agent-system.md"},{label:o("settings.agent.links.addingAgents"),href:"https://github.com/shep-ai/shep/blob/main/docs/development/adding-agents.md"},{label:o("settings.agent.links.configurationGuide"),href:"https://github.com/shep-ai/shep/blob/main/docs/guides/configuration.md"}],children:o("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)(aL,{icon:f.Terminal,title:o("settings.environment.sectionTitle"),description:o("settings.environment.sectionDescription"),testId:"environment-settings-section",children:[(0,b.jsx)(aJ,{label:o("settings.environment.defaultEditor"),description:o("settings.environment.defaultEditorDescription"),htmlFor:"default-editor",children:(0,b.jsxs)(z.Select,{value:F,onValueChange:a=>{H(a),y({environment:{defaultEditor:a,shellPreference:I,terminalPreference:K}})},children:[(0,b.jsx)(z.SelectTrigger,{id:"default-editor","data-testid":"editor-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(z.SelectValue,{})}),(0,b.jsx)(z.SelectContent,{children:aG.map(a=>{var c;let d=(c=a.value)&&c in M?M[c]:G;return(0,b.jsx)(z.SelectItem,{value:a.value,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.label]})},a.value)})})]})}),(0,b.jsx)(aJ,{label:o("settings.environment.shell"),description:o("settings.environment.shellDescription"),htmlFor:"shell-preference",children:(0,b.jsxs)(z.Select,{value:I,onValueChange:a=>{J(a),y({environment:{defaultEditor:F,shellPreference:a,terminalPreference:K}})},children:[(0,b.jsx)(z.SelectTrigger,{id:"shell-preference","data-testid":"shell-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(z.SelectValue,{})}),(0,b.jsx)(z.SelectContent,{children:aH.map(a=>(0,b.jsx)(z.SelectItem,{value:a.value,children:a.label},a.value))})]})}),(0,b.jsx)(aJ,{label:o("settings.environment.terminal"),description:o("settings.environment.terminalDescription"),htmlFor:"terminal-preference",children:(0,b.jsxs)(z.Select,{value:K,onValueChange:a=>{L(a),y({environment:{defaultEditor:F,shellPreference:I,terminalPreference:a}})},children:[(0,b.jsx)(z.SelectTrigger,{id:"terminal-preference","data-testid":"terminal-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(z.SelectValue,{})}),(0,b.jsx)(z.SelectContent,{children:O.map(a=>(0,b.jsx)(z.SelectItem,{value:a.id,children:a.name},a.id))})]})})]}),(0,b.jsx)(aO,{links:[{label:o("settings.environment.links.configurationGuide"),href:"https://github.com/shep-ai/shep/blob/main/docs/guides/configuration.md"}],children:o("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)(aL,{icon:g.GitBranch,title:o("settings.workflow.title"),description:o("settings.workflow.sectionDescription"),testId:"workflow-settings-section",children:[(0,b.jsx)(aK,{label:o("settings.workflow.defaultFastMode"),description:o("settings.workflow.defaultFastModeDescription"),id:"default-fast-mode",testId:"switch-default-fast-mode",checked:ag,onChange:a=>{ah(a),y(bo({defaultFastMode:a}))}}),(0,b.jsx)(aN,{children:o("settings.workflow.subsections.approve")}),(0,b.jsx)(aK,{label:o("settings.workflow.autoApprovePrd"),description:o("settings.workflow.autoApprovePrdDescription"),id:"allow-prd",testId:"switch-allow-prd",checked:U,onChange:a=>{V(a),y(bo({allowPrd:a}))}}),(0,b.jsx)(aK,{label:o("settings.workflow.autoApprovePlan"),description:o("settings.workflow.autoApprovePlanDescription"),id:"allow-plan",testId:"switch-allow-plan",checked:W,onChange:a=>{X(a),y(bo({allowPlan:a}))}}),(0,b.jsx)(aK,{label:o("settings.workflow.autoApproveMerge"),description:o("settings.workflow.autoApproveMergeDescription"),id:"allow-merge",testId:"switch-allow-merge",checked:Y,onChange:a=>{Z(a),y(bo({allowMerge:a}))}}),(0,b.jsx)(aN,{children:o("settings.workflow.subsections.evidence")}),(0,b.jsx)(aK,{label:o("settings.workflow.collectEvidence"),description:o("settings.workflow.collectEvidenceDescription"),id:"enable-evidence",testId:"switch-enable-evidence",checked:$,onChange:a=>{_(a),a?y(bo({enableEvidence:a})):(ab(!1),y(bo({enableEvidence:a,commitEvidence:!1})))}}),(0,b.jsx)(aK,{label:o("settings.workflow.addEvidenceToPr"),description:o("settings.workflow.addEvidenceToPrDescription"),id:"commit-evidence",testId:"switch-commit-evidence",checked:aa,disabled:!$||!P,onChange:a=>{ab(a),y(bo({commitEvidence:a}))}}),(0,b.jsx)(aN,{children:o("settings.workflow.subsections.git")}),(0,b.jsx)(aK,{label:o("settings.workflow.pushOnComplete"),description:o("settings.workflow.pushOnCompleteDescription"),id:"push-on-complete",testId:"switch-push-on-complete",checked:S,onChange:a=>{T(a),y(bo({pushOnComplete:a}))}}),(0,b.jsx)(aK,{label:o("settings.workflow.openPrOnComplete"),description:o("settings.workflow.openPrOnCompleteDescription"),id:"open-pr",testId:"switch-open-pr",checked:P,onChange:a=>{R(a),a?y(bo({openPr:a})):(ab(!1),y(bo({openPr:a,commitEvidence:!1})))}}),(0,b.jsx)(aK,{label:o("settings.workflow.watchCiAfterPush"),description:o("settings.workflow.watchCiAfterPushDescription"),id:"ci-watch-enabled",testId:"switch-ci-watch-enabled",checked:ac,onChange:a=>{ad(a),y(bo({ciWatchEnabled:a}))}}),(0,b.jsx)(aN,{children:"Archive"}),(0,b.jsx)(aK,{label:"Auto-archive completed",description:"Automatically archive features after they reach the completed state",id:"auto-archive-enabled",testId:"switch-auto-archive-enabled",checked:ai,onChange:a=>{aj(a),y(bo({autoArchiveEnabled:a}))}}),(0,b.jsx)(aJ,{label:"Archive delay",description:"Minutes to wait after completion before archiving (1–1440)",htmlFor:"auto-archive-delay",children:(0,b.jsx)(aM,{id:"auto-archive-delay",testId:"input-auto-archive-delay",value:ak,placeholder:"10",min:1,max:1440,suffix:"min",onChange:a=>{al(a)},onBlur:()=>{if(!ai)return;let a=parseInt(ak,10),b=Number.isNaN(a)?10:Math.min(1440,Math.max(1,a));al(String(b)),y(bo({autoArchiveDelay:String(b)}))}})})]}),(0,b.jsx)(aO,{links:[{label:o("settings.workflow.links.approvalGates"),href:"https://github.com/shep-ai/shep/blob/main/specs/016-hitl-approval-gates/spec.yaml"},{label:o("settings.workflow.links.pushAndPrFlags"),href:"https://github.com/shep-ai/shep/blob/main/specs/037-feature-pr-push-flags/spec.yaml"}],children:o("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.jsxs)(aL,{icon:h.Activity,title:o("settings.ci.title"),description:o("settings.ci.description"),testId:"ci-settings-section",children:[(0,b.jsx)(aJ,{label:o("settings.ci.maxFixAttempts"),description:o("settings.ci.maxFixAttemptsDescription"),htmlFor:"ci-max-fix",children:(0,b.jsx)(aM,{id:"ci-max-fix",testId:"ci-max-fix-input",placeholder:"3",value:am,onChange:an,onBlur:()=>{am!==ba&&y(bo({ciMaxFix:am}))},min:1,max:10})}),(0,b.jsx)(aJ,{label:o("settings.ci.watchTimeout"),description:o("settings.ci.watchTimeoutDescription"),htmlFor:"ci-timeout",children:(0,b.jsx)(aM,{id:"ci-timeout",testId:"ci-timeout-input",placeholder:"300",value:ao,onChange:ap,onBlur:()=>{ao!==bb&&y(bo({ciTimeout:ao}))},min:30,step:30,suffix:"sec"})}),(0,b.jsx)(aJ,{label:o("settings.ci.maxLogSize"),description:o("settings.ci.maxLogSizeDescription"),htmlFor:"ci-log-max",children:(0,b.jsx)(aM,{id:"ci-log-max",testId:"ci-log-max-input",placeholder:"50000",value:aq,onChange:ar,onBlur:()=>{aq!==bc&&y(bo({ciLogMax:aq}))},min:1e3,step:5e3,suffix:"chars"})}),(0,b.jsx)(aJ,{label:o("settings.ci.pollInterval"),description:o("settings.ci.pollIntervalDescription"),htmlFor:"ci-poll-interval",children:(0,b.jsx)(aM,{id:"ci-poll-interval",testId:"ci-poll-interval-input",placeholder:"30",value:as,onChange:at,onBlur:()=>{as!==bd&&y(bo({ciPollInterval:as}))},min:5,step:5,suffix:"sec"})}),(0,b.jsx)(aK,{label:o("settings.ci.hideCiStatus"),description:o("settings.ci.hideCiStatusDescription"),id:"hide-ci-status",testId:"switch-hide-ci-status",checked:ae,onChange:a=>{af(a),y(bo({hideCiStatus:a}))}})]}),(0,b.jsx)(aO,{links:[{label:o("settings.ci.links.cicdPipeline"),href:"https://github.com/shep-ai/shep/blob/main/docs/development/cicd.md"},{label:o("settings.ci.links.ciSecurityGates"),href:"https://github.com/shep-ai/shep/blob/main/specs/003-cicd-security-gates/spec.md"}],children:o("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.jsxs)(aL,{icon:r.Timer,title:o("settings.stageTimeouts.title"),description:o("settings.stageTimeouts.description"),testId:"stage-timeouts-settings-section",children:[(0,b.jsx)(aN,{children:o("settings.stageTimeouts.subsections.featureAgent")}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.analyze"),description:o("settings.stageTimeouts.analyzeDescription"),htmlFor:"timeout-analyze",children:(0,b.jsx)(aF,{id:"timeout-analyze",testId:"timeout-analyze-input",value:av,onChange:aw,onBlur:()=>{av!==be&&y(bo({analyzeTimeout:av}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.requirements"),description:o("settings.stageTimeouts.requirementsDescription"),htmlFor:"timeout-requirements",children:(0,b.jsx)(aF,{id:"timeout-requirements",testId:"timeout-requirements-input",value:ax,onChange:ay,onBlur:()=>{ax!==bf&&y(bo({requirementsTimeout:ax}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.research"),description:o("settings.stageTimeouts.researchDescription"),htmlFor:"timeout-research",children:(0,b.jsx)(aF,{id:"timeout-research",testId:"timeout-research-input",value:az,onChange:aA,onBlur:()=>{az!==bg&&y(bo({researchTimeout:az}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.plan"),description:o("settings.stageTimeouts.planDescription"),htmlFor:"timeout-plan",children:(0,b.jsx)(aF,{id:"timeout-plan",testId:"timeout-plan-input",value:aB,onChange:aC,onBlur:()=>{aB!==bh&&y(bo({planTimeout:aB}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.implement"),description:o("settings.stageTimeouts.implementDescription"),htmlFor:"timeout-implement",children:(0,b.jsx)(aF,{id:"timeout-implement",testId:"timeout-implement-input",value:aD,onChange:aE,onBlur:()=>{aD!==bi&&y(bo({implementTimeout:aD}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.fastImplement"),description:o("settings.stageTimeouts.fastImplementDescription"),htmlFor:"timeout-fast-implement",children:(0,b.jsx)(aF,{id:"timeout-fast-implement",testId:"timeout-fast-implement-input",value:aP,onChange:aQ,onBlur:()=>{aP!==bj&&y(bo({fastImplementTimeout:aP}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.merge"),description:o("settings.stageTimeouts.mergeDescription"),htmlFor:"timeout-merge",children:(0,b.jsx)(aF,{id:"timeout-merge",testId:"timeout-merge-input",value:aR,onChange:aS,onBlur:()=>{aR!==bk&&y(bo({mergeTimeout:aR}))},defaultSeconds:1800})}),(0,b.jsx)(aN,{children:o("settings.stageTimeouts.subsections.analyzeRepoAgent")}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.analyze"),description:o("settings.stageTimeouts.analyzeDescription"),htmlFor:"timeout-analyze-repo",children:(0,b.jsx)(aF,{id:"timeout-analyze-repo",testId:"timeout-analyze-repo-input",value:aU,onChange:aV,onBlur:()=>{aU!==bl&&y(bo({analyzeRepoTimeout:aU}))},defaultSeconds:600})})]}),(0,b.jsx)(aO,{children:o("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)(aL,{icon:j,title:o("settings.notifications.title"),description:o("settings.notifications.sectionDescription"),testId:"notification-settings-section",children:[(0,b.jsx)(aN,{children:o("settings.notifications.channels")}),(0,b.jsx)(aK,{label:o("settings.notifications.inAppLabel"),description:o("settings.notifications.inAppDescription"),id:"notif-in-app",testId:"switch-in-app",checked:a4,onChange:a=>{a5(a),y(bp({inApp:a}))}}),(0,b.jsx)(aN,{children:o("settings.notifications.subsections.agentEvents")}),(0,b.jsx)(aK,{label:o("settings.notifications.events.agentStarted"),id:"notif-event-agentStarted",testId:"switch-event-agentStarted",checked:a6.agentStarted,onChange:a=>{let b={...a6,agentStarted:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.phaseCompleted"),id:"notif-event-phaseCompleted",testId:"switch-event-phaseCompleted",checked:a6.phaseCompleted,onChange:a=>{let b={...a6,phaseCompleted:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.waitingApproval"),id:"notif-event-waitingApproval",testId:"switch-event-waitingApproval",checked:a6.waitingApproval,onChange:a=>{let b={...a6,waitingApproval:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.agentCompleted"),id:"notif-event-agentCompleted",testId:"switch-event-agentCompleted",checked:a6.agentCompleted,onChange:a=>{let b={...a6,agentCompleted:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.agentFailed"),id:"notif-event-agentFailed",testId:"switch-event-agentFailed",checked:a6.agentFailed,onChange:a=>{let b={...a6,agentFailed:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aN,{children:o("settings.notifications.subsections.pullRequestEvents")}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prMerged"),id:"notif-event-prMerged",testId:"switch-event-prMerged",checked:a6.prMerged,onChange:a=>{let b={...a6,prMerged:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prClosed"),id:"notif-event-prClosed",testId:"switch-event-prClosed",checked:a6.prClosed,onChange:a=>{let b={...a6,prClosed:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prChecksPassed"),id:"notif-event-prChecksPassed",testId:"switch-event-prChecksPassed",checked:a6.prChecksPassed,onChange:a=>{let b={...a6,prChecksPassed:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prChecksFailed"),id:"notif-event-prChecksFailed",testId:"switch-event-prChecksFailed",checked:a6.prChecksFailed,onChange:a=>{let b={...a6,prChecksFailed:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prBlocked"),id:"notif-event-prBlocked",testId:"switch-event-prBlocked",checked:a6.prBlocked,onChange:a=>{let b={...a6,prBlocked:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.mergeReviewReady"),id:"notif-event-mergeReviewReady",testId:"switch-event-mergeReviewReady",checked:a6.mergeReviewReady,onChange:a=>{let b={...a6,mergeReviewReady:a};a7(b),y(bp({events:b}))}})]}),(0,b.jsx)(aO,{links:[{label:o("settings.notifications.links.notificationSystem"),href:"https://github.com/shep-ai/shep/blob/main/specs/021-agent-notifications/spec.yaml"}],children:o("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)(aL,{icon:k,title:o("settings.featureFlags.title"),description:o("settings.featureFlags.sectionDescription"),badge:o("settings.featureFlags.badge"),testId:"feature-flags-settings-section",children:[(0,b.jsx)(aK,{label:o("settings.featureFlags.skills"),description:o("settings.featureFlags.skillsDescription"),id:"flag-skills",testId:"switch-flag-skills",checked:a8.skills,onChange:a=>{let b={...a8,skills:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.deployments"),description:o("settings.featureFlags.deploymentsDescription"),id:"flag-envDeploy",testId:"switch-flag-envDeploy",checked:a8.envDeploy,onChange:a=>{let b={...a8,envDeploy:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.debug"),description:o("settings.featureFlags.debugDescription"),id:"flag-debug",testId:"switch-flag-debug",checked:a8.debug,onChange:a=>{let b={...a8,debug:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.githubImport"),description:o("settings.featureFlags.githubImportDescription"),id:"flag-githubImport",testId:"switch-flag-githubImport",checked:a8.githubImport,onChange:a=>{let b={...a8,githubImport:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.adoptBranch"),description:o("settings.featureFlags.adoptBranchDescription"),id:"flag-adoptBranch",testId:"switch-flag-adoptBranch",checked:a8.adoptBranch,onChange:a=>{let b={...a8,adoptBranch:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.gitRebaseSync"),description:o("settings.featureFlags.gitRebaseSyncDescription"),id:"flag-gitRebaseSync",testId:"switch-flag-gitRebaseSync",checked:a8.gitRebaseSync,onChange:a=>{let b={...a8,gitRebaseSync:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.reactFileManager"),description:o("settings.featureFlags.reactFileManagerDescription"),id:"flag-reactFileManager",testId:"switch-flag-reactFileManager",checked:a8.reactFileManager,onChange:a=>{let b={...a8,reactFileManager:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.inventory"),description:o("settings.featureFlags.inventoryDescription"),id:"flag-inventory",testId:"switch-flag-inventory",checked:a8.inventory,onChange:a=>{let b={...a8,inventory:a};a9(b),y({featureFlags:b})}})]}),(0,b.jsx)(aO,{children:o("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.jsxs)(aL,{icon:s.MessageSquare,title:o("settings.interactiveAgent.title"),description:o("settings.interactiveAgent.description"),testId:"interactive-agent-settings-section",children:[(0,b.jsx)(aK,{label:o("settings.interactiveAgent.enableChatTab"),description:o("settings.interactiveAgent.enableChatTabDescription"),id:"interactive-agent-enabled",testId:"switch-interactive-agent-enabled",checked:aX,onChange:a=>{aY(a),y({interactiveAgent:{enabled:a,autoTimeoutMinutes:parseInt(aZ,10)||15,maxConcurrentSessions:parseInt(a_,10)||3}})}}),(0,b.jsx)(aJ,{label:o("settings.interactiveAgent.autoTimeout"),description:o("settings.interactiveAgent.autoTimeoutDescription"),htmlFor:"interactive-agent-timeout",children:(0,b.jsx)(aM,{id:"interactive-agent-timeout",testId:"input-interactive-agent-timeout",value:aZ,placeholder:"15",min:1,max:120,suffix:"min",onChange:a$,onBlur:()=>{let a=parseInt(aZ,10),b=Number.isNaN(a)?15:Math.min(120,Math.max(1,a));a$(String(b)),y({interactiveAgent:{enabled:aX,autoTimeoutMinutes:b,maxConcurrentSessions:parseInt(a_,10)||3}})}})}),(0,b.jsx)(aJ,{label:o("settings.interactiveAgent.maxConcurrentSessions"),description:o("settings.interactiveAgent.maxConcurrentSessionsDescription"),htmlFor:"interactive-agent-sessions",children:(0,b.jsx)(aM,{id:"interactive-agent-sessions",testId:"input-interactive-agent-sessions",value:a_,placeholder:"3",min:1,max:10,onChange:a0,onBlur:()=>{let a=parseInt(a_,10),b=Number.isNaN(a)?3:Math.min(10,Math.max(1,a));a0(String(b)),y({interactiveAgent:{enabled:aX,autoTimeoutMinutes:parseInt(aZ,10)||15,maxConcurrentSessions:b}})}})})]}),(0,b.jsx)(aO,{children:o("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)(aL,{icon:t,title:o("settings.fabLayout.title"),description:o("settings.fabLayout.description"),testId:"fab-layout-settings-section",children:(0,b.jsx)(aK,{label:o("settings.fabLayout.swapPosition"),description:o("settings.fabLayout.swapPositionDescription"),id:"fab-swap-position",testId:"switch-fab-swap-position",checked:a2,onChange:a=>{a3(a),y({fabLayout:{swapPosition:a}})}})}),(0,b.jsx)(aO,{children:o("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)(aL,{icon:l,title:o("settings.database.title"),description:o("settings.database.sectionDescription"),testId:"database-settings-section",children:[(0,b.jsx)(aJ,{label:o("settings.database.location"),description:o("settings.database.locationDescription"),children:(0,b.jsx)("span",{className:"text-muted-foreground max-w-50 truncate font-mono text-xs","data-testid":"shep-home-path",children:i})}),(0,b.jsx)(aJ,{label:o("settings.database.size"),children:(0,b.jsx)("span",{className:"text-muted-foreground text-xs","data-testid":"db-file-size",children:m})})]}),(0,b.jsx)(aO,{links:[{label:o("settings.database.links.settingsService"),href:"https://github.com/shep-ai/shep/blob/main/docs/architecture/settings-service.md"},{label:o("settings.database.links.settingsSpec"),href:"https://github.com/shep-ai/shep/blob/main/specs/005-global-settings-service/spec.md"}],children:o("settings.database.hint")})]})]})]})}a.s(["SettingsPageClient",()=>aP],79020)}];
|
|
1
|
+
module.exports=[79020,a=>{"use strict";var b=a.i(12656),c=a.i(96960),d=a.i(72016),e=a.i(34644),f=a.i(63698),g=a.i(53170),h=a.i(44981),i=a.i(25700);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(84494),n=a.i(96853),n=n,o=a.i(67837),p=a.i(71238);let q=(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 r=a.i(7421),s=a.i(12882);let t=(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 u=a.i(52313);a.i(90370);var v=a.i(24640),w=a.i(85536),x=a.i(584),y=a.i(96867),z=a.i(59175),A=a.i(25674);let B=(0,A.createServerReference)("40594db530a4caa868a295754dfa6569124ffbcc88",A.callServer,void 0,A.findSourceMapURL,"updateSettingsAction");var C=a.i(46847),D=a.i(61640),E=a.i(44447),F=a.i(87926);function G(a){return(0,b.jsx)(E.Code,{className:(0,w.cn)("h-4 w-4",a.className),...a})}function H({className:a}){return(0,b.jsx)(D.default,{src:"/icons/editors/vscode.svg",alt:"VS Code",width:24,height:24,className:(0,w.cn)("rounded-sm object-contain",a)})}function I({className:a}){return(0,b.jsx)(D.default,{src:"/icons/agents/cursor.jpeg",alt:"Cursor",width:24,height:24,className:(0,w.cn)("rounded-sm object-contain",a)})}function J({className:a}){return(0,b.jsx)(D.default,{src:"/icons/editors/windsurf.svg",alt:"Windsurf",width:24,height:24,className:(0,w.cn)("rounded-sm object-contain",a)})}function K({className:a}){return(0,b.jsx)(D.default,{src:"/icons/editors/zed.svg",alt:"Zed",width:24,height:24,className:(0,w.cn)("rounded-sm object-contain",a)})}function L({className:a,...c}){return(0,b.jsx)(F.Rocket,{className:(0,w.cn)("h-4 w-4",a),...c})}H.displayName="VsCodeIcon",I.displayName="CursorEditorIcon",J.displayName="WindsurfIcon",K.displayName="ZedIcon",L.displayName="AntigravityIcon";let M={vscode:H,cursor:I,windsurf:J,zed:K,antigravity:L};var N=a.i(61781),O=a.i(84117);let P=[{value:C.Language.English,label:"English",nativeName:"English"},{value:C.Language.Russian,label:"Русский",nativeName:"Русский"},{value:C.Language.Portuguese,label:"Português",nativeName:"Português"},{value:C.Language.Spanish,label:"Español",nativeName:"Español"},{value:C.Language.Arabic,label:"العربية",nativeName:"العربية"},{value:C.Language.Hebrew,label:"עברית",nativeName:"עברית"},{value:C.Language.French,label:"Français",nativeName:"Français"},{value:C.Language.German,label:"Deutsch",nativeName:"Deutsch"}];function Q({language:a}){let{t:e,i18n:f}=(0,v.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)(O.Card,{id:"language",className:"scroll-mt-6","data-testid":"language-settings-section",children:[(0,b.jsxs)(O.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)(O.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)(O.CardDescription,{children:e("settings.language.description")})]}),(0,b.jsx)(O.CardContent,{className:"space-y-4",children:(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(x.Label,{htmlFor:"display-language",children:e("settings.language.label")}),(0,b.jsxs)(z.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 B({user:{preferredLanguage:a}});b.success||u.toast.error(b.error??e("settings.language.failedToSave","Failed to save language settings"))})},children:[(0,b.jsx)(z.SelectTrigger,{id:"display-language","data-testid":"language-select",children:(0,b.jsx)(z.SelectValue,{placeholder:e("settings.language.placeholder")})}),(0,b.jsx)(z.SelectContent,{children:P.map(a=>(0,b.jsx)(z.SelectItem,{value:a.value,children:a.nativeName},a.value))})]})]})})]})}var R=a.i(48972),S=a.i(59653),T=a.i(6175),U=a.i(7420),V=a.i(17329),W=a.i(48939),X=a.i(64005),Y=a.i(74432),Z=a.i(66873),$=a.i(63496),_=["PageUp","PageDown"],aa=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],ab={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},ac="Slider",[ad,ae,af]=(0,$.createCollection)(ac),[ag,ah]=(0,U.createContextScope)(ac,[af]),[ai,aj]=ag(ac),ak=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,V.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,R.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)(ai,{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)(ad.Provider,{scope:a.__scopeSlider,children:(0,b.jsx)(ad.Slot,{scope:a.__scopeSlider,children:(0,b.jsx)(u?an:ao,{"aria-disabled":j,"data-disabled":j?"":void 0,...r,ref:d,onPointerDown:(0,S.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=_.includes(a.key)||a.shiftKey&&aa.includes(a.key),d=t.current;y(v[d]+h*(c?10:1)*b,d,{commit:!0})}}})})})})});ak.displayName=ac;var[al,am]=ag(ac,{startEdge:"left",endEdge:"right",size:"width",direction:1}),an=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,T.useComposedRefs)(d,a=>o(a)),q=c.useRef(void 0),r=(0,W.useDirection)(g),s="ltr"===r,t=s&&!h||!s&&h;function u(a){let b=q.current||n.getBoundingClientRect(),c=az([0,b.width],t?[e,f]:[f,e]);return q.current=b,c(a-b.left)}return(0,b.jsx)(al,{scope:a.__scopeSlider,startEdge:t?"left":"right",endEdge:t?"right":"left",direction:t?1:-1,size:"width",children:(0,b.jsx)(ap,{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=ab[t?"from-left":"from-right"].includes(a.key);l?.({event:a,direction:b?-1:1})}})})}),ao=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,T.useComposedRefs)(d,m),o=c.useRef(void 0),p=!g;function q(a){let b=o.current||m.current.getBoundingClientRect(),c=az([0,b.height],p?[f,e]:[e,f]);return o.current=b,c(a-b.top)}return(0,b.jsx)(al,{scope:a.__scopeSlider,startEdge:p?"bottom":"top",endEdge:p?"top":"bottom",size:"height",direction:p?1:-1,children:(0,b.jsx)(ap,{"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=ab[p?"from-bottom":"from-top"].includes(a.key);k?.({event:a,direction:b?-1:1})}})})}),ap=c.forwardRef((a,c)=>{let{__scopeSlider:d,onSlideStart:e,onSlideMove:f,onSlideEnd:g,onHomeKeyDown:h,onEndKeyDown:i,onStepKeyDown:j,...k}=a,l=aj(ac,d);return(0,b.jsx)(Z.Primitive.span,{...k,ref:c,onKeyDown:(0,S.composeEventHandlers)(a.onKeyDown,a=>{"Home"===a.key?(h(a),a.preventDefault()):"End"===a.key?(i(a),a.preventDefault()):_.concat(aa).includes(a.key)&&(j(a),a.preventDefault())}),onPointerDown:(0,S.composeEventHandlers)(a.onPointerDown,a=>{let b=a.target;b.setPointerCapture(a.pointerId),a.preventDefault(),l.thumbs.has(b)?b.focus():e(a)}),onPointerMove:(0,S.composeEventHandlers)(a.onPointerMove,a=>{a.target.hasPointerCapture(a.pointerId)&&f(a)}),onPointerUp:(0,S.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&(b.releasePointerCapture(a.pointerId),g(a))})})}),aq="SliderTrack",ar=c.forwardRef((a,c)=>{let{__scopeSlider:d,...e}=a,f=aj(aq,d);return(0,b.jsx)(Z.Primitive.span,{"data-disabled":f.disabled?"":void 0,"data-orientation":f.orientation,...e,ref:c})});ar.displayName=aq;var as="SliderRange",at=c.forwardRef((a,d)=>{let{__scopeSlider:e,...f}=a,g=aj(as,e),h=am(as,e),i=c.useRef(null),j=(0,T.useComposedRefs)(d,i),k=g.values.length,l=g.values.map(a=>ay(a,g.min,g.max)),m=k>1?Math.min(...l):0,n=100-Math.max(...l);return(0,b.jsx)(Z.Primitive.span,{"data-orientation":g.orientation,"data-disabled":g.disabled?"":void 0,...f,ref:j,style:{...a.style,[h.startEdge]:m+"%",[h.endEdge]:n+"%"}})});at.displayName=as;var au="SliderThumb",av=c.forwardRef((a,d)=>{let e=ae(a.__scopeSlider),[f,g]=c.useState(null),h=(0,T.useComposedRefs)(d,a=>g(a)),i=c.useMemo(()=>f?e().findIndex(a=>a.ref.current===f):-1,[e,f]);return(0,b.jsx)(aw,{...a,ref:h,index:i})}),aw=c.forwardRef((a,d)=>{var e,f,g,h,i;let j,k,{__scopeSlider:l,index:m,name:n,...o}=a,p=aj(au,l),q=am(au,l),[r,s]=c.useState(null),t=(0,T.useComposedRefs)(d,a=>s(a)),u=!r||p.form||!!r.closest("form"),v=(0,Y.useSize)(r),w=p.values[m],x=void 0===w?0:ay(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=az([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)(ad.ItemSlot,{scope:a.__scopeSlider,children:(0,b.jsx)(Z.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,S.composeEventHandlers)(a.onFocus,()=>{p.valueIndexToChangeRef.current=m})})}),u&&(0,b.jsx)(ax,{name:n??(p.name?p.name+(p.values.length>1?"[]":""):void 0),form:p.form,value:w},m)]})});av.displayName=au;var ax=c.forwardRef(({__scopeSlider:a,value:d,...e},f)=>{let g=c.useRef(null),h=(0,T.useComposedRefs)(g,f),i=(0,X.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)(Z.Primitive.input,{style:{display:"none"},...e,ref:h,defaultValue:d})});function ay(a,b,c){return(0,R.clamp)(100/(c-b)*(a-b),[0,100])}function az(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])}}ax.displayName="RadioBubbleInput",a.s(["Range",()=>at,"Root",()=>ak,"Slider",()=>ak,"SliderRange",()=>at,"SliderThumb",()=>av,"SliderTrack",()=>ar,"Thumb",()=>av,"Track",()=>ar,"createSliderScope",()=>ah],61569);var aA=a.i(61569),aA=aA;function aB({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)(aA.Root,{"data-slot":"slider",defaultValue:d,value:e,min:f,max:g,className:(0,w.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)(aA.Track,{"data-slot":"slider-track",className:(0,w.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)(aA.Range,{"data-slot":"slider-range",className:(0,w.cn)("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),Array.from({length:i.length},(a,c)=>(0,b.jsx)(aA.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 aC=[60,120,300,600,900,1800,2700,3600,7200,10800,14400,21600,28800,43200,86400],aD=aC.length-1;function aE(a){let b=0,c=Math.abs(a-aC[0]);for(let d=1;d<aC.length;d++){let e=Math.abs(a-aC[d]);e<c&&(c=e,b=d)}return b}function aF({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)(()=>aE(l)),o=aE(l);o!==m&&aC[m]!==l&&n(o);let p=(0,c.useCallback)(([a])=>{n(a),f(String(aC[a]))},[f]);return(0,b.jsxs)("div",{className:"flex w-55 items-center gap-2",children:[(0,b.jsx)(aB,{id:a,"data-testid":d,min:0,max:aD,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=aC[m])/3600),k=Math.round(i%3600/60),0===j?`${k}m`:0===k?`${j}h`:`${j}h ${k}m`)})]})}let aG=[{value:C.EditorType.VsCode,label:"VS Code"},{value:C.EditorType.Cursor,label:"Cursor"},{value:C.EditorType.Windsurf,label:"Windsurf"},{value:C.EditorType.Zed,label:"Zed"},{value:C.EditorType.Antigravity,label:"Antigravity"}],aH=[{value:"bash",label:"Bash"},{value:"zsh",label:"Zsh"},{value:"fish",label:"Fish"}],aI=[{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:r.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:s.MessageSquare},{id:"fab-layout",labelKey:"settings.sections.layout",icon:t},{id:"database",labelKey:"settings.sections.database",icon:l}];function aJ({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)(x.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 aK({label:a,description:c,id:d,testId:e,checked:f,onChange:g,disabled:h}){return(0,b.jsx)(aJ,{label:a,description:c,htmlFor:d,children:(0,b.jsx)(y.Switch,{id:d,"data-testid":e,checked:f,onCheckedChange:g,disabled:h,className:(0,w.cn)("cursor-pointer",h&&"cursor-not-allowed opacity-50")})})}function aL({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 aM({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,v.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)(n.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)(o.Plus,{className:"h-3 w-3"})})]}),k?(0,b.jsx)("span",{className:"text-muted-foreground text-[11px]",children:k}):null]})}function aN({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 aO({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)(p.ExternalLink,{className:"h-2.5 w-2.5"}),a.label]},a.href))}):null]})}function aP({settings:a,shepHome:i,dbFileSize:m,availableTerminals:n}){let{t:o}=(0,v.useTranslation)("web"),{showSaving:p,showSaved:x,save:y}=function(){let{t:a}=(0,v.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 B(b);c.success||u.toast.error(c.error??a("settings.failedToSave"))})},[d,a])}}(),A=a.featureFlags??{skills:!1,envDeploy:!1,debug:!1,githubImport:!1,adoptBranch:!1,gitRebaseSync:!1,reactFileManager:!1,inventory:!1},[D,E]=(0,c.useState)(a.agent.type),[F,H]=(0,c.useState)(a.environment.defaultEditor),[I,J]=(0,c.useState)(a.environment.shellPreference),[K,L]=(0,c.useState)(a.environment.terminalPreference??C.TerminalType.System),O=n?n.filter(a=>a.available):[{id:C.TerminalType.System,name:o("settings.environment.systemTerminal"),available:!0}],[P,R]=(0,c.useState)(a.workflow.openPrOnImplementationComplete),[S,T]=(0,c.useState)(a.workflow.approvalGateDefaults.pushOnImplementationComplete),[U,V]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPrd),[W,X]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPlan),[Y,Z]=(0,c.useState)(a.workflow.approvalGateDefaults.allowMerge),[$,_]=(0,c.useState)(a.workflow.enableEvidence),[aa,ab]=(0,c.useState)(a.workflow.commitEvidence),[ac,ad]=(0,c.useState)(!1!==a.workflow.ciWatchEnabled),[ae,af]=(0,c.useState)(!1!==a.workflow.hideCiStatus),[ag,ah]=(0,c.useState)(!1!==a.workflow.defaultFastMode),[ai,aj]=(0,c.useState)((a.workflow.autoArchiveDelayMinutes??10)>0),[ak,al]=(0,c.useState)(String(a.workflow.autoArchiveDelayMinutes??10)),[am,an]=(0,c.useState)(null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):""),[ao,ap]=(0,c.useState)(null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):""),[aq,ar]=(0,c.useState)(null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):""),[as,at]=(0,c.useState)(null!=a.workflow.ciWatchPollIntervalSeconds?String(a.workflow.ciWatchPollIntervalSeconds):""),au=a.workflow.stageTimeouts,[av,aw]=(0,c.useState)(String(Math.round((au?.analyzeMs??18e5)/1e3))),[ax,ay]=(0,c.useState)(String(Math.round((au?.requirementsMs??18e5)/1e3))),[az,aA]=(0,c.useState)(String(Math.round((au?.researchMs??18e5)/1e3))),[aB,aC]=(0,c.useState)(String(Math.round((au?.planMs??18e5)/1e3))),[aD,aE]=(0,c.useState)(String(Math.round((au?.implementMs??18e5)/1e3))),[aP,aQ]=(0,c.useState)(String(Math.round((au?.fastImplementMs??18e5)/1e3))),[aR,aS]=(0,c.useState)(String(Math.round((au?.mergeMs??18e5)/1e3))),aT=a.workflow.analyzeRepoTimeouts,[aU,aV]=(0,c.useState)(String(Math.round((aT?.analyzeMs??6e5)/1e3))),aW=a.interactiveAgent??{enabled:!0,autoTimeoutMinutes:15,maxConcurrentSessions:3},[aX,aY]=(0,c.useState)(aW.enabled),[aZ,a$]=(0,c.useState)(String(aW.autoTimeoutMinutes)),[a_,a0]=(0,c.useState)(String(aW.maxConcurrentSessions)),a1=a.fabLayout??{swapPosition:!1},[a2,a3]=(0,c.useState)(a1.swapPosition),[a4,a5]=(0,c.useState)(a.notifications.inApp.enabled),[a6,a7]=(0,c.useState)({...a.notifications.events}),[a8,a9]=(0,c.useState)({...A}),ba=null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):"",bb=null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):"",bc=null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):"",bd=null!=a.workflow.ciWatchPollIntervalSeconds?String(a.workflow.ciWatchPollIntervalSeconds):"",be=au?.analyzeMs!=null?String(Math.round(au.analyzeMs/1e3)):"",bf=au?.requirementsMs!=null?String(Math.round(au.requirementsMs/1e3)):"",bg=au?.researchMs!=null?String(Math.round(au.researchMs/1e3)):"",bh=au?.planMs!=null?String(Math.round(au.planMs/1e3)):"",bi=au?.implementMs!=null?String(Math.round(au.implementMs/1e3)):"",bj=au?.fastImplementMs!=null?String(Math.round(au.fastImplementMs/1e3)):"",bk=au?.mergeMs!=null?String(Math.round(au.mergeMs/1e3)):"",bl=aT?.analyzeMs!=null?String(Math.round(aT.analyzeMs/1e3)):"";function bm(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}function bn(a){if(void 0===a)return;let b=bm(a);return null!=b?1e3*b:void 0}function bo(a={}){let b=bm(a.ciTimeout??ao),c=a.autoArchiveEnabled??ai,d=parseInt(a.autoArchiveDelay??ak,10);return{workflow:{openPrOnImplementationComplete:a.openPr??P,approvalGateDefaults:{pushOnImplementationComplete:a.pushOnComplete??S,allowPrd:a.allowPrd??U,allowPlan:a.allowPlan??W,allowMerge:a.allowMerge??Y},enableEvidence:a.enableEvidence??$,commitEvidence:a.commitEvidence??aa,ciWatchEnabled:a.ciWatchEnabled??ac,hideCiStatus:a.hideCiStatus??ae,defaultFastMode:a.defaultFastMode??ag,autoArchiveDelayMinutes:c?Number.isNaN(d)||d<1?10:d:0,ciMaxFixAttempts:bm(a.ciMaxFix??am),ciWatchTimeoutMs:null!=b?1e3*b:void 0,ciLogMaxChars:bm(a.ciLogMax??aq),ciWatchPollIntervalSeconds:bm(a.ciPollInterval??as),stageTimeouts:{analyzeMs:bn(a.analyzeTimeout??av),requirementsMs:bn(a.requirementsTimeout??ax),researchMs:bn(a.researchTimeout??az),planMs:bn(a.planTimeout??aB),implementMs:bn(a.implementTimeout??aD),fastImplementMs:bn(a.fastImplementTimeout??aP),mergeMs:bn(a.mergeTimeout??aR)},analyzeRepoTimeouts:{analyzeMs:bn(a.analyzeRepoTimeout??aU)}}}}function bp(a={}){return{notifications:{inApp:{enabled:a.inApp??a4},events:a.events??a6}}}let[bq,br]=(0,c.useState)("agent");(0,c.useEffect)(()=>{let a=aI.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&&br(b.target.id.replace("section-",""))},{rootMargin:"-65px 0px -60% 0px",threshold:0});for(let c of a)b.observe(c);return()=>b.disconnect()},[]);let bs=(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)(q,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:o("settings.title")}),(0,b.jsxs)("span",{className:"relative h-4 w-16",children:[(0,b.jsx)("span",{className:(0,w.cn)("text-muted-foreground absolute inset-0 flex items-center text-xs transition-opacity duration-300",p?"opacity-100":"opacity-0"),children:o("settings.saving")}),(0,b.jsxs)("span",{className:(0,w.cn)("absolute inset-0 flex items-center gap-1 text-xs text-green-600 transition-opacity duration-300",x&&!p?"opacity-100":"opacity-0"),children:[(0,b.jsx)(d.Check,{className:"h-3 w-3"}),o("settings.saved")]})]}),(0,b.jsx)("nav",{className:"ml-auto flex items-center gap-0.5",children:aI.map(a=>{let c=a.icon,d=bq===a.id;return(0,b.jsxs)("button",{type:"button",onClick:()=>bs(a.id),className:(0,w.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:o(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)(Q,{language:a.user?.preferredLanguage??C.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)(aL,{icon:e.Bot,title:o("settings.agent.sectionTitle"),description:o("settings.agent.sectionDescription"),testId:"agent-settings-section",children:(0,b.jsx)(aJ,{label:o("settings.agent.agentAndModel"),description:o("settings.agent.agentAndModelDescription"),htmlFor:"agent-model-picker",children:(0,b.jsx)(N.AgentModelPicker,{initialAgentType:D,initialModel:a.models.default,mode:"settings",onAgentModelChange:a=>E(a),className:"w-55"})})}),(0,b.jsx)(aO,{links:[{label:o("settings.agent.links.agentSystem"),href:"https://github.com/shep-ai/shep/blob/main/docs/architecture/agent-system.md"},{label:o("settings.agent.links.addingAgents"),href:"https://github.com/shep-ai/shep/blob/main/docs/development/adding-agents.md"},{label:o("settings.agent.links.configurationGuide"),href:"https://github.com/shep-ai/shep/blob/main/docs/guides/configuration.md"}],children:o("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)(aL,{icon:f.Terminal,title:o("settings.environment.sectionTitle"),description:o("settings.environment.sectionDescription"),testId:"environment-settings-section",children:[(0,b.jsx)(aJ,{label:o("settings.environment.defaultEditor"),description:o("settings.environment.defaultEditorDescription"),htmlFor:"default-editor",children:(0,b.jsxs)(z.Select,{value:F,onValueChange:a=>{H(a),y({environment:{defaultEditor:a,shellPreference:I,terminalPreference:K}})},children:[(0,b.jsx)(z.SelectTrigger,{id:"default-editor","data-testid":"editor-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(z.SelectValue,{})}),(0,b.jsx)(z.SelectContent,{children:aG.map(a=>{var c;let d=(c=a.value)&&c in M?M[c]:G;return(0,b.jsx)(z.SelectItem,{value:a.value,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.label]})},a.value)})})]})}),(0,b.jsx)(aJ,{label:o("settings.environment.shell"),description:o("settings.environment.shellDescription"),htmlFor:"shell-preference",children:(0,b.jsxs)(z.Select,{value:I,onValueChange:a=>{J(a),y({environment:{defaultEditor:F,shellPreference:a,terminalPreference:K}})},children:[(0,b.jsx)(z.SelectTrigger,{id:"shell-preference","data-testid":"shell-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(z.SelectValue,{})}),(0,b.jsx)(z.SelectContent,{children:aH.map(a=>(0,b.jsx)(z.SelectItem,{value:a.value,children:a.label},a.value))})]})}),(0,b.jsx)(aJ,{label:o("settings.environment.terminal"),description:o("settings.environment.terminalDescription"),htmlFor:"terminal-preference",children:(0,b.jsxs)(z.Select,{value:K,onValueChange:a=>{L(a),y({environment:{defaultEditor:F,shellPreference:I,terminalPreference:a}})},children:[(0,b.jsx)(z.SelectTrigger,{id:"terminal-preference","data-testid":"terminal-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(z.SelectValue,{})}),(0,b.jsx)(z.SelectContent,{children:O.map(a=>(0,b.jsx)(z.SelectItem,{value:a.id,children:a.name},a.id))})]})})]}),(0,b.jsx)(aO,{links:[{label:o("settings.environment.links.configurationGuide"),href:"https://github.com/shep-ai/shep/blob/main/docs/guides/configuration.md"}],children:o("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)(aL,{icon:g.GitBranch,title:o("settings.workflow.title"),description:o("settings.workflow.sectionDescription"),testId:"workflow-settings-section",children:[(0,b.jsx)(aK,{label:o("settings.workflow.defaultFastMode"),description:o("settings.workflow.defaultFastModeDescription"),id:"default-fast-mode",testId:"switch-default-fast-mode",checked:ag,onChange:a=>{ah(a),y(bo({defaultFastMode:a}))}}),(0,b.jsx)(aN,{children:o("settings.workflow.subsections.approve")}),(0,b.jsx)(aK,{label:o("settings.workflow.autoApprovePrd"),description:o("settings.workflow.autoApprovePrdDescription"),id:"allow-prd",testId:"switch-allow-prd",checked:U,onChange:a=>{V(a),y(bo({allowPrd:a}))}}),(0,b.jsx)(aK,{label:o("settings.workflow.autoApprovePlan"),description:o("settings.workflow.autoApprovePlanDescription"),id:"allow-plan",testId:"switch-allow-plan",checked:W,onChange:a=>{X(a),y(bo({allowPlan:a}))}}),(0,b.jsx)(aK,{label:o("settings.workflow.autoApproveMerge"),description:o("settings.workflow.autoApproveMergeDescription"),id:"allow-merge",testId:"switch-allow-merge",checked:Y,onChange:a=>{Z(a),y(bo({allowMerge:a}))}}),(0,b.jsx)(aN,{children:o("settings.workflow.subsections.evidence")}),(0,b.jsx)(aK,{label:o("settings.workflow.collectEvidence"),description:o("settings.workflow.collectEvidenceDescription"),id:"enable-evidence",testId:"switch-enable-evidence",checked:$,onChange:a=>{_(a),a?y(bo({enableEvidence:a})):(ab(!1),y(bo({enableEvidence:a,commitEvidence:!1})))}}),(0,b.jsx)(aK,{label:o("settings.workflow.addEvidenceToPr"),description:o("settings.workflow.addEvidenceToPrDescription"),id:"commit-evidence",testId:"switch-commit-evidence",checked:aa,disabled:!$||!P,onChange:a=>{ab(a),y(bo({commitEvidence:a}))}}),(0,b.jsx)(aN,{children:o("settings.workflow.subsections.git")}),(0,b.jsx)(aK,{label:o("settings.workflow.pushOnComplete"),description:o("settings.workflow.pushOnCompleteDescription"),id:"push-on-complete",testId:"switch-push-on-complete",checked:S,onChange:a=>{T(a),y(bo({pushOnComplete:a}))}}),(0,b.jsx)(aK,{label:o("settings.workflow.openPrOnComplete"),description:o("settings.workflow.openPrOnCompleteDescription"),id:"open-pr",testId:"switch-open-pr",checked:P,onChange:a=>{R(a),a?y(bo({openPr:a})):(ab(!1),y(bo({openPr:a,commitEvidence:!1})))}}),(0,b.jsx)(aK,{label:o("settings.workflow.watchCiAfterPush"),description:o("settings.workflow.watchCiAfterPushDescription"),id:"ci-watch-enabled",testId:"switch-ci-watch-enabled",checked:ac,onChange:a=>{ad(a),y(bo({ciWatchEnabled:a}))}}),(0,b.jsx)(aN,{children:"Archive"}),(0,b.jsx)(aK,{label:"Auto-archive completed",description:"Automatically archive features after they reach the completed state",id:"auto-archive-enabled",testId:"switch-auto-archive-enabled",checked:ai,onChange:a=>{aj(a),y(bo({autoArchiveEnabled:a}))}}),(0,b.jsx)(aJ,{label:"Archive delay",description:"Minutes to wait after completion before archiving (1–1440)",htmlFor:"auto-archive-delay",children:(0,b.jsx)(aM,{id:"auto-archive-delay",testId:"input-auto-archive-delay",value:ak,placeholder:"10",min:1,max:1440,suffix:"min",onChange:a=>{al(a)},onBlur:()=>{if(!ai)return;let a=parseInt(ak,10),b=Number.isNaN(a)?10:Math.min(1440,Math.max(1,a));al(String(b)),y(bo({autoArchiveDelay:String(b)}))}})})]}),(0,b.jsx)(aO,{links:[{label:o("settings.workflow.links.approvalGates"),href:"https://github.com/shep-ai/shep/blob/main/specs/016-hitl-approval-gates/spec.yaml"},{label:o("settings.workflow.links.pushAndPrFlags"),href:"https://github.com/shep-ai/shep/blob/main/specs/037-feature-pr-push-flags/spec.yaml"}],children:o("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.jsxs)(aL,{icon:h.Activity,title:o("settings.ci.title"),description:o("settings.ci.description"),testId:"ci-settings-section",children:[(0,b.jsx)(aJ,{label:o("settings.ci.maxFixAttempts"),description:o("settings.ci.maxFixAttemptsDescription"),htmlFor:"ci-max-fix",children:(0,b.jsx)(aM,{id:"ci-max-fix",testId:"ci-max-fix-input",placeholder:"3",value:am,onChange:an,onBlur:()=>{am!==ba&&y(bo({ciMaxFix:am}))},min:1,max:10})}),(0,b.jsx)(aJ,{label:o("settings.ci.watchTimeout"),description:o("settings.ci.watchTimeoutDescription"),htmlFor:"ci-timeout",children:(0,b.jsx)(aM,{id:"ci-timeout",testId:"ci-timeout-input",placeholder:"300",value:ao,onChange:ap,onBlur:()=>{ao!==bb&&y(bo({ciTimeout:ao}))},min:30,step:30,suffix:"sec"})}),(0,b.jsx)(aJ,{label:o("settings.ci.maxLogSize"),description:o("settings.ci.maxLogSizeDescription"),htmlFor:"ci-log-max",children:(0,b.jsx)(aM,{id:"ci-log-max",testId:"ci-log-max-input",placeholder:"50000",value:aq,onChange:ar,onBlur:()=>{aq!==bc&&y(bo({ciLogMax:aq}))},min:1e3,step:5e3,suffix:"chars"})}),(0,b.jsx)(aJ,{label:o("settings.ci.pollInterval"),description:o("settings.ci.pollIntervalDescription"),htmlFor:"ci-poll-interval",children:(0,b.jsx)(aM,{id:"ci-poll-interval",testId:"ci-poll-interval-input",placeholder:"30",value:as,onChange:at,onBlur:()=>{as!==bd&&y(bo({ciPollInterval:as}))},min:5,step:5,suffix:"sec"})}),(0,b.jsx)(aK,{label:o("settings.ci.hideCiStatus"),description:o("settings.ci.hideCiStatusDescription"),id:"hide-ci-status",testId:"switch-hide-ci-status",checked:ae,onChange:a=>{af(a),y(bo({hideCiStatus:a}))}})]}),(0,b.jsx)(aO,{links:[{label:o("settings.ci.links.cicdPipeline"),href:"https://github.com/shep-ai/shep/blob/main/docs/development/cicd.md"},{label:o("settings.ci.links.ciSecurityGates"),href:"https://github.com/shep-ai/shep/blob/main/specs/003-cicd-security-gates/spec.md"}],children:o("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.jsxs)(aL,{icon:r.Timer,title:o("settings.stageTimeouts.title"),description:o("settings.stageTimeouts.description"),testId:"stage-timeouts-settings-section",children:[(0,b.jsx)(aN,{children:o("settings.stageTimeouts.subsections.featureAgent")}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.analyze"),description:o("settings.stageTimeouts.analyzeDescription"),htmlFor:"timeout-analyze",children:(0,b.jsx)(aF,{id:"timeout-analyze",testId:"timeout-analyze-input",value:av,onChange:aw,onBlur:()=>{av!==be&&y(bo({analyzeTimeout:av}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.requirements"),description:o("settings.stageTimeouts.requirementsDescription"),htmlFor:"timeout-requirements",children:(0,b.jsx)(aF,{id:"timeout-requirements",testId:"timeout-requirements-input",value:ax,onChange:ay,onBlur:()=>{ax!==bf&&y(bo({requirementsTimeout:ax}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.research"),description:o("settings.stageTimeouts.researchDescription"),htmlFor:"timeout-research",children:(0,b.jsx)(aF,{id:"timeout-research",testId:"timeout-research-input",value:az,onChange:aA,onBlur:()=>{az!==bg&&y(bo({researchTimeout:az}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.plan"),description:o("settings.stageTimeouts.planDescription"),htmlFor:"timeout-plan",children:(0,b.jsx)(aF,{id:"timeout-plan",testId:"timeout-plan-input",value:aB,onChange:aC,onBlur:()=>{aB!==bh&&y(bo({planTimeout:aB}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.implement"),description:o("settings.stageTimeouts.implementDescription"),htmlFor:"timeout-implement",children:(0,b.jsx)(aF,{id:"timeout-implement",testId:"timeout-implement-input",value:aD,onChange:aE,onBlur:()=>{aD!==bi&&y(bo({implementTimeout:aD}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.fastImplement"),description:o("settings.stageTimeouts.fastImplementDescription"),htmlFor:"timeout-fast-implement",children:(0,b.jsx)(aF,{id:"timeout-fast-implement",testId:"timeout-fast-implement-input",value:aP,onChange:aQ,onBlur:()=>{aP!==bj&&y(bo({fastImplementTimeout:aP}))},defaultSeconds:1800})}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.merge"),description:o("settings.stageTimeouts.mergeDescription"),htmlFor:"timeout-merge",children:(0,b.jsx)(aF,{id:"timeout-merge",testId:"timeout-merge-input",value:aR,onChange:aS,onBlur:()=>{aR!==bk&&y(bo({mergeTimeout:aR}))},defaultSeconds:1800})}),(0,b.jsx)(aN,{children:o("settings.stageTimeouts.subsections.analyzeRepoAgent")}),(0,b.jsx)(aJ,{label:o("settings.stageTimeouts.analyze"),description:o("settings.stageTimeouts.analyzeDescription"),htmlFor:"timeout-analyze-repo",children:(0,b.jsx)(aF,{id:"timeout-analyze-repo",testId:"timeout-analyze-repo-input",value:aU,onChange:aV,onBlur:()=>{aU!==bl&&y(bo({analyzeRepoTimeout:aU}))},defaultSeconds:600})})]}),(0,b.jsx)(aO,{children:o("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)(aL,{icon:j,title:o("settings.notifications.title"),description:o("settings.notifications.sectionDescription"),testId:"notification-settings-section",children:[(0,b.jsx)(aN,{children:o("settings.notifications.channels")}),(0,b.jsx)(aK,{label:o("settings.notifications.inAppLabel"),description:o("settings.notifications.inAppDescription"),id:"notif-in-app",testId:"switch-in-app",checked:a4,onChange:a=>{a5(a),y(bp({inApp:a}))}}),(0,b.jsx)(aN,{children:o("settings.notifications.subsections.agentEvents")}),(0,b.jsx)(aK,{label:o("settings.notifications.events.agentStarted"),id:"notif-event-agentStarted",testId:"switch-event-agentStarted",checked:a6.agentStarted,onChange:a=>{let b={...a6,agentStarted:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.phaseCompleted"),id:"notif-event-phaseCompleted",testId:"switch-event-phaseCompleted",checked:a6.phaseCompleted,onChange:a=>{let b={...a6,phaseCompleted:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.waitingApproval"),id:"notif-event-waitingApproval",testId:"switch-event-waitingApproval",checked:a6.waitingApproval,onChange:a=>{let b={...a6,waitingApproval:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.agentCompleted"),id:"notif-event-agentCompleted",testId:"switch-event-agentCompleted",checked:a6.agentCompleted,onChange:a=>{let b={...a6,agentCompleted:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.agentFailed"),id:"notif-event-agentFailed",testId:"switch-event-agentFailed",checked:a6.agentFailed,onChange:a=>{let b={...a6,agentFailed:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aN,{children:o("settings.notifications.subsections.pullRequestEvents")}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prMerged"),id:"notif-event-prMerged",testId:"switch-event-prMerged",checked:a6.prMerged,onChange:a=>{let b={...a6,prMerged:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prClosed"),id:"notif-event-prClosed",testId:"switch-event-prClosed",checked:a6.prClosed,onChange:a=>{let b={...a6,prClosed:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prChecksPassed"),id:"notif-event-prChecksPassed",testId:"switch-event-prChecksPassed",checked:a6.prChecksPassed,onChange:a=>{let b={...a6,prChecksPassed:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prChecksFailed"),id:"notif-event-prChecksFailed",testId:"switch-event-prChecksFailed",checked:a6.prChecksFailed,onChange:a=>{let b={...a6,prChecksFailed:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.prBlocked"),id:"notif-event-prBlocked",testId:"switch-event-prBlocked",checked:a6.prBlocked,onChange:a=>{let b={...a6,prBlocked:a};a7(b),y(bp({events:b}))}}),(0,b.jsx)(aK,{label:o("settings.notifications.events.mergeReviewReady"),id:"notif-event-mergeReviewReady",testId:"switch-event-mergeReviewReady",checked:a6.mergeReviewReady,onChange:a=>{let b={...a6,mergeReviewReady:a};a7(b),y(bp({events:b}))}})]}),(0,b.jsx)(aO,{links:[{label:o("settings.notifications.links.notificationSystem"),href:"https://github.com/shep-ai/shep/blob/main/specs/021-agent-notifications/spec.yaml"}],children:o("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)(aL,{icon:k,title:o("settings.featureFlags.title"),description:o("settings.featureFlags.sectionDescription"),badge:o("settings.featureFlags.badge"),testId:"feature-flags-settings-section",children:[(0,b.jsx)(aK,{label:o("settings.featureFlags.skills"),description:o("settings.featureFlags.skillsDescription"),id:"flag-skills",testId:"switch-flag-skills",checked:a8.skills,onChange:a=>{let b={...a8,skills:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.deployments"),description:o("settings.featureFlags.deploymentsDescription"),id:"flag-envDeploy",testId:"switch-flag-envDeploy",checked:a8.envDeploy,onChange:a=>{let b={...a8,envDeploy:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.debug"),description:o("settings.featureFlags.debugDescription"),id:"flag-debug",testId:"switch-flag-debug",checked:a8.debug,onChange:a=>{let b={...a8,debug:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.githubImport"),description:o("settings.featureFlags.githubImportDescription"),id:"flag-githubImport",testId:"switch-flag-githubImport",checked:a8.githubImport,onChange:a=>{let b={...a8,githubImport:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.adoptBranch"),description:o("settings.featureFlags.adoptBranchDescription"),id:"flag-adoptBranch",testId:"switch-flag-adoptBranch",checked:a8.adoptBranch,onChange:a=>{let b={...a8,adoptBranch:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.gitRebaseSync"),description:o("settings.featureFlags.gitRebaseSyncDescription"),id:"flag-gitRebaseSync",testId:"switch-flag-gitRebaseSync",checked:a8.gitRebaseSync,onChange:a=>{let b={...a8,gitRebaseSync:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.reactFileManager"),description:o("settings.featureFlags.reactFileManagerDescription"),id:"flag-reactFileManager",testId:"switch-flag-reactFileManager",checked:a8.reactFileManager,onChange:a=>{let b={...a8,reactFileManager:a};a9(b),y({featureFlags:b})}}),(0,b.jsx)(aK,{label:o("settings.featureFlags.inventory"),description:o("settings.featureFlags.inventoryDescription"),id:"flag-inventory",testId:"switch-flag-inventory",checked:a8.inventory,onChange:a=>{let b={...a8,inventory:a};a9(b),y({featureFlags:b})}})]}),(0,b.jsx)(aO,{children:o("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.jsxs)(aL,{icon:s.MessageSquare,title:o("settings.interactiveAgent.title"),description:o("settings.interactiveAgent.description"),testId:"interactive-agent-settings-section",children:[(0,b.jsx)(aK,{label:o("settings.interactiveAgent.enableChatTab"),description:o("settings.interactiveAgent.enableChatTabDescription"),id:"interactive-agent-enabled",testId:"switch-interactive-agent-enabled",checked:aX,onChange:a=>{aY(a),y({interactiveAgent:{enabled:a,autoTimeoutMinutes:parseInt(aZ,10)||15,maxConcurrentSessions:parseInt(a_,10)||3}})}}),(0,b.jsx)(aJ,{label:o("settings.interactiveAgent.autoTimeout"),description:o("settings.interactiveAgent.autoTimeoutDescription"),htmlFor:"interactive-agent-timeout",children:(0,b.jsx)(aM,{id:"interactive-agent-timeout",testId:"input-interactive-agent-timeout",value:aZ,placeholder:"15",min:1,max:120,suffix:"min",onChange:a$,onBlur:()=>{let a=parseInt(aZ,10),b=Number.isNaN(a)?15:Math.min(120,Math.max(1,a));a$(String(b)),y({interactiveAgent:{enabled:aX,autoTimeoutMinutes:b,maxConcurrentSessions:parseInt(a_,10)||3}})}})}),(0,b.jsx)(aJ,{label:o("settings.interactiveAgent.maxConcurrentSessions"),description:o("settings.interactiveAgent.maxConcurrentSessionsDescription"),htmlFor:"interactive-agent-sessions",children:(0,b.jsx)(aM,{id:"interactive-agent-sessions",testId:"input-interactive-agent-sessions",value:a_,placeholder:"3",min:1,max:10,onChange:a0,onBlur:()=>{let a=parseInt(a_,10),b=Number.isNaN(a)?3:Math.min(10,Math.max(1,a));a0(String(b)),y({interactiveAgent:{enabled:aX,autoTimeoutMinutes:parseInt(aZ,10)||15,maxConcurrentSessions:b}})}})})]}),(0,b.jsx)(aO,{children:o("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)(aL,{icon:t,title:o("settings.fabLayout.title"),description:o("settings.fabLayout.description"),testId:"fab-layout-settings-section",children:(0,b.jsx)(aK,{label:o("settings.fabLayout.swapPosition"),description:o("settings.fabLayout.swapPositionDescription"),id:"fab-swap-position",testId:"switch-fab-swap-position",checked:a2,onChange:a=>{a3(a),y({fabLayout:{swapPosition:a}})}})}),(0,b.jsx)(aO,{children:o("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)(aL,{icon:l,title:o("settings.database.title"),description:o("settings.database.sectionDescription"),testId:"database-settings-section",children:[(0,b.jsx)(aJ,{label:o("settings.database.location"),description:o("settings.database.locationDescription"),children:(0,b.jsx)("span",{className:"text-muted-foreground max-w-50 truncate font-mono text-xs","data-testid":"shep-home-path",children:i})}),(0,b.jsx)(aJ,{label:o("settings.database.size"),children:(0,b.jsx)("span",{className:"text-muted-foreground text-xs","data-testid":"db-file-size",children:m})})]}),(0,b.jsx)(aO,{links:[{label:o("settings.database.links.settingsService"),href:"https://github.com/shep-ai/shep/blob/main/docs/architecture/settings-service.md"},{label:o("settings.database.links.settingsSpec"),href:"https://github.com/shep-ai/shep/blob/main/specs/005-global-settings-service/spec.md"}],children:o("settings.database.hint")})]})]})]})}a.s(["SettingsPageClient",()=>aP],79020)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map
|