@shepai/cli 1.114.0 → 1.115.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +4 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.js +6 -1
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +6 -1
- package/dist/src/presentation/web/app/actions/get-feature-drawer-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-feature-drawer-data.js +4 -0
- package/dist/src/presentation/web/app/build-feature-node-data.d.ts +4 -0
- package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-feature-node-data.js +5 -0
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts +7 -1
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-graph-nodes.js +9 -12
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +17 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +10 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +69 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +14 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +20 -20
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +26 -26
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +20 -20
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +26 -26
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
- package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_10942246._.js → _7d4c400f._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_10942246._.js.map → _7d4c400f._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
- package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
- package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_7deb4af9._.js → _d6fedbbf._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_7deb4af9._.js.map → _d6fedbbf._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_f0432d1b._.js → _f166a7ed._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_f0432d1b._.js.map → _f166a7ed._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +31 -31
- package/web/.next/static/chunks/{6cb5c415171426e8.js → 08c3f6e304e8d7b4.js} +1 -1
- package/web/.next/static/chunks/{0c701494594b6134.js → 29a45df76aba845e.js} +1 -1
- package/web/.next/static/chunks/{6fbd2c45d85eba3a.js → 36e2bf6ac6e90282.js} +1 -1
- package/web/.next/static/chunks/{fec29583d5cc1bed.js → 36ff38fd6b9d647d.js} +1 -1
- package/web/.next/static/chunks/{6b61a250047ee0b4.js → b6d30842eaeb3166.js} +2 -2
- package/web/.next/static/chunks/{e3d8ee066c7e996d.js → c50772767c14f013.js} +1 -1
- package/web/.next/static/chunks/{bcd3e54e075de2cb.js → c62c393c5d0912b7.js} +1 -1
- package/web/.next/static/chunks/{8d067c0e7cabc222.js → d4350f1fe1625279.js} +1 -1
- package/web/.next/static/chunks/{9fce0a460a0e89bc.js → d4bebfde2bed6130.js} +1 -1
- package/web/.next/static/chunks/ea784857fcad9e04.js +2 -0
- package/web/.next/static/chunks/31b1f992247624f8.js +0 -2
- /package/web/.next/static/{oI7zSl_ThcdDPhNbok2i3 → 8fO4nSkLwXorpa4D0V82M}/_buildManifest.js +0 -0
- /package/web/.next/static/{oI7zSl_ThcdDPhNbok2i3 → 8fO4nSkLwXorpa4D0V82M}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{oI7zSl_ThcdDPhNbok2i3 → 8fO4nSkLwXorpa4D0V82M}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[79020,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(83886),e=a.i(25700);let f=(0,e.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var g=a.i(72016),h=a.i(34644),i=a.i(63698),j=a.i(53170);let k=(0,e.default)("activity",[["path",{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",key:"169zse"}]]),l=(0,e.default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]),m=(0,e.default)("flag",[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",key:"1jaruq"}]]),n=(0,e.default)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var o=a.i(96853),o=o,p=a.i(67837),q=a.i(71238);let r=(0,e.default)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);var s=a.i(52313),t=a.i(85536),u=a.i(58860),v=a.i(90920),w=a.i(18948),x=a.i(96867),y=a.i(82934),z=a.i(55690),A=a.i(48972),B=a.i(59653),C=a.i(63496),D=a.i(6175),E=a.i(7420),F=a.i(48939),G=a.i(58761),H=a.i(51473),I=a.i(59675),J=a.i(5472),K=a.i(75988),L=a.i(80930),M=a.i(66873),N=a.i(90986),O=a.i(79406),P=a.i(17329),Q=a.i(61476),R=a.i(64005),S=a.i(50049),T=a.i(16164),U=a.i(45291),V=[" ","Enter","ArrowUp","ArrowDown"],W=[" ","Enter"],X="Select",[Y,Z,$]=(0,C.createCollection)(X),[_,aa]=(0,E.createContextScope)(X,[$,K.createPopperScope]),ab=(0,K.createPopperScope)(),[ac,ad]=_(X),[ae,af]=_(X),ag=a=>{let{__scopeSelect:d,children:e,open:f,defaultOpen:g,onOpenChange:h,value:i,defaultValue:j,onValueChange:k,dir:l,name:m,autoComplete:n,disabled:o,required:p,form:q}=a,r=ab(d),[s,t]=c.useState(null),[u,v]=c.useState(null),[w,x]=c.useState(!1),y=(0,F.useDirection)(l),[z,A]=(0,P.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:X}),[B,C]=(0,P.useControllableState)({prop:i,defaultProp:j,onChange:k,caller:X}),D=c.useRef(null),E=!s||q||!!s.closest("form"),[G,H]=c.useState(new Set),I=Array.from(G).map(a=>a.props.value).join(";");return(0,b.jsx)(K.Root,{...r,children:(0,b.jsxs)(ac,{required:p,scope:d,trigger:s,onTriggerChange:t,valueNode:u,onValueNodeChange:v,valueNodeHasChildren:w,onValueNodeHasChildrenChange:x,contentId:(0,J.useId)(),value:B,onValueChange:C,open:z,onOpenChange:A,dir:y,triggerPointerDownPosRef:D,disabled:o,children:[(0,b.jsx)(Y.Provider,{scope:d,children:(0,b.jsx)(ae,{scope:a.__scopeSelect,onNativeOptionAdd:c.useCallback(a=>{H(b=>new Set(b).add(a))},[]),onNativeOptionRemove:c.useCallback(a=>{H(b=>{let c=new Set(b);return c.delete(a),c})},[]),children:e})}),E?(0,b.jsxs)(aV,{"aria-hidden":!0,required:p,tabIndex:-1,name:m,autoComplete:n,value:B,onChange:a=>C(a.target.value),disabled:o,form:q,children:[void 0===B?(0,b.jsx)("option",{value:""}):null,Array.from(G)]},I):null]})})};ag.displayName=X;var ah="SelectTrigger",ai=c.forwardRef((a,d)=>{let{__scopeSelect:e,disabled:f=!1,...g}=a,h=ab(e),i=ad(ah,e),j=i.disabled||f,k=(0,D.useComposedRefs)(d,i.onTriggerChange),l=Z(e),m=c.useRef("touch"),[n,o,p]=aX(a=>{let b=l().filter(a=>!a.disabled),c=b.find(a=>a.value===i.value),d=aY(b,a,c);void 0!==d&&i.onValueChange(d.value)}),q=a=>{j||(i.onOpenChange(!0),p()),a&&(i.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return(0,b.jsx)(K.Anchor,{asChild:!0,...h,children:(0,b.jsx)(M.Primitive.button,{type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:j,"data-disabled":j?"":void 0,"data-placeholder":aW(i.value)?"":void 0,...g,ref:k,onClick:(0,B.composeEventHandlers)(g.onClick,a=>{a.currentTarget.focus(),"mouse"!==m.current&&q(a)}),onPointerDown:(0,B.composeEventHandlers)(g.onPointerDown,a=>{m.current=a.pointerType;let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),0===a.button&&!1===a.ctrlKey&&"mouse"===a.pointerType&&(q(a),a.preventDefault())}),onKeyDown:(0,B.composeEventHandlers)(g.onKeyDown,a=>{let b=""!==n.current;a.ctrlKey||a.altKey||a.metaKey||1!==a.key.length||o(a.key),(!b||" "!==a.key)&&V.includes(a.key)&&(q(),a.preventDefault())})})})});ai.displayName=ah;var aj="SelectValue",ak=c.forwardRef((a,c)=>{let{__scopeSelect:d,className:e,style:f,children:g,placeholder:h="",...i}=a,j=ad(aj,d),{onValueNodeHasChildrenChange:k}=j,l=void 0!==g,m=(0,D.useComposedRefs)(c,j.onValueNodeChange);return(0,Q.useLayoutEffect)(()=>{k(l)},[k,l]),(0,b.jsx)(M.Primitive.span,{...i,ref:m,style:{pointerEvents:"none"},children:aW(j.value)?(0,b.jsx)(b.Fragment,{children:h}):g})});ak.displayName=aj;var al=c.forwardRef((a,c)=>{let{__scopeSelect:d,children:e,...f}=a;return(0,b.jsx)(M.Primitive.span,{"aria-hidden":!0,...f,ref:c,children:e||"▼"})});al.displayName="SelectIcon";var am=a=>(0,b.jsx)(L.Portal,{asChild:!0,...a});am.displayName="SelectPortal";var an="SelectContent",ao=c.forwardRef((a,d)=>{let e=ad(an,a.__scopeSelect),[f,g]=c.useState();return((0,Q.useLayoutEffect)(()=>{g(new DocumentFragment)},[]),e.open)?(0,b.jsx)(as,{...a,ref:d}):f?z.createPortal((0,b.jsx)(ap,{scope:a.__scopeSelect,children:(0,b.jsx)(Y.Slot,{scope:a.__scopeSelect,children:(0,b.jsx)("div",{children:a.children})})}),f):null});ao.displayName=an;var[ap,aq]=_(an),ar=(0,N.createSlot)("SelectContent.RemoveScroll"),as=c.forwardRef((a,d)=>{let{__scopeSelect:e,position:f="item-aligned",onCloseAutoFocus:g,onEscapeKeyDown:h,onPointerDownOutside:i,side:j,sideOffset:k,align:l,alignOffset:m,arrowPadding:n,collisionBoundary:o,collisionPadding:p,sticky:q,hideWhenDetached:r,avoidCollisions:s,...t}=a,u=ad(an,e),[v,w]=c.useState(null),[x,y]=c.useState(null),z=(0,D.useComposedRefs)(d,a=>w(a)),[A,C]=c.useState(null),[E,F]=c.useState(null),J=Z(e),[K,L]=c.useState(!1),M=c.useRef(!1);c.useEffect(()=>{if(v)return(0,T.hideOthers)(v)},[v]),(0,H.useFocusGuards)();let N=c.useCallback(a=>{let[b,...c]=J().map(a=>a.ref.current),[d]=c.slice(-1),e=document.activeElement;for(let c of a)if(c===e||(c?.scrollIntoView({block:"nearest"}),c===b&&x&&(x.scrollTop=0),c===d&&x&&(x.scrollTop=x.scrollHeight),c?.focus(),document.activeElement!==e))return},[J,x]),O=c.useCallback(()=>N([A,v]),[N,A,v]);c.useEffect(()=>{K&&O()},[K,O]);let{onOpenChange:P,triggerPointerDownPosRef:Q}=u;c.useEffect(()=>{if(v){let a={x:0,y:0},b=b=>{a={x:Math.abs(Math.round(b.pageX)-(Q.current?.x??0)),y:Math.abs(Math.round(b.pageY)-(Q.current?.y??0))}},c=c=>{a.x<=10&&a.y<=10?c.preventDefault():v.contains(c.target)||P(!1),document.removeEventListener("pointermove",b),Q.current=null};return null!==Q.current&&(document.addEventListener("pointermove",b),document.addEventListener("pointerup",c,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",b),document.removeEventListener("pointerup",c,{capture:!0})}}},[v,P,Q]),c.useEffect(()=>{let a=()=>P(!1);return window.addEventListener("blur",a),window.addEventListener("resize",a),()=>{window.removeEventListener("blur",a),window.removeEventListener("resize",a)}},[P]);let[R,S]=aX(a=>{let b=J().filter(a=>!a.disabled),c=b.find(a=>a.ref.current===document.activeElement),d=aY(b,a,c);d&&setTimeout(()=>d.ref.current.focus())}),V=c.useCallback((a,b,c)=>{let d=!M.current&&!c;(void 0!==u.value&&u.value===b||d)&&(C(a),d&&(M.current=!0))},[u.value]),W=c.useCallback(()=>v?.focus(),[v]),X=c.useCallback((a,b,c)=>{let d=!M.current&&!c;(void 0!==u.value&&u.value===b||d)&&F(a)},[u.value]),Y="popper"===f?au:at,$=Y===au?{side:j,sideOffset:k,align:l,alignOffset:m,arrowPadding:n,collisionBoundary:o,collisionPadding:p,sticky:q,hideWhenDetached:r,avoidCollisions:s}:{};return(0,b.jsx)(ap,{scope:e,content:v,viewport:x,onViewportChange:y,itemRefCallback:V,selectedItem:A,onItemLeave:W,itemTextRefCallback:X,focusSelectedItem:O,selectedItemText:E,position:f,isPositioned:K,searchRef:R,children:(0,b.jsx)(U.RemoveScroll,{as:ar,allowPinchZoom:!0,children:(0,b.jsx)(I.FocusScope,{asChild:!0,trapped:u.open,onMountAutoFocus:a=>{a.preventDefault()},onUnmountAutoFocus:(0,B.composeEventHandlers)(g,a=>{u.trigger?.focus({preventScroll:!0}),a.preventDefault()}),children:(0,b.jsx)(G.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:h,onPointerDownOutside:i,onFocusOutside:a=>a.preventDefault(),onDismiss:()=>u.onOpenChange(!1),children:(0,b.jsx)(Y,{role:"listbox",id:u.contentId,"data-state":u.open?"open":"closed",dir:u.dir,onContextMenu:a=>a.preventDefault(),...t,...$,onPlaced:()=>L(!0),ref:z,style:{display:"flex",flexDirection:"column",outline:"none",...t.style},onKeyDown:(0,B.composeEventHandlers)(t.onKeyDown,a=>{let b=a.ctrlKey||a.altKey||a.metaKey;if("Tab"===a.key&&a.preventDefault(),b||1!==a.key.length||S(a.key),["ArrowUp","ArrowDown","Home","End"].includes(a.key)){let b=J().filter(a=>!a.disabled).map(a=>a.ref.current);if(["ArrowUp","End"].includes(a.key)&&(b=b.slice().reverse()),["ArrowUp","ArrowDown"].includes(a.key)){let c=a.target,d=b.indexOf(c);b=b.slice(d+1)}setTimeout(()=>N(b)),a.preventDefault()}})})})})})})});as.displayName="SelectContentImpl";var at=c.forwardRef((a,d)=>{let{__scopeSelect:e,onPlaced:f,...g}=a,h=ad(an,e),i=aq(an,e),[j,k]=c.useState(null),[l,m]=c.useState(null),n=(0,D.useComposedRefs)(d,a=>m(a)),o=Z(e),p=c.useRef(!1),q=c.useRef(!0),{viewport:r,selectedItem:s,selectedItemText:t,focusSelectedItem:u}=i,v=c.useCallback(()=>{if(h.trigger&&h.valueNode&&j&&l&&r&&s&&t){let a=h.trigger.getBoundingClientRect(),b=l.getBoundingClientRect(),c=h.valueNode.getBoundingClientRect(),d=t.getBoundingClientRect();if("rtl"!==h.dir){let e=d.left-b.left,f=c.left-e,g=a.left-f,h=a.width+g,i=Math.max(h,b.width),k=window.innerWidth-10,l=(0,A.clamp)(f,[10,Math.max(10,k-i)]);j.style.minWidth=h+"px",j.style.left=l+"px"}else{let e=b.right-d.right,f=window.innerWidth-c.right-e,g=window.innerWidth-a.right-f,h=a.width+g,i=Math.max(h,b.width),k=window.innerWidth-10,l=(0,A.clamp)(f,[10,Math.max(10,k-i)]);j.style.minWidth=h+"px",j.style.right=l+"px"}let e=o(),g=window.innerHeight-20,i=r.scrollHeight,k=window.getComputedStyle(l),m=parseInt(k.borderTopWidth,10),n=parseInt(k.paddingTop,10),q=parseInt(k.borderBottomWidth,10),u=m+n+i+parseInt(k.paddingBottom,10)+q,v=Math.min(5*s.offsetHeight,u),w=window.getComputedStyle(r),x=parseInt(w.paddingTop,10),y=parseInt(w.paddingBottom,10),z=a.top+a.height/2-10,B=s.offsetHeight/2,C=m+n+(s.offsetTop+B);if(C<=z){let a=e.length>0&&s===e[e.length-1].ref.current;j.style.bottom="0px";let b=Math.max(g-z,B+(a?y:0)+(l.clientHeight-r.offsetTop-r.offsetHeight)+q);j.style.height=C+b+"px"}else{let a=e.length>0&&s===e[0].ref.current;j.style.top="0px";let b=Math.max(z,m+r.offsetTop+(a?x:0)+B);j.style.height=b+(u-C)+"px",r.scrollTop=C-z+r.offsetTop}j.style.margin="10px 0",j.style.minHeight=v+"px",j.style.maxHeight=g+"px",f?.(),requestAnimationFrame(()=>p.current=!0)}},[o,h.trigger,h.valueNode,j,l,r,s,t,h.dir,f]);(0,Q.useLayoutEffect)(()=>v(),[v]);let[w,x]=c.useState();(0,Q.useLayoutEffect)(()=>{l&&x(window.getComputedStyle(l).zIndex)},[l]);let y=c.useCallback(a=>{a&&!0===q.current&&(v(),u?.(),q.current=!1)},[v,u]);return(0,b.jsx)(av,{scope:e,contentWrapper:j,shouldExpandOnScrollRef:p,onScrollButtonChange:y,children:(0,b.jsx)("div",{ref:k,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:w},children:(0,b.jsx)(M.Primitive.div,{...g,ref:n,style:{boxSizing:"border-box",maxHeight:"100%",...g.style}})})})});at.displayName="SelectItemAlignedPosition";var au=c.forwardRef((a,c)=>{let{__scopeSelect:d,align:e="start",collisionPadding:f=10,...g}=a,h=ab(d);return(0,b.jsx)(K.Content,{...h,...g,ref:c,align:e,collisionPadding:f,style:{boxSizing:"border-box",...g.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});au.displayName="SelectPopperPosition";var[av,aw]=_(an,{}),ax="SelectViewport",ay=c.forwardRef((a,d)=>{let{__scopeSelect:e,nonce:f,...g}=a,h=aq(ax,e),i=aw(ax,e),j=(0,D.useComposedRefs)(d,h.onViewportChange),k=c.useRef(0);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:f}),(0,b.jsx)(Y.Slot,{scope:e,children:(0,b.jsx)(M.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...g,ref:j,style:{position:"relative",flex:1,overflow:"hidden auto",...g.style},onScroll:(0,B.composeEventHandlers)(g.onScroll,a=>{let b=a.currentTarget,{contentWrapper:c,shouldExpandOnScrollRef:d}=i;if(d?.current&&c){let a=Math.abs(k.current-b.scrollTop);if(a>0){let d=window.innerHeight-20,e=Math.max(parseFloat(c.style.minHeight),parseFloat(c.style.height));if(e<d){let f=e+a,g=Math.min(d,f),h=f-g;c.style.height=g+"px","0px"===c.style.bottom&&(b.scrollTop=h>0?h:0,c.style.justifyContent="flex-end")}}}k.current=b.scrollTop})})})]})});ay.displayName=ax;var az="SelectGroup",[aA,aB]=_(az),aC=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=(0,J.useId)();return(0,b.jsx)(aA,{scope:d,id:f,children:(0,b.jsx)(M.Primitive.div,{role:"group","aria-labelledby":f,...e,ref:c})})});aC.displayName=az;var aD="SelectLabel",aE=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=aB(aD,d);return(0,b.jsx)(M.Primitive.div,{id:f.id,...e,ref:c})});aE.displayName=aD;var aF="SelectItem",[aG,aH]=_(aF),aI=c.forwardRef((a,d)=>{let{__scopeSelect:e,value:f,disabled:g=!1,textValue:h,...i}=a,j=ad(aF,e),k=aq(aF,e),l=j.value===f,[m,n]=c.useState(h??""),[o,p]=c.useState(!1),q=(0,D.useComposedRefs)(d,a=>k.itemRefCallback?.(a,f,g)),r=(0,J.useId)(),s=c.useRef("touch"),t=()=>{g||(j.onValueChange(f),j.onOpenChange(!1))};if(""===f)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,b.jsx)(aG,{scope:e,value:f,disabled:g,textId:r,isSelected:l,onItemTextChange:c.useCallback(a=>{n(b=>b||(a?.textContent??"").trim())},[]),children:(0,b.jsx)(Y.ItemSlot,{scope:e,value:f,disabled:g,textValue:m,children:(0,b.jsx)(M.Primitive.div,{role:"option","aria-labelledby":r,"data-highlighted":o?"":void 0,"aria-selected":l&&o,"data-state":l?"checked":"unchecked","aria-disabled":g||void 0,"data-disabled":g?"":void 0,tabIndex:g?void 0:-1,...i,ref:q,onFocus:(0,B.composeEventHandlers)(i.onFocus,()=>p(!0)),onBlur:(0,B.composeEventHandlers)(i.onBlur,()=>p(!1)),onClick:(0,B.composeEventHandlers)(i.onClick,()=>{"mouse"!==s.current&&t()}),onPointerUp:(0,B.composeEventHandlers)(i.onPointerUp,()=>{"mouse"===s.current&&t()}),onPointerDown:(0,B.composeEventHandlers)(i.onPointerDown,a=>{s.current=a.pointerType}),onPointerMove:(0,B.composeEventHandlers)(i.onPointerMove,a=>{s.current=a.pointerType,g?k.onItemLeave?.():"mouse"===s.current&&a.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,B.composeEventHandlers)(i.onPointerLeave,a=>{a.currentTarget===document.activeElement&&k.onItemLeave?.()}),onKeyDown:(0,B.composeEventHandlers)(i.onKeyDown,a=>{(k.searchRef?.current===""||" "!==a.key)&&(W.includes(a.key)&&t()," "===a.key&&a.preventDefault())})})})})});aI.displayName=aF;var aJ="SelectItemText",aK=c.forwardRef((a,d)=>{let{__scopeSelect:e,className:f,style:g,...h}=a,i=ad(aJ,e),j=aq(aJ,e),k=aH(aJ,e),l=af(aJ,e),[m,n]=c.useState(null),o=(0,D.useComposedRefs)(d,a=>n(a),k.onItemTextChange,a=>j.itemTextRefCallback?.(a,k.value,k.disabled)),p=m?.textContent,q=c.useMemo(()=>(0,b.jsx)("option",{value:k.value,disabled:k.disabled,children:p},k.value),[k.disabled,k.value,p]),{onNativeOptionAdd:r,onNativeOptionRemove:s}=l;return(0,Q.useLayoutEffect)(()=>(r(q),()=>s(q)),[r,s,q]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(M.Primitive.span,{id:k.textId,...h,ref:o}),k.isSelected&&i.valueNode&&!i.valueNodeHasChildren?z.createPortal(h.children,i.valueNode):null]})});aK.displayName=aJ;var aL="SelectItemIndicator",aM=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a;return aH(aL,d).isSelected?(0,b.jsx)(M.Primitive.span,{"aria-hidden":!0,...e,ref:c}):null});aM.displayName=aL;var aN="SelectScrollUpButton",aO=c.forwardRef((a,d)=>{let e=aq(aN,a.__scopeSelect),f=aw(aN,a.__scopeSelect),[g,h]=c.useState(!1),i=(0,D.useComposedRefs)(d,f.onScrollButtonChange);return(0,Q.useLayoutEffect)(()=>{if(e.viewport&&e.isPositioned){let a=function(){h(b.scrollTop>0)},b=e.viewport;return a(),b.addEventListener("scroll",a),()=>b.removeEventListener("scroll",a)}},[e.viewport,e.isPositioned]),g?(0,b.jsx)(aR,{...a,ref:i,onAutoScroll:()=>{let{viewport:a,selectedItem:b}=e;a&&b&&(a.scrollTop=a.scrollTop-b.offsetHeight)}}):null});aO.displayName=aN;var aP="SelectScrollDownButton",aQ=c.forwardRef((a,d)=>{let e=aq(aP,a.__scopeSelect),f=aw(aP,a.__scopeSelect),[g,h]=c.useState(!1),i=(0,D.useComposedRefs)(d,f.onScrollButtonChange);return(0,Q.useLayoutEffect)(()=>{if(e.viewport&&e.isPositioned){let a=function(){let a=b.scrollHeight-b.clientHeight;h(Math.ceil(b.scrollTop)<a)},b=e.viewport;return a(),b.addEventListener("scroll",a),()=>b.removeEventListener("scroll",a)}},[e.viewport,e.isPositioned]),g?(0,b.jsx)(aR,{...a,ref:i,onAutoScroll:()=>{let{viewport:a,selectedItem:b}=e;a&&b&&(a.scrollTop=a.scrollTop+b.offsetHeight)}}):null});aQ.displayName=aP;var aR=c.forwardRef((a,d)=>{let{__scopeSelect:e,onAutoScroll:f,...g}=a,h=aq("SelectScrollButton",e),i=c.useRef(null),j=Z(e),k=c.useCallback(()=>{null!==i.current&&(window.clearInterval(i.current),i.current=null)},[]);return c.useEffect(()=>()=>k(),[k]),(0,Q.useLayoutEffect)(()=>{let a=j().find(a=>a.ref.current===document.activeElement);a?.ref.current?.scrollIntoView({block:"nearest"})},[j]),(0,b.jsx)(M.Primitive.div,{"aria-hidden":!0,...g,ref:d,style:{flexShrink:0,...g.style},onPointerDown:(0,B.composeEventHandlers)(g.onPointerDown,()=>{null===i.current&&(i.current=window.setInterval(f,50))}),onPointerMove:(0,B.composeEventHandlers)(g.onPointerMove,()=>{h.onItemLeave?.(),null===i.current&&(i.current=window.setInterval(f,50))}),onPointerLeave:(0,B.composeEventHandlers)(g.onPointerLeave,()=>{k()})})}),aS=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a;return(0,b.jsx)(M.Primitive.div,{"aria-hidden":!0,...e,ref:c})});aS.displayName="SelectSeparator";var aT="SelectArrow",aU=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=ab(d),g=ad(aT,d),h=aq(aT,d);return g.open&&"popper"===h.position?(0,b.jsx)(K.Arrow,{...f,...e,ref:c}):null});aU.displayName=aT;var aV=c.forwardRef(({__scopeSelect:a,value:d,...e},f)=>{let g=c.useRef(null),h=(0,D.useComposedRefs)(f,g),i=(0,R.usePrevious)(d);return c.useEffect(()=>{let a=g.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(i!==d&&b){let c=new Event("change",{bubbles:!0});b.call(a,d),a.dispatchEvent(c)}},[i,d]),(0,b.jsx)(M.Primitive.select,{...e,style:{...S.VISUALLY_HIDDEN_STYLES,...e.style},ref:h,defaultValue:d})});function aW(a){return""===a||void 0===a}function aX(a){let b=(0,O.useCallbackRef)(a),d=c.useRef(""),e=c.useRef(0),f=c.useCallback(a=>{let c=d.current+a;b(c),function a(b){d.current=b,window.clearTimeout(e.current),""!==b&&(e.current=window.setTimeout(()=>a(""),1e3))}(c)},[b]),g=c.useCallback(()=>{d.current="",window.clearTimeout(e.current)},[]);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),[d,f,g]}function aY(a,b,c){var d,e;let f=b.length>1&&Array.from(b).every(a=>a===b[0])?b[0]:b,g=c?a.indexOf(c):-1,h=(d=a,e=Math.max(g,0),d.map((a,b)=>d[(e+b)%d.length]));1===f.length&&(h=h.filter(a=>a!==c));let i=h.find(a=>a.textValue.toLowerCase().startsWith(f.toLowerCase()));return i!==c?i:void 0}aV.displayName="SelectBubbleInput",a.s(["Arrow",()=>aU,"Content",()=>ao,"Group",()=>aC,"Icon",()=>al,"Item",()=>aI,"ItemIndicator",()=>aM,"ItemText",()=>aK,"Label",()=>aE,"Portal",()=>am,"Root",()=>ag,"ScrollDownButton",()=>aQ,"ScrollUpButton",()=>aO,"Select",()=>ag,"SelectArrow",()=>aU,"SelectContent",()=>ao,"SelectGroup",()=>aC,"SelectIcon",()=>al,"SelectItem",()=>aI,"SelectItemIndicator",()=>aM,"SelectItemText",()=>aK,"SelectLabel",()=>aE,"SelectPortal",()=>am,"SelectScrollDownButton",()=>aQ,"SelectScrollUpButton",()=>aO,"SelectSeparator",()=>aS,"SelectTrigger",()=>ai,"SelectValue",()=>ak,"SelectViewport",()=>ay,"Separator",()=>aS,"Trigger",()=>ai,"Value",()=>ak,"Viewport",()=>ay,"createSelectScope",()=>aa],16252);var aZ=a.i(16252),aZ=aZ,a$=a.i(71716);let a_=(0,e.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),a0=aZ.Root;aZ.Group;let a1=aZ.Value,a2=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(aZ.Trigger,{ref:e,className:(0,t.cn)("border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-sm focus:ring-1 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...d,children:[c,(0,b.jsx)(aZ.Icon,{asChild:!0,children:(0,b.jsx)(a$.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));a2.displayName=aZ.Trigger.displayName;let a3=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.ScrollUpButton,{ref:d,className:(0,t.cn)("flex cursor-default items-center justify-center py-1",a),...c,children:(0,b.jsx)(a_,{className:"h-4 w-4"})}));a3.displayName=aZ.ScrollUpButton.displayName;let a4=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.ScrollDownButton,{ref:d,className:(0,t.cn)("flex cursor-default items-center justify-center py-1",a),...c,children:(0,b.jsx)(a$.ChevronDown,{className:"h-4 w-4"})}));a4.displayName=aZ.ScrollDownButton.displayName;let a5=c.forwardRef(({className:a,children:c,position:d="popper",...e},f)=>(0,b.jsx)(aZ.Portal,{children:(0,b.jsxs)(aZ.Content,{ref:f,className:(0,t.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md","popper"===d&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:d,...e,children:[(0,b.jsx)(a3,{}),(0,b.jsx)(aZ.Viewport,{className:(0,t.cn)("p-1","popper"===d&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:c}),(0,b.jsx)(a4,{})]})}));a5.displayName=aZ.Content.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.Label,{ref:d,className:(0,t.cn)("px-2 py-1.5 text-sm font-semibold",a),...c})).displayName=aZ.Label.displayName;let a6=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(aZ.Item,{ref:e,className:(0,t.cn)("focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...d,children:[(0,b.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,b.jsx)(aZ.ItemIndicator,{children:(0,b.jsx)(g.Check,{className:"h-4 w-4"})})}),(0,b.jsx)(aZ.ItemText,{children:c})]}));a6.displayName=aZ.Item.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.Separator,{ref:d,className:(0,t.cn)("bg-muted -mx-1 my-1 h-px",a),...c})).displayName=aZ.Separator.displayName;var a7=a.i(25674);let a8=(0,a7.createServerReference)("40f01d0c24b9ed8337147aa37e6843873c609bdc91",a7.callServer,void 0,a7.findSourceMapURL,"updateSettingsAction");var a9=a.i(46847),ba=a.i(61640),bb=a.i(44447),bc=a.i(87926);function bd(a){return(0,b.jsx)(bb.Code,{className:(0,t.cn)("h-4 w-4",a.className),...a})}function be({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/vscode.svg",alt:"VS Code",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bf({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/agents/cursor.jpeg",alt:"Cursor",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bg({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/windsurf.svg",alt:"Windsurf",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bh({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/zed.svg",alt:"Zed",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bi({className:a,...c}){return(0,b.jsx)(bc.Rocket,{className:(0,t.cn)("h-4 w-4",a),...c})}be.displayName="VsCodeIcon",bf.displayName="CursorEditorIcon",bg.displayName="WindsurfIcon",bh.displayName="ZedIcon",bi.displayName="AntigravityIcon";let bj={vscode:be,cursor:bf,windsurf:bg,zed:bh,antigravity:bi};var bk=a.i(61781);let bl=[{value:a9.AgentAuthMethod.Session,label:"Session"},{value:a9.AgentAuthMethod.Token,label:"Token"}],bm=[{value:a9.EditorType.VsCode,label:"VS Code"},{value:a9.EditorType.Cursor,label:"Cursor"},{value:a9.EditorType.Windsurf,label:"Windsurf"},{value:a9.EditorType.Zed,label:"Zed"},{value:a9.EditorType.Antigravity,label:"Antigravity"}],bn=[{id:"agent",label:"Agent",icon:h.Bot},{id:"environment",label:"Environment",icon:i.Terminal},{id:"workflow",label:"Workflow",icon:j.GitBranch},{id:"ci",label:"CI",icon:k},{id:"notifications",label:"Notifications",icon:l},{id:"feature-flags",label:"Flags",icon:m},{id:"database",label:"Database",icon:n}];function bo({label:a,description:c,htmlFor:d,children:e}){return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b py-2.5 last:border-b-0",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)(u.Label,{htmlFor:d,className:"cursor-pointer text-sm font-normal whitespace-nowrap",children:a}),c?(0,b.jsx)("p",{className:"text-muted-foreground text-[11px] leading-tight",children:c}):null]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:e})]})}function bp({label:a,description:c,id:d,testId:e,checked:f,onChange:g,disabled:h}){return(0,b.jsx)(bo,{label:a,description:c,htmlFor:d,children:(0,b.jsx)(x.Switch,{id:d,"data-testid":e,checked:f,onCheckedChange:g,disabled:h,className:(0,t.cn)("cursor-pointer",h&&"cursor-not-allowed opacity-50")})})}function bq({icon:a,title:c,description:d,badge:e,testId:f,children:g}){return(0,b.jsxs)("div",{className:"bg-background rounded-lg border","data-testid":f,children:[(0,b.jsxs)("div",{className:"bg-muted/30 border-b px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(a,{className:"text-muted-foreground h-3.5 w-3.5"}),(0,b.jsx)("h2",{className:"text-sm font-semibold",children:c}),e?(0,b.jsx)("span",{className:"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-[9px] font-medium tracking-wider uppercase",children:e}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground mt-0.5 text-[11px]",children:d})]}),(0,b.jsx)("div",{className:"px-4",children:g})]})}function br({id:a,testId:c,value:d,onChange:e,onBlur:f,placeholder:g,min:h=1,max:i,step:j=1,suffix:k}){let l=""===d?void 0:parseInt(d,10);return(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center overflow-hidden rounded-md border",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{e(String(Math.max(h,(l??parseInt(g,10))-j)))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-r transition-colors","aria-label":"Decrease",children:(0,b.jsx)(o.default,{className:"h-3 w-3"})}),(0,b.jsx)("input",{id:a,"data-testid":c,type:"text",inputMode:"numeric",pattern:"[0-9]*",value:d,placeholder:g,onChange:a=>{e(a.target.value.replace(/[^0-9]/g,""))},onBlur:f,className:"h-8 w-14 bg-transparent text-center text-xs outline-none"}),(0,b.jsx)("button",{type:"button",onClick:()=>{let a;a=l??parseInt(g,10),e(String(null!=i?Math.min(i,a+j):a+j))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-l transition-colors","aria-label":"Increase",children:(0,b.jsx)(p.Plus,{className:"h-3 w-3"})})]}),k?(0,b.jsx)("span",{className:"text-muted-foreground text-[11px]",children:k}):null]})}function bs({children:a}){return(0,b.jsx)("div",{className:"border-b pt-3 pb-1",children:(0,b.jsx)("span",{className:"text-muted-foreground text-[10px] font-semibold tracking-wider uppercase",children:a})})}function bt({children:a,links:c}){return(0,b.jsxs)("div",{className:"hidden pt-2 lg:block",children:[(0,b.jsx)("p",{className:"text-muted-foreground/70 text-[11px] leading-relaxed",children:a}),null!=c&&c.length>0?(0,b.jsx)("div",{className:"mt-2 flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-[10px] transition-colors",children:[(0,b.jsx)(q.ExternalLink,{className:"h-2.5 w-2.5"}),a.label]},a.href))}):null]})}function bu({settings:a,shepHome:e,dbFileSize:o}){let{showSaving:p,showSaved:q,save:u}=function(){let[a,b]=(0,c.useTransition)(),[d,e]=(0,c.useState)(!1),[f,g]=(0,c.useState)(!1),h=(0,c.useRef)(null),i=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{a&&!d&&(e(!0),i.current=!1,h.current=setTimeout(()=>{h.current=null,i.current&&(e(!1),g(!0),setTimeout(()=>g(!1),2e3))},350)),!a&&d&&(i.current=!0,h.current||(e(!1),g(!0),setTimeout(()=>g(!1),2e3)))},[a,d]),{showSaving:d,showSaved:f,save:(0,c.useCallback)(a=>{b(async()=>{let b=await a8(a);b.success||s.toast.error(b.error??"Failed to save settings")})},[b])}}(),x=a.featureFlags??{skills:!1,envDeploy:!1,debug:!1},[z,A]=(0,c.useState)(a.agent.type),B=a.agent.authMethod,[C,D]=(0,c.useState)(a.agent.token??""),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)(a.environment.defaultEditor),I=a.environment.shellPreference,[J,K]=(0,c.useState)(a.workflow.openPrOnImplementationComplete),[L,M]=(0,c.useState)(a.workflow.approvalGateDefaults.pushOnImplementationComplete),[N,O]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPrd),[P,Q]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPlan),[R,S]=(0,c.useState)(a.workflow.approvalGateDefaults.allowMerge),[T,U]=(0,c.useState)(a.workflow.enableEvidence),[V,W]=(0,c.useState)(a.workflow.commitEvidence),[X,Y]=(0,c.useState)(null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):""),[Z,$]=(0,c.useState)(null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):""),[_,aa]=(0,c.useState)(null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):""),[ab,ac]=(0,c.useState)(a.notifications.inApp.enabled),[ad,ae]=(0,c.useState)(a.notifications.browser.enabled),[af,ag]=(0,c.useState)(a.notifications.desktop.enabled),[ah,ai]=(0,c.useState)({...a.notifications.events}),[aj,ak]=(0,c.useState)({...x}),al=null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):"",am=null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):"",an=null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):"";function ao(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}function ap(a={}){let b=ao(a.ciTimeout??Z);return{workflow:{openPrOnImplementationComplete:a.openPr??J,approvalGateDefaults:{pushOnImplementationComplete:a.pushOnComplete??L,allowPrd:a.allowPrd??N,allowPlan:a.allowPlan??P,allowMerge:a.allowMerge??R},enableEvidence:a.enableEvidence??T,commitEvidence:a.commitEvidence??V,ciMaxFixAttempts:ao(a.ciMaxFix??X),ciWatchTimeoutMs:null!=b?1e3*b:void 0,ciLogMaxChars:ao(a.ciLogMax??_)}}}function aq(a={}){return{notifications:{inApp:{enabled:a.inApp??ab},browser:{enabled:a.browser??ad},desktop:{enabled:a.desktop??af},events:a.events??ah}}}let[ar,as]=(0,c.useState)("agent");(0,c.useEffect)(()=>{let a=bn.map(a=>document.getElementById(`section-${a.id}`)).filter(Boolean);if(0===a.length)return;let b=new IntersectionObserver(a=>{for(let b of a)b.isIntersecting&&as(b.target.id.replace("section-",""))},{rootMargin:"-65px 0px -60% 0px",threshold:0});for(let c of a)b.observe(c);return()=>b.disconnect()},[]);let at=(0,c.useCallback)(a=>{let b=document.getElementById(`section-${a}`);b&&(b.scrollIntoView({behavior:"smooth",block:"start"}),b.style.animation="none",b.offsetHeight,b.style.animation="section-flash 1s ease-out")},[]);return(0,b.jsxs)("div",{"data-testid":"settings-page-client",className:"max-w-5xl",children:[(0,b.jsx)("div",{className:"bg-background/95 supports-backdrop-filter:bg-background/80 sticky top-0 z-10 grid grid-cols-1 gap-x-5 pt-6 pb-4 backdrop-blur lg:grid-cols-[1fr_280px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(r,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Settings"}),(0,b.jsxs)("span",{className:"relative h-4 w-16",children:[(0,b.jsx)("span",{className:(0,t.cn)("text-muted-foreground absolute inset-0 flex items-center text-xs transition-opacity duration-300",p?"opacity-100":"opacity-0"),children:"Saving..."}),(0,b.jsxs)("span",{className:(0,t.cn)("absolute inset-0 flex items-center gap-1 text-xs text-green-600 transition-opacity duration-300",q&&!p?"opacity-100":"opacity-0"),children:[(0,b.jsx)(g.Check,{className:"h-3 w-3"}),"Saved"]})]}),(0,b.jsx)("nav",{className:"ml-auto flex items-center gap-0.5",children:bn.map(a=>{let c=a.icon,d=ar===a.id;return(0,b.jsxs)("button",{type:"button",onClick:()=>at(a.id),className:(0,t.cn)("flex cursor-pointer items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-all",d?"bg-accent text-foreground font-medium":"text-muted-foreground/60 hover:text-foreground hover:bg-accent/50"),children:[(0,b.jsx)(c,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:a.label})]},a.id)})})]})}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{id:"section-agent",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:h.Bot,title:"Agent",description:"AI coding agent and authentication",testId:"agent-settings-section",children:[(0,b.jsx)(bo,{label:"Agent & Model",description:"Provider and model for all operations",htmlFor:"agent-model-picker",children:(0,b.jsx)(bk.AgentModelPicker,{initialAgentType:z,initialModel:a.models.default,mode:"settings",onAgentModelChange:a=>A(a),className:"w-55"})}),(0,b.jsx)(bo,{label:"Authentication",description:"How the agent authenticates",htmlFor:"auth-method",children:(0,b.jsx)(y.TooltipProvider,{children:(0,b.jsxs)(y.Tooltip,{children:[(0,b.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsxs)(a0,{value:B,disabled:!0,children:[(0,b.jsx)(a2,{id:"auth-method","data-testid":"auth-method-select",className:"w-55 cursor-not-allowed text-xs opacity-60",children:(0,b.jsx)(a1,{})}),(0,b.jsx)(a5,{children:bl.map(a=>(0,b.jsx)(a6,{value:a.value,children:a.label},a.value))})]})})}),(0,b.jsx)(y.TooltipContent,{children:"Coming soon"})]})})}),B===a9.AgentAuthMethod.Token&&(0,b.jsx)(bo,{label:"API Token",htmlFor:"agent-token",children:(0,b.jsxs)("div",{className:"relative w-45",children:[(0,b.jsx)(v.Input,{id:"agent-token","data-testid":"agent-token-input",type:E?"text":"password",value:C,onChange:a=>D(a.target.value),onBlur:()=>{C!==(a.agent.token??"")&&u(function(a={}){let b={type:z,authMethod:B,...a},c={type:b.type,authMethod:b.authMethod};return b.authMethod===a9.AgentAuthMethod.Token&&(c.token=a.token??C),{agent:c}}({token:C}))},placeholder:"Enter token",className:"pr-8"}),(0,b.jsx)(w.Button,{type:"button",variant:"ghost",size:"sm",className:"absolute top-0 right-0 h-full px-2 hover:bg-transparent",onClick:()=>F(!E),"data-testid":"toggle-token-visibility","aria-label":E?"Hide token":"Show token",children:E?(0,b.jsx)(f,{className:"h-3 w-3"}):(0,b.jsx)(d.Eye,{className:"h-3 w-3"})})]})})]}),(0,b.jsx)(bt,{links:[{label:"Agent system",href:"https://github.com/shep-ai/cli/blob/main/docs/architecture/agent-system.md"},{label:"Adding agents",href:"https://github.com/shep-ai/cli/blob/main/docs/development/adding-agents.md"},{label:"Configuration guide",href:"https://github.com/shep-ai/cli/blob/main/docs/guides/configuration.md"}],children:"Choose which AI coding agent powers your features. Each agent supports different models and capabilities. Authentication is resolved automatically via your active session."})]}),(0,b.jsxs)("div",{id:"section-environment",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(bq,{icon:i.Terminal,title:"Environment",description:"Editor and shell preferences",testId:"environment-settings-section",children:(0,b.jsx)(bo,{label:"Default Editor",description:"Editor launched for file operations",htmlFor:"default-editor",children:(0,b.jsxs)(a0,{value:G,onValueChange:a=>{H(a),u({environment:{defaultEditor:a,shellPreference:I}})},children:[(0,b.jsx)(a2,{id:"default-editor","data-testid":"editor-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(a1,{})}),(0,b.jsx)(a5,{children:bm.map(a=>{var c;let d=(c=a.value)&&c in bj?bj[c]:bd;return(0,b.jsx)(a6,{value:a.value,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(d,{className:"h-4 w-4 shrink-0"}),a.label]})},a.value)})})]})})}),(0,b.jsx)(bt,{links:[{label:"Configuration guide",href:"https://github.com/shep-ai/cli/blob/main/docs/guides/configuration.md"}],children:"Your preferred editor is used when opening files for review or editing during the development workflow."})]}),(0,b.jsxs)("div",{id:"section-workflow",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:j.GitBranch,title:"Workflow",description:"Automation behavior after implementation",testId:"workflow-settings-section",children:[(0,b.jsx)(bs,{children:"Approve"}),(0,b.jsx)(bp,{label:"Auto-approve PRD",description:"Skip manual review of requirements",id:"allow-prd",testId:"switch-allow-prd",checked:N,onChange:a=>{O(a),u(ap({allowPrd:a}))}}),(0,b.jsx)(bp,{label:"Auto-approve Plan",description:"Skip manual review of implementation plan",id:"allow-plan",testId:"switch-allow-plan",checked:P,onChange:a=>{Q(a),u(ap({allowPlan:a}))}}),(0,b.jsx)(bp,{label:"Auto-approve Merge",description:"Merge without manual review",id:"allow-merge",testId:"switch-allow-merge",checked:R,onChange:a=>{S(a),u(ap({allowMerge:a}))}}),(0,b.jsx)(bs,{children:"Evidence"}),(0,b.jsx)(bp,{label:"Collect evidence",description:"Capture screenshots and artifacts after implementation",id:"enable-evidence",testId:"switch-enable-evidence",checked:T,onChange:a=>{U(a),a?u(ap({enableEvidence:a})):(W(!1),u(ap({enableEvidence:a,commitEvidence:!1})))}}),(0,b.jsx)(bp,{label:"Add evidence to PR",description:"Include evidence in the pull request body",id:"commit-evidence",testId:"switch-commit-evidence",checked:V,disabled:!T||!J,onChange:a=>{W(a),u(ap({commitEvidence:a}))}}),(0,b.jsx)(bs,{children:"Git"}),(0,b.jsx)(bp,{label:"Push on complete",description:"Push to remote when implementation finishes",id:"push-on-complete",testId:"switch-push-on-complete",checked:L,onChange:a=>{M(a),u(ap({pushOnComplete:a}))}}),(0,b.jsx)(bp,{label:"Open PR on complete",description:"Create a pull request when done",id:"open-pr",testId:"switch-open-pr",checked:J,onChange:a=>{K(a),a?u(ap({openPr:a})):(W(!1),u(ap({openPr:a,commitEvidence:!1})))}})]}),(0,b.jsx)(bt,{links:[{label:"Approval gates",href:"https://github.com/shep-ai/cli/blob/main/specs/016-hitl-approval-gates/spec.yaml"},{label:"Push & PR flags",href:"https://github.com/shep-ai/cli/blob/main/specs/037-feature-pr-push-flags/spec.yaml"}],children:"Control how autonomous each feature run is. Auto-approve skips the human review pause at each phase. Push and PR options control what happens after successful implementation."})]}),(0,b.jsxs)("div",{id:"section-ci",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:k,title:"Continuous Integration",description:"Limits and timeouts for CI monitoring",testId:"ci-settings-section",children:[(0,b.jsx)(bo,{label:"Max fix attempts",description:"Agent retries on failing CI",htmlFor:"ci-max-fix",children:(0,b.jsx)(br,{id:"ci-max-fix",testId:"ci-max-fix-input",placeholder:"3",value:X,onChange:Y,onBlur:()=>{X!==al&&u(ap({ciMaxFix:X}))},min:1,max:10})}),(0,b.jsx)(bo,{label:"Watch timeout",description:"Max wait for CI completion",htmlFor:"ci-timeout",children:(0,b.jsx)(br,{id:"ci-timeout",testId:"ci-timeout-input",placeholder:"300",value:Z,onChange:$,onBlur:()=>{Z!==am&&u(ap({ciTimeout:Z}))},min:30,step:30,suffix:"sec"})}),(0,b.jsx)(bo,{label:"Max log size",description:"Truncate CI logs beyond this limit",htmlFor:"ci-log-max",children:(0,b.jsx)(br,{id:"ci-log-max",testId:"ci-log-max-input",placeholder:"50000",value:_,onChange:aa,onBlur:()=>{_!==an&&u(ap({ciLogMax:_}))},min:1e3,step:5e3,suffix:"chars"})})]}),(0,b.jsx)(bt,{links:[{label:"CI/CD pipeline",href:"https://github.com/shep-ai/cli/blob/main/docs/development/cicd.md"},{label:"CI security gates",href:"https://github.com/shep-ai/cli/blob/main/specs/003-cicd-security-gates/spec.md"}],children:"When a feature completes, the agent can watch CI and auto-fix failures. These limits prevent runaway retries and control how much log output is sent to the agent for analysis."})]}),(0,b.jsxs)("div",{id:"section-notifications",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:l,title:"Notifications",description:"How and when you get notified",testId:"notification-settings-section",children:[(0,b.jsx)(bs,{children:"Channels"}),(0,b.jsx)(bp,{label:"In-app",description:"Notifications inside the Shep UI",id:"notif-in-app",testId:"switch-in-app",checked:ab,onChange:a=>{ac(a),u(aq({inApp:a}))}}),(0,b.jsx)(bp,{label:"Browser",description:"Push notifications via the browser",id:"notif-browser",testId:"switch-browser",checked:ad,onChange:a=>{ae(a),u(aq({browser:a}))}}),(0,b.jsx)(bp,{label:"Desktop",description:"Native OS notifications",id:"notif-desktop",testId:"switch-desktop",checked:af,onChange:a=>{ag(a),u(aq({desktop:a}))}}),(0,b.jsx)(bs,{children:"Agent Events"}),(0,b.jsx)(bp,{label:"Agent started",id:"notif-event-agentStarted",testId:"switch-event-agentStarted",checked:ah.agentStarted,onChange:a=>{let b={...ah,agentStarted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Phase completed",id:"notif-event-phaseCompleted",testId:"switch-event-phaseCompleted",checked:ah.phaseCompleted,onChange:a=>{let b={...ah,phaseCompleted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Waiting approval",id:"notif-event-waitingApproval",testId:"switch-event-waitingApproval",checked:ah.waitingApproval,onChange:a=>{let b={...ah,waitingApproval:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Agent completed",id:"notif-event-agentCompleted",testId:"switch-event-agentCompleted",checked:ah.agentCompleted,onChange:a=>{let b={...ah,agentCompleted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Agent failed",id:"notif-event-agentFailed",testId:"switch-event-agentFailed",checked:ah.agentFailed,onChange:a=>{let b={...ah,agentFailed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bs,{children:"Pull Request Events"}),(0,b.jsx)(bp,{label:"PR merged",id:"notif-event-prMerged",testId:"switch-event-prMerged",checked:ah.prMerged,onChange:a=>{let b={...ah,prMerged:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR closed",id:"notif-event-prClosed",testId:"switch-event-prClosed",checked:ah.prClosed,onChange:a=>{let b={...ah,prClosed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR checks passed",id:"notif-event-prChecksPassed",testId:"switch-event-prChecksPassed",checked:ah.prChecksPassed,onChange:a=>{let b={...ah,prChecksPassed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR checks failed",id:"notif-event-prChecksFailed",testId:"switch-event-prChecksFailed",checked:ah.prChecksFailed,onChange:a=>{let b={...ah,prChecksFailed:a};ai(b),u(aq({events:b}))}})]}),(0,b.jsx)(bt,{links:[{label:"Notification system",href:"https://github.com/shep-ai/cli/blob/main/specs/021-agent-notifications/spec.yaml"}],children:"Three notification channels keep you in the loop: in-app toasts, browser push notifications, and native desktop alerts. Fine-tune which agent lifecycle events trigger a notification."})]}),(0,b.jsxs)("div",{id:"section-feature-flags",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:m,title:"Feature Flags",description:"Enable or disable experimental features",badge:"Experimental",testId:"feature-flags-settings-section",children:[(0,b.jsx)(bp,{label:"Skills",description:"Enable the skills system for agent capabilities",id:"flag-skills",testId:"switch-flag-skills",checked:aj.skills,onChange:a=>{let b={...aj,skills:a};ak(b),u({featureFlags:b})}}),(0,b.jsx)(bp,{label:"Deployments",description:"Enable environment deployment workflows",id:"flag-envDeploy",testId:"switch-flag-envDeploy",checked:aj.envDeploy,onChange:a=>{let b={...aj,envDeploy:a};ak(b),u({featureFlags:b})}}),(0,b.jsx)(bp,{label:"Debug",description:"Show debug panels and verbose logging",id:"flag-debug",testId:"switch-flag-debug",checked:aj.debug,onChange:a=>{let b={...aj,debug:a};ak(b),u({featureFlags:b})}})]}),(0,b.jsx)(bt,{children:"Experimental features that are still under development. Enable at your own risk — they may change or be removed in future versions. Debug mode adds verbose logging useful for troubleshooting."})]}),(0,b.jsxs)("div",{id:"section-database",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:n,title:"Database",description:"Local storage information",testId:"database-settings-section",children:[(0,b.jsx)(bo,{label:"Location",description:"Path to the local SQLite database",children:(0,b.jsx)("span",{className:"text-muted-foreground max-w-50 truncate font-mono text-xs","data-testid":"shep-home-path",children:e})}),(0,b.jsx)(bo,{label:"Size",children:(0,b.jsx)("span",{className:"text-muted-foreground text-xs","data-testid":"db-file-size",children:o})})]}),(0,b.jsx)(bt,{links:[{label:"Settings service",href:"https://github.com/shep-ai/cli/blob/main/docs/architecture/settings-service.md"},{label:"Settings spec",href:"https://github.com/shep-ai/cli/blob/main/specs/005-global-settings-service/spec.md"}],children:"All settings are stored in a local SQLite database at ~/.shep/data. The database uses a singleton record pattern with automatic migrations on startup."})]})]})]})}a.s(["SettingsPageClient",()=>bu],79020)}];
|
|
1
|
+
module.exports=[79020,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(83886),e=a.i(25700);let f=(0,e.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var g=a.i(72016),h=a.i(34644),i=a.i(63698),j=a.i(53170);let k=(0,e.default)("activity",[["path",{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",key:"169zse"}]]),l=(0,e.default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]),m=(0,e.default)("flag",[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",key:"1jaruq"}]]),n=(0,e.default)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var o=a.i(96853),o=o,p=a.i(67837),q=a.i(71238);let r=(0,e.default)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);var s=a.i(52313),t=a.i(85536),u=a.i(58860),v=a.i(90920),w=a.i(18948),x=a.i(96867),y=a.i(82934),z=a.i(55690),A=a.i(48972),B=a.i(59653),C=a.i(63496),D=a.i(6175),E=a.i(7420),F=a.i(48939),G=a.i(58761),H=a.i(51473),I=a.i(59675),J=a.i(5472),K=a.i(75988),L=a.i(80930),M=a.i(66873),N=a.i(90986),O=a.i(79406),P=a.i(17329),Q=a.i(61476),R=a.i(64005),S=a.i(50049),T=a.i(16164),U=a.i(45291),V=[" ","Enter","ArrowUp","ArrowDown"],W=[" ","Enter"],X="Select",[Y,Z,$]=(0,C.createCollection)(X),[_,aa]=(0,E.createContextScope)(X,[$,K.createPopperScope]),ab=(0,K.createPopperScope)(),[ac,ad]=_(X),[ae,af]=_(X),ag=a=>{let{__scopeSelect:d,children:e,open:f,defaultOpen:g,onOpenChange:h,value:i,defaultValue:j,onValueChange:k,dir:l,name:m,autoComplete:n,disabled:o,required:p,form:q}=a,r=ab(d),[s,t]=c.useState(null),[u,v]=c.useState(null),[w,x]=c.useState(!1),y=(0,F.useDirection)(l),[z,A]=(0,P.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:X}),[B,C]=(0,P.useControllableState)({prop:i,defaultProp:j,onChange:k,caller:X}),D=c.useRef(null),E=!s||q||!!s.closest("form"),[G,H]=c.useState(new Set),I=Array.from(G).map(a=>a.props.value).join(";");return(0,b.jsx)(K.Root,{...r,children:(0,b.jsxs)(ac,{required:p,scope:d,trigger:s,onTriggerChange:t,valueNode:u,onValueNodeChange:v,valueNodeHasChildren:w,onValueNodeHasChildrenChange:x,contentId:(0,J.useId)(),value:B,onValueChange:C,open:z,onOpenChange:A,dir:y,triggerPointerDownPosRef:D,disabled:o,children:[(0,b.jsx)(Y.Provider,{scope:d,children:(0,b.jsx)(ae,{scope:a.__scopeSelect,onNativeOptionAdd:c.useCallback(a=>{H(b=>new Set(b).add(a))},[]),onNativeOptionRemove:c.useCallback(a=>{H(b=>{let c=new Set(b);return c.delete(a),c})},[]),children:e})}),E?(0,b.jsxs)(aV,{"aria-hidden":!0,required:p,tabIndex:-1,name:m,autoComplete:n,value:B,onChange:a=>C(a.target.value),disabled:o,form:q,children:[void 0===B?(0,b.jsx)("option",{value:""}):null,Array.from(G)]},I):null]})})};ag.displayName=X;var ah="SelectTrigger",ai=c.forwardRef((a,d)=>{let{__scopeSelect:e,disabled:f=!1,...g}=a,h=ab(e),i=ad(ah,e),j=i.disabled||f,k=(0,D.useComposedRefs)(d,i.onTriggerChange),l=Z(e),m=c.useRef("touch"),[n,o,p]=aX(a=>{let b=l().filter(a=>!a.disabled),c=b.find(a=>a.value===i.value),d=aY(b,a,c);void 0!==d&&i.onValueChange(d.value)}),q=a=>{j||(i.onOpenChange(!0),p()),a&&(i.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return(0,b.jsx)(K.Anchor,{asChild:!0,...h,children:(0,b.jsx)(M.Primitive.button,{type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:j,"data-disabled":j?"":void 0,"data-placeholder":aW(i.value)?"":void 0,...g,ref:k,onClick:(0,B.composeEventHandlers)(g.onClick,a=>{a.currentTarget.focus(),"mouse"!==m.current&&q(a)}),onPointerDown:(0,B.composeEventHandlers)(g.onPointerDown,a=>{m.current=a.pointerType;let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),0===a.button&&!1===a.ctrlKey&&"mouse"===a.pointerType&&(q(a),a.preventDefault())}),onKeyDown:(0,B.composeEventHandlers)(g.onKeyDown,a=>{let b=""!==n.current;a.ctrlKey||a.altKey||a.metaKey||1!==a.key.length||o(a.key),(!b||" "!==a.key)&&V.includes(a.key)&&(q(),a.preventDefault())})})})});ai.displayName=ah;var aj="SelectValue",ak=c.forwardRef((a,c)=>{let{__scopeSelect:d,className:e,style:f,children:g,placeholder:h="",...i}=a,j=ad(aj,d),{onValueNodeHasChildrenChange:k}=j,l=void 0!==g,m=(0,D.useComposedRefs)(c,j.onValueNodeChange);return(0,Q.useLayoutEffect)(()=>{k(l)},[k,l]),(0,b.jsx)(M.Primitive.span,{...i,ref:m,style:{pointerEvents:"none"},children:aW(j.value)?(0,b.jsx)(b.Fragment,{children:h}):g})});ak.displayName=aj;var al=c.forwardRef((a,c)=>{let{__scopeSelect:d,children:e,...f}=a;return(0,b.jsx)(M.Primitive.span,{"aria-hidden":!0,...f,ref:c,children:e||"▼"})});al.displayName="SelectIcon";var am=a=>(0,b.jsx)(L.Portal,{asChild:!0,...a});am.displayName="SelectPortal";var an="SelectContent",ao=c.forwardRef((a,d)=>{let e=ad(an,a.__scopeSelect),[f,g]=c.useState();return((0,Q.useLayoutEffect)(()=>{g(new DocumentFragment)},[]),e.open)?(0,b.jsx)(as,{...a,ref:d}):f?z.createPortal((0,b.jsx)(ap,{scope:a.__scopeSelect,children:(0,b.jsx)(Y.Slot,{scope:a.__scopeSelect,children:(0,b.jsx)("div",{children:a.children})})}),f):null});ao.displayName=an;var[ap,aq]=_(an),ar=(0,N.createSlot)("SelectContent.RemoveScroll"),as=c.forwardRef((a,d)=>{let{__scopeSelect:e,position:f="item-aligned",onCloseAutoFocus:g,onEscapeKeyDown:h,onPointerDownOutside:i,side:j,sideOffset:k,align:l,alignOffset:m,arrowPadding:n,collisionBoundary:o,collisionPadding:p,sticky:q,hideWhenDetached:r,avoidCollisions:s,...t}=a,u=ad(an,e),[v,w]=c.useState(null),[x,y]=c.useState(null),z=(0,D.useComposedRefs)(d,a=>w(a)),[A,C]=c.useState(null),[E,F]=c.useState(null),J=Z(e),[K,L]=c.useState(!1),M=c.useRef(!1);c.useEffect(()=>{if(v)return(0,T.hideOthers)(v)},[v]),(0,H.useFocusGuards)();let N=c.useCallback(a=>{let[b,...c]=J().map(a=>a.ref.current),[d]=c.slice(-1),e=document.activeElement;for(let c of a)if(c===e||(c?.scrollIntoView({block:"nearest"}),c===b&&x&&(x.scrollTop=0),c===d&&x&&(x.scrollTop=x.scrollHeight),c?.focus(),document.activeElement!==e))return},[J,x]),O=c.useCallback(()=>N([A,v]),[N,A,v]);c.useEffect(()=>{K&&O()},[K,O]);let{onOpenChange:P,triggerPointerDownPosRef:Q}=u;c.useEffect(()=>{if(v){let a={x:0,y:0},b=b=>{a={x:Math.abs(Math.round(b.pageX)-(Q.current?.x??0)),y:Math.abs(Math.round(b.pageY)-(Q.current?.y??0))}},c=c=>{a.x<=10&&a.y<=10?c.preventDefault():v.contains(c.target)||P(!1),document.removeEventListener("pointermove",b),Q.current=null};return null!==Q.current&&(document.addEventListener("pointermove",b),document.addEventListener("pointerup",c,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",b),document.removeEventListener("pointerup",c,{capture:!0})}}},[v,P,Q]),c.useEffect(()=>{let a=()=>P(!1);return window.addEventListener("blur",a),window.addEventListener("resize",a),()=>{window.removeEventListener("blur",a),window.removeEventListener("resize",a)}},[P]);let[R,S]=aX(a=>{let b=J().filter(a=>!a.disabled),c=b.find(a=>a.ref.current===document.activeElement),d=aY(b,a,c);d&&setTimeout(()=>d.ref.current.focus())}),V=c.useCallback((a,b,c)=>{let d=!M.current&&!c;(void 0!==u.value&&u.value===b||d)&&(C(a),d&&(M.current=!0))},[u.value]),W=c.useCallback(()=>v?.focus(),[v]),X=c.useCallback((a,b,c)=>{let d=!M.current&&!c;(void 0!==u.value&&u.value===b||d)&&F(a)},[u.value]),Y="popper"===f?au:at,$=Y===au?{side:j,sideOffset:k,align:l,alignOffset:m,arrowPadding:n,collisionBoundary:o,collisionPadding:p,sticky:q,hideWhenDetached:r,avoidCollisions:s}:{};return(0,b.jsx)(ap,{scope:e,content:v,viewport:x,onViewportChange:y,itemRefCallback:V,selectedItem:A,onItemLeave:W,itemTextRefCallback:X,focusSelectedItem:O,selectedItemText:E,position:f,isPositioned:K,searchRef:R,children:(0,b.jsx)(U.RemoveScroll,{as:ar,allowPinchZoom:!0,children:(0,b.jsx)(I.FocusScope,{asChild:!0,trapped:u.open,onMountAutoFocus:a=>{a.preventDefault()},onUnmountAutoFocus:(0,B.composeEventHandlers)(g,a=>{u.trigger?.focus({preventScroll:!0}),a.preventDefault()}),children:(0,b.jsx)(G.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:h,onPointerDownOutside:i,onFocusOutside:a=>a.preventDefault(),onDismiss:()=>u.onOpenChange(!1),children:(0,b.jsx)(Y,{role:"listbox",id:u.contentId,"data-state":u.open?"open":"closed",dir:u.dir,onContextMenu:a=>a.preventDefault(),...t,...$,onPlaced:()=>L(!0),ref:z,style:{display:"flex",flexDirection:"column",outline:"none",...t.style},onKeyDown:(0,B.composeEventHandlers)(t.onKeyDown,a=>{let b=a.ctrlKey||a.altKey||a.metaKey;if("Tab"===a.key&&a.preventDefault(),b||1!==a.key.length||S(a.key),["ArrowUp","ArrowDown","Home","End"].includes(a.key)){let b=J().filter(a=>!a.disabled).map(a=>a.ref.current);if(["ArrowUp","End"].includes(a.key)&&(b=b.slice().reverse()),["ArrowUp","ArrowDown"].includes(a.key)){let c=a.target,d=b.indexOf(c);b=b.slice(d+1)}setTimeout(()=>N(b)),a.preventDefault()}})})})})})})});as.displayName="SelectContentImpl";var at=c.forwardRef((a,d)=>{let{__scopeSelect:e,onPlaced:f,...g}=a,h=ad(an,e),i=aq(an,e),[j,k]=c.useState(null),[l,m]=c.useState(null),n=(0,D.useComposedRefs)(d,a=>m(a)),o=Z(e),p=c.useRef(!1),q=c.useRef(!0),{viewport:r,selectedItem:s,selectedItemText:t,focusSelectedItem:u}=i,v=c.useCallback(()=>{if(h.trigger&&h.valueNode&&j&&l&&r&&s&&t){let a=h.trigger.getBoundingClientRect(),b=l.getBoundingClientRect(),c=h.valueNode.getBoundingClientRect(),d=t.getBoundingClientRect();if("rtl"!==h.dir){let e=d.left-b.left,f=c.left-e,g=a.left-f,h=a.width+g,i=Math.max(h,b.width),k=window.innerWidth-10,l=(0,A.clamp)(f,[10,Math.max(10,k-i)]);j.style.minWidth=h+"px",j.style.left=l+"px"}else{let e=b.right-d.right,f=window.innerWidth-c.right-e,g=window.innerWidth-a.right-f,h=a.width+g,i=Math.max(h,b.width),k=window.innerWidth-10,l=(0,A.clamp)(f,[10,Math.max(10,k-i)]);j.style.minWidth=h+"px",j.style.right=l+"px"}let e=o(),g=window.innerHeight-20,i=r.scrollHeight,k=window.getComputedStyle(l),m=parseInt(k.borderTopWidth,10),n=parseInt(k.paddingTop,10),q=parseInt(k.borderBottomWidth,10),u=m+n+i+parseInt(k.paddingBottom,10)+q,v=Math.min(5*s.offsetHeight,u),w=window.getComputedStyle(r),x=parseInt(w.paddingTop,10),y=parseInt(w.paddingBottom,10),z=a.top+a.height/2-10,B=s.offsetHeight/2,C=m+n+(s.offsetTop+B);if(C<=z){let a=e.length>0&&s===e[e.length-1].ref.current;j.style.bottom="0px";let b=Math.max(g-z,B+(a?y:0)+(l.clientHeight-r.offsetTop-r.offsetHeight)+q);j.style.height=C+b+"px"}else{let a=e.length>0&&s===e[0].ref.current;j.style.top="0px";let b=Math.max(z,m+r.offsetTop+(a?x:0)+B);j.style.height=b+(u-C)+"px",r.scrollTop=C-z+r.offsetTop}j.style.margin="10px 0",j.style.minHeight=v+"px",j.style.maxHeight=g+"px",f?.(),requestAnimationFrame(()=>p.current=!0)}},[o,h.trigger,h.valueNode,j,l,r,s,t,h.dir,f]);(0,Q.useLayoutEffect)(()=>v(),[v]);let[w,x]=c.useState();(0,Q.useLayoutEffect)(()=>{l&&x(window.getComputedStyle(l).zIndex)},[l]);let y=c.useCallback(a=>{a&&!0===q.current&&(v(),u?.(),q.current=!1)},[v,u]);return(0,b.jsx)(av,{scope:e,contentWrapper:j,shouldExpandOnScrollRef:p,onScrollButtonChange:y,children:(0,b.jsx)("div",{ref:k,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:w},children:(0,b.jsx)(M.Primitive.div,{...g,ref:n,style:{boxSizing:"border-box",maxHeight:"100%",...g.style}})})})});at.displayName="SelectItemAlignedPosition";var au=c.forwardRef((a,c)=>{let{__scopeSelect:d,align:e="start",collisionPadding:f=10,...g}=a,h=ab(d);return(0,b.jsx)(K.Content,{...h,...g,ref:c,align:e,collisionPadding:f,style:{boxSizing:"border-box",...g.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});au.displayName="SelectPopperPosition";var[av,aw]=_(an,{}),ax="SelectViewport",ay=c.forwardRef((a,d)=>{let{__scopeSelect:e,nonce:f,...g}=a,h=aq(ax,e),i=aw(ax,e),j=(0,D.useComposedRefs)(d,h.onViewportChange),k=c.useRef(0);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:f}),(0,b.jsx)(Y.Slot,{scope:e,children:(0,b.jsx)(M.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...g,ref:j,style:{position:"relative",flex:1,overflow:"hidden auto",...g.style},onScroll:(0,B.composeEventHandlers)(g.onScroll,a=>{let b=a.currentTarget,{contentWrapper:c,shouldExpandOnScrollRef:d}=i;if(d?.current&&c){let a=Math.abs(k.current-b.scrollTop);if(a>0){let d=window.innerHeight-20,e=Math.max(parseFloat(c.style.minHeight),parseFloat(c.style.height));if(e<d){let f=e+a,g=Math.min(d,f),h=f-g;c.style.height=g+"px","0px"===c.style.bottom&&(b.scrollTop=h>0?h:0,c.style.justifyContent="flex-end")}}}k.current=b.scrollTop})})})]})});ay.displayName=ax;var az="SelectGroup",[aA,aB]=_(az),aC=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=(0,J.useId)();return(0,b.jsx)(aA,{scope:d,id:f,children:(0,b.jsx)(M.Primitive.div,{role:"group","aria-labelledby":f,...e,ref:c})})});aC.displayName=az;var aD="SelectLabel",aE=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=aB(aD,d);return(0,b.jsx)(M.Primitive.div,{id:f.id,...e,ref:c})});aE.displayName=aD;var aF="SelectItem",[aG,aH]=_(aF),aI=c.forwardRef((a,d)=>{let{__scopeSelect:e,value:f,disabled:g=!1,textValue:h,...i}=a,j=ad(aF,e),k=aq(aF,e),l=j.value===f,[m,n]=c.useState(h??""),[o,p]=c.useState(!1),q=(0,D.useComposedRefs)(d,a=>k.itemRefCallback?.(a,f,g)),r=(0,J.useId)(),s=c.useRef("touch"),t=()=>{g||(j.onValueChange(f),j.onOpenChange(!1))};if(""===f)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,b.jsx)(aG,{scope:e,value:f,disabled:g,textId:r,isSelected:l,onItemTextChange:c.useCallback(a=>{n(b=>b||(a?.textContent??"").trim())},[]),children:(0,b.jsx)(Y.ItemSlot,{scope:e,value:f,disabled:g,textValue:m,children:(0,b.jsx)(M.Primitive.div,{role:"option","aria-labelledby":r,"data-highlighted":o?"":void 0,"aria-selected":l&&o,"data-state":l?"checked":"unchecked","aria-disabled":g||void 0,"data-disabled":g?"":void 0,tabIndex:g?void 0:-1,...i,ref:q,onFocus:(0,B.composeEventHandlers)(i.onFocus,()=>p(!0)),onBlur:(0,B.composeEventHandlers)(i.onBlur,()=>p(!1)),onClick:(0,B.composeEventHandlers)(i.onClick,()=>{"mouse"!==s.current&&t()}),onPointerUp:(0,B.composeEventHandlers)(i.onPointerUp,()=>{"mouse"===s.current&&t()}),onPointerDown:(0,B.composeEventHandlers)(i.onPointerDown,a=>{s.current=a.pointerType}),onPointerMove:(0,B.composeEventHandlers)(i.onPointerMove,a=>{s.current=a.pointerType,g?k.onItemLeave?.():"mouse"===s.current&&a.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,B.composeEventHandlers)(i.onPointerLeave,a=>{a.currentTarget===document.activeElement&&k.onItemLeave?.()}),onKeyDown:(0,B.composeEventHandlers)(i.onKeyDown,a=>{(k.searchRef?.current===""||" "!==a.key)&&(W.includes(a.key)&&t()," "===a.key&&a.preventDefault())})})})})});aI.displayName=aF;var aJ="SelectItemText",aK=c.forwardRef((a,d)=>{let{__scopeSelect:e,className:f,style:g,...h}=a,i=ad(aJ,e),j=aq(aJ,e),k=aH(aJ,e),l=af(aJ,e),[m,n]=c.useState(null),o=(0,D.useComposedRefs)(d,a=>n(a),k.onItemTextChange,a=>j.itemTextRefCallback?.(a,k.value,k.disabled)),p=m?.textContent,q=c.useMemo(()=>(0,b.jsx)("option",{value:k.value,disabled:k.disabled,children:p},k.value),[k.disabled,k.value,p]),{onNativeOptionAdd:r,onNativeOptionRemove:s}=l;return(0,Q.useLayoutEffect)(()=>(r(q),()=>s(q)),[r,s,q]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(M.Primitive.span,{id:k.textId,...h,ref:o}),k.isSelected&&i.valueNode&&!i.valueNodeHasChildren?z.createPortal(h.children,i.valueNode):null]})});aK.displayName=aJ;var aL="SelectItemIndicator",aM=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a;return aH(aL,d).isSelected?(0,b.jsx)(M.Primitive.span,{"aria-hidden":!0,...e,ref:c}):null});aM.displayName=aL;var aN="SelectScrollUpButton",aO=c.forwardRef((a,d)=>{let e=aq(aN,a.__scopeSelect),f=aw(aN,a.__scopeSelect),[g,h]=c.useState(!1),i=(0,D.useComposedRefs)(d,f.onScrollButtonChange);return(0,Q.useLayoutEffect)(()=>{if(e.viewport&&e.isPositioned){let a=function(){h(b.scrollTop>0)},b=e.viewport;return a(),b.addEventListener("scroll",a),()=>b.removeEventListener("scroll",a)}},[e.viewport,e.isPositioned]),g?(0,b.jsx)(aR,{...a,ref:i,onAutoScroll:()=>{let{viewport:a,selectedItem:b}=e;a&&b&&(a.scrollTop=a.scrollTop-b.offsetHeight)}}):null});aO.displayName=aN;var aP="SelectScrollDownButton",aQ=c.forwardRef((a,d)=>{let e=aq(aP,a.__scopeSelect),f=aw(aP,a.__scopeSelect),[g,h]=c.useState(!1),i=(0,D.useComposedRefs)(d,f.onScrollButtonChange);return(0,Q.useLayoutEffect)(()=>{if(e.viewport&&e.isPositioned){let a=function(){let a=b.scrollHeight-b.clientHeight;h(Math.ceil(b.scrollTop)<a)},b=e.viewport;return a(),b.addEventListener("scroll",a),()=>b.removeEventListener("scroll",a)}},[e.viewport,e.isPositioned]),g?(0,b.jsx)(aR,{...a,ref:i,onAutoScroll:()=>{let{viewport:a,selectedItem:b}=e;a&&b&&(a.scrollTop=a.scrollTop+b.offsetHeight)}}):null});aQ.displayName=aP;var aR=c.forwardRef((a,d)=>{let{__scopeSelect:e,onAutoScroll:f,...g}=a,h=aq("SelectScrollButton",e),i=c.useRef(null),j=Z(e),k=c.useCallback(()=>{null!==i.current&&(window.clearInterval(i.current),i.current=null)},[]);return c.useEffect(()=>()=>k(),[k]),(0,Q.useLayoutEffect)(()=>{let a=j().find(a=>a.ref.current===document.activeElement);a?.ref.current?.scrollIntoView({block:"nearest"})},[j]),(0,b.jsx)(M.Primitive.div,{"aria-hidden":!0,...g,ref:d,style:{flexShrink:0,...g.style},onPointerDown:(0,B.composeEventHandlers)(g.onPointerDown,()=>{null===i.current&&(i.current=window.setInterval(f,50))}),onPointerMove:(0,B.composeEventHandlers)(g.onPointerMove,()=>{h.onItemLeave?.(),null===i.current&&(i.current=window.setInterval(f,50))}),onPointerLeave:(0,B.composeEventHandlers)(g.onPointerLeave,()=>{k()})})}),aS=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a;return(0,b.jsx)(M.Primitive.div,{"aria-hidden":!0,...e,ref:c})});aS.displayName="SelectSeparator";var aT="SelectArrow",aU=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=ab(d),g=ad(aT,d),h=aq(aT,d);return g.open&&"popper"===h.position?(0,b.jsx)(K.Arrow,{...f,...e,ref:c}):null});aU.displayName=aT;var aV=c.forwardRef(({__scopeSelect:a,value:d,...e},f)=>{let g=c.useRef(null),h=(0,D.useComposedRefs)(f,g),i=(0,R.usePrevious)(d);return c.useEffect(()=>{let a=g.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(i!==d&&b){let c=new Event("change",{bubbles:!0});b.call(a,d),a.dispatchEvent(c)}},[i,d]),(0,b.jsx)(M.Primitive.select,{...e,style:{...S.VISUALLY_HIDDEN_STYLES,...e.style},ref:h,defaultValue:d})});function aW(a){return""===a||void 0===a}function aX(a){let b=(0,O.useCallbackRef)(a),d=c.useRef(""),e=c.useRef(0),f=c.useCallback(a=>{let c=d.current+a;b(c),function a(b){d.current=b,window.clearTimeout(e.current),""!==b&&(e.current=window.setTimeout(()=>a(""),1e3))}(c)},[b]),g=c.useCallback(()=>{d.current="",window.clearTimeout(e.current)},[]);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),[d,f,g]}function aY(a,b,c){var d,e;let f=b.length>1&&Array.from(b).every(a=>a===b[0])?b[0]:b,g=c?a.indexOf(c):-1,h=(d=a,e=Math.max(g,0),d.map((a,b)=>d[(e+b)%d.length]));1===f.length&&(h=h.filter(a=>a!==c));let i=h.find(a=>a.textValue.toLowerCase().startsWith(f.toLowerCase()));return i!==c?i:void 0}aV.displayName="SelectBubbleInput",a.s(["Arrow",()=>aU,"Content",()=>ao,"Group",()=>aC,"Icon",()=>al,"Item",()=>aI,"ItemIndicator",()=>aM,"ItemText",()=>aK,"Label",()=>aE,"Portal",()=>am,"Root",()=>ag,"ScrollDownButton",()=>aQ,"ScrollUpButton",()=>aO,"Select",()=>ag,"SelectArrow",()=>aU,"SelectContent",()=>ao,"SelectGroup",()=>aC,"SelectIcon",()=>al,"SelectItem",()=>aI,"SelectItemIndicator",()=>aM,"SelectItemText",()=>aK,"SelectLabel",()=>aE,"SelectPortal",()=>am,"SelectScrollDownButton",()=>aQ,"SelectScrollUpButton",()=>aO,"SelectSeparator",()=>aS,"SelectTrigger",()=>ai,"SelectValue",()=>ak,"SelectViewport",()=>ay,"Separator",()=>aS,"Trigger",()=>ai,"Value",()=>ak,"Viewport",()=>ay,"createSelectScope",()=>aa],16252);var aZ=a.i(16252),aZ=aZ,a$=a.i(71716);let a_=(0,e.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),a0=aZ.Root;aZ.Group;let a1=aZ.Value,a2=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(aZ.Trigger,{ref:e,className:(0,t.cn)("border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-sm focus:ring-1 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...d,children:[c,(0,b.jsx)(aZ.Icon,{asChild:!0,children:(0,b.jsx)(a$.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));a2.displayName=aZ.Trigger.displayName;let a3=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.ScrollUpButton,{ref:d,className:(0,t.cn)("flex cursor-default items-center justify-center py-1",a),...c,children:(0,b.jsx)(a_,{className:"h-4 w-4"})}));a3.displayName=aZ.ScrollUpButton.displayName;let a4=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.ScrollDownButton,{ref:d,className:(0,t.cn)("flex cursor-default items-center justify-center py-1",a),...c,children:(0,b.jsx)(a$.ChevronDown,{className:"h-4 w-4"})}));a4.displayName=aZ.ScrollDownButton.displayName;let a5=c.forwardRef(({className:a,children:c,position:d="popper",...e},f)=>(0,b.jsx)(aZ.Portal,{children:(0,b.jsxs)(aZ.Content,{ref:f,className:(0,t.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md","popper"===d&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:d,...e,children:[(0,b.jsx)(a3,{}),(0,b.jsx)(aZ.Viewport,{className:(0,t.cn)("p-1","popper"===d&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:c}),(0,b.jsx)(a4,{})]})}));a5.displayName=aZ.Content.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.Label,{ref:d,className:(0,t.cn)("px-2 py-1.5 text-sm font-semibold",a),...c})).displayName=aZ.Label.displayName;let a6=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(aZ.Item,{ref:e,className:(0,t.cn)("focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...d,children:[(0,b.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,b.jsx)(aZ.ItemIndicator,{children:(0,b.jsx)(g.Check,{className:"h-4 w-4"})})}),(0,b.jsx)(aZ.ItemText,{children:c})]}));a6.displayName=aZ.Item.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.Separator,{ref:d,className:(0,t.cn)("bg-muted -mx-1 my-1 h-px",a),...c})).displayName=aZ.Separator.displayName;var a7=a.i(25674);let a8=(0,a7.createServerReference)("40a067d920de6b7b939f07813c275f152ec2c1fda9",a7.callServer,void 0,a7.findSourceMapURL,"updateSettingsAction");var a9=a.i(46847),ba=a.i(61640),bb=a.i(44447),bc=a.i(87926);function bd(a){return(0,b.jsx)(bb.Code,{className:(0,t.cn)("h-4 w-4",a.className),...a})}function be({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/vscode.svg",alt:"VS Code",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bf({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/agents/cursor.jpeg",alt:"Cursor",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bg({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/windsurf.svg",alt:"Windsurf",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bh({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/zed.svg",alt:"Zed",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bi({className:a,...c}){return(0,b.jsx)(bc.Rocket,{className:(0,t.cn)("h-4 w-4",a),...c})}be.displayName="VsCodeIcon",bf.displayName="CursorEditorIcon",bg.displayName="WindsurfIcon",bh.displayName="ZedIcon",bi.displayName="AntigravityIcon";let bj={vscode:be,cursor:bf,windsurf:bg,zed:bh,antigravity:bi};var bk=a.i(61781);let bl=[{value:a9.AgentAuthMethod.Session,label:"Session"},{value:a9.AgentAuthMethod.Token,label:"Token"}],bm=[{value:a9.EditorType.VsCode,label:"VS Code"},{value:a9.EditorType.Cursor,label:"Cursor"},{value:a9.EditorType.Windsurf,label:"Windsurf"},{value:a9.EditorType.Zed,label:"Zed"},{value:a9.EditorType.Antigravity,label:"Antigravity"}],bn=[{id:"agent",label:"Agent",icon:h.Bot},{id:"environment",label:"Environment",icon:i.Terminal},{id:"workflow",label:"Workflow",icon:j.GitBranch},{id:"ci",label:"CI",icon:k},{id:"notifications",label:"Notifications",icon:l},{id:"feature-flags",label:"Flags",icon:m},{id:"database",label:"Database",icon:n}];function bo({label:a,description:c,htmlFor:d,children:e}){return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b py-2.5 last:border-b-0",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)(u.Label,{htmlFor:d,className:"cursor-pointer text-sm font-normal whitespace-nowrap",children:a}),c?(0,b.jsx)("p",{className:"text-muted-foreground text-[11px] leading-tight",children:c}):null]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:e})]})}function bp({label:a,description:c,id:d,testId:e,checked:f,onChange:g,disabled:h}){return(0,b.jsx)(bo,{label:a,description:c,htmlFor:d,children:(0,b.jsx)(x.Switch,{id:d,"data-testid":e,checked:f,onCheckedChange:g,disabled:h,className:(0,t.cn)("cursor-pointer",h&&"cursor-not-allowed opacity-50")})})}function bq({icon:a,title:c,description:d,badge:e,testId:f,children:g}){return(0,b.jsxs)("div",{className:"bg-background rounded-lg border","data-testid":f,children:[(0,b.jsxs)("div",{className:"bg-muted/30 border-b px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(a,{className:"text-muted-foreground h-3.5 w-3.5"}),(0,b.jsx)("h2",{className:"text-sm font-semibold",children:c}),e?(0,b.jsx)("span",{className:"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-[9px] font-medium tracking-wider uppercase",children:e}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground mt-0.5 text-[11px]",children:d})]}),(0,b.jsx)("div",{className:"px-4",children:g})]})}function br({id:a,testId:c,value:d,onChange:e,onBlur:f,placeholder:g,min:h=1,max:i,step:j=1,suffix:k}){let l=""===d?void 0:parseInt(d,10);return(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center overflow-hidden rounded-md border",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{e(String(Math.max(h,(l??parseInt(g,10))-j)))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-r transition-colors","aria-label":"Decrease",children:(0,b.jsx)(o.default,{className:"h-3 w-3"})}),(0,b.jsx)("input",{id:a,"data-testid":c,type:"text",inputMode:"numeric",pattern:"[0-9]*",value:d,placeholder:g,onChange:a=>{e(a.target.value.replace(/[^0-9]/g,""))},onBlur:f,className:"h-8 w-14 bg-transparent text-center text-xs outline-none"}),(0,b.jsx)("button",{type:"button",onClick:()=>{let a;a=l??parseInt(g,10),e(String(null!=i?Math.min(i,a+j):a+j))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-l transition-colors","aria-label":"Increase",children:(0,b.jsx)(p.Plus,{className:"h-3 w-3"})})]}),k?(0,b.jsx)("span",{className:"text-muted-foreground text-[11px]",children:k}):null]})}function bs({children:a}){return(0,b.jsx)("div",{className:"border-b pt-3 pb-1",children:(0,b.jsx)("span",{className:"text-muted-foreground text-[10px] font-semibold tracking-wider uppercase",children:a})})}function bt({children:a,links:c}){return(0,b.jsxs)("div",{className:"hidden pt-2 lg:block",children:[(0,b.jsx)("p",{className:"text-muted-foreground/70 text-[11px] leading-relaxed",children:a}),null!=c&&c.length>0?(0,b.jsx)("div",{className:"mt-2 flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-[10px] transition-colors",children:[(0,b.jsx)(q.ExternalLink,{className:"h-2.5 w-2.5"}),a.label]},a.href))}):null]})}function bu({settings:a,shepHome:e,dbFileSize:o}){let{showSaving:p,showSaved:q,save:u}=function(){let[a,b]=(0,c.useTransition)(),[d,e]=(0,c.useState)(!1),[f,g]=(0,c.useState)(!1),h=(0,c.useRef)(null),i=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{a&&!d&&(e(!0),i.current=!1,h.current=setTimeout(()=>{h.current=null,i.current&&(e(!1),g(!0),setTimeout(()=>g(!1),2e3))},350)),!a&&d&&(i.current=!0,h.current||(e(!1),g(!0),setTimeout(()=>g(!1),2e3)))},[a,d]),{showSaving:d,showSaved:f,save:(0,c.useCallback)(a=>{b(async()=>{let b=await a8(a);b.success||s.toast.error(b.error??"Failed to save settings")})},[b])}}(),x=a.featureFlags??{skills:!1,envDeploy:!1,debug:!1},[z,A]=(0,c.useState)(a.agent.type),B=a.agent.authMethod,[C,D]=(0,c.useState)(a.agent.token??""),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)(a.environment.defaultEditor),I=a.environment.shellPreference,[J,K]=(0,c.useState)(a.workflow.openPrOnImplementationComplete),[L,M]=(0,c.useState)(a.workflow.approvalGateDefaults.pushOnImplementationComplete),[N,O]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPrd),[P,Q]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPlan),[R,S]=(0,c.useState)(a.workflow.approvalGateDefaults.allowMerge),[T,U]=(0,c.useState)(a.workflow.enableEvidence),[V,W]=(0,c.useState)(a.workflow.commitEvidence),[X,Y]=(0,c.useState)(null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):""),[Z,$]=(0,c.useState)(null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):""),[_,aa]=(0,c.useState)(null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):""),[ab,ac]=(0,c.useState)(a.notifications.inApp.enabled),[ad,ae]=(0,c.useState)(a.notifications.browser.enabled),[af,ag]=(0,c.useState)(a.notifications.desktop.enabled),[ah,ai]=(0,c.useState)({...a.notifications.events}),[aj,ak]=(0,c.useState)({...x}),al=null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):"",am=null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):"",an=null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):"";function ao(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}function ap(a={}){let b=ao(a.ciTimeout??Z);return{workflow:{openPrOnImplementationComplete:a.openPr??J,approvalGateDefaults:{pushOnImplementationComplete:a.pushOnComplete??L,allowPrd:a.allowPrd??N,allowPlan:a.allowPlan??P,allowMerge:a.allowMerge??R},enableEvidence:a.enableEvidence??T,commitEvidence:a.commitEvidence??V,ciMaxFixAttempts:ao(a.ciMaxFix??X),ciWatchTimeoutMs:null!=b?1e3*b:void 0,ciLogMaxChars:ao(a.ciLogMax??_)}}}function aq(a={}){return{notifications:{inApp:{enabled:a.inApp??ab},browser:{enabled:a.browser??ad},desktop:{enabled:a.desktop??af},events:a.events??ah}}}let[ar,as]=(0,c.useState)("agent");(0,c.useEffect)(()=>{let a=bn.map(a=>document.getElementById(`section-${a.id}`)).filter(Boolean);if(0===a.length)return;let b=new IntersectionObserver(a=>{for(let b of a)b.isIntersecting&&as(b.target.id.replace("section-",""))},{rootMargin:"-65px 0px -60% 0px",threshold:0});for(let c of a)b.observe(c);return()=>b.disconnect()},[]);let at=(0,c.useCallback)(a=>{let b=document.getElementById(`section-${a}`);b&&(b.scrollIntoView({behavior:"smooth",block:"start"}),b.style.animation="none",b.offsetHeight,b.style.animation="section-flash 1s ease-out")},[]);return(0,b.jsxs)("div",{"data-testid":"settings-page-client",className:"max-w-5xl",children:[(0,b.jsx)("div",{className:"bg-background/95 supports-backdrop-filter:bg-background/80 sticky top-0 z-10 grid grid-cols-1 gap-x-5 pt-6 pb-4 backdrop-blur lg:grid-cols-[1fr_280px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(r,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Settings"}),(0,b.jsxs)("span",{className:"relative h-4 w-16",children:[(0,b.jsx)("span",{className:(0,t.cn)("text-muted-foreground absolute inset-0 flex items-center text-xs transition-opacity duration-300",p?"opacity-100":"opacity-0"),children:"Saving..."}),(0,b.jsxs)("span",{className:(0,t.cn)("absolute inset-0 flex items-center gap-1 text-xs text-green-600 transition-opacity duration-300",q&&!p?"opacity-100":"opacity-0"),children:[(0,b.jsx)(g.Check,{className:"h-3 w-3"}),"Saved"]})]}),(0,b.jsx)("nav",{className:"ml-auto flex items-center gap-0.5",children:bn.map(a=>{let c=a.icon,d=ar===a.id;return(0,b.jsxs)("button",{type:"button",onClick:()=>at(a.id),className:(0,t.cn)("flex cursor-pointer items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-all",d?"bg-accent text-foreground font-medium":"text-muted-foreground/60 hover:text-foreground hover:bg-accent/50"),children:[(0,b.jsx)(c,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:a.label})]},a.id)})})]})}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{id:"section-agent",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:h.Bot,title:"Agent",description:"AI coding agent and authentication",testId:"agent-settings-section",children:[(0,b.jsx)(bo,{label:"Agent & Model",description:"Provider and model for all operations",htmlFor:"agent-model-picker",children:(0,b.jsx)(bk.AgentModelPicker,{initialAgentType:z,initialModel:a.models.default,mode:"settings",onAgentModelChange:a=>A(a),className:"w-55"})}),(0,b.jsx)(bo,{label:"Authentication",description:"How the agent authenticates",htmlFor:"auth-method",children:(0,b.jsx)(y.TooltipProvider,{children:(0,b.jsxs)(y.Tooltip,{children:[(0,b.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsxs)(a0,{value:B,disabled:!0,children:[(0,b.jsx)(a2,{id:"auth-method","data-testid":"auth-method-select",className:"w-55 cursor-not-allowed text-xs opacity-60",children:(0,b.jsx)(a1,{})}),(0,b.jsx)(a5,{children:bl.map(a=>(0,b.jsx)(a6,{value:a.value,children:a.label},a.value))})]})})}),(0,b.jsx)(y.TooltipContent,{children:"Coming soon"})]})})}),B===a9.AgentAuthMethod.Token&&(0,b.jsx)(bo,{label:"API Token",htmlFor:"agent-token",children:(0,b.jsxs)("div",{className:"relative w-45",children:[(0,b.jsx)(v.Input,{id:"agent-token","data-testid":"agent-token-input",type:E?"text":"password",value:C,onChange:a=>D(a.target.value),onBlur:()=>{C!==(a.agent.token??"")&&u(function(a={}){let b={type:z,authMethod:B,...a},c={type:b.type,authMethod:b.authMethod};return b.authMethod===a9.AgentAuthMethod.Token&&(c.token=a.token??C),{agent:c}}({token:C}))},placeholder:"Enter token",className:"pr-8"}),(0,b.jsx)(w.Button,{type:"button",variant:"ghost",size:"sm",className:"absolute top-0 right-0 h-full px-2 hover:bg-transparent",onClick:()=>F(!E),"data-testid":"toggle-token-visibility","aria-label":E?"Hide token":"Show token",children:E?(0,b.jsx)(f,{className:"h-3 w-3"}):(0,b.jsx)(d.Eye,{className:"h-3 w-3"})})]})})]}),(0,b.jsx)(bt,{links:[{label:"Agent system",href:"https://github.com/shep-ai/cli/blob/main/docs/architecture/agent-system.md"},{label:"Adding agents",href:"https://github.com/shep-ai/cli/blob/main/docs/development/adding-agents.md"},{label:"Configuration guide",href:"https://github.com/shep-ai/cli/blob/main/docs/guides/configuration.md"}],children:"Choose which AI coding agent powers your features. Each agent supports different models and capabilities. Authentication is resolved automatically via your active session."})]}),(0,b.jsxs)("div",{id:"section-environment",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(bq,{icon:i.Terminal,title:"Environment",description:"Editor and shell preferences",testId:"environment-settings-section",children:(0,b.jsx)(bo,{label:"Default Editor",description:"Editor launched for file operations",htmlFor:"default-editor",children:(0,b.jsxs)(a0,{value:G,onValueChange:a=>{H(a),u({environment:{defaultEditor:a,shellPreference:I}})},children:[(0,b.jsx)(a2,{id:"default-editor","data-testid":"editor-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(a1,{})}),(0,b.jsx)(a5,{children:bm.map(a=>{var c;let d=(c=a.value)&&c in bj?bj[c]:bd;return(0,b.jsx)(a6,{value:a.value,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(d,{className:"h-4 w-4 shrink-0"}),a.label]})},a.value)})})]})})}),(0,b.jsx)(bt,{links:[{label:"Configuration guide",href:"https://github.com/shep-ai/cli/blob/main/docs/guides/configuration.md"}],children:"Your preferred editor is used when opening files for review or editing during the development workflow."})]}),(0,b.jsxs)("div",{id:"section-workflow",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:j.GitBranch,title:"Workflow",description:"Automation behavior after implementation",testId:"workflow-settings-section",children:[(0,b.jsx)(bs,{children:"Approve"}),(0,b.jsx)(bp,{label:"Auto-approve PRD",description:"Skip manual review of requirements",id:"allow-prd",testId:"switch-allow-prd",checked:N,onChange:a=>{O(a),u(ap({allowPrd:a}))}}),(0,b.jsx)(bp,{label:"Auto-approve Plan",description:"Skip manual review of implementation plan",id:"allow-plan",testId:"switch-allow-plan",checked:P,onChange:a=>{Q(a),u(ap({allowPlan:a}))}}),(0,b.jsx)(bp,{label:"Auto-approve Merge",description:"Merge without manual review",id:"allow-merge",testId:"switch-allow-merge",checked:R,onChange:a=>{S(a),u(ap({allowMerge:a}))}}),(0,b.jsx)(bs,{children:"Evidence"}),(0,b.jsx)(bp,{label:"Collect evidence",description:"Capture screenshots and artifacts after implementation",id:"enable-evidence",testId:"switch-enable-evidence",checked:T,onChange:a=>{U(a),a?u(ap({enableEvidence:a})):(W(!1),u(ap({enableEvidence:a,commitEvidence:!1})))}}),(0,b.jsx)(bp,{label:"Add evidence to PR",description:"Include evidence in the pull request body",id:"commit-evidence",testId:"switch-commit-evidence",checked:V,disabled:!T||!J,onChange:a=>{W(a),u(ap({commitEvidence:a}))}}),(0,b.jsx)(bs,{children:"Git"}),(0,b.jsx)(bp,{label:"Push on complete",description:"Push to remote when implementation finishes",id:"push-on-complete",testId:"switch-push-on-complete",checked:L,onChange:a=>{M(a),u(ap({pushOnComplete:a}))}}),(0,b.jsx)(bp,{label:"Open PR on complete",description:"Create a pull request when done",id:"open-pr",testId:"switch-open-pr",checked:J,onChange:a=>{K(a),a?u(ap({openPr:a})):(W(!1),u(ap({openPr:a,commitEvidence:!1})))}})]}),(0,b.jsx)(bt,{links:[{label:"Approval gates",href:"https://github.com/shep-ai/cli/blob/main/specs/016-hitl-approval-gates/spec.yaml"},{label:"Push & PR flags",href:"https://github.com/shep-ai/cli/blob/main/specs/037-feature-pr-push-flags/spec.yaml"}],children:"Control how autonomous each feature run is. Auto-approve skips the human review pause at each phase. Push and PR options control what happens after successful implementation."})]}),(0,b.jsxs)("div",{id:"section-ci",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:k,title:"Continuous Integration",description:"Limits and timeouts for CI monitoring",testId:"ci-settings-section",children:[(0,b.jsx)(bo,{label:"Max fix attempts",description:"Agent retries on failing CI",htmlFor:"ci-max-fix",children:(0,b.jsx)(br,{id:"ci-max-fix",testId:"ci-max-fix-input",placeholder:"3",value:X,onChange:Y,onBlur:()=>{X!==al&&u(ap({ciMaxFix:X}))},min:1,max:10})}),(0,b.jsx)(bo,{label:"Watch timeout",description:"Max wait for CI completion",htmlFor:"ci-timeout",children:(0,b.jsx)(br,{id:"ci-timeout",testId:"ci-timeout-input",placeholder:"300",value:Z,onChange:$,onBlur:()=>{Z!==am&&u(ap({ciTimeout:Z}))},min:30,step:30,suffix:"sec"})}),(0,b.jsx)(bo,{label:"Max log size",description:"Truncate CI logs beyond this limit",htmlFor:"ci-log-max",children:(0,b.jsx)(br,{id:"ci-log-max",testId:"ci-log-max-input",placeholder:"50000",value:_,onChange:aa,onBlur:()=>{_!==an&&u(ap({ciLogMax:_}))},min:1e3,step:5e3,suffix:"chars"})})]}),(0,b.jsx)(bt,{links:[{label:"CI/CD pipeline",href:"https://github.com/shep-ai/cli/blob/main/docs/development/cicd.md"},{label:"CI security gates",href:"https://github.com/shep-ai/cli/blob/main/specs/003-cicd-security-gates/spec.md"}],children:"When a feature completes, the agent can watch CI and auto-fix failures. These limits prevent runaway retries and control how much log output is sent to the agent for analysis."})]}),(0,b.jsxs)("div",{id:"section-notifications",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:l,title:"Notifications",description:"How and when you get notified",testId:"notification-settings-section",children:[(0,b.jsx)(bs,{children:"Channels"}),(0,b.jsx)(bp,{label:"In-app",description:"Notifications inside the Shep UI",id:"notif-in-app",testId:"switch-in-app",checked:ab,onChange:a=>{ac(a),u(aq({inApp:a}))}}),(0,b.jsx)(bp,{label:"Browser",description:"Push notifications via the browser",id:"notif-browser",testId:"switch-browser",checked:ad,onChange:a=>{ae(a),u(aq({browser:a}))}}),(0,b.jsx)(bp,{label:"Desktop",description:"Native OS notifications",id:"notif-desktop",testId:"switch-desktop",checked:af,onChange:a=>{ag(a),u(aq({desktop:a}))}}),(0,b.jsx)(bs,{children:"Agent Events"}),(0,b.jsx)(bp,{label:"Agent started",id:"notif-event-agentStarted",testId:"switch-event-agentStarted",checked:ah.agentStarted,onChange:a=>{let b={...ah,agentStarted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Phase completed",id:"notif-event-phaseCompleted",testId:"switch-event-phaseCompleted",checked:ah.phaseCompleted,onChange:a=>{let b={...ah,phaseCompleted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Waiting approval",id:"notif-event-waitingApproval",testId:"switch-event-waitingApproval",checked:ah.waitingApproval,onChange:a=>{let b={...ah,waitingApproval:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Agent completed",id:"notif-event-agentCompleted",testId:"switch-event-agentCompleted",checked:ah.agentCompleted,onChange:a=>{let b={...ah,agentCompleted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Agent failed",id:"notif-event-agentFailed",testId:"switch-event-agentFailed",checked:ah.agentFailed,onChange:a=>{let b={...ah,agentFailed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bs,{children:"Pull Request Events"}),(0,b.jsx)(bp,{label:"PR merged",id:"notif-event-prMerged",testId:"switch-event-prMerged",checked:ah.prMerged,onChange:a=>{let b={...ah,prMerged:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR closed",id:"notif-event-prClosed",testId:"switch-event-prClosed",checked:ah.prClosed,onChange:a=>{let b={...ah,prClosed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR checks passed",id:"notif-event-prChecksPassed",testId:"switch-event-prChecksPassed",checked:ah.prChecksPassed,onChange:a=>{let b={...ah,prChecksPassed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR checks failed",id:"notif-event-prChecksFailed",testId:"switch-event-prChecksFailed",checked:ah.prChecksFailed,onChange:a=>{let b={...ah,prChecksFailed:a};ai(b),u(aq({events:b}))}})]}),(0,b.jsx)(bt,{links:[{label:"Notification system",href:"https://github.com/shep-ai/cli/blob/main/specs/021-agent-notifications/spec.yaml"}],children:"Three notification channels keep you in the loop: in-app toasts, browser push notifications, and native desktop alerts. Fine-tune which agent lifecycle events trigger a notification."})]}),(0,b.jsxs)("div",{id:"section-feature-flags",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:m,title:"Feature Flags",description:"Enable or disable experimental features",badge:"Experimental",testId:"feature-flags-settings-section",children:[(0,b.jsx)(bp,{label:"Skills",description:"Enable the skills system for agent capabilities",id:"flag-skills",testId:"switch-flag-skills",checked:aj.skills,onChange:a=>{let b={...aj,skills:a};ak(b),u({featureFlags:b})}}),(0,b.jsx)(bp,{label:"Deployments",description:"Enable environment deployment workflows",id:"flag-envDeploy",testId:"switch-flag-envDeploy",checked:aj.envDeploy,onChange:a=>{let b={...aj,envDeploy:a};ak(b),u({featureFlags:b})}}),(0,b.jsx)(bp,{label:"Debug",description:"Show debug panels and verbose logging",id:"flag-debug",testId:"switch-flag-debug",checked:aj.debug,onChange:a=>{let b={...aj,debug:a};ak(b),u({featureFlags:b})}})]}),(0,b.jsx)(bt,{children:"Experimental features that are still under development. Enable at your own risk — they may change or be removed in future versions. Debug mode adds verbose logging useful for troubleshooting."})]}),(0,b.jsxs)("div",{id:"section-database",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:n,title:"Database",description:"Local storage information",testId:"database-settings-section",children:[(0,b.jsx)(bo,{label:"Location",description:"Path to the local SQLite database",children:(0,b.jsx)("span",{className:"text-muted-foreground max-w-50 truncate font-mono text-xs","data-testid":"shep-home-path",children:e})}),(0,b.jsx)(bo,{label:"Size",children:(0,b.jsx)("span",{className:"text-muted-foreground text-xs","data-testid":"db-file-size",children:o})})]}),(0,b.jsx)(bt,{links:[{label:"Settings service",href:"https://github.com/shep-ai/cli/blob/main/docs/architecture/settings-service.md"},{label:"Settings spec",href:"https://github.com/shep-ai/cli/blob/main/specs/005-global-settings-service/spec.md"}],children:"All settings are stored in a local SQLite database at ~/.shep/data. The database uses a singleton record pattern with automatic migrations on startup."})]})]})]})}a.s(["SettingsPageClient",()=>bu],79020)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map
|