chorus-codes 0.7.3 → 0.7.5
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +7 -7
- package/.next/build-manifest.json +13 -14
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +6 -0
- package/.next/required-server-files.js +2 -0
- package/.next/required-server-files.json +2 -0
- package/.next/server/app/_global-error/page.js +32 -10
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.meta +2 -1
- package/.next/server/app/_global-error.rsc +8 -9
- package/.next/server/app/_global-error.segments/_full.segment.rsc +8 -9
- package/.next/server/app/_global-error.segments/{__PAGE__.segment.rsc → _global-error/__PAGE__.segment.rsc} +2 -2
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_head.segment.rsc +3 -4
- package/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -13
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -3
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +12 -10
- package/.next/server/app/_not-found.segments/_full.segment.rsc +12 -10
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -2
- package/.next/server/app/api/daemon/[...path]/route.js +1 -7
- package/.next/server/app/api/daemon/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/daemon/[...path]/route_client-reference-manifest.js +1 -3
- package/.next/server/app/api/run-artifacts/[chatId]/route.js +1 -6
- package/.next/server/app/api/run-artifacts/[chatId]/route.js.nft.json +1 -1
- package/.next/server/app/api/run-artifacts/[chatId]/route_client-reference-manifest.js +1 -3
- package/.next/server/app/connect/page.js +2 -15
- package/.next/server/app/connect/page.js.nft.json +1 -1
- package/.next/server/app/connect/page_client-reference-manifest.js +1 -3
- package/.next/server/app/favicon.ico/route.js +1 -8
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/icon.svg/route.js +1 -7
- package/.next/server/app/icon.svg/route.js.nft.json +1 -1
- package/.next/server/app/new/page.js +2 -14
- package/.next/server/app/new/page.js.nft.json +1 -1
- package/.next/server/app/new/page_client-reference-manifest.js +1 -3
- package/.next/server/app/new.html +1 -1
- package/.next/server/app/new.rsc +14 -14
- package/.next/server/app/new.segments/_full.segment.rsc +14 -14
- package/.next/server/app/new.segments/_head.segment.rsc +4 -4
- package/.next/server/app/new.segments/_index.segment.rsc +4 -4
- package/.next/server/app/new.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/new.segments/new.segment.rsc +3 -3
- package/.next/server/app/onboarding/page.js +2 -14
- package/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -3
- package/.next/server/app/onboarding.html +1 -1
- package/.next/server/app/onboarding.rsc +14 -14
- package/.next/server/app/onboarding.segments/_full.segment.rsc +14 -14
- package/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/_index.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
- package/.next/server/app/page.js +2 -17
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -3
- package/.next/server/app/personas/page.js +2 -14
- package/.next/server/app/personas/page.js.nft.json +1 -1
- package/.next/server/app/personas/page_client-reference-manifest.js +1 -3
- package/.next/server/app/personas.html +1 -1
- package/.next/server/app/personas.rsc +14 -14
- package/.next/server/app/personas.segments/_full.segment.rsc +14 -14
- package/.next/server/app/personas.segments/_head.segment.rsc +4 -4
- package/.next/server/app/personas.segments/_index.segment.rsc +4 -4
- package/.next/server/app/personas.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/personas.segments/personas.segment.rsc +3 -3
- package/.next/server/app/runs/[runId]/page.js +2 -16
- package/.next/server/app/runs/[runId]/page.js.nft.json +1 -1
- package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -3
- package/.next/server/app/runs/page.js +2 -15
- package/.next/server/app/runs/page.js.nft.json +1 -1
- package/.next/server/app/runs/page_client-reference-manifest.js +1 -3
- package/.next/server/app/settings/page.js +26 -14
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -3
- package/.next/server/app/settings/permissions/page.js +2 -14
- package/.next/server/app/settings/permissions/page.js.nft.json +1 -1
- package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -3
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +14 -14
- package/.next/server/app/settings.segments/_full.segment.rsc +14 -14
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/templates/page.js +2 -14
- package/.next/server/app/templates/page.js.nft.json +1 -1
- package/.next/server/app/templates/page_client-reference-manifest.js +1 -3
- package/.next/server/app/templates.html +1 -1
- package/.next/server/app/templates.rsc +14 -14
- package/.next/server/app/templates.segments/_full.segment.rsc +14 -14
- package/.next/server/app/templates.segments/_head.segment.rsc +4 -4
- package/.next/server/app/templates.segments/_index.segment.rsc +4 -4
- package/.next/server/app/templates.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/templates.segments/templates.segment.rsc +3 -3
- package/.next/server/app-paths-manifest.json +7 -7
- package/.next/server/chunks/144.js +25 -0
- package/.next/server/chunks/332.js +18 -0
- package/.next/server/chunks/418.js +1 -0
- package/.next/server/chunks/429.js +1 -0
- package/.next/server/chunks/451.js +45 -0
- package/.next/server/chunks/498.js +1 -0
- package/.next/server/chunks/504.js +1 -0
- package/.next/server/chunks/557.js +5 -0
- package/.next/server/chunks/668.js +25 -0
- package/.next/server/chunks/681.js +1 -0
- package/.next/server/chunks/946.js +1 -0
- package/.next/server/chunks/95.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -21
- package/.next/server/middleware-manifest.json +2 -2
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +1 -51
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -5
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/VWSkj_Yx6OKSjPmYY8ewj/_buildManifest.js +1 -0
- package/.next/static/chunks/116-0372d11bc2a9ac4d.js +25 -0
- package/.next/static/chunks/128-a5d059bf5b2e5090.js +32 -0
- package/.next/static/chunks/15-d438a2b057302bed.js +1 -0
- package/.next/static/chunks/344-1f06059a92faa936.js +1 -0
- package/.next/static/chunks/720-9732eeb760e004e3.js +5 -0
- package/.next/static/chunks/744-2b89d96d64610581.js +1 -0
- package/.next/static/chunks/app/_global-error/page-c01ad9f9473ce080.js +1 -0
- package/.next/static/chunks/app/_not-found/page-715bac6dc7f3427d.js +1 -0
- package/.next/static/chunks/app/api/daemon/[...path]/route-c01ad9f9473ce080.js +1 -0
- package/.next/static/chunks/app/api/run-artifacts/[chatId]/route-c01ad9f9473ce080.js +1 -0
- package/.next/static/chunks/app/connect/page-c09d9fb410c468b7.js +1 -0
- package/.next/static/chunks/app/layout-df8acd5bd06cbe45.js +1 -0
- package/.next/static/chunks/app/new/page-e4923b87c7a7b6ae.js +1 -0
- package/.next/static/chunks/app/onboarding/page-4c87427335371aaa.js +1 -0
- package/.next/static/chunks/app/page-3c0d23c063b036eb.js +1 -0
- package/.next/static/chunks/app/personas/page-a130cd11d8cbd832.js +1 -0
- package/.next/static/chunks/app/runs/[runId]/page-aa118bfeb6508779.js +1 -0
- package/.next/static/chunks/app/runs/page-503439d57f433574.js +1 -0
- package/.next/static/chunks/app/settings/page-64d7d48d2413a18b.js +25 -0
- package/.next/static/chunks/app/settings/permissions/page-18bf0e6d84be8fad.js +1 -0
- package/.next/static/chunks/app/templates/page-db5165c6311bf6e1.js +1 -0
- package/.next/static/chunks/ed64ccb0-b7d2b5246d18ca7e.js +1 -0
- package/.next/static/chunks/framework-dc9b726cfb42e402.js +1 -0
- package/.next/static/chunks/main-2088f7ac0f762d6a.js +5 -0
- package/.next/static/chunks/main-app-e9f7985e32dc8a63.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-c01ad9f9473ce080.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-c01ad9f9473ce080.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-538b25894f1d36d8.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-c01ad9f9473ce080.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c01ad9f9473ce080.js +1 -0
- package/.next/static/chunks/webpack-87142ab87b87c8fb.js +1 -0
- package/.next/static/css/a552ff3997000a18.css +3 -0
- package/.next/trace +19 -1
- package/.next/trace-build +1 -1
- package/.next/types/app/api/daemon/[...path]/route.ts +351 -0
- package/.next/types/app/api/run-artifacts/[chatId]/route.ts +351 -0
- package/.next/types/app/connect/page.ts +87 -0
- package/.next/types/app/layout.ts +87 -0
- package/.next/types/app/new/page.ts +87 -0
- package/.next/types/app/onboarding/page.ts +87 -0
- package/.next/types/app/page.ts +87 -0
- package/.next/types/app/personas/page.ts +87 -0
- package/.next/types/app/runs/[runId]/page.ts +87 -0
- package/.next/types/app/runs/page.ts +87 -0
- package/.next/types/app/settings/page.ts +87 -0
- package/.next/types/app/settings/permissions/page.ts +87 -0
- package/.next/types/app/templates/page.ts +87 -0
- package/.next/types/package.json +1 -0
- package/dist/daemon/index.js +1 -1
- package/dist/mcp/index.js +1 -1
- package/package.json +3 -3
- package/.next/build/chunks/[root-of-the-server]__0d-m0h0._.js +0 -206
- package/.next/build/chunks/[root-of-the-server]__0d-m0h0._.js.map +0 -8
- package/.next/build/chunks/[root-of-the-server]__0ubbtyl._.js +0 -500
- package/.next/build/chunks/[root-of-the-server]__0ubbtyl._.js.map +0 -11
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_06e.r3r._.js +0 -13
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_06e.r3r._.js.map +0 -5
- package/.next/build/chunks/[turbopack]_runtime.js +0 -890
- package/.next/build/chunks/[turbopack]_runtime.js.map +0 -11
- package/.next/build/chunks/node_modules__pnpm_0e-dfa2._.js +0 -6681
- package/.next/build/chunks/node_modules__pnpm_0e-dfa2._.js.map +0 -47
- package/.next/build/package.json +0 -1
- package/.next/build/postcss.js +0 -6
- package/.next/build/postcss.js.map +0 -5
- package/.next/cache/.previewinfo +0 -1
- package/.next/cache/.rscinfo +0 -1
- package/.next/cache/.tsbuildinfo +0 -1
- package/.next/diagnostics/route-bundle-stats.json +0 -176
- package/.next/fallback-build-manifest.json +0 -13
- package/.next/server/app/_global-error/page/app-paths-manifest.json +0 -3
- package/.next/server/app/_global-error/page/build-manifest.json +0 -17
- package/.next/server/app/_global-error/page/next-font-manifest.json +0 -6
- package/.next/server/app/_global-error/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/_global-error/page/server-reference-manifest.json +0 -4
- package/.next/server/app/_global-error/page.js.map +0 -5
- package/.next/server/app/_not-found/page/app-paths-manifest.json +0 -3
- package/.next/server/app/_not-found/page/build-manifest.json +0 -17
- package/.next/server/app/_not-found/page/next-font-manifest.json +0 -11
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/_not-found/page/server-reference-manifest.json +0 -4
- package/.next/server/app/_not-found/page.js.map +0 -5
- package/.next/server/app/api/daemon/[...path]/route/app-paths-manifest.json +0 -3
- package/.next/server/app/api/daemon/[...path]/route/build-manifest.json +0 -9
- package/.next/server/app/api/daemon/[...path]/route/server-reference-manifest.json +0 -4
- package/.next/server/app/api/daemon/[...path]/route.js.map +0 -5
- package/.next/server/app/api/run-artifacts/[chatId]/route/app-paths-manifest.json +0 -3
- package/.next/server/app/api/run-artifacts/[chatId]/route/build-manifest.json +0 -9
- package/.next/server/app/api/run-artifacts/[chatId]/route/server-reference-manifest.json +0 -4
- package/.next/server/app/api/run-artifacts/[chatId]/route.js.map +0 -5
- package/.next/server/app/connect/page/app-paths-manifest.json +0 -3
- package/.next/server/app/connect/page/build-manifest.json +0 -17
- package/.next/server/app/connect/page/next-font-manifest.json +0 -11
- package/.next/server/app/connect/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/connect/page/server-reference-manifest.json +0 -4
- package/.next/server/app/connect/page.js.map +0 -5
- package/.next/server/app/favicon.ico/route/app-paths-manifest.json +0 -3
- package/.next/server/app/favicon.ico/route/build-manifest.json +0 -9
- package/.next/server/app/favicon.ico/route.js.map +0 -5
- package/.next/server/app/icon.svg/route/app-paths-manifest.json +0 -3
- package/.next/server/app/icon.svg/route/build-manifest.json +0 -9
- package/.next/server/app/icon.svg/route.js.map +0 -5
- package/.next/server/app/new/page/app-paths-manifest.json +0 -3
- package/.next/server/app/new/page/build-manifest.json +0 -17
- package/.next/server/app/new/page/next-font-manifest.json +0 -11
- package/.next/server/app/new/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/new/page/server-reference-manifest.json +0 -4
- package/.next/server/app/new/page.js.map +0 -5
- package/.next/server/app/onboarding/page/app-paths-manifest.json +0 -3
- package/.next/server/app/onboarding/page/build-manifest.json +0 -17
- package/.next/server/app/onboarding/page/next-font-manifest.json +0 -11
- package/.next/server/app/onboarding/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/onboarding/page/server-reference-manifest.json +0 -4
- package/.next/server/app/onboarding/page.js.map +0 -5
- package/.next/server/app/page/app-paths-manifest.json +0 -3
- package/.next/server/app/page/build-manifest.json +0 -17
- package/.next/server/app/page/next-font-manifest.json +0 -11
- package/.next/server/app/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/page/server-reference-manifest.json +0 -4
- package/.next/server/app/page.js.map +0 -5
- package/.next/server/app/personas/page/app-paths-manifest.json +0 -3
- package/.next/server/app/personas/page/build-manifest.json +0 -17
- package/.next/server/app/personas/page/next-font-manifest.json +0 -11
- package/.next/server/app/personas/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/personas/page/server-reference-manifest.json +0 -4
- package/.next/server/app/personas/page.js.map +0 -5
- package/.next/server/app/runs/[runId]/page/app-paths-manifest.json +0 -3
- package/.next/server/app/runs/[runId]/page/build-manifest.json +0 -17
- package/.next/server/app/runs/[runId]/page/next-font-manifest.json +0 -11
- package/.next/server/app/runs/[runId]/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/runs/[runId]/page/server-reference-manifest.json +0 -4
- package/.next/server/app/runs/[runId]/page.js.map +0 -5
- package/.next/server/app/runs/page/app-paths-manifest.json +0 -3
- package/.next/server/app/runs/page/build-manifest.json +0 -17
- package/.next/server/app/runs/page/next-font-manifest.json +0 -11
- package/.next/server/app/runs/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/runs/page/server-reference-manifest.json +0 -4
- package/.next/server/app/runs/page.js.map +0 -5
- package/.next/server/app/settings/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/page/build-manifest.json +0 -17
- package/.next/server/app/settings/page/next-font-manifest.json +0 -11
- package/.next/server/app/settings/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/settings/page/server-reference-manifest.json +0 -4
- package/.next/server/app/settings/page.js.map +0 -5
- package/.next/server/app/settings/permissions/page/app-paths-manifest.json +0 -3
- package/.next/server/app/settings/permissions/page/build-manifest.json +0 -17
- package/.next/server/app/settings/permissions/page/next-font-manifest.json +0 -11
- package/.next/server/app/settings/permissions/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/settings/permissions/page/server-reference-manifest.json +0 -4
- package/.next/server/app/settings/permissions/page.js.map +0 -5
- package/.next/server/app/templates/page/app-paths-manifest.json +0 -3
- package/.next/server/app/templates/page/build-manifest.json +0 -17
- package/.next/server/app/templates/page/next-font-manifest.json +0 -11
- package/.next/server/app/templates/page/react-loadable-manifest.json +0 -1
- package/.next/server/app/templates/page/server-reference-manifest.json +0 -4
- package/.next/server/app/templates/page.js.map +0 -5
- package/.next/server/chunks/05w9_next_0xdex7s._.js +0 -13
- package/.next/server/chunks/05w9_next_0xdex7s._.js.map +0 -1
- package/.next/server/chunks/05w9_next_dist_esm_build_templates_app-route_0.73kst.js +0 -3
- package/.next/server/chunks/05w9_next_dist_esm_build_templates_app-route_0.73kst.js.map +0 -1
- package/.next/server/chunks/[externals]_next_dist_0arv.vj._.js +0 -3
- package/.next/server/chunks/[externals]_next_dist_0arv.vj._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__02xvj_h._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__02xvj_h._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0i7ddmr._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0i7ddmr._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0sxhm1i._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0sxhm1i._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__12xxby8._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__12xxby8._.js.map +0 -1
- package/.next/server/chunks/[turbopack]_runtime.js +0 -903
- package/.next/server/chunks/[turbopack]_runtime.js.map +0 -11
- package/.next/server/chunks/_next-internal_server_app_api_daemon_[___path]_route_actions_0a5g-ar.js +0 -3
- package/.next/server/chunks/_next-internal_server_app_api_daemon_[___path]_route_actions_0a5g-ar.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_api_run-artifacts_[chatId]_route_actions_07e2ul1.js +0 -3
- package/.next/server/chunks/_next-internal_server_app_api_run-artifacts_[chatId]_route_actions_07e2ul1.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js +0 -3
- package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_0-0ehc~.js +0 -3
- package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_0-0ehc~.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_0q4woef._.js +0 -3
- package/.next/server/chunks/ssr/05w9_next_dist_0q4woef._.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_0ybpwn1._.js +0 -6
- package/.next/server/chunks/ssr/05w9_next_dist_0ybpwn1._.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_0~859ji._.js +0 -6
- package/.next/server/chunks/ssr/05w9_next_dist_0~859ji._.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_client_components_12u3mib._.js +0 -3
- package/.next/server/chunks/ssr/05w9_next_dist_client_components_12u3mib._.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_forbidden_04fbe_..js +0 -3
- package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_forbidden_04fbe_..js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_global-error_0brpl_..js +0 -3
- package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_global-error_0brpl_..js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_unauthorized_0~2g66g.js +0 -3
- package/.next/server/chunks/ssr/05w9_next_dist_client_components_builtin_unauthorized_0~2g66g.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0-f~6r1.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0-f~6r1.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_00czn99.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_00czn99.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_01nm1_6.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_01nm1_6.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0jcydv7.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0jcydv7.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0km.hvi.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0km.hvi.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0ln8_qt.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0ln8_qt.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0n3h-j1.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0n3h-j1.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0nc~v.o.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0nc~v.o.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0o6nct3.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0o6nct3.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0veve6-.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0veve6-.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0wh5tpo.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_0wh5tpo.js.map +0 -1
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_10~fsfu.js +0 -4
- package/.next/server/chunks/ssr/05w9_next_dist_esm_build_templates_app-page_10~fsfu.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0-7oo8o._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0-7oo8o._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__01t9qm2._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__01t9qm2._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__076~t6~._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__076~t6~._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0_tow-j._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0_tow-j._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0bsym8v._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0bsym8v._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0bwjwxi._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0bwjwxi._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0c2e5js._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0c2e5js._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0d_59pi._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0d_59pi._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0dxp2sg._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0dxp2sg._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0e58.k_._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0e58.k_._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ek20dj._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0ek20dj._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0h2o43u._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0h2o43u._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0hn95cc._.js +0 -33
- package/.next/server/chunks/ssr/[root-of-the-server]__0hn95cc._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ic.~tw._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0ic.~tw._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0jltd-t._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0jltd-t._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0k_96yx._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0k_96yx._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0l5ko41._.js +0 -19
- package/.next/server/chunks/ssr/[root-of-the-server]__0l5ko41._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0p~21w8._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0p~21w8._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0tc4gl8._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0tc4gl8._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0we1ana._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0we1ana._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0xlzjhk._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0xlzjhk._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ygksjc._.js +0 -33
- package/.next/server/chunks/ssr/[root-of-the-server]__0ygksjc._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0yhjl35._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0yhjl35._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0~cqs-9._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0~cqs-9._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__109.1j0._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__109.1j0._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__10gepjv._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__10gepjv._.js.map +0 -1
- package/.next/server/chunks/ssr/[turbopack]_runtime.js +0 -903
- package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +0 -11
- package/.next/server/chunks/ssr/_01t~nag._.js +0 -30
- package/.next/server/chunks/ssr/_01t~nag._.js.map +0 -1
- package/.next/server/chunks/ssr/_097xk3e._.js +0 -3
- package/.next/server/chunks/ssr/_097xk3e._.js.map +0 -1
- package/.next/server/chunks/ssr/_0bxoss0._.js +0 -30
- package/.next/server/chunks/ssr/_0bxoss0._.js.map +0 -1
- package/.next/server/chunks/ssr/_0ck1n8_._.js +0 -7
- package/.next/server/chunks/ssr/_0ck1n8_._.js.map +0 -1
- package/.next/server/chunks/ssr/_0d-304b._.js +0 -30
- package/.next/server/chunks/ssr/_0d-304b._.js.map +0 -1
- package/.next/server/chunks/ssr/_0p-_ahq._.js +0 -30
- package/.next/server/chunks/ssr/_0p-_ahq._.js.map +0 -1
- package/.next/server/chunks/ssr/_0qlx_85._.js +0 -7
- package/.next/server/chunks/ssr/_0qlx_85._.js.map +0 -1
- package/.next/server/chunks/ssr/_0y43gyn._.js +0 -27
- package/.next/server/chunks/ssr/_0y43gyn._.js.map +0 -1
- package/.next/server/chunks/ssr/_11i54x9._.js +0 -30
- package/.next/server/chunks/ssr/_11i54x9._.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0k77kol.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0k77kol.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0eq97pa.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0eq97pa.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_connect_page_actions_0vb8s6u.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_connect_page_actions_0vb8s6u.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_new_page_actions_08q6mx5.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_new_page_actions_08q6mx5.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_onboarding_page_actions_0qdby58.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_onboarding_page_actions_0qdby58.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_personas_page_actions_08fq21v.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_personas_page_actions_08fq21v.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_runs_[runId]_page_actions_0z6r2tz.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_runs_[runId]_page_actions_0z6r2tz.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_runs_page_actions_04_e1xr.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_runs_page_actions_04_e1xr.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_0mr68ai.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_settings_permissions_page_actions_0cr.qtc.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_settings_permissions_page_actions_0cr.qtc.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_templates_page_actions_0n8gow3.js +0 -3
- package/.next/server/chunks/ssr/_next-internal_server_app_templates_page_actions_0n8gow3.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_0~j0k.e._.js +0 -33
- package/.next/server/chunks/ssr/node_modules__pnpm_0~j0k.e._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_new_page_tsx_0av4n2k._.js +0 -3
- package/.next/server/chunks/ssr/src_app_new_page_tsx_0av4n2k._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +0 -3
- package/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_personas_page_tsx_0jx9vyh._.js +0 -3
- package/.next/server/chunks/ssr/src_app_personas_page_tsx_0jx9vyh._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +0 -27
- package/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_templates_page_tsx_0tml2wg._.js +0 -3
- package/.next/server/chunks/ssr/src_app_templates_page_tsx_0tml2wg._.js.map +0 -1
- package/.next/server/chunks/ssr/src_components_0j77o23._.js +0 -3
- package/.next/server/chunks/ssr/src_components_0j77o23._.js.map +0 -1
- package/.next/server/chunks/ssr/src_components_0lc2g58._.js +0 -3
- package/.next/server/chunks/ssr/src_components_0lc2g58._.js.map +0 -1
- package/.next/server/chunks/ssr/src_components_live-run-real_index_tsx_0zzsdt9._.js +0 -3
- package/.next/server/chunks/ssr/src_components_live-run-real_index_tsx_0zzsdt9._.js.map +0 -1
- package/.next/static/UrNBcWJ5KltIL6ABEsC-R/_buildManifest.js +0 -11
- package/.next/static/UrNBcWJ5KltIL6ABEsC-R/_clientMiddlewareManifest.js +0 -1
- package/.next/static/chunks/0.dctgbd3j_xg.js +0 -2
- package/.next/static/chunks/0.~gqf.-9g-fh.js +0 -1
- package/.next/static/chunks/01as9r5n5k.xo.js +0 -1
- package/.next/static/chunks/034b~pjm7y20e.js +0 -1
- package/.next/static/chunks/05o4oa_9xfaun.js +0 -1
- package/.next/static/chunks/08dnw-0gzytmy.js +0 -5
- package/.next/static/chunks/08f2b7tuf53ep.js +0 -1
- package/.next/static/chunks/0a_u3vdu6tc~f.js +0 -1
- package/.next/static/chunks/0am72irwq2bx0.js +0 -5
- package/.next/static/chunks/0c-d1bhb8byrx.js +0 -1
- package/.next/static/chunks/0s4~w2~is76y1.js +0 -1
- package/.next/static/chunks/0ue4qcctkv016.js +0 -4
- package/.next/static/chunks/0uok5~eqi6zku.js +0 -1
- package/.next/static/chunks/0u~3g88j1g2xp.css +0 -3
- package/.next/static/chunks/0v3lyuj75aq50.js +0 -1
- package/.next/static/chunks/0whnu9t5k-ij7.js +0 -1
- package/.next/static/chunks/0x00t3du13-u4.js +0 -25
- package/.next/static/chunks/0xs3ktzdh4rw4.js +0 -1
- package/.next/static/chunks/0~8r6nhrrl~f9.js +0 -1
- package/.next/static/chunks/10jdu00ksgu69.js +0 -1
- package/.next/static/chunks/10ld26~0f71ye.js +0 -25
- package/.next/static/chunks/11k2wbc04r__f.js +0 -25
- package/.next/static/chunks/13-.xgv2t5u6m.js +0 -31
- package/.next/static/chunks/152ec.u3_e~ya.js +0 -25
- package/.next/static/chunks/172tpttbumwi1.js +0 -25
- package/.next/static/chunks/turbopack-0-al833jv3to~.js +0 -1
- package/.next/static/media/favicon.0i~66t__91s97.ico +0 -0
- package/.next/static/media/icon.15.86wme~cdlv.svg +0 -6
- package/.next/turbopack +0 -0
- /package/.next/static/{UrNBcWJ5KltIL6ABEsC-R → VWSkj_Yx6OKSjPmYY8ewj}/_ssgManifest.js +0 -0
- /package/.next/static/chunks/{03~yq9q893hmn.js → polyfills-42372ed130431b0a.js} +0 -0
- /package/.next/static/media/{caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2 → 4cf2300e9c8272f7-s.p.woff2} +0 -0
- /package/.next/static/media/{bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2 → 747892c23ea88013-s.woff2} +0 -0
- /package/.next/static/media/{8a480f0b521d4e75-s.06d3mdzz5bre_.woff2 → 8d697b304b401681-s.woff2} +0 -0
- /package/.next/static/media/{797e433ab948586e-s.p.0.q-h669a_dqa.woff2 → 93f479601ee12b01-s.p.woff2} +0 -0
- /package/.next/static/media/{4fa387ec64143e14-s.0q3udbd2bu5yp.woff2 → 9610d9e46709d722-s.woff2} +0 -0
- /package/.next/static/media/{7178b3e590c64307-s.11.cyxs5p-0z~.woff2 → ba015fad6dcf6784-s.woff2} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app/settings/primitives.tsx","../../../../src/app/settings/billing-section.tsx","../../../../src/app/settings/preview-sections.tsx","../../../../src/app/settings/telemetry-section.tsx","../../../../src/app/settings/transport-section.tsx","../../../../src/app/settings/form-view.tsx","../../../../src/app/settings/yaml-view.tsx","../../../../src/app/settings/page.tsx","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/terminal.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/server.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/workflow.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/credit-card.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/monitor.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/cloud.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/send.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/webhook.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/wrench.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/activity.ts","../../../../node_modules/.pnpm/lucide-react%401.12.0_react%4019.2.4/node_modules/lucide-react/src/icons/shield.ts"],"sourcesContent":["\"use client\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Card } from \"@/components/ui/card\";\nimport { Check, Info } from \"lucide-react\";\n\nexport type AutoApprove = \"auto\" | \"ask\" | \"block\";\nexport type Role = \"driver\" | \"reviewer\";\nexport type PrivacyTier = \"local\" | \"proxied\" | \"cloud\";\n\nexport interface ToolDef {\n id: string;\n name: string;\n description: string;\n}\n\nexport const TOOLS: ToolDef[] = [\n { id: \"read\", name: \"Read files\", description: \"cat, less, head, file open\" },\n { id: \"list\", name: \"List & search\", description: \"ls, grep, find, ripgrep\" },\n { id: \"write\", name: \"Write files\", description: \"Edit, Write inside allowed dirs\" },\n { id: \"exec\", name: \"Run commands\", description: \"Bash, npm, pnpm, python, go\" },\n { id: \"net\", name: \"Network access\", description: \"curl, fetch, package install\" },\n { id: \"outside-cwd\", name: \"Writes outside working dir\", description: \"Anything outside the allowed paths below\" },\n];\n\nexport const DEFAULT_DRIVER: Record<string, AutoApprove> = {\n read: \"auto\",\n list: \"auto\",\n write: \"ask\",\n exec: \"ask\",\n net: \"ask\",\n \"outside-cwd\": \"block\",\n};\n\n// Reviewers should never write code — defaults reflect that.\nexport const DEFAULT_REVIEWER: Record<string, AutoApprove> = {\n read: \"auto\",\n list: \"auto\",\n write: \"block\",\n exec: \"ask\",\n net: \"ask\",\n \"outside-cwd\": \"block\",\n};\n\nconst POLICY_STYLES: Record<AutoApprove, string> = {\n auto: \"bg-emerald-500/15 text-emerald-300 border-emerald-500/30\",\n ask: \"bg-amber-500/15 text-amber-300 border-amber-500/30\",\n block: \"bg-rose-500/15 text-rose-300 border-rose-500/30\",\n};\n\nexport function cyclePolicy(p: AutoApprove): AutoApprove {\n return p === \"auto\" ? \"ask\" : p === \"ask\" ? \"block\" : \"auto\";\n}\n\nexport function Section({\n id,\n icon,\n title,\n subtitle,\n children,\n}: {\n /** Optional anchor id so docs / CLI hints can deep-link via /settings#<id>. */\n id?: string;\n icon: React.ReactNode;\n title: string;\n subtitle: string;\n children: React.ReactNode;\n}) {\n return (\n <Card id={id} className=\"mt-6 scroll-mt-20 bg-card p-5\">\n <div className=\"mb-4 flex items-start gap-3\">\n <span className=\"rounded-md border border-border bg-card/60 p-1.5 text-foreground/70\">\n {icon}\n </span>\n <div className=\"flex-1\">\n <h2 className=\"text-sm font-medium text-foreground\">{title}</h2>\n <p className=\"mt-0.5 text-xs text-muted-foreground\">{subtitle}</p>\n </div>\n </div>\n {children}\n </Card>\n );\n}\n\nexport function Field({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div>\n <label className=\"mb-1.5 block text-[11px] font-medium uppercase tracking-wider text-muted-foreground\">\n {label}\n </label>\n {children}\n </div>\n );\n}\n\nexport function PolicyChip({\n policy,\n onCycle,\n role,\n}: {\n policy: AutoApprove;\n onCycle: () => void;\n role: Role;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onCycle}\n className={`justify-self-end rounded-md border px-2.5 py-1 font-mono text-[10px] uppercase tracking-wider transition hover:scale-105 ${POLICY_STYLES[policy]}`}\n title={`${role}: cycle policy`}\n >\n {policy}\n </button>\n );\n}\n\nexport function PrivacyTierOption({\n kind,\n current,\n onSelect,\n icon,\n title,\n tagline,\n features,\n tradeoff,\n}: {\n kind: PrivacyTier;\n current: PrivacyTier;\n onSelect: () => void;\n icon: React.ReactNode;\n title: string;\n tagline: string;\n features: string[];\n tradeoff: string;\n}) {\n const isSelected = kind === current;\n return (\n <button\n type=\"button\"\n onClick={onSelect}\n className={`flex w-full items-start gap-3 rounded-lg border p-3.5 text-left transition ${\n isSelected\n ? \"border-primary/40 bg-primary/5 ring-2 ring-primary/30 ring-offset-2 ring-offset-background\"\n : \"border-border bg-card/40 hover:border-foreground/30\"\n }`}\n >\n <span\n className={`mt-0.5 grid h-7 w-7 shrink-0 place-items-center rounded-md ${\n isSelected ? \"bg-primary/20 text-primary\" : \"bg-card text-muted-foreground\"\n }`}\n >\n {icon}\n </span>\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-foreground\">{title}</span>\n <Badge\n variant=\"outline\"\n className=\"border-border font-mono text-[10px]\"\n >\n {tagline}\n </Badge>\n </div>\n <ul className=\"mt-1.5 space-y-0.5 text-[11px] text-muted-foreground\">\n {features.map((f) => (\n <li key={f} className=\"flex items-start gap-1.5\">\n <Check className=\"mt-0.5 h-3 w-3 shrink-0 text-emerald-400/60\" />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n <div className=\"mt-2 flex items-start gap-1.5 text-[10px] text-muted-foreground\">\n <Info className=\"mt-0.5 h-3 w-3 shrink-0 text-muted-foreground/60\" />\n <span>\n <span className=\"font-medium text-foreground/80\">Trade-off:</span>{\" \"}\n {tradeoff}\n </span>\n </div>\n </div>\n {isSelected && <Check className=\"mt-1 h-4 w-4 shrink-0 text-primary\" />}\n </button>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { CreditCard } from \"lucide-react\";\nimport {\n getBillingMode,\n updateBillingMode,\n type BillingMode,\n} from \"@/lib/api/settings\";\nimport { Section } from \"./primitives\";\n\n/**\n * Billing-mode toggle. Tells chorus how the user pays for the underlying\n * CLIs so the cost preview on /new can render honestly:\n * api → show $ estimate at spot rates\n * subscription → show \"Subscription quota\" + token count, no $\n * mixed → show worst-case $ with caveat\n */\nexport function BillingModeSection() {\n const [current, setCurrent] = useState<BillingMode | null>(null);\n const [descriptions, setDescriptions] = useState<\n Record<BillingMode, { label: string; description: string }> | undefined\n >(undefined);\n const [pending, setPending] = useState<BillingMode | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n getBillingMode()\n .then((res) => {\n if (cancelled) return;\n setCurrent(res.mode);\n setDescriptions(res.descriptions);\n })\n .catch((err) => {\n if (cancelled) return;\n setError(err instanceof Error ? err.message : \"Could not load billing mode.\");\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n const onPick = (m: BillingMode): void => {\n if (current === m || pending) return;\n setPending(m);\n setError(null);\n updateBillingMode({ mode: m })\n .then((res) => setCurrent(res.mode))\n .catch((err) => {\n setError(err instanceof Error ? err.message : \"Save failed.\");\n })\n .finally(() => setPending(null));\n };\n\n return (\n <Section\n icon={<CreditCard className=\"h-4 w-4\" />}\n title=\"Billing mode\"\n subtitle=\"How you pay for the AI CLIs chorus drives. Affects what the cost preview shows on the new-chat page — defaults to API rates so the number stays honest until you tell us otherwise.\"\n >\n {error && (\n <div className=\"mb-3 rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive\">\n {error}\n </div>\n )}\n <div className=\"grid gap-2\">\n {([\"api\", \"subscription\", \"mixed\"] as const).map((m) => {\n const active = current === m;\n const isPending = pending === m;\n const meta = descriptions?.[m];\n return (\n <button\n key={m}\n type=\"button\"\n onClick={() => onPick(m)}\n disabled={pending !== null || current === null}\n className={`flex flex-col gap-1 rounded-lg border p-3 text-left transition ${\n active\n ? \"border-primary/50 bg-primary/10\"\n : \"border-border bg-card hover:border-muted-foreground/30\"\n } ${pending !== null ? \"opacity-60\" : \"\"}`}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">\n {meta?.label ?? m}\n </span>\n {active && (\n <span className=\"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wider text-primary\">\n {isPending ? \"saving…\" : \"active\"}\n </span>\n )}\n </div>\n <p className=\"text-xs leading-relaxed text-muted-foreground\">\n {meta?.description ?? \"\"}\n </p>\n </button>\n );\n })}\n </div>\n </Section>\n );\n}\n","\"use client\";\n\nimport {\n Activity,\n AlertTriangle,\n Check,\n Cloud,\n FolderLock,\n Loader2,\n Monitor,\n Plus,\n Send,\n Server,\n Shield,\n Sliders,\n Webhook,\n Workflow,\n X,\n} from \"lucide-react\";\nimport {\n Field,\n PolicyChip,\n PrivacyTierOption,\n Section,\n TOOLS,\n type AutoApprove,\n type PrivacyTier,\n type Role,\n} from \"./primitives\";\n\nexport interface PreviewSectionsProps {\n maxConcurrent: number;\n setMaxConcurrent: (n: number) => void;\n driverPolicies: Record<string, AutoApprove>;\n reviewerPolicies: Record<string, AutoApprove>;\n cyclePolicy: (role: Role, toolId: string) => void;\n allowedDirs: string[];\n setAllowedDirs: (v: string[]) => void;\n newDir: string;\n setNewDir: (v: string) => void;\n addDir: () => void;\n defaultDriver: string;\n setDefaultDriver: (v: string) => void;\n defaultCostCap: string;\n setDefaultCostCap: (v: string) => void;\n defaultThreshold: string;\n setDefaultThreshold: (v: string) => void;\n webhookUrl: string;\n setWebhookUrl: (v: string) => void;\n mcpEnabled: boolean;\n setMcpEnabled: (v: boolean) => void;\n privacyTier: PrivacyTier;\n setPrivacyTier: (v: PrivacyTier) => void;\n webhookTestState: \"idle\" | \"running\" | \"ok\" | \"fail\";\n testWebhook: () => void;\n}\n\n/**\n * v0.8 preview sections. Wrapped in a `pointer-events-none + opacity-60`\n * group so clicks/keystrokes don't escape; the YAML view exposes the\n * planned schema for users who want to peek.\n */\nexport function PreviewSections(p: PreviewSectionsProps) {\n return (\n <div\n className=\"mt-2 select-none opacity-60 [&_*]:pointer-events-none\"\n aria-disabled=\"true\"\n >\n <Section\n icon={<Activity className=\"h-4 w-4\" />}\n title=\"Concurrency\"\n subtitle=\"How many chats Chorus runs in parallel. Overflow waits in a queue.\"\n >\n <div className=\"flex items-center gap-6\">\n <div className=\"flex-1\">\n <input\n type=\"range\"\n min={1}\n max={10}\n step={1}\n value={p.maxConcurrent}\n onChange={(e) => p.setMaxConcurrent(parseInt(e.target.value, 10))}\n disabled\n className=\"w-full accent-primary\"\n />\n <div className=\"mt-1.5 flex justify-between text-[10px] font-mono text-muted-foreground\">\n <span>1</span>\n <span>5</span>\n <span>10</span>\n </div>\n </div>\n <div className=\"rounded-md border border-border bg-card px-4 py-2 font-mono text-sm\">\n {p.maxConcurrent} concurrent\n </div>\n </div>\n <p className=\"mt-3 text-xs text-muted-foreground\">\n Each chat reserves one tmux session + {p.maxConcurrent * 3} reviewer\n panes. Above this limit new chats land in a FIFO queue.\n </p>\n </Section>\n\n <Section\n icon={<FolderLock className=\"h-4 w-4\" />}\n title=\"Per-tool auto-approve\"\n subtitle=\"Drivers write code; reviewers don't. Defaults reflect that. Click any chip to cycle auto / ask / block.\"\n >\n <div className=\"grid grid-cols-[1fr_120px_120px] gap-3 border-b border-border pb-2 text-[10px] font-medium uppercase tracking-wider text-muted-foreground\">\n <span>Tool</span>\n <span className=\"flex items-center justify-end gap-1.5\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-amber-400\" />\n Driver\n </span>\n <span className=\"flex items-center justify-end gap-1.5\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-blue-400\" />\n Reviewer\n </span>\n </div>\n\n <div className=\"mt-1 divide-y divide-border opacity-70\">\n {TOOLS.map((tool) => (\n <div\n key={tool.id}\n className=\"grid grid-cols-[1fr_120px_120px] items-center gap-3 py-2.5\"\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-foreground\">{tool.name}</span>\n <span className=\"text-[11px] text-muted-foreground\">\n {tool.description}\n </span>\n </div>\n <PolicyChip\n policy={p.driverPolicies[tool.id]}\n onCycle={() => p.cyclePolicy(\"driver\", tool.id)}\n role=\"driver\"\n />\n <PolicyChip\n policy={p.reviewerPolicies[tool.id]}\n onCycle={() => p.cyclePolicy(\"reviewer\", tool.id)}\n role=\"reviewer\"\n />\n </div>\n ))}\n </div>\n\n <p className=\"mt-3 flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/5 px-3 py-2 text-xs text-amber-100\">\n <AlertTriangle className=\"mt-0.5 h-3.5 w-3.5 shrink-0 text-amber-400\" />\n <span>\n <span className=\"font-semibold\">When wired:</span>{\" \"}\n <code className=\"rounded bg-amber-400/10 px-1 font-mono text-amber-200\">\n ask\n </code>{\" \"}\n prompts will appear as cards in the chat — you click{\" \"}\n <span className=\"font-semibold\">Approve</span> /{\" \"}\n <span className=\"font-semibold\">Deny</span> instead of the agent\n stalling.\n </span>\n </p>\n </Section>\n\n <Section\n icon={<FolderLock className=\"h-4 w-4\" />}\n title=\"Working directories\"\n subtitle=\"Each tmux session is started inside one of these paths. Writes outside are blocked.\"\n >\n <div className=\"flex flex-wrap gap-2\">\n {p.allowedDirs.map((d) => (\n <span\n key={d}\n className=\"group inline-flex items-center gap-1.5 rounded-md border border-border bg-card px-2.5 py-1 font-mono text-[11px] text-foreground\"\n >\n {d}\n <button\n type=\"button\"\n onClick={() =>\n p.setAllowedDirs(p.allowedDirs.filter((x) => x !== d))\n }\n className=\"text-muted-foreground/50 transition hover:text-rose-400\"\n aria-label={`Remove ${d}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n ))}\n </div>\n <div className=\"mt-3 flex gap-2\">\n <input\n type=\"text\"\n value={p.newDir}\n onChange={(e) => p.setNewDir(e.target.value)}\n onKeyDown={(e) => e.key === \"Enter\" && p.addDir()}\n placeholder=\"~/code/another-project\"\n className=\"flex-1 rounded-md border border-border bg-card px-3 py-1.5 font-mono text-xs text-foreground placeholder:text-muted-foreground/60 focus:border-foreground/30 focus:outline-none\"\n />\n <button\n type=\"button\"\n onClick={p.addDir}\n className=\"flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition hover:bg-primary/90\"\n >\n <Plus className=\"h-3.5 w-3.5\" />\n Add path\n </button>\n </div>\n </Section>\n\n <Section\n icon={<Sliders className=\"h-4 w-4\" />}\n title=\"Template defaults\"\n subtitle=\"Applied to new templates and one-off chats. Per-template values override these.\"\n >\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <Field label=\"Default driver\">\n <select\n value={p.defaultDriver}\n onChange={(e) => p.setDefaultDriver(e.target.value)}\n className=\"w-full rounded-md border border-border bg-card px-3 py-2 text-sm text-foreground focus:border-foreground/30 focus:outline-none\"\n >\n <option value=\"claude-code\">claude-code</option>\n <option value=\"cursor\">cursor</option>\n <option value=\"codex-cli\">codex-cli</option>\n <option value=\"windsurf\">windsurf</option>\n <option value=\"external\">external (ask each run)</option>\n </select>\n </Field>\n <Field label=\"Default agreement threshold\">\n <select\n value={p.defaultThreshold}\n onChange={(e) => p.setDefaultThreshold(e.target.value)}\n className=\"w-full rounded-md border border-border bg-card px-3 py-2 text-sm text-foreground focus:border-foreground/30 focus:outline-none\"\n >\n <option value=\"unanimous\">unanimous</option>\n <option value=\"majority\">majority</option>\n <option value=\"any\">any</option>\n </select>\n </Field>\n <Field label=\"Default cost cap (USD per chat)\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-mono text-sm text-muted-foreground\">$</span>\n <input\n type=\"number\"\n step=\"0.10\"\n min={0}\n value={p.defaultCostCap}\n onChange={(e) => p.setDefaultCostCap(e.target.value)}\n className=\"w-full rounded-md border border-border bg-card px-3 py-2 font-mono text-sm text-foreground focus:border-foreground/30 focus:outline-none\"\n />\n </div>\n </Field>\n <Field label=\"On model error\">\n <select\n defaultValue=\"fallback\"\n className=\"w-full rounded-md border border-border bg-card px-3 py-2 text-sm text-foreground focus:border-foreground/30 focus:outline-none\"\n >\n <option value=\"fallback\">try next fallback model</option>\n <option value=\"fail\">mark chat failed</option>\n <option value=\"ask-user\">surface to me</option>\n </select>\n </Field>\n </div>\n </Section>\n\n <Section\n icon={<Shield className=\"h-4 w-4\" />}\n title=\"Privacy & data path\"\n subtitle=\"How prompts and code reach each LLM. Affects what leaves your machine.\"\n >\n <div className=\"space-y-2\">\n <PrivacyTierOption\n current={p.privacyTier}\n kind=\"local\"\n onSelect={() => p.setPrivacyTier(\"local\")}\n icon={<Monitor className=\"h-4 w-4\" />}\n title=\"Local-only (BYO CLIs)\"\n tagline=\"Strictest\"\n features={[\n \"Daemon runs on your machine; CLIs run on your machine.\",\n \"Prompts go directly from your machine to each provider.\",\n \"Chorus sees nothing — not even chat IDs.\",\n ]}\n tradeoff=\"No cloud dashboard, no team sharing, no fallback when a CLI is down.\"\n />\n <PrivacyTierOption\n current={p.privacyTier}\n kind=\"proxied\"\n onSelect={() => p.setPrivacyTier(\"proxied\")}\n icon={<Server className=\"h-4 w-4\" />}\n title=\"Proxied credits\"\n tagline=\"Recommended for credits\"\n features={[\n \"Stateless edge proxy: prompts transit, never persist.\",\n \"Stripe-pattern: same payload-handling discipline.\",\n \"Used only when you spend credits to try a model you don't have.\",\n ]}\n tradeoff=\"One extra hop between you and the provider.\"\n />\n <PrivacyTierOption\n current={p.privacyTier}\n kind=\"cloud\"\n onSelect={() => p.setPrivacyTier(\"cloud\")}\n icon={<Cloud className=\"h-4 w-4\" />}\n title=\"Cloud workspace\"\n tagline=\"Team / multi-machine\"\n features={[\n \"Code is cloned into Chorus's cloud workspace.\",\n \"Transcripts + verdicts kept for audit & retro.\",\n \"Encrypted at rest; SOC 2 in progress.\",\n ]}\n tradeoff=\"Your code lives on our infra. Read the privacy whitepaper before flipping this on.\"\n />\n </div>\n </Section>\n\n <Section\n icon={<Webhook className=\"h-4 w-4\" />}\n title=\"Notifications & MCP\"\n subtitle=\"How outer orchestrators (your main Claude / Cursor session) get pinged when a chat finishes or blocks.\"\n >\n <div className=\"space-y-4\">\n <button\n type=\"button\"\n onClick={() => p.setMcpEnabled(!p.mcpEnabled)}\n className=\"flex w-full items-center justify-between rounded-md border border-border bg-card/50 px-3 py-3 text-left transition hover:border-foreground/20\"\n >\n <div className=\"flex items-start gap-3\">\n <Workflow className=\"mt-0.5 h-4 w-4 text-primary\" />\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-foreground\">\n Chorus MCP server\n </span>\n <span className=\"text-[11px] text-muted-foreground\">\n Exposes <span className=\"font-mono\">mm.create_chat</span>,{\" \"}\n <span className=\"font-mono\">mm.update_settings</span>,{\" \"}\n <span className=\"font-mono\">mm.create_template</span> and 9\n other tools. Outer Claude / Cursor / Codex can configure\n Chorus for you.\n </span>\n </div>\n </div>\n <span\n className={`flex h-5 w-9 items-center rounded-full border p-0.5 transition ${\n p.mcpEnabled\n ? \"border-emerald-500/40 bg-emerald-500/20\"\n : \"border-border bg-card\"\n }`}\n >\n <span\n className={`h-3.5 w-3.5 rounded-full transition-transform ${\n p.mcpEnabled\n ? \"translate-x-4 bg-emerald-400\"\n : \"bg-muted-foreground/50\"\n }`}\n />\n </span>\n </button>\n\n <Field label=\"Webhook URL (optional)\">\n <div className=\"flex gap-2\">\n <input\n type=\"url\"\n value={p.webhookUrl}\n onChange={(e) => p.setWebhookUrl(e.target.value)}\n placeholder=\"https://hooks.example.com/chorus\"\n className=\"flex-1 rounded-md border border-border bg-card px-3 py-2 font-mono text-xs text-foreground placeholder:text-muted-foreground/60 focus:border-foreground/30 focus:outline-none\"\n />\n <button\n type=\"button\"\n onClick={p.testWebhook}\n disabled={!p.webhookUrl || p.webhookTestState === \"running\"}\n className={`flex items-center gap-1.5 rounded-md border px-3 py-2 text-xs font-medium transition ${\n p.webhookTestState === \"ok\"\n ? \"border-emerald-500/30 bg-emerald-500/10 text-emerald-300\"\n : p.webhookTestState === \"fail\"\n ? \"border-rose-500/30 bg-rose-500/10 text-rose-300\"\n : \"border-border bg-card text-muted-foreground hover:text-foreground\"\n } disabled:cursor-not-allowed disabled:opacity-50`}\n >\n {p.webhookTestState === \"running\" ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : p.webhookTestState === \"ok\" ? (\n <Check className=\"h-3.5 w-3.5\" />\n ) : p.webhookTestState === \"fail\" ? (\n <AlertTriangle className=\"h-3.5 w-3.5\" />\n ) : (\n <Send className=\"h-3.5 w-3.5\" />\n )}\n {p.webhookTestState === \"ok\"\n ? \"204 OK\"\n : p.webhookTestState === \"fail\"\n ? \"Failed\"\n : p.webhookTestState === \"running\"\n ? \"Posting…\"\n : \"Test\"}\n </button>\n </div>\n <p className=\"mt-1.5 text-[11px] text-muted-foreground\">\n Posted on chat finished / blocked / errored. Payload includes\n chat_id, status, synthesis.\n </p>\n </Field>\n </div>\n </Section>\n </div>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Eye } from \"lucide-react\";\nimport {\n getTelemetryStatus,\n updateTelemetryEnabled,\n type TelemetryStatus,\n} from \"@/lib/api/settings\";\nimport { Section } from \"./primitives\";\n\n/**\n * Anonymous telemetry opt-out. Three independent paths disable telemetry\n * (env var, touch-file, settings DB); this section drives the third while\n * surfacing the other two so a toggle that secretly does nothing is never\n * shown — env / file always trump the toggle and we say so inline.\n */\nexport function TelemetrySection() {\n const [status, setStatus] = useState<TelemetryStatus | null>(null);\n const [pending, setPending] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n getTelemetryStatus()\n .then((res) => {\n if (!cancelled) setStatus(res);\n })\n .catch((err) => {\n if (cancelled) return;\n setError(err instanceof Error ? err.message : \"Could not load telemetry status.\");\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n const overridden = status?.envOverride || status?.fileOverride;\n\n const onToggle = (next: boolean): void => {\n if (pending || !status || overridden) return;\n setPending(true);\n setError(null);\n updateTelemetryEnabled(next)\n .then(setStatus)\n .catch((err) => {\n setError(err instanceof Error ? err.message : \"Save failed.\");\n })\n .finally(() => setPending(false));\n };\n\n return (\n <Section\n icon={<Eye className=\"h-4 w-4\" />}\n title=\"Anonymous telemetry\"\n subtitle=\"A small heartbeat sent to chorus.codes once per boot + every 24h. Helps us see what versions / OSes are in the wild. No code, no prompts, no chat content.\"\n >\n {error && (\n <div className=\"mb-3 rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive\">\n {error}\n </div>\n )}\n\n <div className=\"rounded-lg border border-border bg-card p-3\">\n <label className=\"flex items-start gap-3\">\n <input\n type=\"checkbox\"\n checked={status?.enabled ?? false}\n onChange={(e) => onToggle(e.target.checked)}\n disabled={pending || !status || overridden}\n className=\"mt-1 h-4 w-4 cursor-pointer accent-primary disabled:cursor-not-allowed\"\n />\n <span className=\"flex-1\">\n <span className=\"block text-sm font-medium\">\n Send anonymous heartbeat\n {pending && (\n <span className=\"ml-2 rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wider text-primary\">\n saving…\n </span>\n )}\n </span>\n <span className=\"mt-1 block text-xs leading-relaxed text-muted-foreground\">\n Sends: install UUID, chorus version, OS, arch, node major,\n daemon uptime, count of chats in the last 24h. That's it.\n </span>\n </span>\n </label>\n </div>\n\n {overridden && (\n <div className=\"mt-3 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs text-amber-100\">\n Telemetry is currently disabled by{\" \"}\n {status?.envOverride && (\n <code className=\"rounded bg-muted px-1\">CHORUS_TELEMETRY</code>\n )}\n {status?.envOverride && status?.fileOverride && \" and \"}\n {status?.fileOverride && (\n <code className=\"rounded bg-muted px-1\">~/.chorus/no-telemetry</code>\n )}\n . The toggle above won't take effect until you remove the override.\n </div>\n )}\n\n <details className=\"mt-3 text-xs text-muted-foreground\">\n <summary className=\"cursor-pointer hover:text-foreground\">\n Other ways to opt out\n </summary>\n <ul className=\"mt-2 list-inside list-disc space-y-1 leading-relaxed\">\n <li>\n Set <code className=\"rounded bg-muted px-1\">CHORUS_TELEMETRY=0</code>{\" \"}\n in your shell — also accepts <code>false</code>, <code>no</code>,{\" \"}\n <code>off</code>.\n </li>\n <li>\n <code className=\"rounded bg-muted px-1\">touch ~/.chorus/no-telemetry</code>{\" \"}\n (cargo / brew convention).\n </li>\n <li>\n Reset your install ID:{\" \"}\n <code className=\"rounded bg-muted px-1\">rm ~/.chorus/install-id</code>\n {\" \"}— a fresh UUID is minted on the next heartbeat.\n </li>\n </ul>\n {status?.endpoint && (\n <p className=\"mt-2 leading-relaxed\">\n Endpoint: <code className=\"rounded bg-muted px-1\">{status.endpoint}</code>\n </p>\n )}\n </details>\n </Section>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Terminal } from \"lucide-react\";\nimport {\n getTransport,\n updateTransport,\n type Transport,\n} from \"@/lib/api/settings\";\nimport { Section } from \"./primitives\";\n\n/**\n * Run-mode toggle: subprocess (headless) vs persistent tmux sessions.\n * Tmux is a first-class option, no deprecation timeline — its value is\n * letting users attach to a live agent and take over mid-run for debug\n * or handoff. Headless is the lower-RAM default.\n */\nexport function TransportSection() {\n const [current, setCurrent] = useState<Transport | null>(null);\n const [descriptions, setDescriptions] = useState<\n Record<Transport, { label: string; description: string }> | undefined\n >(undefined);\n const [tmuxAvailable, setTmuxAvailable] = useState<boolean>(true);\n const [pending, setPending] = useState<Transport | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n getTransport()\n .then((res) => {\n if (cancelled) return;\n setCurrent(res.transport);\n setDescriptions(res.descriptions);\n setTmuxAvailable(res.tmuxAvailable !== false);\n })\n .catch((err) => {\n if (cancelled) return;\n setError(err instanceof Error ? err.message : \"Could not load transport setting.\");\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n const onPick = (t: Transport): void => {\n if (current === t || pending) return;\n setPending(t);\n setError(null);\n updateTransport({ transport: t })\n .then((res) => {\n setCurrent(res.transport);\n })\n .catch((err) => {\n setError(err instanceof Error ? err.message : \"Save failed.\");\n })\n .finally(() => setPending(null));\n };\n\n return (\n <Section\n id=\"transport\"\n icon={<Terminal className=\"h-4 w-4\" />}\n title=\"Run mode (headless / tmux)\"\n subtitle=\"How chorus runs each CLI. Default is headless (faster, lower RAM). Switch to tmux if you want to attach to a live voice and take over mid-run (debug + handoff).\"\n >\n {error && (\n <div className=\"mb-3 rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive\">\n {error}\n </div>\n )}\n <div className=\"grid gap-2 sm:grid-cols-2\">\n {([\"headless\", \"tmux\"] as const).map((t) => {\n const active = current === t;\n const isPending = pending === t;\n const meta = descriptions?.[t];\n // Disable tmux on hosts where the binary isn't reachable — greyed\n // state + inline install hint beats a 400 on click.\n const unavailable = t === \"tmux\" && !tmuxAvailable;\n return (\n <button\n key={t}\n type=\"button\"\n onClick={() => onPick(t)}\n disabled={pending !== null || current === null || unavailable}\n title={\n unavailable\n ? \"tmux is not installed on this host. Install it (brew/apt/dnf) then restart the daemon.\"\n : undefined\n }\n className={`flex flex-col gap-1 rounded-lg border p-3 text-left transition ${\n active\n ? \"border-primary/50 bg-primary/10\"\n : \"border-border bg-card hover:border-muted-foreground/30\"\n } ${pending !== null || unavailable ? \"opacity-60 cursor-not-allowed\" : \"\"}`}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">\n {meta?.label ?? (t === \"headless\" ? \"Headless\" : \"Tmux\")}\n </span>\n {active ? (\n <span className=\"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wider text-primary\">\n {isPending ? \"saving…\" : \"active\"}\n </span>\n ) : unavailable ? (\n <span className=\"rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wider text-muted-foreground\">\n not installed\n </span>\n ) : null}\n </div>\n <p className=\"text-xs leading-relaxed text-muted-foreground\">\n {meta?.description ??\n (t === \"headless\"\n ? \"Subprocess per call. Lower RAM, faster cold start, no permission dialogs.\"\n : \"Persistent terminal sessions you can attach to for visual debug.\")}\n </p>\n {unavailable && (\n <p className=\"mt-1 text-[10px] leading-relaxed text-amber-300/80\">\n Install: macOS <code>brew install tmux</code> · Ubuntu <code>apt install tmux</code> · Fedora <code>dnf install tmux</code>. Restart the daemon afterwards.\n </p>\n )}\n </button>\n );\n })}\n </div>\n <p className=\"mt-3 text-[11px] text-muted-foreground\">\n Tip: set <code className=\"rounded bg-muted px-1\">CHORUS_TRANSPORT=tmux</code> in\n your environment to override per-shell without changing this setting.\n </p>\n </Section>\n );\n}\n","\"use client\";\n\nimport { Clock, Shield } from \"lucide-react\";\nimport { BillingModeSection } from \"./billing-section\";\nimport { PreviewSections, type PreviewSectionsProps } from \"./preview-sections\";\nimport { Section } from \"./primitives\";\nimport { TelemetrySection } from \"./telemetry-section\";\nimport { TransportSection } from \"./transport-section\";\n\nexport function FormView(props: PreviewSectionsProps) {\n return (\n <>\n <Section\n icon={<Shield className=\"h-4 w-4\" />}\n title=\"Sandbox & first-call permissions\"\n subtitle=\"What can chorus-spawned reviewers do on this machine? Pick a profile, toggle prompt auto-approval, choose whether to allow outbound network.\"\n >\n <a\n href=\"/settings/permissions\"\n className=\"inline-flex items-center gap-2 rounded-md border border-primary/40 bg-primary/5 px-3 py-2 text-sm font-medium text-primary transition hover:bg-primary/10\"\n >\n Open Permissions page\n <span aria-hidden>→</span>\n </a>\n </Section>\n\n <TransportSection />\n <BillingModeSection />\n <TelemetrySection />\n\n <div\n className=\"mt-12 flex items-start gap-2 rounded-lg border border-amber-500/40 bg-amber-500/10 px-4 py-3 text-sm text-amber-100\"\n role=\"note\"\n >\n <Clock className=\"mt-0.5 h-4 w-4 shrink-0 text-amber-400\" />\n <div>\n <p className=\"font-semibold\">Coming in v0.8 — preview only</p>\n <p className=\"mt-1 text-xs leading-relaxed text-amber-100/80\">\n The sections below show planned controls. They're not wired\n to the daemon yet — interaction is disabled. The YAML toggle at\n the top of the page already exposes the schema if you're\n curious.\n </p>\n </div>\n </div>\n\n <PreviewSections {...props} />\n </>\n );\n}\n","\"use client\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Card } from \"@/components/ui/card\";\nimport { Code2, Eye } from \"lucide-react\";\nimport { TOOLS, type AutoApprove } from \"./primitives\";\n\nexport interface YamlInputs {\n maxConcurrent: number;\n driverPolicies: Record<string, AutoApprove>;\n reviewerPolicies: Record<string, AutoApprove>;\n allowedDirs: string[];\n defaultDriver: string;\n defaultCostCap: string;\n defaultThreshold: string;\n mcpEnabled: boolean;\n webhookUrl: string;\n}\n\nexport function buildYaml(s: YamlInputs): string {\n const dirs = s.allowedDirs.map((d) => ` - ${d}`).join(\"\\n\");\n const driverP = TOOLS.map(\n (t) => ` ${t.id.replace(\"-\", \"_\")}: ${s.driverPolicies[t.id]}`,\n ).join(\"\\n\");\n const reviewerP = TOOLS.map(\n (t) => ` ${t.id.replace(\"-\", \"_\")}: ${s.reviewerPolicies[t.id]}`,\n ).join(\"\\n\");\n\n return `# Chorus workspace settings\n# Edit here, or via the Form tab, or via mm.update_settings from any MCP client.\n\nconcurrency:\n max_concurrent_chats: ${s.maxConcurrent}\n\npermissions:\n driver:\n${driverP}\n reviewer:\n${reviewerP}\n\nallowed_directories:\n${dirs}\n\ndefaults:\n driver: ${s.defaultDriver}\n agreement_threshold: ${s.defaultThreshold}\n cost_cap_usd: ${s.defaultCostCap}\n on_error: fallback\n\nnotifications:\n mcp_enabled: ${s.mcpEnabled}\n webhook_url: ${s.webhookUrl ? `\"${s.webhookUrl}\"` : '\"\"'}\n`;\n}\n\nexport function YamlEditor({ yaml }: { yaml: string }) {\n return (\n <Card className=\"overflow-hidden bg-card p-0\">\n <div className=\"flex items-center justify-between border-b border-border px-4 py-2.5\">\n <div className=\"flex items-center gap-2\">\n <Code2 className=\"h-3.5 w-3.5 text-primary\" />\n <span className=\"text-[11px] font-medium uppercase tracking-wider text-foreground\">\n settings.yaml\n </span>\n <Badge\n variant=\"outline\"\n className=\"border-border font-mono text-[10px]\"\n >\n ~/.chorus/settings.yaml\n </Badge>\n </div>\n <div className=\"flex items-center gap-2 text-[10px] text-muted-foreground\">\n <Eye className=\"h-3 w-3\" />\n live-rendered from form state\n </div>\n </div>\n <textarea\n value={yaml}\n readOnly\n spellCheck={false}\n className=\"block min-h-[520px] w-full resize-none border-0 bg-background px-5 py-4 font-mono text-[12px] leading-relaxed text-foreground/90 focus:outline-none\"\n />\n <div className=\"flex items-center justify-between border-t border-border px-4 py-2.5 text-[11px] text-muted-foreground\">\n <span>\n Same shape that{\" \"}\n <span className=\"font-mono text-foreground/80\">\n mm.update_settings\n </span>{\" \"}\n accepts as a patch.\n </span>\n <button\n type=\"button\"\n className=\"rounded-md border border-border bg-card px-2 py-1 text-[10px] text-muted-foreground transition hover:text-foreground\"\n >\n Copy\n </button>\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport { useMemo, useState } from \"react\";\nimport { Code2, Wrench } from \"lucide-react\";\nimport { AppShell } from \"@/components/app-shell\";\nimport { PageHeader } from \"@/components/page-header\";\nimport { FormView } from \"./form-view\";\nimport {\n cyclePolicy as cyclePolicyValue,\n DEFAULT_DRIVER,\n DEFAULT_REVIEWER,\n type AutoApprove,\n type PrivacyTier,\n type Role,\n} from \"./primitives\";\nimport { buildYaml, YamlEditor } from \"./yaml-view\";\n\nexport default function SettingsPage() {\n const [view, setView] = useState<\"form\" | \"yaml\">(\"form\");\n\n const [maxConcurrent, setMaxConcurrent] = useState(3);\n const [driverPolicies, setDriverPolicies] =\n useState<Record<string, AutoApprove>>(DEFAULT_DRIVER);\n const [reviewerPolicies, setReviewerPolicies] =\n useState<Record<string, AutoApprove>>(DEFAULT_REVIEWER);\n const [allowedDirs, setAllowedDirs] = useState<string[]>([\n \"~/dev\",\n \"~/work\",\n \"/tmp/chorus-sandbox\",\n ]);\n const [newDir, setNewDir] = useState(\"\");\n const [defaultDriver, setDefaultDriver] = useState(\"claude-code\");\n const [defaultCostCap, setDefaultCostCap] = useState(\"2.00\");\n const [defaultThreshold, setDefaultThreshold] = useState(\"unanimous\");\n const [webhookUrl, setWebhookUrl] = useState(\"\");\n const [mcpEnabled, setMcpEnabled] = useState(true);\n const [privacyTier, setPrivacyTier] = useState<PrivacyTier>(\"local\");\n const [webhookTestState, setWebhookTestState] = useState<\n \"idle\" | \"running\" | \"ok\" | \"fail\"\n >(\"idle\");\n\n function testWebhook() {\n if (webhookTestState === \"running\") return;\n setWebhookTestState(\"running\");\n setTimeout(() => {\n setWebhookTestState(webhookUrl.startsWith(\"https://\") ? \"ok\" : \"fail\");\n setTimeout(() => setWebhookTestState(\"idle\"), 2200);\n }, 1100);\n }\n\n function cyclePolicy(role: Role, toolId: string) {\n if (role === \"driver\") {\n setDriverPolicies((prev) => ({\n ...prev,\n [toolId]: cyclePolicyValue(prev[toolId]),\n }));\n } else {\n setReviewerPolicies((prev) => ({\n ...prev,\n [toolId]: cyclePolicyValue(prev[toolId]),\n }));\n }\n }\n\n function addDir() {\n const d = newDir.trim();\n if (!d || allowedDirs.includes(d)) return;\n setAllowedDirs((prev) => [...prev, d]);\n setNewDir(\"\");\n }\n\n const yaml = useMemo(\n () =>\n buildYaml({\n maxConcurrent,\n driverPolicies,\n reviewerPolicies,\n allowedDirs,\n defaultDriver,\n defaultCostCap,\n defaultThreshold,\n mcpEnabled,\n webhookUrl,\n }),\n [\n maxConcurrent,\n driverPolicies,\n reviewerPolicies,\n allowedDirs,\n defaultDriver,\n defaultCostCap,\n defaultThreshold,\n mcpEnabled,\n webhookUrl,\n ],\n );\n\n return (\n <AppShell>\n <div className=\"mx-auto w-full max-w-6xl px-4 py-6 sm:px-6 sm:py-8 md:px-8 md:py-10\">\n <PageHeader\n eyebrow=\"Settings\"\n title=\"Workspace\"\n subtitle=\"Defaults applied to every chat. Templates can override these per-run. The MCP server can read & patch this config — your main Claude can configure Chorus for you.\"\n action={\n <div className=\"flex rounded-md border border-border bg-card p-0.5\">\n <button\n type=\"button\"\n onClick={() => setView(\"form\")}\n className={`flex items-center gap-1.5 rounded-sm px-3 py-1.5 text-xs font-medium transition ${\n view === \"form\"\n ? \"bg-primary/15 text-foreground\"\n : \"text-muted-foreground hover:text-foreground\"\n }`}\n >\n <Wrench className=\"h-3.5 w-3.5\" />\n Form\n </button>\n <button\n type=\"button\"\n onClick={() => setView(\"yaml\")}\n className={`flex items-center gap-1.5 rounded-sm px-3 py-1.5 text-xs font-medium transition ${\n view === \"yaml\"\n ? \"bg-primary/15 text-foreground\"\n : \"text-muted-foreground hover:text-foreground\"\n }`}\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n YAML\n </button>\n </div>\n }\n />\n\n {view === \"yaml\" ? (\n <YamlEditor yaml={yaml} />\n ) : (\n <FormView\n maxConcurrent={maxConcurrent}\n setMaxConcurrent={setMaxConcurrent}\n driverPolicies={driverPolicies}\n reviewerPolicies={reviewerPolicies}\n cyclePolicy={cyclePolicy}\n allowedDirs={allowedDirs}\n setAllowedDirs={setAllowedDirs}\n newDir={newDir}\n setNewDir={setNewDir}\n addDir={addDir}\n defaultDriver={defaultDriver}\n setDefaultDriver={setDefaultDriver}\n defaultCostCap={defaultCostCap}\n setDefaultCostCap={setDefaultCostCap}\n defaultThreshold={defaultThreshold}\n setDefaultThreshold={setDefaultThreshold}\n webhookUrl={webhookUrl}\n setWebhookUrl={setWebhookUrl}\n mcpEnabled={mcpEnabled}\n setMcpEnabled={setMcpEnabled}\n privacyTier={privacyTier}\n setPrivacyTier={setPrivacyTier}\n webhookTestState={webhookTestState}\n testWebhook={testWebhook}\n />\n )}\n </div>\n </AppShell>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19h8', key: 'baeox8' }],\n ['path', { d: 'm4 17 6-6-6-6', key: '1yngyt' }],\n];\n\n/**\n * @component @name Terminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Terminal = createLucideIcon('terminal', __iconNode);\n\nexport default Terminal;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '20', height: '8', x: '2', y: '2', rx: '2', ry: '2', key: 'ngkwjq' }],\n ['rect', { width: '20', height: '8', x: '2', y: '14', rx: '2', ry: '2', key: 'iecqi9' }],\n ['line', { x1: '6', x2: '6.01', y1: '6', y2: '6', key: '16zg32' }],\n ['line', { x1: '6', x2: '6.01', y1: '18', y2: '18', key: 'nzw8ys' }],\n];\n\n/**\n * @component @name Server\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/server\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Server = createLucideIcon('server', __iconNode);\n\nexport default Server;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '8', x: '3', y: '3', rx: '2', key: 'by2w9f' }],\n ['path', { d: 'M7 11v4a2 2 0 0 0 2 2h4', key: 'xkn7yn' }],\n ['rect', { width: '8', height: '8', x: '13', y: '13', rx: '2', key: '1cgmvn' }],\n];\n\n/**\n * @component @name Workflow\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/workflow\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Workflow = createLucideIcon('workflow', __iconNode);\n\nexport default Workflow;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '20', height: '14', x: '2', y: '5', rx: '2', key: 'ynyp8z' }],\n ['line', { x1: '2', x2: '22', y1: '10', y2: '10', key: '1b3vmo' }],\n];\n\n/**\n * @component @name CreditCard\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/credit-card\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CreditCard = createLucideIcon('credit-card', __iconNode);\n\nexport default CreditCard;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '20', height: '14', x: '2', y: '3', rx: '2', key: '48i651' }],\n ['line', { x1: '8', x2: '16', y1: '21', y2: '21', key: '1svkeh' }],\n ['line', { x1: '12', x2: '12', y1: '17', y2: '21', key: 'vw1qmm' }],\n];\n\n/**\n * @component @name Monitor\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/monitor\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Monitor = createLucideIcon('monitor', __iconNode);\n\nexport default Monitor;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z', key: 'p7xjir' }],\n];\n\n/**\n * @component @name Cloud\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/cloud\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Cloud = createLucideIcon('cloud', __iconNode);\n\nexport default Cloud;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z',\n key: '1ffxy3',\n },\n ],\n ['path', { d: 'm21.854 2.147-10.94 10.939', key: '12cjpa' }],\n];\n\n/**\n * @component @name Send\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/send\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Send = createLucideIcon('send', __iconNode);\n\nexport default Send;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2',\n key: 'q3hayz',\n },\n ],\n ['path', { d: 'm6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06', key: '1go1hn' }],\n ['path', { d: 'm12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8', key: 'qlwsc0' }],\n];\n\n/**\n * @component @name Webhook\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/webhook\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Webhook = createLucideIcon('webhook', __iconNode);\n\nexport default Webhook;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z',\n key: '1ngwbx',\n },\n ],\n];\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('wrench', __iconNode);\n\nexport default Wrench;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2',\n key: '169zse',\n },\n ],\n];\n\n/**\n * @component @name Activity\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/activity\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Activity = createLucideIcon('activity', __iconNode);\n\nexport default Activity;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n"],"names":["__iconNode","Wrench"],"mappings":"wDOEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,yBSqBe,CAAA,EAAA,EAAA,OAAA,EAAA,0OTpBf,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OFHA,EAAA,EAAA,CAAA,CAAA,gYJEA,IAAA,EAAA,EAAA,CAAA,CAAA,ODFA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAYO,IAAM,EAAmB,CAC9B,CAAE,GAAI,OAAQ,KAAM,aAAc,YAAa,4BAA6B,EAC5E,CAAE,GAAI,OAAQC,KAAM,gBAAiB,YAAaD,yBAA0B,EAC5E,CAAE,GAAI,QAAS,KAAM,cAAe,YAAa,iCAAkC,EACnF,CAAE,GAAI,OAAQ,KAAM,eAAgB,YAAa,6BAA8B,EAC/E,CAAE,GAAI,MAAO,KAAM,iBAAkB,YAAa,8BAA+B,EACjF,CAAE,GAAI,cAAe,KAAM,6BAA8B,YAAa,0CAA2C,EAClH,CAEY,EAA8C,CACzD,KAAM,OACN,KAAM,OACN,MAAO,MACP,KAAM,MACN,IAAK,MACL,cAAe,OACjB,EAGa,EAAgD,CAC3D,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,MACN,IAAK,MACL,cAAe,OACjB,EAEM,EAA6C,CACjD,KAAM,2DACN,IAAK,qDACL,MAAO,iDACT,EAEO,SAAS,EAAY,CAAc,EACxC,MAAa,SAAN,EAAe,MAAc,QAAN,EAAc,QAAU,MACxD,CAEO,SAAS,EAAQ,IACtB,CAAE,MACF,CAAI,OACJ,CAAK,UACL,CAAQ,CACR,UAAQ,CAQT,EACC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,IAAI,CAAA,CAAC,GAAI,EAAI,UAAU,0CACtB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,wCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,+EACb,IAEH,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mBACb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,+CAAuC,IACrD,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,gDAAwC,UAGxD,IAGP,CAEO,SAAS,EAAM,OACpB,CAAK,UACL,CAAQ,CAIT,EACC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,+FACd,IAEF,IAGP,CAEO,SAAS,EAAW,QACzB,CAAM,SACN,CAAO,MACP,CAAI,CAKL,EACC,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,UAAW,CAAC,yHAAyH,EAAE,CAAa,CAAC,EAAO,CAAA,CAAE,CAC9J,MAAO,CAAA,EAAG,EAAK,cAAc,CAAC,UAE7B,GAGP,CAEO,SAAS,EAAkB,MAChC,CAAI,SACJ,CAAO,UACP,CAAQ,MACR,CAAI,OACJ,CAAK,SACL,CAAO,UACP,CAAQ,CACR,UAAQ,CAUT,EACC,IAAM,EAAa,IAAS,EAC5B,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,UAAW,CAAC,2EAA2E,EACrF,EACI,6FACA,sDAAA,CACJ,WAEF,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAW,CAAC,2DAA2D,EACrE,EAAa,6BAA+B,gCAAA,CAC5C,UAED,IAEH,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mBACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iDAAyC,IACzD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,QAAQ,UACR,UAAU,+CAET,OAGL,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,gEACX,EAAS,GAAG,CAAC,AAAC,GACb,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAW,UAAU,qCACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,gDACjB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,MAFA,MAMb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,4EACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,qDAChB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0CAAiC,eAAkB,IAClE,WAIN,GAAc,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,yCAGtC,CC1KO,SAAS,IACd,GAAM,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,MACrD,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,OAEtC,GACI,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,MACrD,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,YAElD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAI,GAAY,EAWhB,MAVA,CAAA,EAAA,EAAA,cAAA,AAAc,IACX,IAAI,CAAC,AAAC,IACD,IACJ,EAAW,EAAI,GADA,CACI,EACnB,EAAgB,EAAI,YAAY,EAClC,GACC,KAAK,CAAC,AAAC,IACF,GACJ,EAAS,MADM,OACS,MAAQ,EAAI,OAAO,CAAG,+BAChD,GACK,KACL,EAAY,EACd,CACF,EAAG,EAAE,EAeH,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,UAAU,YAC5B,MAAM,eACN,SAAS,gMAER,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,4GACZ,IAGL,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sBACX,CAAC,MAAO,eAAgB,QAAQ,CAAW,GAAG,CAAC,AAAC,IAChD,IAAM,EAAS,IAAY,EACrB,EAAY,IAAY,EACxB,EAAO,GAAc,CAAC,EAAE,CAC9B,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM,CA/BrB,OAAiB,IACrB,CADgB,IAAc,AAE9B,EAAS,IADE,EAEX,CAAA,EAAA,EAAA,iBAAA,AAAiB,EAAC,CAAE,KA4BY,CA5BN,AAAE,GACzB,IAAI,CAAC,AAAC,GAAQ,EAAW,EAAI,IAAI,GACjC,KAAK,CAAC,AAAC,IACN,EAAS,aAAe,MAAQ,EAAI,OAAO,CAAG,eAChD,GACC,OAAO,CAAC,IAAM,EAAW,SAwBlB,SAAsB,OAAZ,GAAgC,OAAZ,EAC9B,UAAW,CAAC,+DAA+D,EACzE,EACI,kCACA,yDACL,CAAC,EAAc,OAAZ,EAAmB,aAAe,GAAA,CAAI,WAE1C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8CACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,+BACb,GAAM,OAAS,IAEjB,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6GACb,EAAY,UAAY,cAI/B,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,yDACV,GAAM,aAAe,OArBnB,EAyBX,OAIR,iCgB9E8C,CDAJ,AEAA,AHZ1B,AEY8B,CFZ9B,ACY0B,AEAA,ADAI,CCAJ,ADAI,ADAJ,ADZ1B,CAAA,AEY8B,ACAJ,AFAA,CCAI,ADAJ,ADZ1B,AGY0B,uIDhB/B,CAAA,ACAA,AFAA,AFAA,ACAA,CEAA,ACAA,AJAA,ACAA,AHYL,AIZK,WdNX,IAAA,EAAA,EAAA,CAAA,CAAA,gBWgBc,CAAA,ADZD,AHAA,ACAA,CEAA,AFAA,AGYC,OAAA,EAAA,wFAdwE,GXFtF,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,qCUkB4C,CAAA,uCAhBO,CAAA,ADAA,AFAD,ACAD,AGAjC,CFAmC,ACAA,AFAF,AGAjC,mGDEW,CFAF,AGYX,AJZY,AGAC,CAAA,ACYb,AJZY,ACAD,GEAQ,GAAI,8BVJrC,IAAA,EAAA,EAAA,CAAA,CAAA,OYuBA,IAAM,EAAA,CAAA,EAAO,CAAA,CAAA,OAAA,EAAiB,CAAA,OAAQ,oMAdQ,CCA9B,ADA8B,CAAA,ACA9B,EDA8B,aLUxC,EAAA,CAAA,EAAS,CAAA,CAAA,OAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,4DAjBoC,4BACtD,CAAA,ADAD,AEAjB,ACAgB,ACAA,gBHAwB,GAAA,IAAS,GAAI,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,yCACrC,IAAK,UAAU,+CACR,CKAlD,AIAA,ADAA,AFAA,AJY0C,AFZQ,AOAlD,CPAkD,AQAlD,ADAA,AEAA,AJAA,AHYoD,AIZpD,CNAkD,AEYE,AIZpD,ADAA,AGAA,ADAA,AEAA,CJAA,ALAkD,ASAlD,ADAA,AFAA,ACAA,CDAA,AEAA,ADAA,AEAA,AJAA,ALAkD,CMAlD,ADAA,AEAA,AEAA,ATAkD,AQAlD,CCAA,AHAA,AEAA,AHAA,AEAA,APAkD,CSAlD,ADAA,AHAA,AEAA,ADAA,KbLT,IAAA,EAAA,EAAA,CAAA,CAAA,OawBA,CAAA,GAAM,EAAA,CAAA,EAAU,EAAA,OAAA,EAAA,iHAfb,QAAU,EAAA,4DAAgE,IAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,EACzF,OAAQ,CCYL,AEAA,AHZK,AAAE,CEYP,ADAA,AEAA,CAAA,yDHZoE,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,+DLRhD,MAAQ,IAAK,GAAA,IAAS,IAAK,CGApD,AJAoD,AEAH,ADAG,AEAH,mDFCjB,WAC9C,uDAAoE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,GRJhF,IAAA,EAAA,EAAA,CAAA,CAAA,OA4DO,SAAS,EAAgB,CAAuB,EACrD,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,UAAU,wDACV,gBAAc,iBAEd,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,UAAU,YAC1B,MAAM,cACN,SAAS,+EAET,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mBACb,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,QACL,IAAK,EACL,IAAK,GACL,KAAM,EACN,MAAO,EAAE,aAAa,CACtB,SAAU,AAAC,GAAM,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAE,KAC7D,QAAQ,CAAA,CAAA,EACR,UAAU,0BAEZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oFACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,MACN,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,MACN,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,aAGV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gFACZ,EAAE,aAAa,CAAC,oBAGrB,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,+CAAqC,yCACS,EAAlB,EAAE,aAAa,CAAK,0EAK/D,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,UAAU,YAC5B,MAAM,wBACN,SAAS,oHAET,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sJACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,SACN,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,kDACd,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0CAA0C,YAG5D,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,kDACd,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yCAAyC,iBAK7D,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,kDACZ,EAAM,GAAG,CAAC,AAAC,GACV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,UAAU,uEAEV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0BACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,mCAA2B,EAAK,IAAI,GACpD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6CACb,EAAK,WAAW,MAGrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,OAAQ,EAAE,cAAc,CAAC,EAAK,EAAE,CAAC,CACjC,QAAS,IAAM,EAAE,WAAW,CAAC,SAAU,EAAK,EAAE,EAC9C,KAAK,WAEP,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,OAAQ,EAAE,gBAAgB,CAAC,EAAK,EAAE,CAAC,CACnC,QAAS,IAAM,EAAE,WAAW,CAAC,WAAY,EAAK,EAAE,EAChD,KAAK,eAjBF,EAAK,EAAE,KAuBlB,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,8HACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAC,UAAU,+CACzB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yBAAgB,gBAAmB,IACnD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iEAAwD,QAEhE,IAAI,uDACyC,IACrD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yBAAgB,YAAc,KAAG,IACjD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yBAAgB,SAAW,2CAMjD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,UAAU,YAC5B,MAAM,sBACN,SAAS,gGAET,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gCACZ,EAAE,WAAW,CAAC,GAAG,CAAC,AAAC,GAClB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAEC,UAAU,6IAET,EACD,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,IACP,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,AAAC,GAAM,IAAM,IAErD,UAAU,0DACV,aAAY,CAAC,OAAO,EAAE,EAAA,CAAG,UAEzB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAC,CAAA,CAAC,UAAU,gBAZV,MAiBX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,4BACb,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,OACL,MAAO,EAAE,MAAM,CACf,SAAU,AAAC,GAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,EAC3C,UAAW,AAAC,GAAgB,UAAV,EAAE,GAAG,EAAgB,EAAE,MAAM,GAC/C,YAAY,yBACZ,UAAU,oLAEZ,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EAAE,MAAM,CACjB,UAAU,mJAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,gBAAgB,oBAMtC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,YACzB,MAAM,oBACN,SAAS,2FAET,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,MAAM,0BACX,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,MAAO,EAAE,aAAa,CACtB,SAAU,AAAC,GAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,KAAK,EAClD,UAAU,2IAEV,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,uBAAc,gBAC5B,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,kBAAS,WACvB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,qBAAY,cAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,oBAAW,aACzB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,oBAAW,iCAG7B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,MAAM,uCACX,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,MAAO,EAAE,gBAAgB,CACzB,SAAU,AAAC,GAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,KAAK,EACrD,UAAU,2IAEV,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,qBAAY,cAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,oBAAW,aACzB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,eAAM,aAGxB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,MAAM,2CACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,mDAA0C,MAC1D,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,SACL,KAAK,OACL,IAAK,EACL,MAAO,EAAE,cAAc,CACvB,SAAU,AAAC,GAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,KAAK,EACnD,UAAU,kJAIhB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,MAAM,0BACX,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,aAAa,WACb,UAAU,2IAEV,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,oBAAW,4BACzB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,gBAAO,qBACrB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,MAAM,oBAAW,4BAMjC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,UAAU,YACxB,MAAM,sBACN,SAAS,kFAET,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,QAAS,EAAE,WAAW,CACtB,KAAK,QACL,SAAU,IAAM,EAAE,cAAc,CAAC,SACjC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,UAAU,YACzB,MAAM,wBACN,QAAQ,YACR,SAAU,CACR,yDACA,0DACA,2CACD,CACD,SAAS,yEAEX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,QAAS,EAAE,WAAW,CACtB,KAAK,UACL,SAAU,IAAM,EAAE,cAAc,CAAC,WACjC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,UAAU,YACxB,MAAM,kBACN,QAAQ,0BACR,SAAU,CACR,wDACA,oDACA,kEACD,CACD,SAAS,gDAEX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,QAAS,EAAE,WAAW,CACtB,KAAK,QACL,SAAU,IAAM,EAAE,cAAc,CAAC,SACjC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,UAAU,YACvB,MAAM,kBACN,QAAQ,uBACR,SAAU,CACR,gDACA,iDACA,wCACD,CACD,SAAS,4FAKf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,UAAU,YACzB,MAAM,sBACN,SAAS,kHAET,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACb,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM,EAAE,aAAa,CAAC,CAAC,EAAE,UAAU,EAC5C,UAAU,0JAEV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,UAAU,gCACpB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0BACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,mCAA0B,sBAG1C,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,8CAAoC,WAC1C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,qBAAY,mBAAqB,IAAE,IAC3D,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,qBAAY,uBAAyB,IAAE,IACvD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,qBAAY,uBAAyB,2FAM3D,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAW,CAAC,+DAA+D,EACzE,EAAE,UAAU,CACR,0CACA,wBAAA,CACJ,UAEF,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAW,CAAC,8CAA8C,EACxD,EAAE,UAAU,CACR,+BACA,yBAAA,CACJ,QAKR,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CAAM,MAAM,mCACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uBACb,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,MACL,MAAO,EAAE,UAAU,CACnB,SAAU,AAAC,GAAM,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,EAC/C,YAAY,mCACZ,UAAU,kLAEZ,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EAAE,WAAW,CACtB,SAAU,CAAC,EAAE,UAAU,EAA2B,YAAvB,EAAE,gBAAgB,CAC7C,UAAW,CAAC,qFAAqF,EAC/F,AAAuB,SAArB,gBAAgB,CACd,2DACuB,SAAvB,EAAE,gBAAgB,CAChB,kDACA,oEACP,gDAAgD,CAAC,WAE1B,YAAvB,EAAE,gBAAgB,CACjB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,6BACM,AAAvB,SAAE,gBAAgB,CACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,gBACQ,SAAvB,EAAE,gBAAgB,CACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAC,UAAU,gBAEzB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,UAAU,gBAEM,OAAvB,EAAE,gBAAgB,CACf,SACuB,SAAvB,EAAE,gBAAgB,CAChB,SACuB,YAAvB,EAAE,gBAAgB,CAChB,WACA,aAGZ,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,oDAA2C,wGASpE,CC/YA,IAAA,EAAA,EAAA,CAAA,CAAA,OAcO,SAAS,IACd,GAAM,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAyB,MACvD,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACjC,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAElD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAI,GAAY,EAShB,MARA,CAAA,EAAA,EAAA,kBAAA,AAAkB,IACf,IAAI,CAAC,AAAC,IACD,AAAC,GAAW,EAAU,EAC5B,GACC,KAAK,CAAC,AAAC,IACF,GACJ,EAAS,MADM,OACS,MAAQ,EAAI,OAAO,CAAG,mCAChD,GACK,KACL,GAAY,CACd,CACF,EAAG,EAAE,EAEL,IAAM,EAAa,GAAQ,aAAe,GAAQ,aAclD,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,GAAG,CAAA,CAAC,UAAU,YACrB,MAAM,sBACN,SAAS,uKAER,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,4GACZ,IAIL,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,uDACb,CAAA,EAAA,EAAA,IAAA,EAAC,QAAA,CAAM,UAAU,mCACf,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,WACL,QAAS,GAAQ,UAAW,EAC5B,SAAU,AAAC,IAAM,aA7BT,EA6BkB,EAAE,MAAM,CAAC,OAAO,OA5B9C,GAAY,IAAU,IAC1B,AADe,EACJ,IACX,EAFsC,AAE7B,MACT,CAAA,EAAA,EAAA,sBAAsB,AAAtB,EAAuB,GACpB,IAAI,CAAC,GACL,KAAK,CAAC,AAAC,IACN,EAAS,aAAe,MAAQ,EAAI,OAAO,CAAG,eAChD,GACC,OAAO,CAAC,IAAM,GAAW,OAqBpB,SAAU,GAAW,CAAC,GAAU,EAChC,UAAU,2EAEZ,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,mBACd,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sCAA4B,2BAEzC,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,kHAAyG,eAK7H,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oEAA2D,iIAQhF,GACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,wGAA8F,qCACxE,IAClC,GAAQ,aACP,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCAAwB,qBAEzC,GAAQ,aAAe,GAAQ,cAAgB,QAC/C,GAAQ,cACP,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCAAwB,2BACxC,yEAKN,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,+CACjB,CAAA,EAAA,EAAA,GAAA,EAAC,UAAA,CAAQ,UAAU,gDAAuC,0BAG1D,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,iEACZ,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,WAAG,OACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCAAwB,uBAA0B,IAAI,gCAC7C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,UAAY,KAAE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,OAAS,IAAE,IAClE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,QAAU,OAElB,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCAAwB,iCAAoC,IAAI,gCAGlF,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,WAAG,yBACqB,IACvB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCAAwB,4BACvC,IAAI,wDAGR,GAAQ,UACP,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,iCAAuB,aACxB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCAAyB,EAAO,QAAQ,WAM9E,KKhHM,CMZA,ACAA,ACAA,ACAA,ACAA,CAAA,CAAA,EVYW,CCZA,ADYA,AGAX,AIZG,AGAA,ADAA,ADAA,AFAA,CAAA,OAAA,ENYyB,YAAY,CCZF,AEYR,AHfjC,AMGM,ACAA,ACAA,AEAA,AVYqC,ASZrC,CTHN,ACAA,ACAA,ACAA,ACAA,ACAA,CHAA,ADAA,AGAA,ADAA,AHAA,AKAA,CDAA,AFAA,AGAA,AJAA,ADAA,AGAA,CCAA,ADAA,ADAA,AGAA,ALAA,ACAA,CCAA,ADAA,AIAA,AFAA,AHAA,AIAA,CFAA,AGAA,AJAA,AGAA,ADAA,AHAA,CGAA,ACAA,AHAA,AIAA,AHAA,AFAA,GAAa,CIAH,ACAG,ALAA,AGAH,ADAA,CGAG,ALAA,AIAH,ADAA,AFAA,ACAA,CFAG,AGAH,AFAA,ACAA,AGAG,ADAH,QJAe,CAAA,ACAF,AGAA,ADAA,ADAD,AGAT,CJAU,AIAV,ALAY,AGAF,ADAD,AEAC,CHAA,ADAE,AEAH,AGAT,AFAU,ACAA,CJAO,AGAP,AHAE,AEAH,AGAT,ADAU,UJAiB,CGAA,ACAA,AFAF,ADAC,AIA1B,WLCA,gBAAiB,IAAK,aJY/B,SAAS,IACd,GAAM,CAACA,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAmB,MACnD,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,OAE9C,GACI,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAU,GACtD,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAmB,MACnD,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,YAElD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAI,GAAY,EAYhB,MAXA,CAAA,EAAA,EAAA,YAAA,AAAY,IACT,IAAI,CAAC,AAAC,IACD,IACJ,EAAW,EAAI,GADA,MACS,EACxB,EAAgB,EAAI,YAAY,EAChC,GAAuC,IAAtB,EAAI,aAAa,EACpC,GACC,KAAK,CAAC,AAAC,IACF,GACJ,EAAS,MADM,OACS,MAAQ,EAAI,OAAO,CAAG,oCAChD,GACK,KACL,GAAY,CACd,CACF,EAAG,EAAE,EAiBH,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CACC,GAAG,YACH,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,UAAU,YAC1B,MAAM,6BACN,SAAS,6KAER,GACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,4GACZ,IAGL,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,qCACX,CAAC,WAAY,OAAO,CAAW,GAAG,CAAC,AAAC,IACpC,IAAM,EAAS,IAAY,EACrB,EAAY,IAAY,EACxB,EAAO,GAAc,CAAC,EAAE,CAGxB,EAAoB,SAAN,GAAgB,CAAC,EACrC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM,CArCrB,OAAiB,IACrB,CADgB,IAAc,AAE9B,EAAS,IADE,EAEX,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,CAAE,UAkCc,CAlCH,AAAE,GAC5B,IAAI,CAAC,AAAC,IACL,EAAW,EAAI,SAAS,CAC1B,GACC,KAAK,CAAC,AAAC,IACN,EAAS,aAAe,MAAQ,EAAI,OAAO,CAAG,eAChD,GACC,OAAO,CAAC,IAAM,EAAW,SA4BlB,SAAU,AAAY,UAAQ,AAAY,UAAQ,EAClD,MACE,EACI,8FACA,EAEN,UAAW,CAAC,+DAA+D,EACzE,EACI,kCACA,yDACL,CAAC,EAAc,OAAZ,GAAoB,EAAc,gCAAkC,GAAA,CAAI,WAE5E,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,8CACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,+BACb,GAAM,QAAU,AAAM,CAAP,cAAoB,WAAa,MAAA,CAAM,GAExD,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6GACb,EAAY,UAAY,WAEzB,EACF,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iHAAwG,kBAGtH,QAEN,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,yDACV,GAAM,cACE,CAAP,YAAC,EACG,4EACA,kEAAA,CAAkE,GAEzE,GACC,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,+DAAqD,kBACjD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,sBAAwB,aAAU,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,qBAAuB,aAAU,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,qBAAuB,wCArC1H,EA0CX,KAEF,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,mDAAyC,YAC3C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCAAwB,0BAA4B,iFAKrF,CCzHO,SAAS,EAAS,CAA2B,EAClD,MACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,UAAU,YACxB,MAAM,mCACN,SAAS,wJAET,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CACC,KAAK,wBACL,UAAU,sKACX,wBAEC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,aAAW,CAAA,CAAA,WAAC,WAItB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAA,GACD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAA,GACD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAA,GAED,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,UAAU,sHACV,KAAK,iBAEL,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,2CACjB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,yBAAgB,kCAC7B,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,0DAAiD,wMASlE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAiB,GAAG,CAAK,KAGhC,CCMO,SAAS,EAAW,MAAE,CAAI,CAAoB,EACnD,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,wCACd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iFACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,6BACjB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,4EAAmE,kBAGnF,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,QAAQ,UACR,UAAU,+CACX,+BAIH,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sEACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,GAAG,CAAA,CAAC,UAAU,YAAY,sCAI/B,CAAA,EAAA,EAAA,GAAA,EAAC,WAAA,CACC,MAAO,EACP,QAAQ,CAAA,CAAA,EACR,YAAY,EACZ,UAAU,wJAEZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mHACb,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WAAK,kBACY,IAChB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCAA+B,uBAEvC,IAAI,yBAGd,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,UAAU,gIACX,cAMT,kBClFe,SAAS,EACtB,GAAM,CAAC,EAAMC,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAkB,QAE5C,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,GAC7C,CAAC,EAAgB,EAAkB,CACvC,CAAA,EAAA,EAAA,QAAA,AAAQ,EAA8B,GAClC,CAAC,EAAkB,EAAoB,CAC3C,CAAA,EAAA,EAAA,QAAA,AAAQ,EAA8B,GAClC,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAW,CACvD,QACA,SACA,sBACD,EACK,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC/B,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,eAC7C,CAAC,EAAgB,EAAkB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,QAC/C,CAAC,EAAkB,EAAoB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,aACnD,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACvC,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACvC,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAc,SACtD,CAAC,EAAkB,EAAoB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAEtD,QAgCI,EAAO,CAAA,EAAA,EAAA,OAAA,AAAO,EAClB,IACE,WDrDE,IAIA,WAJO,CADW,CAAa,CCsDvB,eACR,EACA,kCACA,cACA,gBACA,iBACA,mBACA,EACA,wBACA,CACF,GD/DW,WAAW,CAAC,GAAG,CAAC,AAAC,GAAM,CAAC,IAAI,EAAE,EAAA,CAAG,EAAE,IAAI,CAAC,MACjD,EAAU,EAAM,GAAG,CACvB,AAAC,GAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAK,KAAK,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAA,CAAE,EACjE,IAAI,CAAC,QACW,EAAM,GAAG,CACzB,AAAC,GAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAK,KAAK,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAA,CAAE,EACnE,IAAI,CAAC,MAEA,CAAC;;;;wBAIc,EAAE,EAAE,aAAa,CAAC;;;;AAI1C,EAAE,QAAQ;;AAEV,EAAE,UAAU;;;AAGZ,EAAE,KAAK;;;UAGG,EAAE,EAAE,aAAa,CAAC;uBACL,EAAE,EAAE,gBAAgB,CAAC;gBAC5B,EAAE,EAAE,cAAc,CAAC;;;;eAIpB,EAAE,EAAE,UAAU,CAAC;eACf,EAAE,EAAE,UAAU,CAAG,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAG,KAAK;AAC3D,CAAC,ECgCG,CACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,EAGH,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,UACP,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gFACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,QAAQ,WACR,MAAM,YACN,SAAS,qKACT,OACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+DACb,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM,EAAQ,QACvB,UAAW,CAAC,gFAAgF,EACjF,SAAT,EACI,gCACA,8CAAA,CACJ,WAEF,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,UAAU,gBAAgB,UAGpC,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM,EAAQ,QACvB,UAAW,CAAC,gFAAgF,EACjF,SAAT,EACI,gCACA,8CAAA,CACJ,WAEF,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,gBAAgB,eAO/B,SAAT,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,KAAM,IAElB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,cAAe,EACf,iBAAkB,EAClB,eAAgB,EAChB,iBAAkB,EAClB,YA5FV,CA4FuB,QA5Fd,AAAY,CAAU,CAAE,CAAc,EAChC,UAAU,CAAnB,EACF,EAAmB,AAAD,IAAW,CAC3B,EAD0B,CACvB,CAAI,CACP,CAAC,EAAO,CAAE,EAAiB,CAAI,CAAC,EAAO,EACzC,CAAC,EAED,EAAoB,AAAC,IAAU,CAC7B,EAD4B,CACzB,CAAI,CACP,CAAC,EAAO,CAAE,EAAiB,CAAI,CAAC,EAAO,EACzC,CAAC,CAEL,EAiFU,YAAa,EACb,eAAgB,EAChB,OAAQ,EACR,UAAW,EACX,OAnFV,CAmFkB,QAnFT,EACP,IAAM,EAAI,EAAO,IAAI,EACjB,EAAC,GAAK,EAAY,QAAQ,CAAC,IAAI,CACnC,EAAe,AAAC,GAAS,IAAI,EAAM,EAAE,EACrC,EAAU,IACZ,EA+EU,cAAe,EACf,iBAAkB,EAClB,eAAgB,EAChB,kBAAmB,EACnB,iBAAkB,EAClB,oBAAqB,EACrB,WAAY,EACZ,cAAe,EACf,WAAY,EACZ,cAAe,EACf,YAAa,EACb,eAAgB,EAChB,iBAAkB,EAClB,YAxHV,CAwHuB,QAxHd,EACkB,WAAW,CAAhC,IACJ,EAAoB,WACpB,WAAW,KACT,EAAoB,EAAW,UAAU,CAAC,YAAc,KAAO,QAC/D,WAAW,IAAM,EAAoB,QAAS,KAChD,EAAG,MACL,QAuHF","ignoreList":[8,9,10,11,12,13,14,15,16,17,18]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[30548,a=>{"use strict";let b;var c,d,e,f,g,h,i,j=a.i(81673),k=a.i(76015),l=a.i(3438),m=a.i(66985),n=a.i(58858),o=a.i(83862),p=a.i(91119),q=a.i(86304),r=a.i(34829),s=a.i(63690),t=a.i(64837),u=a.i(68103),v=a.i(87102),w=a.i(32592),x=a.i(23202),y=a.i(63845),z=a.i(14574);a.i(30005);var A=a.i(44413),B=a.i(92415),C=a.i(63263);a.s([],75443),a.i(75443),(c=f||(f={})).assertEqual=a=>{},c.assertIs=function(a){},c.assertNever=function(a){throw Error()},c.arrayToEnum=a=>{let b={};for(let c of a)b[c]=c;return b},c.getValidEnumValues=a=>{let b=c.objectKeys(a).filter(b=>"number"!=typeof a[a[b]]),d={};for(let c of b)d[c]=a[c];return c.objectValues(d)},c.objectValues=a=>c.objectKeys(a).map(function(b){return a[b]}),c.objectKeys="function"==typeof Object.keys?a=>Object.keys(a):a=>{let b=[];for(let c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return b},c.find=(a,b)=>{for(let c of a)if(b(c))return c},c.isInteger="function"==typeof Number.isInteger?a=>Number.isInteger(a):a=>"number"==typeof a&&Number.isFinite(a)&&Math.floor(a)===a,c.joinValues=function(a,b=" | "){return a.map(a=>"string"==typeof a?`'${a}'`:a).join(b)},c.jsonStringifyReplacer=(a,b)=>"bigint"==typeof b?b.toString():b,(g||(g={})).mergeShapes=(a,b)=>({...a,...b});let D=f.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),E=a=>{switch(typeof a){case"undefined":return D.undefined;case"string":return D.string;case"number":return Number.isNaN(a)?D.nan:D.number;case"boolean":return D.boolean;case"function":return D.function;case"bigint":return D.bigint;case"symbol":return D.symbol;case"object":if(Array.isArray(a))return D.array;if(null===a)return D.null;if(a.then&&"function"==typeof a.then&&a.catch&&"function"==typeof a.catch)return D.promise;if("u">typeof Map&&a instanceof Map)return D.map;if("u">typeof Set&&a instanceof Set)return D.set;if("u">typeof Date&&a instanceof Date)return D.date;return D.object;default:return D.unknown}};a.s(["ZodParsedType",0,D,"getParsedType",0,E,"objectUtil",0,g,"util",0,f],42010);let F=f.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),G=a=>JSON.stringify(a,null,2).replace(/"([^"]+)":/g,"$1:");class H extends Error{get errors(){return this.issues}constructor(a){super(),this.issues=[],this.addIssue=a=>{this.issues=[...this.issues,a]},this.addIssues=(a=[])=>{this.issues=[...this.issues,...a]};const b=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,b):this.__proto__=b,this.name="ZodError",this.issues=a}format(a){let b=a||function(a){return a.message},c={_errors:[]},d=a=>{for(let e of a.issues)if("invalid_union"===e.code)e.unionErrors.map(d);else if("invalid_return_type"===e.code)d(e.returnTypeError);else if("invalid_arguments"===e.code)d(e.argumentsError);else if(0===e.path.length)c._errors.push(b(e));else{let a=c,d=0;for(;d<e.path.length;){let c=e.path[d];d===e.path.length-1?(a[c]=a[c]||{_errors:[]},a[c]._errors.push(b(e))):a[c]=a[c]||{_errors:[]},a=a[c],d++}}};return d(this),c}static assert(a){if(!(a instanceof H))throw Error(`Not a ZodError: ${a}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,f.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(a=a=>a.message){let b={},c=[];for(let d of this.issues)if(d.path.length>0){let c=d.path[0];b[c]=b[c]||[],b[c].push(a(d))}else c.push(a(d));return{formErrors:c,fieldErrors:b}}get formErrors(){return this.flatten()}}H.create=a=>new H(a),a.s(["ZodError",0,H,"ZodIssueCode",0,F,"quotelessJson",0,G],11521);let I=(a,b)=>{let c;switch(a.code){case F.invalid_type:c=a.received===D.undefined?"Required":`Expected ${a.expected}, received ${a.received}`;break;case F.invalid_literal:c=`Invalid literal value, expected ${JSON.stringify(a.expected,f.jsonStringifyReplacer)}`;break;case F.unrecognized_keys:c=`Unrecognized key(s) in object: ${f.joinValues(a.keys,", ")}`;break;case F.invalid_union:c="Invalid input";break;case F.invalid_union_discriminator:c=`Invalid discriminator value. Expected ${f.joinValues(a.options)}`;break;case F.invalid_enum_value:c=`Invalid enum value. Expected ${f.joinValues(a.options)}, received '${a.received}'`;break;case F.invalid_arguments:c="Invalid function arguments";break;case F.invalid_return_type:c="Invalid function return type";break;case F.invalid_date:c="Invalid date";break;case F.invalid_string:"object"==typeof a.validation?"includes"in a.validation?(c=`Invalid input: must include "${a.validation.includes}"`,"number"==typeof a.validation.position&&(c=`${c} at one or more positions greater than or equal to ${a.validation.position}`)):"startsWith"in a.validation?c=`Invalid input: must start with "${a.validation.startsWith}"`:"endsWith"in a.validation?c=`Invalid input: must end with "${a.validation.endsWith}"`:f.assertNever(a.validation):c="regex"!==a.validation?`Invalid ${a.validation}`:"Invalid";break;case F.too_small:c="array"===a.type?`Array must contain ${a.exact?"exactly":a.inclusive?"at least":"more than"} ${a.minimum} element(s)`:"string"===a.type?`String must contain ${a.exact?"exactly":a.inclusive?"at least":"over"} ${a.minimum} character(s)`:"number"===a.type||"bigint"===a.type?`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:"date"===a.type?`Date must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(a.minimum))}`:"Invalid input";break;case F.too_big:c="array"===a.type?`Array must contain ${a.exact?"exactly":a.inclusive?"at most":"less than"} ${a.maximum} element(s)`:"string"===a.type?`String must contain ${a.exact?"exactly":a.inclusive?"at most":"under"} ${a.maximum} character(s)`:"number"===a.type?`Number must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:"bigint"===a.type?`BigInt must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:"date"===a.type?`Date must be ${a.exact?"exactly":a.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(a.maximum))}`:"Invalid input";break;case F.custom:c="Invalid input";break;case F.invalid_intersection_types:c="Intersection results could not be merged";break;case F.not_multiple_of:c=`Number must be a multiple of ${a.multipleOf}`;break;case F.not_finite:c="Number must be finite";break;default:c=b.defaultError,f.assertNever(a)}return{message:c}},J=I;function K(a){J=a}function L(){return J}a.s(["getErrorMap",0,L,"setErrorMap",0,K],92356),a.i(92356),a.s(["defaultErrorMap",0,I,"getErrorMap",0,L,"setErrorMap",0,K],17118),a.i(17118);let M=a=>{let{data:b,path:c,errorMaps:d,issueData:e}=a,f=[...c,...e.path||[]],g={...e,path:f};if(void 0!==e.message)return{...e,path:f,message:e.message};let h="";for(let a of d.filter(a=>!!a).slice().reverse())h=a(g,{data:b,defaultError:h}).message;return{...e,path:f,message:h}},N=[];function O(a,b){let c=L(),d=M({issueData:b,data:a.data,path:a.path,errorMaps:[a.common.contextualErrorMap,a.schemaErrorMap,c,c===I?void 0:I].filter(a=>!!a)});a.common.issues.push(d)}class P{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(a,b){let c=[];for(let d of b){if("aborted"===d.status)return Q;"dirty"===d.status&&a.dirty(),c.push(d.value)}return{status:a.value,value:c}}static async mergeObjectAsync(a,b){let c=[];for(let a of b){let b=await a.key,d=await a.value;c.push({key:b,value:d})}return P.mergeObjectSync(a,c)}static mergeObjectSync(a,b){let c={};for(let d of b){let{key:b,value:e}=d;if("aborted"===b.status||"aborted"===e.status)return Q;"dirty"===b.status&&a.dirty(),"dirty"===e.status&&a.dirty(),"__proto__"!==b.value&&(void 0!==e.value||d.alwaysSet)&&(c[b.value]=e.value)}return{status:a.value,value:c}}}let Q=Object.freeze({status:"aborted"}),R=a=>({status:"dirty",value:a}),S=a=>({status:"valid",value:a}),T=a=>"aborted"===a.status,U=a=>"dirty"===a.status,V=a=>"valid"===a.status,W=a=>"u">typeof Promise&&a instanceof Promise;a.s(["DIRTY",0,R,"EMPTY_PATH",0,N,"INVALID",0,Q,"OK",0,S,"ParseStatus",0,P,"addIssueToContext",0,O,"isAborted",0,T,"isAsync",0,W,"isDirty",0,U,"isValid",0,V,"makeIssue",0,M],11099),a.i(11099),a.s([],83418),a.i(83418),a.i(42010),(d=h||(h={})).errToObj=a=>"string"==typeof a?{message:a}:a||{},d.toString=a=>"string"==typeof a?a:a?.message;class X{constructor(a,b,c,d){this._cachedPath=[],this.parent=a,this.data=b,this._path=c,this._key=d}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}let Y=(a,b)=>{if(V(b))return{success:!0,data:b.value};if(!a.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let b=new H(a.common.issues);return this._error=b,this._error}}};function Z(a){if(!a)return{};let{errorMap:b,invalid_type_error:c,required_error:d,description:e}=a;if(b&&(c||d))throw Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return b?{errorMap:b,description:e}:{errorMap:(b,e)=>{let{message:f}=a;return"invalid_enum_value"===b.code?{message:f??e.defaultError}:void 0===e.data?{message:f??d??e.defaultError}:"invalid_type"!==b.code?{message:e.defaultError}:{message:f??c??e.defaultError}},description:e}}class ${get description(){return this._def.description}_getType(a){return E(a.data)}_getOrReturnCtx(a,b){return b||{common:a.parent.common,data:a.data,parsedType:E(a.data),schemaErrorMap:this._def.errorMap,path:a.path,parent:a.parent}}_processInputParams(a){return{status:new P,ctx:{common:a.parent.common,data:a.data,parsedType:E(a.data),schemaErrorMap:this._def.errorMap,path:a.path,parent:a.parent}}}_parseSync(a){let b=this._parse(a);if(W(b))throw Error("Synchronous parse encountered promise.");return b}_parseAsync(a){return Promise.resolve(this._parse(a))}parse(a,b){let c=this.safeParse(a,b);if(c.success)return c.data;throw c.error}safeParse(a,b){let c={common:{issues:[],async:b?.async??!1,contextualErrorMap:b?.errorMap},path:b?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:a,parsedType:E(a)},d=this._parseSync({data:a,path:c.path,parent:c});return Y(c,d)}"~validate"(a){let b={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:a,parsedType:E(a)};if(!this["~standard"].async)try{let c=this._parseSync({data:a,path:[],parent:b});return V(c)?{value:c.value}:{issues:b.common.issues}}catch(a){a?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),b.common={issues:[],async:!0}}return this._parseAsync({data:a,path:[],parent:b}).then(a=>V(a)?{value:a.value}:{issues:b.common.issues})}async parseAsync(a,b){let c=await this.safeParseAsync(a,b);if(c.success)return c.data;throw c.error}async safeParseAsync(a,b){let c={common:{issues:[],contextualErrorMap:b?.errorMap,async:!0},path:b?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:a,parsedType:E(a)},d=this._parse({data:a,path:c.path,parent:c});return Y(c,await (W(d)?d:Promise.resolve(d)))}refine(a,b){return this._refinement((c,d)=>{let e=a(c),f=()=>d.addIssue({code:F.custom,..."string"==typeof b||void 0===b?{message:b}:"function"==typeof b?b(c):b});return"u">typeof Promise&&e instanceof Promise?e.then(a=>!!a||(f(),!1)):!!e||(f(),!1)})}refinement(a,b){return this._refinement((c,d)=>!!a(c)||(d.addIssue("function"==typeof b?b(c,d):b),!1))}_refinement(a){return new aU({schema:this,typeName:i.ZodEffects,effect:{type:"refinement",refinement:a}})}superRefine(a){return this._refinement(a)}constructor(a){this.spa=this.safeParseAsync,this._def=a,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:a=>this["~validate"](a)}}optional(){return aV.create(this,this._def)}nullable(){return aW.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return aD.create(this)}promise(){return aT.create(this,this._def)}or(a){return aF.create([this,a],this._def)}and(a){return aI.create(this,a,this._def)}transform(a){return new aU({...Z(this._def),schema:this,typeName:i.ZodEffects,effect:{type:"transform",transform:a}})}default(a){return new aX({...Z(this._def),innerType:this,defaultValue:"function"==typeof a?a:()=>a,typeName:i.ZodDefault})}brand(){return new a_({typeName:i.ZodBranded,type:this,...Z(this._def)})}catch(a){return new aY({...Z(this._def),innerType:this,catchValue:"function"==typeof a?a:()=>a,typeName:i.ZodCatch})}describe(a){return new this.constructor({...this._def,description:a})}pipe(a){return a0.create(this,a)}readonly(){return a1.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let _=/^c[^\s-]{8,}$/i,aa=/^[0-9a-z]+$/,ab=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ac=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ad=/^[a-z0-9_-]{21}$/i,ae=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,af=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,ag=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ah=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ai=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,aj=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ak=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,al=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,am=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,an="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",ao=RegExp(`^${an}$`);function ap(a){let b="[0-5]\\d";a.precision?b=`${b}\\.\\d{${a.precision}}`:null==a.precision&&(b=`${b}(\\.\\d+)?`);let c=a.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${b})${c}`}function aq(a){let b=`${an}T${ap(a)}`,c=[];return c.push(a.local?"Z?":"Z"),a.offset&&c.push("([+-]\\d{2}:?\\d{2})"),b=`${b}(${c.join("|")})`,RegExp(`^${b}$`)}class ar extends ${_parse(a){var c,d,e,g;let h;if(this._def.coerce&&(a.data=String(a.data)),this._getType(a)!==D.string){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.string,received:b.parsedType}),Q}let i=new P;for(let j of this._def.checks)if("min"===j.kind)a.data.length<j.value&&(O(h=this._getOrReturnCtx(a,h),{code:F.too_small,minimum:j.value,type:"string",inclusive:!0,exact:!1,message:j.message}),i.dirty());else if("max"===j.kind)a.data.length>j.value&&(O(h=this._getOrReturnCtx(a,h),{code:F.too_big,maximum:j.value,type:"string",inclusive:!0,exact:!1,message:j.message}),i.dirty());else if("length"===j.kind){let b=a.data.length>j.value,c=a.data.length<j.value;(b||c)&&(h=this._getOrReturnCtx(a,h),b?O(h,{code:F.too_big,maximum:j.value,type:"string",inclusive:!0,exact:!0,message:j.message}):c&&O(h,{code:F.too_small,minimum:j.value,type:"string",inclusive:!0,exact:!0,message:j.message}),i.dirty())}else if("email"===j.kind)ag.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"email",code:F.invalid_string,message:j.message}),i.dirty());else if("emoji"===j.kind)b||(b=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),b.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"emoji",code:F.invalid_string,message:j.message}),i.dirty());else if("uuid"===j.kind)ac.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"uuid",code:F.invalid_string,message:j.message}),i.dirty());else if("nanoid"===j.kind)ad.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"nanoid",code:F.invalid_string,message:j.message}),i.dirty());else if("cuid"===j.kind)_.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"cuid",code:F.invalid_string,message:j.message}),i.dirty());else if("cuid2"===j.kind)aa.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"cuid2",code:F.invalid_string,message:j.message}),i.dirty());else if("ulid"===j.kind)ab.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"ulid",code:F.invalid_string,message:j.message}),i.dirty());else if("url"===j.kind)try{new URL(a.data)}catch{O(h=this._getOrReturnCtx(a,h),{validation:"url",code:F.invalid_string,message:j.message}),i.dirty()}else"regex"===j.kind?(j.regex.lastIndex=0,j.regex.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"regex",code:F.invalid_string,message:j.message}),i.dirty())):"trim"===j.kind?a.data=a.data.trim():"includes"===j.kind?a.data.includes(j.value,j.position)||(O(h=this._getOrReturnCtx(a,h),{code:F.invalid_string,validation:{includes:j.value,position:j.position},message:j.message}),i.dirty()):"toLowerCase"===j.kind?a.data=a.data.toLowerCase():"toUpperCase"===j.kind?a.data=a.data.toUpperCase():"startsWith"===j.kind?a.data.startsWith(j.value)||(O(h=this._getOrReturnCtx(a,h),{code:F.invalid_string,validation:{startsWith:j.value},message:j.message}),i.dirty()):"endsWith"===j.kind?a.data.endsWith(j.value)||(O(h=this._getOrReturnCtx(a,h),{code:F.invalid_string,validation:{endsWith:j.value},message:j.message}),i.dirty()):"datetime"===j.kind?aq(j).test(a.data)||(O(h=this._getOrReturnCtx(a,h),{code:F.invalid_string,validation:"datetime",message:j.message}),i.dirty()):"date"===j.kind?ao.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{code:F.invalid_string,validation:"date",message:j.message}),i.dirty()):"time"===j.kind?RegExp(`^${ap(j)}$`).test(a.data)||(O(h=this._getOrReturnCtx(a,h),{code:F.invalid_string,validation:"time",message:j.message}),i.dirty()):"duration"===j.kind?af.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"duration",code:F.invalid_string,message:j.message}),i.dirty()):"ip"===j.kind?(c=a.data,!(("v4"===(d=j.version)||!d)&&ah.test(c)||("v6"===d||!d)&&aj.test(c))&&1&&(O(h=this._getOrReturnCtx(a,h),{validation:"ip",code:F.invalid_string,message:j.message}),i.dirty())):"jwt"===j.kind?!function(a,b){if(!ae.test(a))return!1;try{let[c]=a.split(".");if(!c)return!1;let d=c.replace(/-/g,"+").replace(/_/g,"/").padEnd(c.length+(4-c.length%4)%4,"="),e=JSON.parse(atob(d));if("object"!=typeof e||null===e||"typ"in e&&e?.typ!=="JWT"||!e.alg||b&&e.alg!==b)return!1;return!0}catch{return!1}}(a.data,j.alg)&&(O(h=this._getOrReturnCtx(a,h),{validation:"jwt",code:F.invalid_string,message:j.message}),i.dirty()):"cidr"===j.kind?(e=a.data,!(("v4"===(g=j.version)||!g)&&ai.test(e)||("v6"===g||!g)&&ak.test(e))&&1&&(O(h=this._getOrReturnCtx(a,h),{validation:"cidr",code:F.invalid_string,message:j.message}),i.dirty())):"base64"===j.kind?al.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"base64",code:F.invalid_string,message:j.message}),i.dirty()):"base64url"===j.kind?am.test(a.data)||(O(h=this._getOrReturnCtx(a,h),{validation:"base64url",code:F.invalid_string,message:j.message}),i.dirty()):f.assertNever(j);return{status:i.value,value:a.data}}_regex(a,b,c){return this.refinement(b=>a.test(b),{validation:b,code:F.invalid_string,...h.errToObj(c)})}_addCheck(a){return new ar({...this._def,checks:[...this._def.checks,a]})}email(a){return this._addCheck({kind:"email",...h.errToObj(a)})}url(a){return this._addCheck({kind:"url",...h.errToObj(a)})}emoji(a){return this._addCheck({kind:"emoji",...h.errToObj(a)})}uuid(a){return this._addCheck({kind:"uuid",...h.errToObj(a)})}nanoid(a){return this._addCheck({kind:"nanoid",...h.errToObj(a)})}cuid(a){return this._addCheck({kind:"cuid",...h.errToObj(a)})}cuid2(a){return this._addCheck({kind:"cuid2",...h.errToObj(a)})}ulid(a){return this._addCheck({kind:"ulid",...h.errToObj(a)})}base64(a){return this._addCheck({kind:"base64",...h.errToObj(a)})}base64url(a){return this._addCheck({kind:"base64url",...h.errToObj(a)})}jwt(a){return this._addCheck({kind:"jwt",...h.errToObj(a)})}ip(a){return this._addCheck({kind:"ip",...h.errToObj(a)})}cidr(a){return this._addCheck({kind:"cidr",...h.errToObj(a)})}datetime(a){return"string"==typeof a?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:a}):this._addCheck({kind:"datetime",precision:void 0===a?.precision?null:a?.precision,offset:a?.offset??!1,local:a?.local??!1,...h.errToObj(a?.message)})}date(a){return this._addCheck({kind:"date",message:a})}time(a){return"string"==typeof a?this._addCheck({kind:"time",precision:null,message:a}):this._addCheck({kind:"time",precision:void 0===a?.precision?null:a?.precision,...h.errToObj(a?.message)})}duration(a){return this._addCheck({kind:"duration",...h.errToObj(a)})}regex(a,b){return this._addCheck({kind:"regex",regex:a,...h.errToObj(b)})}includes(a,b){return this._addCheck({kind:"includes",value:a,position:b?.position,...h.errToObj(b?.message)})}startsWith(a,b){return this._addCheck({kind:"startsWith",value:a,...h.errToObj(b)})}endsWith(a,b){return this._addCheck({kind:"endsWith",value:a,...h.errToObj(b)})}min(a,b){return this._addCheck({kind:"min",value:a,...h.errToObj(b)})}max(a,b){return this._addCheck({kind:"max",value:a,...h.errToObj(b)})}length(a,b){return this._addCheck({kind:"length",value:a,...h.errToObj(b)})}nonempty(a){return this.min(1,h.errToObj(a))}trim(){return new ar({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ar({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ar({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(a=>"datetime"===a.kind)}get isDate(){return!!this._def.checks.find(a=>"date"===a.kind)}get isTime(){return!!this._def.checks.find(a=>"time"===a.kind)}get isDuration(){return!!this._def.checks.find(a=>"duration"===a.kind)}get isEmail(){return!!this._def.checks.find(a=>"email"===a.kind)}get isURL(){return!!this._def.checks.find(a=>"url"===a.kind)}get isEmoji(){return!!this._def.checks.find(a=>"emoji"===a.kind)}get isUUID(){return!!this._def.checks.find(a=>"uuid"===a.kind)}get isNANOID(){return!!this._def.checks.find(a=>"nanoid"===a.kind)}get isCUID(){return!!this._def.checks.find(a=>"cuid"===a.kind)}get isCUID2(){return!!this._def.checks.find(a=>"cuid2"===a.kind)}get isULID(){return!!this._def.checks.find(a=>"ulid"===a.kind)}get isIP(){return!!this._def.checks.find(a=>"ip"===a.kind)}get isCIDR(){return!!this._def.checks.find(a=>"cidr"===a.kind)}get isBase64(){return!!this._def.checks.find(a=>"base64"===a.kind)}get isBase64url(){return!!this._def.checks.find(a=>"base64url"===a.kind)}get minLength(){let a=null;for(let b of this._def.checks)"min"===b.kind&&(null===a||b.value>a)&&(a=b.value);return a}get maxLength(){let a=null;for(let b of this._def.checks)"max"===b.kind&&(null===a||b.value<a)&&(a=b.value);return a}}ar.create=a=>new ar({checks:[],typeName:i.ZodString,coerce:a?.coerce??!1,...Z(a)});class as extends ${constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(a){let b;if(this._def.coerce&&(a.data=Number(a.data)),this._getType(a)!==D.number){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.number,received:b.parsedType}),Q}let c=new P;for(let d of this._def.checks)"int"===d.kind?f.isInteger(a.data)||(O(b=this._getOrReturnCtx(a,b),{code:F.invalid_type,expected:"integer",received:"float",message:d.message}),c.dirty()):"min"===d.kind?(d.inclusive?a.data<d.value:a.data<=d.value)&&(O(b=this._getOrReturnCtx(a,b),{code:F.too_small,minimum:d.value,type:"number",inclusive:d.inclusive,exact:!1,message:d.message}),c.dirty()):"max"===d.kind?(d.inclusive?a.data>d.value:a.data>=d.value)&&(O(b=this._getOrReturnCtx(a,b),{code:F.too_big,maximum:d.value,type:"number",inclusive:d.inclusive,exact:!1,message:d.message}),c.dirty()):"multipleOf"===d.kind?0!==function(a,b){let c=(a.toString().split(".")[1]||"").length,d=(b.toString().split(".")[1]||"").length,e=c>d?c:d;return Number.parseInt(a.toFixed(e).replace(".",""))%Number.parseInt(b.toFixed(e).replace(".",""))/10**e}(a.data,d.value)&&(O(b=this._getOrReturnCtx(a,b),{code:F.not_multiple_of,multipleOf:d.value,message:d.message}),c.dirty()):"finite"===d.kind?Number.isFinite(a.data)||(O(b=this._getOrReturnCtx(a,b),{code:F.not_finite,message:d.message}),c.dirty()):f.assertNever(d);return{status:c.value,value:a.data}}gte(a,b){return this.setLimit("min",a,!0,h.toString(b))}gt(a,b){return this.setLimit("min",a,!1,h.toString(b))}lte(a,b){return this.setLimit("max",a,!0,h.toString(b))}lt(a,b){return this.setLimit("max",a,!1,h.toString(b))}setLimit(a,b,c,d){return new as({...this._def,checks:[...this._def.checks,{kind:a,value:b,inclusive:c,message:h.toString(d)}]})}_addCheck(a){return new as({...this._def,checks:[...this._def.checks,a]})}int(a){return this._addCheck({kind:"int",message:h.toString(a)})}positive(a){return this._addCheck({kind:"min",value:0,inclusive:!1,message:h.toString(a)})}negative(a){return this._addCheck({kind:"max",value:0,inclusive:!1,message:h.toString(a)})}nonpositive(a){return this._addCheck({kind:"max",value:0,inclusive:!0,message:h.toString(a)})}nonnegative(a){return this._addCheck({kind:"min",value:0,inclusive:!0,message:h.toString(a)})}multipleOf(a,b){return this._addCheck({kind:"multipleOf",value:a,message:h.toString(b)})}finite(a){return this._addCheck({kind:"finite",message:h.toString(a)})}safe(a){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:h.toString(a)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:h.toString(a)})}get minValue(){let a=null;for(let b of this._def.checks)"min"===b.kind&&(null===a||b.value>a)&&(a=b.value);return a}get maxValue(){let a=null;for(let b of this._def.checks)"max"===b.kind&&(null===a||b.value<a)&&(a=b.value);return a}get isInt(){return!!this._def.checks.find(a=>"int"===a.kind||"multipleOf"===a.kind&&f.isInteger(a.value))}get isFinite(){let a=null,b=null;for(let c of this._def.checks)if("finite"===c.kind||"int"===c.kind||"multipleOf"===c.kind)return!0;else"min"===c.kind?(null===b||c.value>b)&&(b=c.value):"max"===c.kind&&(null===a||c.value<a)&&(a=c.value);return Number.isFinite(b)&&Number.isFinite(a)}}as.create=a=>new as({checks:[],typeName:i.ZodNumber,coerce:a?.coerce||!1,...Z(a)});class at extends ${constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(a){let b;if(this._def.coerce)try{a.data=BigInt(a.data)}catch{return this._getInvalidInput(a)}if(this._getType(a)!==D.bigint)return this._getInvalidInput(a);let c=new P;for(let d of this._def.checks)"min"===d.kind?(d.inclusive?a.data<d.value:a.data<=d.value)&&(O(b=this._getOrReturnCtx(a,b),{code:F.too_small,type:"bigint",minimum:d.value,inclusive:d.inclusive,message:d.message}),c.dirty()):"max"===d.kind?(d.inclusive?a.data>d.value:a.data>=d.value)&&(O(b=this._getOrReturnCtx(a,b),{code:F.too_big,type:"bigint",maximum:d.value,inclusive:d.inclusive,message:d.message}),c.dirty()):"multipleOf"===d.kind?a.data%d.value!==BigInt(0)&&(O(b=this._getOrReturnCtx(a,b),{code:F.not_multiple_of,multipleOf:d.value,message:d.message}),c.dirty()):f.assertNever(d);return{status:c.value,value:a.data}}_getInvalidInput(a){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.bigint,received:b.parsedType}),Q}gte(a,b){return this.setLimit("min",a,!0,h.toString(b))}gt(a,b){return this.setLimit("min",a,!1,h.toString(b))}lte(a,b){return this.setLimit("max",a,!0,h.toString(b))}lt(a,b){return this.setLimit("max",a,!1,h.toString(b))}setLimit(a,b,c,d){return new at({...this._def,checks:[...this._def.checks,{kind:a,value:b,inclusive:c,message:h.toString(d)}]})}_addCheck(a){return new at({...this._def,checks:[...this._def.checks,a]})}positive(a){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:h.toString(a)})}negative(a){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:h.toString(a)})}nonpositive(a){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:h.toString(a)})}nonnegative(a){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:h.toString(a)})}multipleOf(a,b){return this._addCheck({kind:"multipleOf",value:a,message:h.toString(b)})}get minValue(){let a=null;for(let b of this._def.checks)"min"===b.kind&&(null===a||b.value>a)&&(a=b.value);return a}get maxValue(){let a=null;for(let b of this._def.checks)"max"===b.kind&&(null===a||b.value<a)&&(a=b.value);return a}}at.create=a=>new at({checks:[],typeName:i.ZodBigInt,coerce:a?.coerce??!1,...Z(a)});class au extends ${_parse(a){if(this._def.coerce&&(a.data=!!a.data),this._getType(a)!==D.boolean){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.boolean,received:b.parsedType}),Q}return S(a.data)}}au.create=a=>new au({typeName:i.ZodBoolean,coerce:a?.coerce||!1,...Z(a)});class av extends ${_parse(a){let b;if(this._def.coerce&&(a.data=new Date(a.data)),this._getType(a)!==D.date){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.date,received:b.parsedType}),Q}if(Number.isNaN(a.data.getTime()))return O(this._getOrReturnCtx(a),{code:F.invalid_date}),Q;let c=new P;for(let d of this._def.checks)"min"===d.kind?a.data.getTime()<d.value&&(O(b=this._getOrReturnCtx(a,b),{code:F.too_small,message:d.message,inclusive:!0,exact:!1,minimum:d.value,type:"date"}),c.dirty()):"max"===d.kind?a.data.getTime()>d.value&&(O(b=this._getOrReturnCtx(a,b),{code:F.too_big,message:d.message,inclusive:!0,exact:!1,maximum:d.value,type:"date"}),c.dirty()):f.assertNever(d);return{status:c.value,value:new Date(a.data.getTime())}}_addCheck(a){return new av({...this._def,checks:[...this._def.checks,a]})}min(a,b){return this._addCheck({kind:"min",value:a.getTime(),message:h.toString(b)})}max(a,b){return this._addCheck({kind:"max",value:a.getTime(),message:h.toString(b)})}get minDate(){let a=null;for(let b of this._def.checks)"min"===b.kind&&(null===a||b.value>a)&&(a=b.value);return null!=a?new Date(a):null}get maxDate(){let a=null;for(let b of this._def.checks)"max"===b.kind&&(null===a||b.value<a)&&(a=b.value);return null!=a?new Date(a):null}}av.create=a=>new av({checks:[],coerce:a?.coerce||!1,typeName:i.ZodDate,...Z(a)});class aw extends ${_parse(a){if(this._getType(a)!==D.symbol){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.symbol,received:b.parsedType}),Q}return S(a.data)}}aw.create=a=>new aw({typeName:i.ZodSymbol,...Z(a)});class ax extends ${_parse(a){if(this._getType(a)!==D.undefined){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.undefined,received:b.parsedType}),Q}return S(a.data)}}ax.create=a=>new ax({typeName:i.ZodUndefined,...Z(a)});class ay extends ${_parse(a){if(this._getType(a)!==D.null){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.null,received:b.parsedType}),Q}return S(a.data)}}ay.create=a=>new ay({typeName:i.ZodNull,...Z(a)});class az extends ${constructor(){super(...arguments),this._any=!0}_parse(a){return S(a.data)}}az.create=a=>new az({typeName:i.ZodAny,...Z(a)});class aA extends ${constructor(){super(...arguments),this._unknown=!0}_parse(a){return S(a.data)}}aA.create=a=>new aA({typeName:i.ZodUnknown,...Z(a)});class aB extends ${_parse(a){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.never,received:b.parsedType}),Q}}aB.create=a=>new aB({typeName:i.ZodNever,...Z(a)});class aC extends ${_parse(a){if(this._getType(a)!==D.undefined){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.void,received:b.parsedType}),Q}return S(a.data)}}aC.create=a=>new aC({typeName:i.ZodVoid,...Z(a)});class aD extends ${_parse(a){let{ctx:b,status:c}=this._processInputParams(a),d=this._def;if(b.parsedType!==D.array)return O(b,{code:F.invalid_type,expected:D.array,received:b.parsedType}),Q;if(null!==d.exactLength){let a=b.data.length>d.exactLength.value,e=b.data.length<d.exactLength.value;(a||e)&&(O(b,{code:a?F.too_big:F.too_small,minimum:e?d.exactLength.value:void 0,maximum:a?d.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:d.exactLength.message}),c.dirty())}if(null!==d.minLength&&b.data.length<d.minLength.value&&(O(b,{code:F.too_small,minimum:d.minLength.value,type:"array",inclusive:!0,exact:!1,message:d.minLength.message}),c.dirty()),null!==d.maxLength&&b.data.length>d.maxLength.value&&(O(b,{code:F.too_big,maximum:d.maxLength.value,type:"array",inclusive:!0,exact:!1,message:d.maxLength.message}),c.dirty()),b.common.async)return Promise.all([...b.data].map((a,c)=>d.type._parseAsync(new X(b,a,b.path,c)))).then(a=>P.mergeArray(c,a));let e=[...b.data].map((a,c)=>d.type._parseSync(new X(b,a,b.path,c)));return P.mergeArray(c,e)}get element(){return this._def.type}min(a,b){return new aD({...this._def,minLength:{value:a,message:h.toString(b)}})}max(a,b){return new aD({...this._def,maxLength:{value:a,message:h.toString(b)}})}length(a,b){return new aD({...this._def,exactLength:{value:a,message:h.toString(b)}})}nonempty(a){return this.min(1,a)}}aD.create=(a,b)=>new aD({type:a,minLength:null,maxLength:null,exactLength:null,typeName:i.ZodArray,...Z(b)});class aE extends ${constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let a=this._def.shape(),b=f.objectKeys(a);return this._cached={shape:a,keys:b},this._cached}_parse(a){if(this._getType(a)!==D.object){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.object,received:b.parsedType}),Q}let{status:b,ctx:c}=this._processInputParams(a),{shape:d,keys:e}=this._getCached(),f=[];if(!(this._def.catchall instanceof aB&&"strip"===this._def.unknownKeys))for(let a in c.data)e.includes(a)||f.push(a);let g=[];for(let a of e){let b=d[a],e=c.data[a];g.push({key:{status:"valid",value:a},value:b._parse(new X(c,e,c.path,a)),alwaysSet:a in c.data})}if(this._def.catchall instanceof aB){let a=this._def.unknownKeys;if("passthrough"===a)for(let a of f)g.push({key:{status:"valid",value:a},value:{status:"valid",value:c.data[a]}});else if("strict"===a)f.length>0&&(O(c,{code:F.unrecognized_keys,keys:f}),b.dirty());else if("strip"===a);else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let a=this._def.catchall;for(let b of f){let d=c.data[b];g.push({key:{status:"valid",value:b},value:a._parse(new X(c,d,c.path,b)),alwaysSet:b in c.data})}}return c.common.async?Promise.resolve().then(async()=>{let a=[];for(let b of g){let c=await b.key,d=await b.value;a.push({key:c,value:d,alwaysSet:b.alwaysSet})}return a}).then(a=>P.mergeObjectSync(b,a)):P.mergeObjectSync(b,g)}get shape(){return this._def.shape()}strict(a){return h.errToObj,new aE({...this._def,unknownKeys:"strict",...void 0!==a?{errorMap:(b,c)=>{let d=this._def.errorMap?.(b,c).message??c.defaultError;return"unrecognized_keys"===b.code?{message:h.errToObj(a).message??d}:{message:d}}}:{}})}strip(){return new aE({...this._def,unknownKeys:"strip"})}passthrough(){return new aE({...this._def,unknownKeys:"passthrough"})}extend(a){return new aE({...this._def,shape:()=>({...this._def.shape(),...a})})}merge(a){return new aE({unknownKeys:a._def.unknownKeys,catchall:a._def.catchall,shape:()=>({...this._def.shape(),...a._def.shape()}),typeName:i.ZodObject})}setKey(a,b){return this.augment({[a]:b})}catchall(a){return new aE({...this._def,catchall:a})}pick(a){let b={};for(let c of f.objectKeys(a))a[c]&&this.shape[c]&&(b[c]=this.shape[c]);return new aE({...this._def,shape:()=>b})}omit(a){let b={};for(let c of f.objectKeys(this.shape))a[c]||(b[c]=this.shape[c]);return new aE({...this._def,shape:()=>b})}deepPartial(){return function a(b){if(b instanceof aE){let c={};for(let d in b.shape){let e=b.shape[d];c[d]=aV.create(a(e))}return new aE({...b._def,shape:()=>c})}if(b instanceof aD)return new aD({...b._def,type:a(b.element)});if(b instanceof aV)return aV.create(a(b.unwrap()));if(b instanceof aW)return aW.create(a(b.unwrap()));if(b instanceof aJ)return aJ.create(b.items.map(b=>a(b)));else return b}(this)}partial(a){let b={};for(let c of f.objectKeys(this.shape)){let d=this.shape[c];a&&!a[c]?b[c]=d:b[c]=d.optional()}return new aE({...this._def,shape:()=>b})}required(a){let b={};for(let c of f.objectKeys(this.shape))if(a&&!a[c])b[c]=this.shape[c];else{let a=this.shape[c];for(;a instanceof aV;)a=a._def.innerType;b[c]=a}return new aE({...this._def,shape:()=>b})}keyof(){return aQ(f.objectKeys(this.shape))}}aE.create=(a,b)=>new aE({shape:()=>a,unknownKeys:"strip",catchall:aB.create(),typeName:i.ZodObject,...Z(b)}),aE.strictCreate=(a,b)=>new aE({shape:()=>a,unknownKeys:"strict",catchall:aB.create(),typeName:i.ZodObject,...Z(b)}),aE.lazycreate=(a,b)=>new aE({shape:a,unknownKeys:"strip",catchall:aB.create(),typeName:i.ZodObject,...Z(b)});class aF extends ${_parse(a){let{ctx:b}=this._processInputParams(a),c=this._def.options;if(b.common.async)return Promise.all(c.map(async a=>{let c={...b,common:{...b.common,issues:[]},parent:null};return{result:await a._parseAsync({data:b.data,path:b.path,parent:c}),ctx:c}})).then(function(a){for(let b of a)if("valid"===b.result.status)return b.result;for(let c of a)if("dirty"===c.result.status)return b.common.issues.push(...c.ctx.common.issues),c.result;let c=a.map(a=>new H(a.ctx.common.issues));return O(b,{code:F.invalid_union,unionErrors:c}),Q});{let a,d=[];for(let e of c){let c={...b,common:{...b.common,issues:[]},parent:null},f=e._parseSync({data:b.data,path:b.path,parent:c});if("valid"===f.status)return f;"dirty"!==f.status||a||(a={result:f,ctx:c}),c.common.issues.length&&d.push(c.common.issues)}if(a)return b.common.issues.push(...a.ctx.common.issues),a.result;let e=d.map(a=>new H(a));return O(b,{code:F.invalid_union,unionErrors:e}),Q}}get options(){return this._def.options}}aF.create=(a,b)=>new aF({options:a,typeName:i.ZodUnion,...Z(b)});let aG=a=>{if(a instanceof aO)return aG(a.schema);if(a instanceof aU)return aG(a.innerType());if(a instanceof aP)return[a.value];if(a instanceof aR)return a.options;if(a instanceof aS)return f.objectValues(a.enum);else if(a instanceof aX)return aG(a._def.innerType);else if(a instanceof ax)return[void 0];else if(a instanceof ay)return[null];else if(a instanceof aV)return[void 0,...aG(a.unwrap())];else if(a instanceof aW)return[null,...aG(a.unwrap())];else if(a instanceof a_)return aG(a.unwrap());else if(a instanceof a1)return aG(a.unwrap());else if(a instanceof aY)return aG(a._def.innerType);else return[]};class aH extends ${_parse(a){let{ctx:b}=this._processInputParams(a);if(b.parsedType!==D.object)return O(b,{code:F.invalid_type,expected:D.object,received:b.parsedType}),Q;let c=this.discriminator,d=b.data[c],e=this.optionsMap.get(d);return e?b.common.async?e._parseAsync({data:b.data,path:b.path,parent:b}):e._parseSync({data:b.data,path:b.path,parent:b}):(O(b,{code:F.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[c]}),Q)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(a,b,c){let d=new Map;for(let c of b){let b=aG(c.shape[a]);if(!b.length)throw Error(`A discriminator value for key \`${a}\` could not be extracted from all schema options`);for(let e of b){if(d.has(e))throw Error(`Discriminator property ${String(a)} has duplicate value ${String(e)}`);d.set(e,c)}}return new aH({typeName:i.ZodDiscriminatedUnion,discriminator:a,options:b,optionsMap:d,...Z(c)})}}class aI extends ${_parse(a){let{status:b,ctx:c}=this._processInputParams(a),d=(a,d)=>{if(T(a)||T(d))return Q;let e=function a(b,c){let d=E(b),e=E(c);if(b===c)return{valid:!0,data:b};if(d===D.object&&e===D.object){let d=f.objectKeys(c),e=f.objectKeys(b).filter(a=>-1!==d.indexOf(a)),g={...b,...c};for(let d of e){let e=a(b[d],c[d]);if(!e.valid)return{valid:!1};g[d]=e.data}return{valid:!0,data:g}}if(d===D.array&&e===D.array){if(b.length!==c.length)return{valid:!1};let d=[];for(let e=0;e<b.length;e++){let f=a(b[e],c[e]);if(!f.valid)return{valid:!1};d.push(f.data)}return{valid:!0,data:d}}if(d===D.date&&e===D.date&&+b==+c)return{valid:!0,data:b};return{valid:!1}}(a.value,d.value);return e.valid?((U(a)||U(d))&&b.dirty(),{status:b.value,value:e.data}):(O(c,{code:F.invalid_intersection_types}),Q)};return c.common.async?Promise.all([this._def.left._parseAsync({data:c.data,path:c.path,parent:c}),this._def.right._parseAsync({data:c.data,path:c.path,parent:c})]).then(([a,b])=>d(a,b)):d(this._def.left._parseSync({data:c.data,path:c.path,parent:c}),this._def.right._parseSync({data:c.data,path:c.path,parent:c}))}}aI.create=(a,b,c)=>new aI({left:a,right:b,typeName:i.ZodIntersection,...Z(c)});class aJ extends ${_parse(a){let{status:b,ctx:c}=this._processInputParams(a);if(c.parsedType!==D.array)return O(c,{code:F.invalid_type,expected:D.array,received:c.parsedType}),Q;if(c.data.length<this._def.items.length)return O(c,{code:F.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Q;!this._def.rest&&c.data.length>this._def.items.length&&(O(c,{code:F.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),b.dirty());let d=[...c.data].map((a,b)=>{let d=this._def.items[b]||this._def.rest;return d?d._parse(new X(c,a,c.path,b)):null}).filter(a=>!!a);return c.common.async?Promise.all(d).then(a=>P.mergeArray(b,a)):P.mergeArray(b,d)}get items(){return this._def.items}rest(a){return new aJ({...this._def,rest:a})}}aJ.create=(a,b)=>{if(!Array.isArray(a))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new aJ({items:a,typeName:i.ZodTuple,rest:null,...Z(b)})};class aK extends ${get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(a){let{status:b,ctx:c}=this._processInputParams(a);if(c.parsedType!==D.object)return O(c,{code:F.invalid_type,expected:D.object,received:c.parsedType}),Q;let d=[],e=this._def.keyType,f=this._def.valueType;for(let a in c.data)d.push({key:e._parse(new X(c,a,c.path,a)),value:f._parse(new X(c,c.data[a],c.path,a)),alwaysSet:a in c.data});return c.common.async?P.mergeObjectAsync(b,d):P.mergeObjectSync(b,d)}get element(){return this._def.valueType}static create(a,b,c){return new aK(b instanceof $?{keyType:a,valueType:b,typeName:i.ZodRecord,...Z(c)}:{keyType:ar.create(),valueType:a,typeName:i.ZodRecord,...Z(b)})}}class aL extends ${get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(a){let{status:b,ctx:c}=this._processInputParams(a);if(c.parsedType!==D.map)return O(c,{code:F.invalid_type,expected:D.map,received:c.parsedType}),Q;let d=this._def.keyType,e=this._def.valueType,f=[...c.data.entries()].map(([a,b],f)=>({key:d._parse(new X(c,a,c.path,[f,"key"])),value:e._parse(new X(c,b,c.path,[f,"value"]))}));if(c.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let c of f){let d=await c.key,e=await c.value;if("aborted"===d.status||"aborted"===e.status)return Q;("dirty"===d.status||"dirty"===e.status)&&b.dirty(),a.set(d.value,e.value)}return{status:b.value,value:a}})}{let a=new Map;for(let c of f){let d=c.key,e=c.value;if("aborted"===d.status||"aborted"===e.status)return Q;("dirty"===d.status||"dirty"===e.status)&&b.dirty(),a.set(d.value,e.value)}return{status:b.value,value:a}}}}aL.create=(a,b,c)=>new aL({valueType:b,keyType:a,typeName:i.ZodMap,...Z(c)});class aM extends ${_parse(a){let{status:b,ctx:c}=this._processInputParams(a);if(c.parsedType!==D.set)return O(c,{code:F.invalid_type,expected:D.set,received:c.parsedType}),Q;let d=this._def;null!==d.minSize&&c.data.size<d.minSize.value&&(O(c,{code:F.too_small,minimum:d.minSize.value,type:"set",inclusive:!0,exact:!1,message:d.minSize.message}),b.dirty()),null!==d.maxSize&&c.data.size>d.maxSize.value&&(O(c,{code:F.too_big,maximum:d.maxSize.value,type:"set",inclusive:!0,exact:!1,message:d.maxSize.message}),b.dirty());let e=this._def.valueType;function f(a){let c=new Set;for(let d of a){if("aborted"===d.status)return Q;"dirty"===d.status&&b.dirty(),c.add(d.value)}return{status:b.value,value:c}}let g=[...c.data.values()].map((a,b)=>e._parse(new X(c,a,c.path,b)));return c.common.async?Promise.all(g).then(a=>f(a)):f(g)}min(a,b){return new aM({...this._def,minSize:{value:a,message:h.toString(b)}})}max(a,b){return new aM({...this._def,maxSize:{value:a,message:h.toString(b)}})}size(a,b){return this.min(a,b).max(a,b)}nonempty(a){return this.min(1,a)}}aM.create=(a,b)=>new aM({valueType:a,minSize:null,maxSize:null,typeName:i.ZodSet,...Z(b)});class aN extends ${constructor(){super(...arguments),this.validate=this.implement}_parse(a){let{ctx:b}=this._processInputParams(a);if(b.parsedType!==D.function)return O(b,{code:F.invalid_type,expected:D.function,received:b.parsedType}),Q;function c(a,c){return M({data:a,path:b.path,errorMaps:[b.common.contextualErrorMap,b.schemaErrorMap,L(),I].filter(a=>!!a),issueData:{code:F.invalid_arguments,argumentsError:c}})}function d(a,c){return M({data:a,path:b.path,errorMaps:[b.common.contextualErrorMap,b.schemaErrorMap,L(),I].filter(a=>!!a),issueData:{code:F.invalid_return_type,returnTypeError:c}})}let e={errorMap:b.common.contextualErrorMap},f=b.data;if(this._def.returns instanceof aT){let a=this;return S(async function(...b){let g=new H([]),h=await a._def.args.parseAsync(b,e).catch(a=>{throw g.addIssue(c(b,a)),g}),i=await Reflect.apply(f,this,h);return await a._def.returns._def.type.parseAsync(i,e).catch(a=>{throw g.addIssue(d(i,a)),g})})}{let a=this;return S(function(...b){let g=a._def.args.safeParse(b,e);if(!g.success)throw new H([c(b,g.error)]);let h=Reflect.apply(f,this,g.data),i=a._def.returns.safeParse(h,e);if(!i.success)throw new H([d(h,i.error)]);return i.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...a){return new aN({...this._def,args:aJ.create(a).rest(aA.create())})}returns(a){return new aN({...this._def,returns:a})}implement(a){return this.parse(a)}strictImplement(a){return this.parse(a)}static create(a,b,c){return new aN({args:a||aJ.create([]).rest(aA.create()),returns:b||aA.create(),typeName:i.ZodFunction,...Z(c)})}}class aO extends ${get schema(){return this._def.getter()}_parse(a){let{ctx:b}=this._processInputParams(a);return this._def.getter()._parse({data:b.data,path:b.path,parent:b})}}aO.create=(a,b)=>new aO({getter:a,typeName:i.ZodLazy,...Z(b)});class aP extends ${_parse(a){if(a.data!==this._def.value){let b=this._getOrReturnCtx(a);return O(b,{received:b.data,code:F.invalid_literal,expected:this._def.value}),Q}return{status:"valid",value:a.data}}get value(){return this._def.value}}function aQ(a,b){return new aR({values:a,typeName:i.ZodEnum,...Z(b)})}aP.create=(a,b)=>new aP({value:a,typeName:i.ZodLiteral,...Z(b)});class aR extends ${_parse(a){if("string"!=typeof a.data){let b=this._getOrReturnCtx(a),c=this._def.values;return O(b,{expected:f.joinValues(c),received:b.parsedType,code:F.invalid_type}),Q}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(a.data)){let b=this._getOrReturnCtx(a),c=this._def.values;return O(b,{received:b.data,code:F.invalid_enum_value,options:c}),Q}return S(a.data)}get options(){return this._def.values}get enum(){let a={};for(let b of this._def.values)a[b]=b;return a}get Values(){let a={};for(let b of this._def.values)a[b]=b;return a}get Enum(){let a={};for(let b of this._def.values)a[b]=b;return a}extract(a,b=this._def){return aR.create(a,{...this._def,...b})}exclude(a,b=this._def){return aR.create(this.options.filter(b=>!a.includes(b)),{...this._def,...b})}}aR.create=aQ;class aS extends ${_parse(a){let b=f.getValidEnumValues(this._def.values),c=this._getOrReturnCtx(a);if(c.parsedType!==D.string&&c.parsedType!==D.number){let a=f.objectValues(b);return O(c,{expected:f.joinValues(a),received:c.parsedType,code:F.invalid_type}),Q}if(this._cache||(this._cache=new Set(f.getValidEnumValues(this._def.values))),!this._cache.has(a.data)){let a=f.objectValues(b);return O(c,{received:c.data,code:F.invalid_enum_value,options:a}),Q}return S(a.data)}get enum(){return this._def.values}}aS.create=(a,b)=>new aS({values:a,typeName:i.ZodNativeEnum,...Z(b)});class aT extends ${unwrap(){return this._def.type}_parse(a){let{ctx:b}=this._processInputParams(a);return b.parsedType!==D.promise&&!1===b.common.async?(O(b,{code:F.invalid_type,expected:D.promise,received:b.parsedType}),Q):S((b.parsedType===D.promise?b.data:Promise.resolve(b.data)).then(a=>this._def.type.parseAsync(a,{path:b.path,errorMap:b.common.contextualErrorMap})))}}aT.create=(a,b)=>new aT({type:a,typeName:i.ZodPromise,...Z(b)});class aU extends ${innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===i.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(a){let{status:b,ctx:c}=this._processInputParams(a),d=this._def.effect||null,e={addIssue:a=>{O(c,a),a.fatal?b.abort():b.dirty()},get path(){return c.path}};if(e.addIssue=e.addIssue.bind(e),"preprocess"===d.type){let a=d.transform(c.data,e);if(c.common.async)return Promise.resolve(a).then(async a=>{if("aborted"===b.value)return Q;let d=await this._def.schema._parseAsync({data:a,path:c.path,parent:c});return"aborted"===d.status?Q:"dirty"===d.status||"dirty"===b.value?R(d.value):d});{if("aborted"===b.value)return Q;let d=this._def.schema._parseSync({data:a,path:c.path,parent:c});return"aborted"===d.status?Q:"dirty"===d.status||"dirty"===b.value?R(d.value):d}}if("refinement"===d.type){let a=a=>{let b=d.refinement(a,e);if(c.common.async)return Promise.resolve(b);if(b instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(!1!==c.common.async)return this._def.schema._parseAsync({data:c.data,path:c.path,parent:c}).then(c=>"aborted"===c.status?Q:("dirty"===c.status&&b.dirty(),a(c.value).then(()=>({status:b.value,value:c.value}))));{let d=this._def.schema._parseSync({data:c.data,path:c.path,parent:c});return"aborted"===d.status?Q:("dirty"===d.status&&b.dirty(),a(d.value),{status:b.value,value:d.value})}}if("transform"===d.type)if(!1!==c.common.async)return this._def.schema._parseAsync({data:c.data,path:c.path,parent:c}).then(a=>V(a)?Promise.resolve(d.transform(a.value,e)).then(a=>({status:b.value,value:a})):Q);else{let a=this._def.schema._parseSync({data:c.data,path:c.path,parent:c});if(!V(a))return Q;let f=d.transform(a.value,e);if(f instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:b.value,value:f}}f.assertNever(d)}}aU.create=(a,b,c)=>new aU({schema:a,typeName:i.ZodEffects,effect:b,...Z(c)}),aU.createWithPreprocess=(a,b,c)=>new aU({schema:b,effect:{type:"preprocess",transform:a},typeName:i.ZodEffects,...Z(c)});class aV extends ${_parse(a){return this._getType(a)===D.undefined?S(void 0):this._def.innerType._parse(a)}unwrap(){return this._def.innerType}}aV.create=(a,b)=>new aV({innerType:a,typeName:i.ZodOptional,...Z(b)});class aW extends ${_parse(a){return this._getType(a)===D.null?S(null):this._def.innerType._parse(a)}unwrap(){return this._def.innerType}}aW.create=(a,b)=>new aW({innerType:a,typeName:i.ZodNullable,...Z(b)});class aX extends ${_parse(a){let{ctx:b}=this._processInputParams(a),c=b.data;return b.parsedType===D.undefined&&(c=this._def.defaultValue()),this._def.innerType._parse({data:c,path:b.path,parent:b})}removeDefault(){return this._def.innerType}}aX.create=(a,b)=>new aX({innerType:a,typeName:i.ZodDefault,defaultValue:"function"==typeof b.default?b.default:()=>b.default,...Z(b)});class aY extends ${_parse(a){let{ctx:b}=this._processInputParams(a),c={...b,common:{...b.common,issues:[]}},d=this._def.innerType._parse({data:c.data,path:c.path,parent:{...c}});return W(d)?d.then(a=>({status:"valid",value:"valid"===a.status?a.value:this._def.catchValue({get error(){return new H(c.common.issues)},input:c.data})})):{status:"valid",value:"valid"===d.status?d.value:this._def.catchValue({get error(){return new H(c.common.issues)},input:c.data})}}removeCatch(){return this._def.innerType}}aY.create=(a,b)=>new aY({innerType:a,typeName:i.ZodCatch,catchValue:"function"==typeof b.catch?b.catch:()=>b.catch,...Z(b)});class aZ extends ${_parse(a){if(this._getType(a)!==D.nan){let b=this._getOrReturnCtx(a);return O(b,{code:F.invalid_type,expected:D.nan,received:b.parsedType}),Q}return{status:"valid",value:a.data}}}aZ.create=a=>new aZ({typeName:i.ZodNaN,...Z(a)});let a$=Symbol("zod_brand");class a_ extends ${_parse(a){let{ctx:b}=this._processInputParams(a),c=b.data;return this._def.type._parse({data:c,path:b.path,parent:b})}unwrap(){return this._def.type}}class a0 extends ${_parse(a){let{status:b,ctx:c}=this._processInputParams(a);if(c.common.async)return(async()=>{let a=await this._def.in._parseAsync({data:c.data,path:c.path,parent:c});return"aborted"===a.status?Q:"dirty"===a.status?(b.dirty(),R(a.value)):this._def.out._parseAsync({data:a.value,path:c.path,parent:c})})();{let a=this._def.in._parseSync({data:c.data,path:c.path,parent:c});return"aborted"===a.status?Q:"dirty"===a.status?(b.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:c.path,parent:c})}}static create(a,b){return new a0({in:a,out:b,typeName:i.ZodPipeline})}}class a1 extends ${_parse(a){let b=this._def.innerType._parse(a),c=a=>(V(a)&&(a.value=Object.freeze(a.value)),a);return W(b)?b.then(a=>c(a)):c(b)}unwrap(){return this._def.innerType}}function a2(a,b){let c="function"==typeof a?a(b):"string"==typeof a?{message:a}:a;return"string"==typeof c?{message:c}:c}function a3(a,b={},c){return a?az.create().superRefine((d,e)=>{let f=a(d);if(f instanceof Promise)return f.then(a=>{if(!a){let a=a2(b,d),f=a.fatal??c??!0;e.addIssue({code:"custom",...a,fatal:f})}});if(!f){let a=a2(b,d),f=a.fatal??c??!0;e.addIssue({code:"custom",...a,fatal:f})}}):az.create()}a1.create=(a,b)=>new a1({innerType:a,typeName:i.ZodReadonly,...Z(b)});let a4={object:aE.lazycreate};(e=i||(i={})).ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly";let a5=(a,b={message:`Input not instance of ${a.name}`})=>a3(b=>b instanceof a,b),a6=ar.create,a7=as.create,a8=aZ.create,a9=at.create,ba=au.create,bb=av.create,bc=aw.create,bd=ax.create,be=ay.create,bf=az.create,bg=aA.create,bh=aB.create,bi=aC.create,bj=aD.create,bk=aE.create,bl=aE.strictCreate,bm=aF.create,bn=aH.create,bo=aI.create,bp=aJ.create,bq=aK.create,br=aL.create,bs=aM.create,bt=aN.create,bu=aO.create,bv=aP.create,bw=aR.create,bx=aS.create,by=aT.create,bz=aU.create,bA=aV.create,bB=aW.create,bC=aU.createWithPreprocess,bD=a0.create,bE=()=>a6().optional(),bF=()=>a7().optional(),bG=()=>ba().optional(),bH={string:a=>ar.create({...a,coerce:!0}),number:a=>as.create({...a,coerce:!0}),boolean:a=>au.create({...a,coerce:!0}),bigint:a=>at.create({...a,coerce:!0}),date:a=>av.create({...a,coerce:!0})};a.s(["BRAND",0,a$,"NEVER",0,Q,"Schema",0,$,"ZodAny",0,az,"ZodArray",0,aD,"ZodBigInt",0,at,"ZodBoolean",0,au,"ZodBranded",0,a_,"ZodCatch",0,aY,"ZodDate",0,av,"ZodDefault",0,aX,"ZodDiscriminatedUnion",0,aH,"ZodEffects",0,aU,"ZodEnum",0,aR,"ZodFirstPartyTypeKind",0,i,"ZodFunction",0,aN,"ZodIntersection",0,aI,"ZodLazy",0,aO,"ZodLiteral",0,aP,"ZodMap",0,aL,"ZodNaN",0,aZ,"ZodNativeEnum",0,aS,"ZodNever",0,aB,"ZodNull",0,ay,"ZodNullable",0,aW,"ZodNumber",0,as,"ZodObject",0,aE,"ZodOptional",0,aV,"ZodPipeline",0,a0,"ZodPromise",0,aT,"ZodReadonly",0,a1,"ZodRecord",0,aK,"ZodSchema",0,$,"ZodSet",0,aM,"ZodString",0,ar,"ZodSymbol",0,aw,"ZodTransformer",0,aU,"ZodTuple",0,aJ,"ZodType",0,$,"ZodUndefined",0,ax,"ZodUnion",0,aF,"ZodUnknown",0,aA,"ZodVoid",0,aC,"any",0,bf,"array",0,bj,"bigint",0,a9,"boolean",0,ba,"coerce",0,bH,"custom",0,a3,"date",0,bb,"datetimeRegex",0,aq,"discriminatedUnion",0,bn,"effect",0,bz,"enum",0,bw,"function",0,bt,"instanceof",0,a5,"intersection",0,bo,"late",0,a4,"lazy",0,bu,"literal",0,bv,"map",0,br,"nan",0,a8,"nativeEnum",0,bx,"never",0,bh,"null",0,be,"nullable",0,bB,"number",0,a7,"object",0,bk,"oboolean",0,bG,"onumber",0,bF,"optional",0,bA,"ostring",0,bE,"pipeline",0,bD,"preprocess",0,bC,"promise",0,by,"record",0,bq,"set",0,bs,"strictObject",0,bl,"string",0,a6,"symbol",0,bc,"transformer",0,bz,"tuple",0,bp,"undefined",0,bd,"union",0,bm,"unknown",0,bg,"void",0,bi],3703),a.i(3703),a.i(11521),a.s(["BRAND",0,a$,"DIRTY",0,R,"EMPTY_PATH",0,N,"INVALID",0,Q,"NEVER",0,Q,"OK",0,S,"ParseStatus",0,P,"Schema",0,$,"ZodAny",0,az,"ZodArray",0,aD,"ZodBigInt",0,at,"ZodBoolean",0,au,"ZodBranded",0,a_,"ZodCatch",0,aY,"ZodDate",0,av,"ZodDefault",0,aX,"ZodDiscriminatedUnion",0,aH,"ZodEffects",0,aU,"ZodEnum",0,aR,"ZodError",0,H,"ZodFirstPartyTypeKind",0,i,"ZodFunction",0,aN,"ZodIntersection",0,aI,"ZodIssueCode",0,F,"ZodLazy",0,aO,"ZodLiteral",0,aP,"ZodMap",0,aL,"ZodNaN",0,aZ,"ZodNativeEnum",0,aS,"ZodNever",0,aB,"ZodNull",0,ay,"ZodNullable",0,aW,"ZodNumber",0,as,"ZodObject",0,aE,"ZodOptional",0,aV,"ZodParsedType",0,D,"ZodPipeline",0,a0,"ZodPromise",0,aT,"ZodReadonly",0,a1,"ZodRecord",0,aK,"ZodSchema",0,$,"ZodSet",0,aM,"ZodString",0,ar,"ZodSymbol",0,aw,"ZodTransformer",0,aU,"ZodTuple",0,aJ,"ZodType",0,$,"ZodUndefined",0,ax,"ZodUnion",0,aF,"ZodUnknown",0,aA,"ZodVoid",0,aC,"addIssueToContext",0,O,"any",0,bf,"array",0,bj,"bigint",0,a9,"boolean",0,ba,"coerce",0,bH,"custom",0,a3,"date",0,bb,"datetimeRegex",0,aq,"defaultErrorMap",0,I,"discriminatedUnion",0,bn,"effect",0,bz,"enum",0,bw,"function",0,bt,"getErrorMap",0,L,"getParsedType",0,E,"instanceof",0,a5,"intersection",0,bo,"isAborted",0,T,"isAsync",0,W,"isDirty",0,U,"isValid",0,V,"late",0,a4,"lazy",0,bu,"literal",0,bv,"makeIssue",0,M,"map",0,br,"nan",0,a8,"nativeEnum",0,bx,"never",0,bh,"null",0,be,"nullable",0,bB,"number",0,a7,"object",0,bk,"objectUtil",0,g,"oboolean",0,bG,"onumber",0,bF,"optional",0,bA,"ostring",0,bE,"pipeline",0,bD,"preprocess",0,bC,"promise",0,by,"quotelessJson",0,G,"record",0,bq,"set",0,bs,"setErrorMap",0,K,"strictObject",0,bl,"string",0,a6,"symbol",0,bc,"transformer",0,bz,"tuple",0,bp,"undefined",0,bd,"union",0,bm,"unknown",0,bg,"util",0,f,"void",0,bi],2764);var bI=a.i(2764),bI=bI;let bJ=bI.number().int().min(3e4).max(36e5).optional(),bK=bI.enum(["anthropic","openai","google","opencode","moonshot","openrouter","any"]),bL=bI.enum(["anthropic","openai","google","opencode","moonshot","openrouter"]),bM=bI.object({require:bI.number().int().min(0).default(1),crossLineage:bI.boolean().default(!0),candidates:bI.array(bI.object({lineage:bL,models:bI.array(bI.string()).optional(),persona:bI.string().optional()}))}),bN=bI.object({include:bI.array(bI.string()).default([]),exclude:bI.array(bI.string()).default([])}).default({include:[],exclude:[]}),bO=bI.object({maxRounds:bI.number().int().min(1).default(2),onDisagreement:bI.enum(["continue","escalate","accept-doer"]).default("continue"),shareSessionAcrossRounds:bI.boolean().default(!0),shareSessionAcrossPhases:bI.boolean().default(!1)}).default({maxRounds:2,onDisagreement:"continue",shareSessionAcrossRounds:!0,shareSessionAcrossPhases:!1}),bP=bI.object({id:bI.string().min(1),kind:bI.enum(["plan","spec","tests","implement","review","verify","divergence"]),title:bI.string().min(1),description:bI.string().optional(),doer:bI.object({lineage:bK,models:bI.array(bI.string()).optional(),persona:bI.string().optional()}),reviewer:bM.optional(),inputs:bN,iterate:bO,timeoutMs:bJ}),bQ=bI.object({id:bI.string().min(1),kind:bI.literal("review_only"),title:bI.string().min(1),description:bI.string().optional(),reviewer:bM,artifact:bI.object({label:bI.string().min(1).default("Artifact to review"),hint:bI.string().default("Paste a unified diff, a markdown draft, code, or any text blob."),maxBytes:bI.number().int().min(1).default(1048576)}).default({label:"Artifact to review",hint:"Paste a unified diff, a markdown draft, code, or any text blob.",maxBytes:1048576}),inputs:bN,timeoutMs:bJ}),bR=bI.discriminatedUnion("kind",[bP.extend({kind:bI.literal("plan")}),bP.extend({kind:bI.literal("spec")}),bP.extend({kind:bI.literal("tests")}),bP.extend({kind:bI.literal("implement")}),bP.extend({kind:bI.literal("review")}),bP.extend({kind:bI.literal("verify")}),bP.extend({kind:bI.literal("divergence")}),bQ]),bS=bI.object({id:bI.string().min(1),name:bI.string().min(1),description:bI.string().min(1),author:bI.string().default("chorus"),agreementThreshold:bI.number().min(0).max(1).default(.66),onThresholdMet:bI.enum(["merge","ask","review"]).default("ask"),maxRounds:bI.number().int().min(1).default(3),yoloDefault:bI.boolean().default(!1),estimatedBaselineTokens:bI.number().int().min(0).optional(),phases:bI.array(bR).min(1).refine(a=>{let b=a.filter(a=>"review_only"===a.kind).length;return 0===b||1===b&&1===a.length},{message:"review_only phases cannot be mixed with other phase kinds and only one is allowed (hybrid templates are out of scope)"}).refine(a=>{let b=a.map(a=>a.id);return new Set(b).size===b.length},{message:"phase ids must be unique"}),ship:bI.object({enabled:bI.boolean().default(!1),baseBranch:bI.string().optional(),branchPattern:bI.string().default("chorus/{chatId}"),titleTemplate:bI.string().default("chorus: {template} via #{chatId}")}).optional(),fallback:bI.object({doer:bI.array(bI.object({lineage:bK,models:bI.array(bI.string()).min(1),persona:bI.string().optional()})).optional(),reviewer:bI.array(bI.object({lineage:bL,models:bI.array(bI.string()).min(1),persona:bI.string().optional()})).optional()}).optional()}),bT=Object.freeze({valid:!0,issues:[]});var bU=a.i(68114),bV=a.i(62786),bW=a.i(19546),bX=a.i(51996),bY=a.i(91870);let bZ=(0,bY.default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]),b$={claude:"anthropic",codex:"openai",gemini:"google",opencode:"opencode",kimi:"moonshot",openrouter:"openrouter"},b_={anthropic:"claude",openai:"codex",google:"gemini",opencode:"opencode",moonshot:"kimi",xai:"opencode"},b0={claude:"claude-opus-4-7",codex:"gpt-5.5",gemini:"gemini-3.1-pro-preview",opencode:"kimi-k2.6",kimi:"kimi-k2.6",openrouter:""},b1={id:"",name:"",description:"",author:"you",category:"review",phases:[{id:"review",name:"Review",description:"Three independent critiques.",kind:"review",gate:"ask-user",doer:{lineage:"claude",models:["claude-opus-4-7"]},reviewer:{require:3,crossLineage:!0,candidates:["codex","gemini","opencode"]},inputs:{include:[],exclude:[]},iterate:{max:3,onMax:"ask-user"},blindSpots:[],execution:"parallel",builtin:!1}],threshold:"unanimous",onThresholdMet:"ask-user",maxRounds:3,yoloDefault:!1,fallbackDoer:[],fallbackReviewer:[]},b2=[{id:"review",label:"Review"},{id:"plan",label:"Plan"},{id:"debug",label:"Debug"},{id:"decide",label:"Decide"}],b3=[{id:"unanimous",label:"Unanimous",hint:"All lineages must agree. Strictest — best for high-stakes reviews."},{id:"majority",label:"Majority",hint:"≥ ⅔ of lineages agree. Good default for code review."},{id:"any",label:"Any",hint:"≥1 lineage agrees. Useful for brainstorming where divergence is fine."}],b4=[{id:"auto-finalize",label:"Auto-finalize"},{id:"ask-user",label:"Ask me"}],b5=[{id:1,label:"Basics",icon:bZ},{id:2,label:"Phases",icon:bV.Layers},{id:3,label:"Fallback",icon:bW.Shuffle},{id:4,label:"Policy",icon:bX.Sliders}],b6=["claude","codex","gemini","opencode","kimi","openrouter"];function b7(a){return a.trim().toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")||"untitled"}function b8(a){var b;return C.default.stringify({id:(b=a).id||b7(b.name),name:b.name||"Untitled template",description:b.description||"Describe what this template is for.",author:b.author||"chorus",agreementThreshold:void 0!==b.customThreshold?b.customThreshold:function(a){switch(a){case"unanimous":return 1;case"majority":return .66;case"any":return .34}}(b.threshold),onThresholdMet:b.onThresholdMetRaw??("auto-finalize"===b.onThresholdMet?"merge":"ask"),maxRounds:b.maxRounds,yoloDefault:b.yoloDefault,phases:b.phases.map(a=>{let b="review_only"===a.kind,c=a.reviewer.candidates.length>0?{require:a.reviewer.require,crossLineage:a.reviewer.crossLineage,candidates:a.reviewer.candidates.flatMap(b=>{let c=(a.reviewer.candidateModels?.[b]??[]).map(a=>a.trim()).filter(a=>a.length>0),d=a.reviewer.candidatePersonas?.[b],e=b$[b]??"anthropic";if(0===c.length){let a=b0[b]??"claude-opus-4-7",c=d?.[""];return[{lineage:e,models:[a],...c?{persona:c}:{}}]}return c.map(a=>{let b=d?.[a];return{lineage:e,models:[a],...b?{persona:b}:{}}})})}:void 0;return b?{id:a.id,kind:a.kind,title:a.name,description:a.description,reviewer:c,inputs:{include:a.inputs.include,exclude:a.inputs.exclude},artifact:{label:a.artifact?.label??"Artifact to review",hint:a.artifact?.hint??"Paste a unified diff, a markdown draft, code, or any text blob.",maxBytes:a.artifact?.maxBytes??1048576}}:{id:a.id,kind:a.kind,title:a.name,description:a.description,doer:{lineage:b$[a.doer.lineage]??"anthropic",models:a.doer.models.length>0?a.doer.models:[b0[a.doer.lineage]??"claude-opus-4-7"],...a.doer.persona?{persona:a.doer.persona}:{}},reviewer:c,inputs:{include:a.inputs.include,exclude:a.inputs.exclude},iterate:{maxRounds:a.iterate.max,onDisagreement:"loopback"===a.iterate.onMax?"continue":"fail"===a.iterate.onMax?"accept-doer":"escalate",shareSessionAcrossRounds:!0,shareSessionAcrossPhases:!1}}}),...b.fallbackDoer.length>0||b.fallbackReviewer.length>0?{fallback:{...b.fallbackDoer.length>0?{doer:b.fallbackDoer.map(a=>({lineage:b$[a.lineage]??"anthropic",models:[a.model],...a.persona?{persona:a.persona}:{}}))}:{},...b.fallbackReviewer.length>0?{reviewer:b.fallbackReviewer.map(a=>({lineage:b$[a.lineage]??"anthropic",models:[a.model],...a.persona?{persona:a.persona}:{}}))}:{}}}:{}},{lineWidth:0})}let b9=(0,bY.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),ca=(0,bY.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var cb=a.i(24897),cc=a.i(37035),cd=a.i(85553),ce=a.i(9106),cf=a.i(97535),cg=a.i(61281),ch=a.i(65296),ci=a.i(23596),cj=a.i(68737),ck=a.i(88923);let cl={review:cf.Eye,review_only:cf.Eye,plan:cd.ClipboardList,spec:v.FileCode2,tests:cj.TestTube2,implement:ce.Code2,verify:cg.FlaskConical,pr:ch.GitPullRequest,divergence:bW.Shuffle,recon:ci.Search},cm=[{id:"plan",label:"Plan"},{id:"spec",label:"Spec / API"},{id:"tests",label:"Tests"},{id:"implement",label:"Implement"},{id:"verify",label:"Verify"},{id:"pr",label:"Open PR"},{id:"review",label:"Review"},{id:"review_only",label:"Review only (artifact)"},{id:"divergence",label:"Divergence"},{id:"recon",label:"Recon"}],cn=["claude","codex","gemini","opencode","kimi","openrouter"].map(a=>({id:a,label:ck.UI_LINEAGE_LABEL[a],dot:ck.UI_LINEAGE_BRAND[a].dot})),co=ck.UI_LINEAGE_DEFAULT_MODEL,cp={anthropic:"claude",openai:"codex",google:"gemini",opencode:"opencode",moonshot:"kimi",xai:"opencode"};function cq(){let[a,b]=(0,k.useState)({byLineage:{},connectedLineages:new Set,loaded:!1});return(0,k.useEffect)(()=>{(0,cb.listVoices)({enabled:!0}).then(a=>{let c={},d=new Set;for(let b of a){if("openrouter"===b.provider){d.add("openrouter"),(c.openrouter??=[]).push(b.id);continue}let a=cp[b.lineage];a&&(d.add(a),(c[a]??=[]).push(b.model_id)),b.provider.startsWith("opencode")&&"opencode"!==a&&(d.add("opencode"),(c.opencode??=[]).push(b.model_id))}for(let a of Object.keys(c))c[a]=Array.from(new Set(c[a]));b({byLineage:c,connectedLineages:d,loaded:!0})}).catch(()=>b({byLineage:{},connectedLineages:new Set,loaded:!0}))},[]),a}let cr=(0,bY.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),cs=(0,bY.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var ct=a.i(32349),cu=a.i(84623),cv=a.i(34823);function cw({children:a,onClick:b,disabled:c,title:d,className:e}){return(0,j.jsx)("button",{type:"button",disabled:c,onClick:a=>{a.stopPropagation(),b()},title:d,className:(0,bU.cn)("grid h-6 w-6 place-items-center rounded text-muted-foreground transition hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-30",e),children:a})}function cx({label:a,children:b}){return(0,j.jsxs)("div",{children:[(0,j.jsx)("label",{className:"mb-1.5 block text-[10px] font-medium uppercase tracking-wider text-muted-foreground",children:a}),b]})}function cy({on:a,tone:b,onClick:c,children:d}){return(0,j.jsx)("button",{type:"button",onClick:c,className:(0,bU.cn)("rounded-md border px-2 py-0.5 font-mono text-[10px] uppercase tracking-wider transition",{emerald:a?"border-emerald-500/40 bg-emerald-500/15 text-emerald-200":"border-border bg-card/40 text-muted-foreground hover:border-emerald-500/30",rose:a?"border-rose-500/40 bg-rose-500/15 text-rose-200":"border-border bg-card/40 text-muted-foreground hover:border-rose-500/30"}[b]),children:d})}function cz({value:a,personas:b,onChange:c,inline:d,ariaLabel:e}){let f="__none__",g=b.some(b=>b.id===a);return(0,j.jsxs)("select",{value:a??f,onChange:a=>{let b=a.target.value;c(b===f?void 0:b)},className:(0,bU.cn)("h-7 rounded-md border border-border bg-background px-2 text-[11px] focus:border-primary/60 focus:outline-none",d?"w-32 shrink-0":"w-full"),"aria-label":e??"Persona",children:[(0,j.jsx)("option",{value:f,children:"(no persona)"}),b.map(a=>(0,j.jsx)("option",{value:a.id,children:a.label},a.id)),a&&!g&&(0,j.jsxs)("option",{value:a,children:[a," (missing)"]})]})}function cA({lineage:a,value:b,options:c,onChange:d,defaultModel:e}){let f="__custom__",g=!b||c.includes(b),[h,i]=(0,k.useState)(!1);if(h)return(0,j.jsxs)("div",{className:"flex items-center gap-1",children:[(0,j.jsx)("input",{type:"text",value:b,onChange:a=>d(a.target.value),placeholder:e?`default: ${e}`:`${a} model id`,className:"h-7 flex-1 rounded-md border border-border bg-background px-2 font-mono text-[11px] text-foreground placeholder:text-muted-foreground/50 focus:border-primary/60 focus:outline-none",autoFocus:!0}),(0,j.jsx)("button",{type:"button",onClick:()=>i(!1),className:"h-7 rounded-md border border-border bg-card/40 px-2 text-[10px] text-muted-foreground hover:text-foreground",children:"done"})]});if(0===c.length)return(0,j.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,j.jsx)("input",{type:"text",value:b,onChange:a=>d(a.target.value),placeholder:e?`default: ${e}`:`${a} model id`,className:"h-7 w-full rounded-md border border-border bg-background px-2 font-mono text-[11px] text-foreground placeholder:text-muted-foreground/50 focus:border-primary/60 focus:outline-none"}),(0,j.jsxs)("p",{className:"text-[10px] text-amber-400/80",children:["No ",a," voices enabled. Configure in Connect to populate this dropdown."]})]});let l=g?c:[b,...c];return(0,j.jsxs)("select",{value:b,onChange:a=>{a.target.value===f?i(!0):d(a.target.value)},className:"h-7 w-full rounded-md border border-border bg-background px-2 font-mono text-[11px] text-foreground focus:border-primary/60 focus:outline-none",children:[!b&&(0,j.jsx)("option",{value:"",children:e?`default: ${e}`:"— pick a model —"}),l.map(a=>(0,j.jsxs)("option",{value:a,children:[a,c.includes(a)||b!==a?"":" (not enabled)"]},a)),(0,j.jsx)("option",{value:f,children:"+ custom (type a model id)…"})]})}function cB(a){let b=[];for(let c of a.candidates){let d=a.candidateModels?.[c],e=a.candidatePersonas?.[c];if(d&&0!==d.length)for(let a of d)b.push({lineage:c,model:a,...e?.[a]?{persona:e[a]}:{}});else b.push({lineage:c,model:"",...e?.[""]?{persona:e[""]}:{}})}return b}function cC({phase:a,connectedVoices:b,personas:c,onUpdate:d}){let e=cB(a.reviewer),f=cn.filter(a=>0===b.connectedLineages.size||b.connectedLineages.has(a.id));function g(b){d({reviewer:function(a,b){let c=[],d={},e={};for(let b of a)c.includes(b.lineage)||c.push(b.lineage),b.model&&(d[b.lineage]??=[]).push(b.model),b.persona&&((e[b.lineage]??={})[b.model]=b.persona);return{...b,candidates:c,candidateModels:d,...Object.keys(e).length>0?{candidatePersonas:e}:{candidatePersonas:void 0}}}(b,a.reviewer)})}function h(a,c){let d=e.map((b,d)=>d===a?{...b,...c}:b);if(c.lineage&&c.lineage!==e[a].lineage){let e=b.byLineage[c.lineage]??[];d[a].model=e[0]??co[c.lineage]??""}g(d)}return(0,j.jsxs)("div",{className:"space-y-1.5",children:[0===e.length&&(0,j.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"No reviewers yet. Click + add reviewer below."}),e.map((a,d)=>{let i=cn.find(b=>b.id===a.lineage);return(0,j.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,j.jsxs)("select",{value:a.lineage,onChange:a=>h(d,{lineage:a.target.value}),className:"h-7 w-32 shrink-0 rounded-md border border-border bg-background px-2 text-[11px] focus:border-primary/60 focus:outline-none","aria-label":"Reviewer lineage",children:[f.map(a=>(0,j.jsx)("option",{value:a.id,children:a.label},a.id)),!f.find(b=>b.id===a.lineage)&&(0,j.jsxs)("option",{value:a.lineage,children:[i?.label??a.lineage," (not connected)"]})]}),(0,j.jsx)("div",{className:"flex-1",children:(0,j.jsx)(cA,{lineage:a.lineage,value:a.model,options:b.byLineage[a.lineage]??[],defaultModel:co[a.lineage],onChange:a=>h(d,{model:a})})}),(0,j.jsx)(cz,{value:a.persona,personas:c,onChange:a=>h(d,{persona:a}),inline:!0,ariaLabel:"Reviewer persona"}),(0,j.jsx)("button",{type:"button",onClick:()=>{g(e.filter((a,b)=>b!==d))},"aria-label":"Remove reviewer",className:"grid h-7 w-7 shrink-0 place-items-center rounded-md border border-border bg-card/40 text-muted-foreground hover:border-destructive/40 hover:text-destructive",children:(0,j.jsx)(y.X,{className:"h-3 w-3"})})]},d)}),(0,j.jsxs)("button",{type:"button",onClick:function(){let a=f[0]?.id??"claude",c=b.byLineage[a]??[],d=new Set(e.filter(b=>b.lineage===a).map(a=>a.model)),h=c.find(a=>!d.has(a))??co[a]??"";g([...e,{lineage:a,model:h}])},className:"flex w-full items-center justify-center gap-1.5 rounded-md border border-dashed border-border bg-card/30 px-3 py-2 text-[11px] font-medium text-muted-foreground transition hover:border-primary/40 hover:bg-card/50 hover:text-foreground",children:[(0,j.jsx)(w.Plus,{className:"h-3 w-3"}),"Add another reviewer"]})]})}function cD({phase:a,onUpdate:b,connectedVoices:c,personas:d}){return(0,j.jsxs)(cx,{label:"Doer · the agent that writes this phase's output",children:[(0,j.jsx)("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-5",children:cn.filter(a=>0===c.connectedLineages.size||c.connectedLineages.has(a.id)).map(d=>(0,j.jsxs)("button",{type:"button",onClick:()=>{let a=(c.byLineage[d.id]??[])[0]??co[d.id];b({doer:{lineage:d.id,models:a?[a]:[]}})},className:(0,bU.cn)("flex items-center gap-1.5 rounded-md border px-2 py-1.5 text-left transition",a.doer.lineage===d.id?"border-primary/40 bg-primary/10":"border-border bg-card/40 hover:border-foreground/30"),children:[(0,j.jsx)("span",{className:(0,bU.cn)("h-1.5 w-1.5 rounded-full",d.dot)}),(0,j.jsx)("span",{className:"text-xs",children:d.label}),a.doer.lineage===d.id&&(0,j.jsx)(cu.Check,{className:"ml-auto h-3 w-3 text-primary"})]},d.id))}),(0,j.jsx)("div",{className:"mt-2",children:(0,j.jsx)(cA,{lineage:a.doer.lineage,value:a.doer.models[0]??"",options:c.byLineage[a.doer.lineage]??[],defaultModel:co[a.doer.lineage],onChange:c=>b({doer:{...a.doer,models:c?[c]:[]}})})}),(0,j.jsxs)("div",{className:"mt-2",children:[(0,j.jsx)("label",{className:"mb-1 block text-[10px] text-muted-foreground",children:"Persona (optional · prepends a worldview to the doer's prompt)"}),(0,j.jsx)(cz,{value:a.doer.persona,personas:d,onChange:c=>b({doer:c?{...a.doer,persona:c}:(()=>{let{persona:b,...c}=a.doer;return c})()}),ariaLabel:"Doer persona"})]})]})}function cE({phase:a,onUpdate:b}){let c={label:a.artifact?.label??"Artifact to review",hint:a.artifact?.hint??"Paste a unified diff, a markdown draft, code, or any text blob.",maxBytes:a.artifact?.maxBytes??1048576};return(0,j.jsx)(cx,{label:"Artifact · what the user pastes when starting a chat",children:(0,j.jsxs)("div",{className:"space-y-2",children:[(0,j.jsxs)("div",{children:[(0,j.jsx)("label",{className:"text-[10px] text-muted-foreground",children:"Label"}),(0,j.jsx)("input",{type:"text",value:c.label,onChange:a=>b({artifact:{...c,label:a.target.value}}),placeholder:"Artifact to review",className:"mt-1 h-7 w-full rounded-md border border-border bg-background px-2.5 text-[11px] placeholder:text-muted-foreground/60 focus:border-primary/60 focus:outline-none"})]}),(0,j.jsxs)("div",{children:[(0,j.jsx)("label",{className:"text-[10px] text-muted-foreground",children:"Placeholder hint"}),(0,j.jsx)("textarea",{value:a.artifact?.hint??"",onChange:a=>b({artifact:{...c,hint:a.target.value}}),placeholder:"Paste a unified diff, a markdown draft, code, or any text blob.",rows:2,className:"mt-1 w-full resize-none rounded-md border border-border bg-background px-2.5 py-1.5 text-[11px] placeholder:text-muted-foreground/60 focus:border-primary/60 focus:outline-none"})]}),(0,j.jsxs)("div",{children:[(0,j.jsx)("label",{className:"text-[10px] text-muted-foreground",children:"Max bytes (server-side cap)"}),(0,j.jsx)("input",{type:"number",min:1024,step:1024,value:c.maxBytes,onChange:a=>b({artifact:{...c,maxBytes:Math.max(1024,parseInt(a.target.value,10)||1048576)}}),className:"mt-1 h-7 w-full rounded-md border border-border bg-background px-2.5 font-mono text-[11px] focus:border-primary/60 focus:outline-none"}),(0,j.jsx)("p",{className:"mt-1 text-[10px] text-muted-foreground/80",children:"1 MiB = 1048576. Default if unset."})]})]})})}function cF({phase:a,onUpdate:b,connectedVoices:c,personas:d}){return(0,j.jsx)(cx,{label:"Reviewers · who gates this phase",children:(0,j.jsx)(cC,{phase:a,connectedVoices:c,personas:d,onUpdate:b})})}function cG({phase:a,onUpdate:b}){return(0,j.jsx)(cx,{label:"Approvals",children:(0,j.jsxs)("div",{className:"flex items-center gap-4 flex-wrap",children:[(0,j.jsxs)("label",{className:"flex items-center gap-2 text-[11px] text-muted-foreground",children:["Require:",(0,j.jsx)("input",{type:"number",min:0,max:Math.max(1,cB(a.reviewer).length),value:a.reviewer.require,onChange:c=>b({reviewer:{...a.reviewer,require:Math.max(0,parseInt(c.target.value,10)||0)}}),className:"h-6 w-12 rounded border border-border bg-background px-1.5 text-center font-mono text-[11px]"}),"approval",1===a.reviewer.require?"":"s"]}),"review_only"!==a.kind&&(0,j.jsxs)("label",{className:"flex items-center gap-2 text-[11px] text-muted-foreground",children:[(0,j.jsx)("input",{type:"checkbox",checked:a.reviewer.crossLineage,onChange:c=>b({reviewer:{...a.reviewer,crossLineage:c.target.checked}}),className:"accent-primary"}),"Cross-lineage required"]})]})})}function cH({phase:a,onUpdate:b}){return(0,j.jsx)(cx,{label:"Reviewer execution · how multiple reviewers interact",children:(0,j.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,j.jsxs)("button",{type:"button",onClick:()=>b({execution:"parallel"}),className:(0,bU.cn)("rounded-md border px-3 py-2.5 text-left transition","parallel"===a.execution?"border-emerald-500/40 bg-emerald-500/5":"border-border bg-card/40 hover:border-foreground/30"),children:[(0,j.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium",children:["Parallel independent",(0,j.jsx)("span",{className:"font-mono text-[9px] uppercase text-emerald-300/80",children:"fast"})]}),(0,j.jsx)("p",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:"All reviewers see the same pack, work in isolation, vote. Catches single-reviewer mistakes via consensus. Risk: shared blind spots pass anyway."})]}),(0,j.jsxs)("button",{type:"button",onClick:()=>b({execution:"sequential"}),className:(0,bU.cn)("rounded-md border px-3 py-2.5 text-left transition","sequential"===a.execution?"border-amber-500/40 bg-amber-500/5":"border-border bg-card/40 hover:border-foreground/30"),children:[(0,j.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium",children:["Sequential hostile",(0,j.jsx)("span",{className:"font-mono text-[9px] uppercase text-amber-300/80",children:"thorough"})]}),(0,j.jsx)("p",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:"Reviewers run in order. Each receives the already-hardened output and hunts what the prior reviewer missed. Slower; only works if the first reviewer's solution is sound."})]})]})})}function cI({phase:a,onUpdate:b,priorPhases:c}){return(0,j.jsxs)(cx,{label:"Inputs · which prior phases this doer can read",children:[(0,j.jsx)("div",{className:"space-y-1.5",children:c.map(c=>{let d=a.inputs.include.includes(c),e=a.inputs.exclude.includes(c),f=e?"exclude":d?"include":"none";return(0,j.jsxs)("div",{className:"flex items-center justify-between rounded-md border border-border bg-card/30 px-2.5 py-1.5",children:[(0,j.jsx)("code",{className:"font-mono text-[11px] text-foreground",children:c}),(0,j.jsxs)("div",{className:"flex items-center gap-1",children:[(0,j.jsx)(cy,{on:"include"===f,tone:"emerald",onClick:()=>b({inputs:{include:d?a.inputs.include.filter(a=>a!==c):[...a.inputs.include,c],exclude:a.inputs.exclude.filter(a=>a!==c)}}),children:"include"}),(0,j.jsx)(cy,{on:"exclude"===f,tone:"rose",onClick:()=>b({inputs:{include:a.inputs.include.filter(a=>a!==c),exclude:e?a.inputs.exclude.filter(a=>a!==c):[...a.inputs.exclude,c]}}),children:"exclude (blind)"})]})]},c)})}),(0,j.jsxs)("p",{className:"mt-2 flex items-start gap-1.5 text-[10px] text-muted-foreground",children:[(0,j.jsx)(cv.Info,{className:"mt-0.5 h-2.5 w-2.5 shrink-0 text-muted-foreground/60"}),(0,j.jsxs)("span",{children:[(0,j.jsx)("span",{className:"font-mono text-rose-300",children:"exclude"}),"prevents this doer from seeing that phase's output. Used for info asymmetry — e.g. the implementer shouldn't see the tests."]})]})]})}function cJ({phase:a,onUpdate:b,priorPhases:c}){return(0,j.jsx)(cx,{label:"Iterate · what happens when reviewer rejects",children:(0,j.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,j.jsxs)("div",{children:[(0,j.jsx)("label",{className:"text-[10px] text-muted-foreground",children:"Max revise"}),(0,j.jsx)("input",{type:"number",min:1,max:10,value:a.iterate.max,onChange:c=>b({iterate:{...a.iterate,max:Math.max(1,parseInt(c.target.value,10)||1)}}),className:"mt-1 h-7 w-full rounded-md border border-border bg-background px-2 font-mono text-[11px]"})]}),(0,j.jsxs)("div",{children:[(0,j.jsx)("label",{className:"text-[10px] text-muted-foreground",children:"On max"}),(0,j.jsxs)("select",{value:a.iterate.onMax,onChange:c=>b({iterate:{...a.iterate,onMax:c.target.value}}),className:"mt-1 h-7 w-full rounded-md border border-border bg-background px-1.5 text-[11px]",children:[(0,j.jsx)("option",{value:"ask-user",children:"ask me"}),(0,j.jsx)("option",{value:"loopback",children:"loop back"}),(0,j.jsx)("option",{value:"fail",children:"fail"})]})]}),(0,j.jsxs)("div",{children:[(0,j.jsx)("label",{className:"text-[10px] text-muted-foreground",children:"Loop back to"}),(0,j.jsxs)("select",{disabled:"loopback"!==a.iterate.onMax,value:a.iterate.loopbackTo??"",onChange:c=>b({iterate:{...a.iterate,loopbackTo:c.target.value||void 0}}),className:"mt-1 h-7 w-full rounded-md border border-border bg-background px-1.5 text-[11px] disabled:opacity-40",children:[(0,j.jsx)("option",{value:"",children:"—"}),c.map(a=>(0,j.jsx)("option",{value:a,children:a},a))]})]})]})})}function cK({phase:a,onUpdate:b}){return(0,j.jsx)(cx,{label:"Gate · what happens when this phase finishes",children:(0,j.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,j.jsxs)("button",{type:"button",onClick:()=>b({gate:"auto"}),className:(0,bU.cn)("rounded-md border px-2.5 py-1.5 text-left transition","auto"===a.gate?"border-emerald-500/40 bg-emerald-500/10":"border-border bg-card/40 hover:border-foreground/30"),children:[(0,j.jsx)("div",{className:"text-xs font-medium",children:"Auto-proceed"}),(0,j.jsx)("div",{className:"text-[10px] text-muted-foreground",children:"Continue to next phase without asking."})]}),(0,j.jsxs)("button",{type:"button",onClick:()=>b({gate:"ask-user"}),className:(0,bU.cn)("rounded-md border px-2.5 py-1.5 text-left transition","ask-user"===a.gate?"border-amber-500/40 bg-amber-500/10":"border-border bg-card/40 hover:border-foreground/30"),children:[(0,j.jsx)("div",{className:"text-xs font-medium",children:"Checkpoint (ask me)"}),(0,j.jsx)("div",{className:"text-[10px] text-muted-foreground",children:"Stop here, surface verdict, wait for click."})]})]})})}function cL({phase:a,index:b,total:c,allPhaseIds:d,connectedVoices:e,personas:f,onUpdate:g,onMoveUp:h,onMoveDown:i,onDelete:l}){let[m,o]=(0,k.useState)(0===b),p=cl[a.kind],q=d.slice(0,b);return(0,j.jsxs)("div",{className:"rounded-lg border border-border bg-card/40",children:[(0,j.jsxs)("button",{type:"button",onClick:()=>o(a=>!a),className:"flex w-full items-center gap-3 px-3 py-2.5 text-left",children:[(0,j.jsx)("span",{className:"font-mono text-[10px] text-muted-foreground/60",children:String(b+1).padStart(2,"0")}),(0,j.jsx)("span",{className:"grid h-7 w-7 shrink-0 place-items-center rounded-md bg-primary/15 text-primary",children:(0,j.jsx)(p,{className:"h-3.5 w-3.5"})}),(0,j.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,j.jsxs)("div",{className:"flex items-center gap-2",children:[(0,j.jsx)("span",{className:"text-sm font-medium text-foreground truncate",children:a.name||"Untitled phase"}),(0,j.jsx)("span",{className:"font-mono text-[10px] uppercase text-muted-foreground/70",children:a.kind})]}),(0,j.jsx)(cM,{phase:a})]}),(0,j.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[(0,j.jsx)(cw,{disabled:0===b,onClick:h,title:"Move up",children:(0,j.jsx)(cs,{className:"h-3 w-3"})}),(0,j.jsx)(cw,{disabled:b===c-1,onClick:i,title:"Move down",children:(0,j.jsx)(cr,{className:"h-3 w-3"})}),(0,j.jsx)(cw,{onClick:l,title:"Delete phase",className:"hover:text-rose-400",children:(0,j.jsx)(n.Trash2,{className:"h-3 w-3"})}),(0,j.jsx)("span",{className:"ml-1 text-muted-foreground/60",children:m?(0,j.jsx)(ct.ChevronDown,{className:"h-3.5 w-3.5"}):(0,j.jsx)(ca,{className:"h-3.5 w-3.5"})})]})]}),m&&(0,j.jsxs)("div",{className:"space-y-4 border-t border-border bg-background/40 px-3 py-3",children:[(0,j.jsxs)("div",{className:"grid grid-cols-[1fr_140px] gap-2",children:[(0,j.jsx)(cx,{label:"Name",children:(0,j.jsx)("input",{type:"text",value:a.name,onChange:a=>g({name:a.target.value}),className:"h-8 w-full rounded-md border border-border bg-background px-2.5 text-xs text-foreground focus:border-primary/60 focus:outline-none"})}),(0,j.jsx)(cx,{label:"Kind",children:(0,j.jsx)("select",{value:a.kind,onChange:a=>g({kind:a.target.value}),className:"h-8 w-full rounded-md border border-border bg-background px-2 text-xs text-foreground focus:border-primary/60 focus:outline-none",children:cm.map(a=>(0,j.jsx)("option",{value:a.id,children:a.label},a.id))})})]}),(0,j.jsx)(cx,{label:"Description",children:(0,j.jsx)("input",{type:"text",value:a.description,onChange:a=>g({description:a.target.value}),placeholder:"What this phase produces and why it exists.",className:"h-8 w-full rounded-md border border-border bg-background px-2.5 text-xs text-foreground placeholder:text-muted-foreground/60 focus:border-primary/60 focus:outline-none"})}),"review_only"!==a.kind&&(0,j.jsx)(cD,{phase:a,onUpdate:g,connectedVoices:e,personas:f}),"review_only"===a.kind&&(0,j.jsx)(cE,{phase:a,onUpdate:g}),(0,j.jsx)(cF,{phase:a,onUpdate:g,connectedVoices:e,personas:f}),(0,j.jsx)(cG,{phase:a,onUpdate:g}),(0,j.jsx)(cH,{phase:a,onUpdate:g}),q.length>0&&(0,j.jsx)(cI,{phase:a,onUpdate:g,priorPhases:q}),"review_only"!==a.kind&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(cJ,{phase:a,onUpdate:g,priorPhases:q}),(0,j.jsx)(cK,{phase:a,onUpdate:g})]})]})]})}function cM({phase:a}){return(0,j.jsxs)("div",{className:"mt-0.5 flex flex-wrap items-center gap-1.5 text-[10px] text-muted-foreground",children:["review_only"!==a.kind&&(0,j.jsxs)("span",{className:"flex items-center gap-1",children:[(0,j.jsx)("span",{className:(0,bU.cn)("h-1.5 w-1.5 rounded-full",cn.find(b=>b.id===a.doer.lineage)?.dot)}),"doer: ",a.doer.lineage]}),a.reviewer.candidates.length>0&&(0,j.jsxs)(j.Fragment,{children:["review_only"!==a.kind&&(0,j.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,j.jsxs)("span",{className:"flex items-center gap-1",children:["reviewers:",a.reviewer.candidates.map(a=>(0,j.jsx)("span",{className:(0,bU.cn)("h-1.5 w-1.5 rounded-full",cn.find(b=>b.id===a)?.dot),title:a},a))]})]}),a.reviewer.crossLineage&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,j.jsx)("span",{className:"text-amber-300/90 font-mono text-[9px] uppercase",children:"cross-lineage"})]}),(0,j.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,j.jsx)("span",{className:(0,bU.cn)("font-mono text-[9px] uppercase","sequential"===a.execution?"text-amber-300/90":"text-emerald-300/80"),title:"sequential"===a.execution?"Sequential hostile — reviewers chain":"Parallel independent — reviewers vote",children:"sequential"===a.execution?"sequential":"parallel"}),a.inputs.exclude.length>0&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,j.jsxs)("span",{className:"text-rose-300/90 font-mono text-[9px]",children:["blind-to: ",a.inputs.exclude.join(",")]})]})]})}function cN({phases:a,onChange:b}){let c=cq(),{personas:d}=function(){let[a,b]=(0,k.useState)({personas:[],loaded:!1});return(0,k.useEffect)(()=>{(0,cc.listPersonas)().then(a=>b({personas:a,loaded:!0})).catch(()=>b({personas:[],loaded:!0}))},[]),a}();function e(c,d){let e=c+d;if(e<0||e>=a.length)return;let f=[...a];[f[c],f[e]]=[f[e],f[c]],b(f)}let f=a.map(a=>a.id);return(0,j.jsxs)("div",{children:[(0,j.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,j.jsxs)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:["Phases (",a.length,")"]}),(0,j.jsx)("span",{className:"text-[11px] text-muted-foreground/70",children:"Each phase has a doer + reviewer. Adversarial by default."})]}),(0,j.jsx)("div",{className:"space-y-2",children:a.map((g,h)=>(0,j.jsx)(cL,{phase:g,index:h,total:a.length,allPhaseIds:f,connectedVoices:c,personas:d,onUpdate:c=>{b(a.map((a,b)=>b===h?{...a,...c}:a))},onMoveUp:()=>e(h,-1),onMoveDown:()=>e(h,1),onDelete:()=>{b(a.filter((a,b)=>b!==h))}},g.id))}),(0,j.jsxs)("button",{type:"button",onClick:function(){var c;b([...a,(c=a.length,{id:`phase-${c+1}`,name:`Phase ${c+1}`,description:"",kind:"review",gate:"auto",doer:{lineage:"claude",models:["claude-opus-4-7"]},reviewer:{require:1,crossLineage:!0,candidates:["codex"]},inputs:{include:[],exclude:[]},iterate:{max:3,onMax:"ask-user"},blindSpots:[],execution:"sequential",builtin:!1})])},className:"mt-3 flex w-full items-center justify-center gap-1.5 rounded-md border border-dashed border-border bg-card/30 px-3 py-2.5 text-xs font-medium text-muted-foreground transition hover:border-primary/40 hover:bg-card/50 hover:text-foreground",children:[(0,j.jsx)(w.Plus,{className:"h-3.5 w-3.5"}),"Add phase"]})]})}function cO({active:a,onClick:b,disabled:c,children:d}){return(0,j.jsxs)("button",{type:"button",onClick:b,disabled:c,className:(0,bU.cn)("relative flex items-center gap-1.5 rounded-t-md px-3 py-2.5 text-sm font-medium transition-colors",c?"cursor-not-allowed text-muted-foreground/50":a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[d,a&&!c&&(0,j.jsx)("span",{className:"absolute inset-x-0 -bottom-px h-0.5 bg-primary"})]})}function cP({label:a,htmlFor:b,hint:c,children:d}){return(0,j.jsxs)("div",{className:"space-y-2",children:[(0,j.jsx)("label",{htmlFor:b,className:"block text-[13px] font-medium text-foreground",children:a}),d,c&&(0,j.jsx)("p",{className:"text-[11px] leading-snug text-muted-foreground/80",children:c})]})}function cQ({active:a,onClick:b,children:c}){return(0,j.jsx)("button",{type:"button",onClick:b,className:(0,bU.cn)("h-8 rounded-md border px-3 text-xs font-medium transition",a?"border-primary/60 bg-primary/15 text-primary":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30 hover:bg-accent/40 hover:text-foreground"),children:c})}function cR({form:a,setField:b,showErrors:c}){let d=c&&0===a.name.trim().length,e=c&&0===a.description.trim().length;return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(cP,{label:"Name *",htmlFor:"tpl-name",children:[(0,j.jsx)("input",{id:"tpl-name",value:a.name,onChange:a=>b("name",a.target.value),placeholder:"security-audit","aria-invalid":d,className:(0,bU.cn)("h-10 w-full rounded-md border bg-background px-3 text-sm placeholder:text-muted-foreground/60 focus:outline-none focus:ring-2",d?"border-destructive/60 focus:border-destructive focus:ring-destructive/30":"border-border focus:border-primary/60 focus:ring-primary/20")}),d&&(0,j.jsx)("p",{className:"text-[11px] text-destructive",children:"Name is required."})]}),(0,j.jsxs)(cP,{label:"Description *",htmlFor:"tpl-desc",hint:"One sentence on when someone should reach for this template.",children:[(0,j.jsx)("textarea",{id:"tpl-desc",value:a.description,onChange:a=>b("description",a.target.value),placeholder:"Independent security audit from 3 model families…",rows:2,"aria-invalid":e,className:(0,bU.cn)("w-full resize-none rounded-md border bg-background px-3 py-2 text-sm leading-relaxed placeholder:text-muted-foreground/60 focus:outline-none focus:ring-2",e?"border-destructive/60 focus:border-destructive focus:ring-destructive/30":"border-border focus:border-primary/60 focus:ring-primary/20")}),e&&(0,j.jsx)("p",{className:"text-[11px] text-destructive",children:"Description is required."})]}),(0,j.jsx)(cP,{label:"Category",children:(0,j.jsx)("div",{className:"flex flex-wrap gap-2",children:b2.map(c=>(0,j.jsx)(cQ,{active:c.id===a.category,onClick:()=>b("category",c.id),children:c.label},c.id))})})]})}function cS({form:a,setField:b}){let c=cq();return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("div",{className:"rounded-md border border-border bg-card/40 px-3 py-2 text-[11px] leading-relaxed text-muted-foreground",children:[(0,j.jsxs)("div",{className:"mb-1 flex items-center gap-1.5 text-foreground",children:[(0,j.jsx)(bW.Shuffle,{className:"h-3 w-3"}),(0,j.jsx)("span",{className:"text-[12px] font-medium",children:"Template-level fallback chains"})]}),"Tried in order whenever a slot exhausts its own per-slot model chain. Cross-lineage swap supported — a codex slot can fall through to a claude or kimi entry. Strict",(0,j.jsx)("span",{className:"font-mono",children:" (lineage, model)"})," dedup keeps diversity: a fallback whose model already runs as another reviewer in this phase is skipped, so you never review the same code twice with the same voice. Order matters — list your most-preferred fallback first."]}),(0,j.jsx)(cT,{title:"Doer fallback",hint:"Engaged when the doer's primary + per-slot models all fail.",rows:a.fallbackDoer,onChange:a=>b("fallbackDoer",a),connectedVoices:c}),(0,j.jsx)(cT,{title:"Reviewer fallback",hint:"Engaged when any reviewer's primary + per-slot models all fail.",rows:a.fallbackReviewer,onChange:a=>b("fallbackReviewer",a),connectedVoices:c})]})}function cT({title:a,hint:b,rows:c,onChange:d,connectedVoices:e}){let f=(a,b)=>{d(c.map((c,d)=>d===a?{...c,...b}:c))};return(0,j.jsxs)("div",{className:"rounded-lg border border-border bg-card/40 p-4",children:[(0,j.jsxs)("div",{className:"mb-1 flex items-center justify-between",children:[(0,j.jsx)("h4",{className:"text-[13px] font-semibold tracking-tight",children:a}),(0,j.jsxs)("button",{type:"button",onClick:()=>{let a=b6.find(a=>(e.byLineage[a]??[]).length>0)??"claude",b=e.byLineage[a]?.[0]??"";d([...c,{lineage:a,model:b}])},className:"inline-flex h-7 items-center gap-1 rounded-md border border-border bg-card px-2.5 text-[11px] font-medium text-muted-foreground transition hover:border-primary/40 hover:text-primary",children:[(0,j.jsx)(w.Plus,{className:"h-3 w-3"}),"Add fallback"]})]}),(0,j.jsx)("p",{className:"mb-3 text-[11px] leading-snug text-muted-foreground/80",children:b}),0===c.length?(0,j.jsx)("p",{className:"rounded-md border border-dashed border-border/60 bg-background/30 px-3 py-4 text-center text-[11px] text-muted-foreground",children:"None set — slot will fail its phase if the per-slot chain exhausts."}):(0,j.jsx)("ul",{className:"space-y-2",children:c.map((a,b)=>{let g=e.byLineage[a.lineage]??[],h=0===a.model.length||g.includes(a.model);return(0,j.jsxs)("li",{className:"flex items-center gap-2",children:[(0,j.jsx)("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-border bg-card font-mono text-[10px] text-muted-foreground",children:b+1}),(0,j.jsx)("select",{value:a.lineage,onChange:a=>{var d;let g,h;return d=a.target.value,g=e.byLineage[d]??[],h=c[b].model,void f(b,{lineage:d,model:g.includes(h)?h:g[0]??""})},className:"h-8 rounded-md border border-border bg-background px-2 text-xs text-foreground focus:border-primary/60 focus:outline-none focus:ring-1 focus:ring-primary/20",children:b6.map(a=>(0,j.jsx)("option",{value:a,children:a},a))}),(0,j.jsxs)("select",{value:a.model,onChange:a=>f(b,{model:a.target.value}),className:"h-8 flex-1 rounded-md border border-border bg-background px-2 font-mono text-[11px] text-foreground focus:border-primary/60 focus:outline-none focus:ring-1 focus:ring-primary/20",children:[0===g.length&&(0,j.jsx)("option",{value:"",disabled:!0,children:e.loaded?`No ${a.lineage} models enabled — open Connect → ${a.lineage}`:"loading…"}),g.map(a=>(0,j.jsx)("option",{value:a,children:a},a)),!h&&a.model.length>0&&(0,j.jsxs)("option",{value:a.model,children:[a.model," (stored)"]})]}),(0,j.jsx)("button",{type:"button",onClick:()=>{d(c.filter((a,c)=>c!==b))},"aria-label":`Remove fallback ${b+1}`,className:"grid h-7 w-7 place-items-center rounded-md border border-border bg-card text-muted-foreground transition hover:border-destructive/40 hover:text-destructive",children:(0,j.jsx)(y.X,{className:"h-3 w-3"})})]},b)})})]})}function cU({form:a,setField:b}){return(0,j.jsxs)("div",{className:"rounded-lg border border-border bg-card/40 p-4",children:[(0,j.jsx)("h3",{className:"mb-3 text-[13px] font-semibold tracking-tight",children:"Across all phases"}),(0,j.jsxs)("div",{className:"mb-4",children:[(0,j.jsx)("div",{className:"mb-1.5 text-[11px] font-medium text-muted-foreground",children:"Agreement threshold (per review-style phase)"}),(0,j.jsx)("div",{className:"grid grid-cols-3 gap-2",children:b3.map(c=>(0,j.jsx)("button",{type:"button",onClick:()=>b("threshold",c.id),className:(0,bU.cn)("rounded-md border px-3 py-2 text-left transition",a.threshold===c.id?"border-primary/60 bg-primary/10 ring-1 ring-primary/40":"border-border bg-card hover:border-muted-foreground/30 hover:bg-accent/40"),children:(0,j.jsx)("div",{className:"text-xs font-medium",children:c.label})},c.id))}),(0,j.jsx)("p",{className:"mt-1.5 text-[11px] leading-snug text-muted-foreground/80",children:b3.find(b=>b.id===a.threshold)?.hint})]}),(0,j.jsxs)("div",{className:"mb-4",children:[(0,j.jsx)("div",{className:"mb-1.5 text-[11px] font-medium text-muted-foreground",children:"When threshold is met"}),(0,j.jsx)("div",{className:"grid grid-cols-2 gap-2",children:b4.map(c=>(0,j.jsx)("button",{type:"button",onClick:()=>b("onThresholdMet",c.id),className:(0,bU.cn)("rounded-md border px-3 py-2 text-left transition",a.onThresholdMet===c.id?"border-primary/60 bg-primary/10 ring-1 ring-primary/40":"border-border bg-card hover:border-muted-foreground/30 hover:bg-accent/40"),children:(0,j.jsx)("div",{className:"text-xs font-medium",children:c.label})},c.id))})]}),(0,j.jsxs)("div",{className:"mb-4",children:[(0,j.jsxs)("div",{className:"mb-1.5 flex items-center justify-between",children:[(0,j.jsx)("span",{className:"text-[11px] font-medium text-muted-foreground",children:"Max revise rounds (per phase)"}),(0,j.jsx)("span",{className:"font-mono text-xs text-foreground",children:a.maxRounds})]}),(0,j.jsx)("input",{type:"range",min:1,max:5,step:1,value:a.maxRounds,onChange:a=>b("maxRounds",parseInt(a.target.value,10)),className:"h-1 w-full cursor-pointer appearance-none rounded-full bg-muted accent-primary"})]}),(0,j.jsxs)("button",{type:"button",onClick:()=>b("yoloDefault",!a.yoloDefault),className:(0,bU.cn)("flex w-full items-center justify-between rounded-md border px-3 py-2 text-left transition",a.yoloDefault?"border-rose-500/40 bg-rose-500/5":"border-border bg-card hover:border-foreground/30"),children:[(0,j.jsxs)("div",{children:[(0,j.jsx)("div",{className:"text-xs font-medium text-foreground",children:"🚀 Yolo by default"}),(0,j.jsx)("div",{className:"text-[10px] text-muted-foreground",children:"Auto-approve every gate. Only flip on for trusted templates or trivial fixes. Cost cap still enforced."})]}),(0,j.jsx)("span",{className:(0,bU.cn)("flex h-5 w-9 shrink-0 items-center rounded-full border p-0.5 transition",a.yoloDefault?"border-rose-500/40 bg-rose-500/20":"border-border bg-card"),children:(0,j.jsx)("span",{className:(0,bU.cn)("h-3.5 w-3.5 rounded-full transition-transform",a.yoloDefault?"translate-x-4 bg-rose-400":"bg-muted-foreground/50")})})]})]})}function cV(a,b){let c=[];if(1===a)b.name&&0!==b.name.trim().length?b.name.length>80&&c.push("Name is too long (max 80 chars)."):c.push("Name is required."),b.description&&0!==b.description.trim().length||c.push("Description is required — one line on when to use this template.");else if(2===a)for(let a of(0===b.phases.length&&c.push("At least one phase is required."),b.phases))a.id&&0!==a.id.trim().length||c.push(`Phase "${a.name||"(unnamed)"}" needs an id.`),"review_only"===a.kind||a.doer.lineage&&0!==a.doer.models.length||c.push(`Phase "${a.name||a.id}" needs a doer lineage + model.`),0===a.reviewer.candidates.length&&c.push(`Phase "${a.name||a.id}" needs at least one reviewer.`);return c}function cW({form:a,setField:b}){let[c,d]=(0,k.useState)(1),[e,f]=(0,k.useState)(!1),g=cV(c,a),h=0===g.length;return(0,j.jsxs)("div",{className:"flex h-full flex-col px-6 py-6",children:[(0,j.jsx)(cX,{currentStep:c,onJump:b=>{if(b<=c){f(!1),d(b);return}for(let d=c;d<b;d++)if(cV(d,a).length>0)return void f(!0);f(!1),d(b)},form:a}),(0,j.jsxs)("div",{className:"mt-6 flex-1 space-y-6",children:[1===c&&(0,j.jsx)(cR,{form:a,setField:b,showErrors:e}),2===c&&(0,j.jsx)(cY,{form:a,setField:b,showErrors:e}),3===c&&(0,j.jsx)(cS,{form:a,setField:b}),4===c&&(0,j.jsx)(cU,{form:a,setField:b})]}),e&&g.length>0&&(0,j.jsxs)("div",{className:"mt-6 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[11px] text-destructive",children:[(0,j.jsx)("div",{className:"mb-1 font-medium",children:"Resolve these to continue:"}),(0,j.jsx)("ul",{className:"space-y-0.5 pl-4",children:g.map(a=>(0,j.jsx)("li",{className:"list-disc",children:a},a))})]}),(0,j.jsxs)("div",{className:"mt-6 flex items-center justify-between border-t border-border pt-4",children:[(0,j.jsxs)("button",{type:"button",onClick:()=>{f(!1),c>1&&d(c-1)},disabled:1===c,className:"inline-flex h-9 items-center gap-1.5 rounded-md border border-border bg-card px-3 text-sm font-medium text-muted-foreground transition hover:border-muted-foreground/30 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40",children:[(0,j.jsx)(b9,{className:"h-3.5 w-3.5"}),"Back"]}),(0,j.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:["Step ",c," of 4 · ",b5[c-1].label]}),c<4?(0,j.jsxs)("button",{type:"button",onClick:()=>{h?(f(!1),c<4&&d(c+1)):f(!0)},className:(0,bU.cn)("inline-flex h-9 items-center gap-1.5 rounded-md px-3 text-sm font-medium shadow-sm transition",h?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground/60"),children:["Next",(0,j.jsx)(ca,{className:"h-3.5 w-3.5"})]}):(0,j.jsxs)("span",{className:"text-[11px] text-emerald-300",children:[(0,j.jsx)(u.CheckCircle2,{className:"mr-1 inline-block h-3 w-3"}),"Save in the footer below"]})]})]})}function cX({currentStep:a,onJump:b,form:c}){return(0,j.jsx)("div",{className:"flex items-stretch gap-2",children:b5.map(d=>{let e=d.icon,f=d.id===a,g=0===cV(d.id,c).length,h=d.id<a;return(0,j.jsxs)("button",{type:"button",onClick:()=>b(d.id),className:(0,bU.cn)("flex flex-1 items-center gap-2 rounded-md border px-3 py-2 text-left transition",f?"border-primary/60 bg-primary/10":h&&!g?"border-destructive/40 bg-destructive/5":"border-border bg-card hover:border-muted-foreground/30"),children:[(0,j.jsx)("span",{className:(0,bU.cn)("flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-[10px] font-mono",f?"bg-primary text-primary-foreground":h&&g?"bg-emerald-500/20 text-emerald-300":h&&!g?"bg-destructive/20 text-destructive":"bg-muted text-muted-foreground"),children:h&&g?"✓":d.id}),(0,j.jsx)(e,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,j.jsx)("span",{className:"hidden text-xs font-medium sm:inline",children:d.label})]},d.id)})})}function cY({form:a,setField:b,showErrors:c}){let d=cV(2,a);return(0,j.jsxs)(j.Fragment,{children:[c&&d.length>0&&(0,j.jsx)("div",{className:"rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[11px] text-destructive",children:d[0]}),(0,j.jsx)(cN,{phases:a.phases,onChange:a=>b("phases",a)})]})}function cZ(a){return Array.isArray(a)?a.flatMap(a=>{let b=b_[a.lineage??""]??"claude",c=(a.models??[]).filter(a=>"string"==typeof a&&a.trim().length>0);return 0===c.length?[]:c.map(c=>({lineage:b,model:c,...a.persona?{persona:a.persona}:{}}))}):[]}let c$=["plan","spec","tests","implement","review","verify","divergence","review_only"];function c_(a,b){let c,d,e,f,g=[];try{c=C.default.parse(a)??{}}catch{return{form:{...b1,id:b},formLossy:!0,lossyReasons:["YAML failed to parse — only YAML mode is available."]}}c.ship?.enabled&&g.push("Template has `ship.enabled: true` — form mode can't edit ship config.");let h=[];for(let a of c.phases??[]){let{phase:b,reasons:c}=function(a){let b=[];void 0!==a.timeoutMs&&b.push(`Phase ${a.id??"?"} has \`timeoutMs\` — not exposed in form mode.`);let c="review_only"===a.kind,d=c?"claude":b_[a.doer?.lineage??""]??"claude",e={},f={},g=new Set,h=[],i=[];for(let b of a.reviewer?.candidates??[]){let a=b_[b.lineage??""];if(!a)continue;g.has(a)||(g.add(a),h.push(a));let c=(b.models??[]).map(a=>(a??"").trim()).filter(a=>a.length>0),d=b.persona&&b.persona.trim().length>0?b.persona:void 0,j=b=>{if(!d)return;let c=f[a]??={},e=c[b];void 0!==e&&e!==d&&i.push(`${a}/${b||"(no model)"}: "${e}" vs "${d}"`),c[b]=d};if(0===c.length)j("");else for(let b of c)(e[a]??=[]).push(b),j(b)}i.length>0&&b.push(`Phase ${a.id??"?"} has overlapping reviewer candidates with conflicting personas (${i.join("; ")}) — form mode would silently last-write-wins; edit in YAML to disambiguate.`);let j=c$.includes(a.kind)?a.kind:"review";return a.kind&&!c$.includes(a.kind)&&b.push(`Phase ${a.id??"?"} has unknown kind \`${a.kind}\` — form mode would coerce it to \`review\`.`),{phase:{id:a.id??"phase",name:a.title??a.name??a.id??"Phase",description:a.description??"",kind:j,gate:"auto",doer:{lineage:d,models:a.doer?.models&&a.doer.models.length>0?a.doer.models:[b0[d]??"claude-opus-4-7"],...a.doer?.persona&&a.doer.persona.trim().length>0?{persona:a.doer.persona.trim()}:{}},reviewer:{require:a.reviewer?.require??1,crossLineage:a.reviewer?.crossLineage??!0,candidates:h,candidateModels:e,...Object.keys(f).length>0?{candidatePersonas:f}:{}},inputs:{include:a.inputs?.include??[],exclude:a.inputs?.exclude??[]},iterate:{max:a.iterate?.maxRounds??2,onMax:(a.iterate?.onDisagreement??"continue")==="continue"?"loopback":a.iterate?.onDisagreement==="accept-doer"?"fail":"ask-user"},blindSpots:[],execution:"parallel",builtin:!1,...c&&a.artifact?{artifact:{label:a.artifact.label??"Artifact to review",hint:a.artifact.hint??"Paste a unified diff, a markdown draft, code, or any text blob.",maxBytes:a.artifact.maxBytes??1048576}}:c?{artifact:{label:"Artifact to review",hint:"Paste a unified diff, a markdown draft, code, or any text blob.",maxBytes:1048576}}:{}},reasons:b}}(a);h.push(b),g.push(...c)}if("number"==typeof c.agreementThreshold){var i;d=(i=c.agreementThreshold)>=.99?"unanimous":i>=.5?"majority":"any",new Set([1,.66,.34]).has(c.agreementThreshold)||(e=c.agreementThreshold,g.push(`Custom \`agreementThreshold: ${c.agreementThreshold}\` — form mode only offers 1.0 / 0.66 / 0.34 presets.`))}else d=c.agreementThreshold??"majority";let j="review"===c.onThresholdMet?"review":void 0;return"review"===j&&g.push("`onThresholdMet: review` — form mode only offers auto-finalize / ask-user."),{form:{id:c.id??b,name:c.name??"",description:c.description??"",author:c.author??"chorus",category:(f=(c.id??b).toLowerCase()).includes("bug")||f.includes("debug")||f.includes("diagnose")?"debug":f.includes("plan")||f.includes("architect")?"plan":f.includes("decide")||f.includes("decision")?"decide":"review",phases:h.length>0?h:b1.phases,threshold:d,...void 0!==e?{customThreshold:e}:{},onThresholdMet:"merge"===c.onThresholdMet?"auto-finalize":"ask-user",...j?{onThresholdMetRaw:j}:{},maxRounds:c.maxRounds??3,yoloDefault:c.yoloDefault??!1,fallbackDoer:cZ(c.fallback?.doer),fallbackReviewer:cZ(c.fallback?.reviewer)},formLossy:g.length>0,lossyReasons:g}}function c0({yaml:a,filename:b,issues:c,onChange:d}){return(0,j.jsxs)("div",{className:"flex h-full min-h-[400px] flex-col",children:[(0,j.jsxs)("div",{className:"flex items-center justify-between border-b border-border bg-card/40 px-6 py-2.5",children:[(0,j.jsx)("span",{className:"font-mono text-[11px] text-muted-foreground",children:b}),(0,j.jsx)(c1,{issues:c})]}),(0,j.jsx)("textarea",{value:a,onChange:a=>d(a.target.value),spellCheck:!1,className:"flex-1 resize-none border-0 bg-background px-6 py-4 font-mono text-[12px] leading-relaxed text-foreground focus:outline-none"}),c.length>0&&(0,j.jsx)("ul",{className:"border-t border-border bg-destructive/5 px-6 py-2.5 text-[11px] text-destructive",children:c.map((a,b)=>(0,j.jsxs)("li",{className:"flex items-start gap-1.5 leading-snug",children:[(0,j.jsx)(t.AlertTriangle,{className:"mt-[1px] h-3 w-3 shrink-0"}),(0,j.jsxs)("span",{children:[(0,j.jsx)("span",{className:"font-mono",children:a.path}),"number"==typeof a.line&&` (line ${a.line})`,": ",a.message]})]},b))})]})}function c1({issues:a}){return 0===a.length?(0,j.jsxs)("span",{className:"flex items-center gap-1 rounded-md bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-medium text-emerald-400",children:[(0,j.jsx)(u.CheckCircle2,{className:"h-3 w-3"}),"Valid"]}):(0,j.jsxs)("span",{className:"flex items-center gap-1 rounded-md bg-destructive/10 px-1.5 py-0.5 text-[10px] font-medium text-destructive",children:[(0,j.jsx)(t.AlertTriangle,{className:"h-3 w-3"}),a.length," ",1===a.length?"issue":"issues"]})}function c2({editing:a,trigger:b,onSaved:c}){var d;let[e,f]=(0,k.useState)(!1),g=!!a,h=(0,k.useMemo)(()=>{if(!a)return{form:b1,yaml:b8(b1),lossy:!1,reasons:[]};let b=c_(a.yaml,a.id);return{form:b.form,yaml:a.yaml,lossy:b.formLossy,reasons:b.lossyReasons}},[a?.id,a?.yaml]),[i,n]=(0,k.useState)(h.form),[o,p]=(0,k.useState)(h.yaml),[q,r]=(0,k.useState)(!1),[s,D]=(0,k.useState)(!1),[E,F]=(0,k.useState)(h.lossy?"yaml":"form"),[G,H]=(0,k.useState)(!1),[I,J]=(0,k.useState)(null),[K,L]=(0,k.useState)([]);(0,k.useEffect)(()=>{n(h.form),p(h.yaml),r(!1),D(!1),F(h.lossy?"yaml":"form"),J(null),L([])},[h]);let M=(0,k.useRef)(h);(0,k.useEffect)(()=>{M.current=h});let N=(d={yamlDirty:q,tab:E,formDirty:s,yamlText:o,formYaml:b8(i),initialYaml:h.yaml}).yamlDirty||"yaml"===d.tab?d.yamlText:d.formDirty?d.formYaml:d.initialYaml,O=(0,k.useMemo)(()=>(function(a){let b;if(0===a.trim().length)return{valid:!1,issues:[{path:"<yaml>",message:"Template YAML is empty."}]};try{b=C.default.parse(a)}catch(c){let a=c instanceof Error?c.message:String(c),b=c.linePos?.[0];return{valid:!1,issues:[{path:"<yaml>",message:a,...b?{line:b.line,col:b.col}:{}}]}}if(null==b)return{valid:!1,issues:[{path:"<yaml>",message:"Template YAML parsed to null — at minimum it must define id, name, and phases."}]};let c=bS.safeParse(b);return c.success?bT:{valid:!1,issues:c.error.issues.map(a=>({path:a.path.length>0?a.path.join("."):"<root>",message:a.message}))}})(N),[N]);function P(a){if("form"===a&&q){let a=c_(o,i.id);if(a.formLossy)return;n(a.form),r(!1),D(!0)}F(a)}function Q(){let a=M.current;n(a.form),p(a.yaml),r(!1),D(!1),F(a.lossy?"yaml":"form"),H(!1),J(null),L([])}function R(a){f(a),a||setTimeout(Q,200)}async function S(){if(!O.valid||G)return;let b=g?a.id:i.id||b7(i.name)||"untitled";H(!0),J(null),L([]);try{let a=await (0,A.saveTemplate)({id:b,yaml:N});c?.(a.id),R(!1)}catch(a){a instanceof B.DaemonError?(J(a.message),L(a.details?.issues??[])):J(a instanceof Error?a.message:"Save failed (unknown error)")}finally{H(!1)}}let T=O.valid&&!G,U=b??(0,j.jsxs)("button",{type:"button","aria-label":g?"Edit template":"New template",className:"inline-flex shrink-0 items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground shadow-sm transition hover:bg-primary/90",children:[g?(0,j.jsx)(m.Pencil,{className:"h-4 w-4"}):(0,j.jsx)(w.Plus,{className:"h-4 w-4"}),(0,j.jsx)("span",{className:"hidden sm:inline",children:g?"Edit":"New template"})]});return(0,j.jsxs)(z.Dialog,{open:e,onOpenChange:R,children:[(0,j.jsx)(z.DialogTrigger,{asChild:!0,children:U}),(0,j.jsxs)(z.DialogContent,{showCloseButton:!1,className:"flex max-h-[85vh] w-[min(96vw,720px)] flex-col gap-0 overflow-hidden border-border bg-card p-0 shadow-2xl sm:max-w-none",children:[(0,j.jsxs)("div",{className:"flex items-center gap-3 border-b border-border px-6 py-4",children:[(0,j.jsx)("div",{className:"grid h-9 w-9 shrink-0 place-items-center rounded-md bg-primary/15 text-primary ring-1 ring-primary/20",children:(0,j.jsx)(v.FileCode2,{className:"h-4 w-4"})}),(0,j.jsxs)("div",{className:"flex-1",children:[(0,j.jsx)(z.DialogTitle,{className:"text-[15px] font-semibold leading-tight tracking-tight",children:g?`Edit template — ${a.name}`:"New template"}),(0,j.jsx)(z.DialogDescription,{className:"mt-0.5 text-xs text-muted-foreground",children:g?"Edit the YAML directly or use the form. Validation runs live.":"A reusable review workflow. Edit visually below or paste raw YAML."})]}),(0,j.jsx)("button",{type:"button",onClick:()=>R(!1),className:"grid h-7 w-7 place-items-center rounded-md text-muted-foreground transition hover:bg-accent hover:text-foreground","aria-label":"Close",children:(0,j.jsx)(y.X,{className:"h-4 w-4"})})]}),(0,j.jsx)("div",{className:"border-b border-border bg-card/40 px-6",children:(0,j.jsxs)("div",{className:"-mb-px flex items-center gap-1",children:[(0,j.jsxs)(cO,{active:"form"===E,onClick:()=>!h.lossy&&P("form"),disabled:h.lossy,children:[(0,j.jsx)(x.Sparkles,{className:"h-3.5 w-3.5"}),"Form",h.lossy&&(0,j.jsx)("span",{className:"ml-1 rounded bg-muted px-1 text-[9px] font-medium text-muted-foreground",children:"YAML only"})]}),(0,j.jsxs)(cO,{active:"yaml"===E,onClick:()=>P("yaml"),children:[(0,j.jsx)(v.FileCode2,{className:"h-3.5 w-3.5"}),"YAML",!O.valid&&"form"===E&&(0,j.jsx)("span",{className:"ml-1 h-1.5 w-1.5 rounded-full bg-destructive"})]})]})}),(0,j.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:[h.lossy&&"yaml"===E&&(0,j.jsx)("div",{className:"border-b border-amber-500/30 bg-amber-500/5 px-6 py-2.5 text-[11px] text-amber-200",children:(0,j.jsxs)("div",{className:"flex items-start gap-2",children:[(0,j.jsx)(t.AlertTriangle,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),(0,j.jsxs)("div",{className:"flex-1",children:[(0,j.jsx)("div",{className:"font-medium",children:"Form editing disabled for this template"}),(0,j.jsx)("ul",{className:"mt-1 space-y-0.5 leading-snug",children:h.reasons.map((a,b)=>(0,j.jsxs)("li",{children:["· ",a]},b))})]})]})}),"form"===E?(0,j.jsx)(cW,{form:i,setField:function(a,b){let c={...i,[a]:b};n(c),D(!0),q||p(b8(c))}}):(0,j.jsx)(c0,{yaml:o,filename:`${i.id||b7(i.name)||"untitled"}.yaml`,issues:O.issues,onChange:a=>{p(a),r(!0)}})]}),(0,j.jsxs)("div",{className:"flex flex-col gap-2 border-t border-border bg-card/40 px-6 py-3",children:[I&&(0,j.jsx)("div",{className:"rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[11px] text-destructive",children:(0,j.jsxs)("div",{className:"flex items-start gap-1.5",children:[(0,j.jsx)(t.AlertTriangle,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,j.jsxs)("div",{className:"flex-1",children:[(0,j.jsx)("div",{className:"font-medium",children:"Save failed"}),(0,j.jsx)("div",{className:"mt-0.5 leading-snug",children:I}),K.length>0&&(0,j.jsx)("ul",{className:"mt-1 space-y-0.5",children:K.slice(0,5).map((a,b)=>(0,j.jsxs)("li",{children:[(0,j.jsx)("span",{className:"font-mono",children:a.path}),":"," ",a.message]},b))})]})]})}),(0,j.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,j.jsx)("div",{className:"flex items-center gap-1.5 text-[11px] text-muted-foreground",children:O.valid?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(u.CheckCircle2,{className:"h-3 w-3 text-emerald-400"}),(0,j.jsx)("span",{children:"Ready to save"})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(t.AlertTriangle,{className:"h-3 w-3 text-destructive/80"}),(0,j.jsxs)("span",{children:[O.issues.length," ",1===O.issues.length?"issue":"issues"," to resolve"]})]})}),(0,j.jsxs)("div",{className:"flex items-center gap-2",children:[(0,j.jsx)("button",{type:"button",onClick:()=>R(!1),className:"h-9 rounded-md border border-border bg-card px-4 text-sm font-medium text-muted-foreground transition hover:border-muted-foreground/30 hover:text-foreground",children:"Cancel"}),(0,j.jsxs)("button",{type:"button",disabled:!T,onClick:S,className:(0,bU.cn)("inline-flex h-9 items-center gap-1.5 rounded-md px-4 text-sm font-medium shadow-sm transition",T?"bg-primary text-primary-foreground hover:bg-primary/90":"cursor-not-allowed bg-muted text-muted-foreground/60 shadow-none"),children:[G&&(0,j.jsx)(l.Loader2,{className:"h-3.5 w-3.5 animate-spin"}),G?"Saving…":g?"Save changes":"Save template"]})]})]})]})]})]})}let c3=Object.fromEntries(Object.entries(ck.UI_LINEAGE_BRAND).map(([a,b])=>[a,b.dot])),c4=[{id:"all",label:"All"},{id:"review",label:"Review"},{id:"plan",label:"Plan"},{id:"debug",label:"Debug"},{id:"decide",label:"Decide"}];a.s(["default",0,function(){let[a,b]=(0,k.useState)([]),[c,d]=(0,k.useState)(null),[e,f]=(0,k.useState)("all"),[g,h]=(0,k.useState)(""),[i,t]=(0,k.useState)(null),[u,v]=(0,k.useState)(null),[w,x]=(0,k.useState)(null),y=(0,k.useCallback)(async a=>{try{let c=await (0,A.listTemplates)();b(c),a&&c.find(b=>b.id===a)?h(a):c.length>0&&!g&&h(c[0].id)}catch(a){d(a instanceof B.DaemonError?a.message:"Failed to load templates")}},[g]);async function z(a){if(!u&&"builtin"!==a.source){if(i!==a.id){t(a.id),x(null),setTimeout(()=>{t(b=>b===a.id?null:b)},8e3);return}v(a.id),x(null);try{await (0,A.deleteTemplate)(a.id),t(null),g===a.id&&h(""),await y()}catch(a){x(a instanceof B.DaemonError||a instanceof Error?a.message:"Delete failed (unknown error)"),t(null)}finally{v(null)}}}(0,k.useEffect)(()=>{y()},[]);let C="all"===e?a:a.filter(a=>a.category===e),D=a.find(a=>a.id===g)??a[0]??null;return c?(0,j.jsx)(o.AppShell,{children:(0,j.jsx)("div",{className:"mx-auto w-full max-w-6xl px-4 py-6 sm:px-6 sm:py-8 md:px-8 md:py-10",children:(0,j.jsxs)("div",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-4",children:[(0,j.jsx)("p",{className:"text-sm text-destructive",children:"Error loading templates"}),(0,j.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:c})]})})}):(0,j.jsx)(o.AppShell,{children:(0,j.jsxs)("div",{className:"mx-auto w-full max-w-6xl px-4 py-6 sm:px-6 sm:py-8 md:px-8 md:py-10",children:[(0,j.jsx)(r.PageHeader,{eyebrow:"Templates",title:"Reusable review workflows",subtitle:"Each template defines the driver, reviewers, prompts, and quorum rule for a kind of task. Fork, edit, share.",action:(0,j.jsx)(c2,{onSaved:a=>y(a)})}),w&&(0,j.jsx)("div",{className:"mb-4 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive",children:w}),(0,j.jsx)("div",{className:"mb-4 flex items-center gap-1 border-b border-border",children:c4.map(a=>(0,j.jsxs)("button",{type:"button",onClick:()=>f(a.id),className:`relative px-3 py-2 text-sm transition ${a.id===e?"text-foreground":"text-muted-foreground hover:text-foreground"}`,children:[a.label,a.id===e&&(0,j.jsx)("span",{className:"absolute inset-x-3 bottom-0 h-0.5 bg-primary"})]},a.id))}),(0,j.jsxs)("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-[1fr_1fr]",children:[(0,j.jsx)("div",{className:"flex min-w-0 flex-col gap-2",children:C.map(a=>(0,j.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>h(a.id),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),h(a.id))},className:`group relative cursor-pointer rounded-xl text-left transition focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/60 ${a.id===g?"ring-2 ring-primary/60 ring-offset-2 ring-offset-background":""}`,children:[(0,j.jsxs)(p.Card,{className:"bg-card p-4 transition group-hover:border-muted-foreground/30",children:[(0,j.jsx)("div",{className:"flex items-start justify-between gap-3",children:(0,j.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,j.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,j.jsx)("span",{className:"text-sm font-semibold",children:a.name}),(0,j.jsx)(q.Badge,{variant:"outline",className:"border-border text-[10px] capitalize",children:a.category})]}),(0,j.jsx)("p",{className:"mt-1 text-xs text-muted-foreground line-clamp-2",children:a.description})]})}),a.phases[0]?.reviewer?.candidates.length?(0,j.jsxs)("div",{className:"mt-3 flex items-center gap-2 text-[11px] text-muted-foreground",children:[a.phases[0]?.kind!=="review_only"&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("span",{className:"flex items-center gap-1",children:[(0,j.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400"}),"doer"]}),(0,j.jsx)("span",{className:"text-muted-foreground/40",children:"→"})]}),(0,j.jsxs)("span",{className:"flex items-center gap-1",children:[a.phases[0]?.reviewer?.candidates.map(a=>(0,j.jsx)("span",{className:`h-1.5 w-1.5 rounded-full ${c3[a]}`,title:a},a)),(0,j.jsxs)("span",{children:[a.phases[0]?.reviewer?.candidates.length," ",a.phases[0]?.reviewer?.candidates.length===1?"reviewer":"reviewers"]})]}),a.phases.length>1&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,j.jsxs)("span",{className:"font-mono text-[10px]",children:[a.phases.length," phases"]})]})]}):null]}),(0,j.jsxs)("div",{className:`absolute bottom-3 right-3 flex items-center gap-1.5 transition ${a.id===g?"opacity-100":"opacity-0 group-hover:opacity-100 group-focus-within:opacity-100"}`,onClick:b=>{b.stopPropagation(),h(a.id)},onKeyDown:a=>a.stopPropagation(),children:[(0,j.jsx)(c2,{editing:a,onSaved:a=>y(a),trigger:(0,j.jsx)("button",{type:"button","aria-label":`Edit ${a.name}`,className:"grid h-7 w-7 place-items-center rounded-md border border-border bg-card text-muted-foreground transition hover:border-muted-foreground/40 hover:bg-accent/60 hover:text-foreground",children:(0,j.jsx)(m.Pencil,{className:"h-3.5 w-3.5"})})}),"builtin"!==a.source&&(0,j.jsx)("button",{type:"button","aria-label":i===a.id?`Confirm delete ${a.name}`:`Delete ${a.name}`,title:i===a.id?"Click again to confirm":"Delete",disabled:u===a.id,onClick:()=>z(a),className:`grid h-7 w-7 place-items-center rounded-md border transition disabled:cursor-not-allowed disabled:opacity-50 ${i===a.id?"border-destructive bg-destructive/15 text-destructive":"border-border bg-card text-muted-foreground hover:border-destructive/50 hover:text-destructive"}`,children:u===a.id?(0,j.jsx)(l.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,j.jsx)(n.Trash2,{className:"h-3.5 w-3.5"})})]})]},a.id))}),D?(0,j.jsx)("div",{className:"lg:sticky lg:top-6 lg:max-h-[calc(100vh-10rem)] lg:h-[calc(100vh-10rem)]",children:(0,j.jsx)(s.CodeBlock,{filename:`${D.id}.yaml`,charCount:D.yaml.length,maxHeightClassName:"h-full",footer:(0,j.jsxs)("span",{children:["by ",D.authorHandle]}),children:D.yaml})}):(0,j.jsx)(p.Card,{className:"bg-card p-4 text-center text-muted-foreground",children:(0,j.jsx)("p",{children:"Select a template to view details"})})]})]})})}],30548)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_app_templates_page_tsx_0tml2wg._.js.map
|