@shepai/cli 1.57.0 → 1.58.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.
Files changed (160) hide show
  1. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-button.d.ts.map +1 -1
  2. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-button.js +4 -2
  3. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts +2 -0
  4. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts.map +1 -1
  5. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.js +6 -0
  6. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  7. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +9 -0
  8. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  9. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +3 -3
  10. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +0 -1
  11. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  12. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +1 -31
  13. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  14. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +5 -1
  15. package/dist/tsconfig.build.tsbuildinfo +1 -1
  16. package/package.json +1 -1
  17. package/web/.next/BUILD_ID +1 -1
  18. package/web/.next/build-manifest.json +2 -2
  19. package/web/.next/cache/.previewinfo +1 -1
  20. package/web/.next/cache/.rscinfo +1 -1
  21. package/web/.next/cache/.tsbuildinfo +1 -1
  22. package/web/.next/cache/config.json +3 -3
  23. package/web/.next/fallback-build-manifest.json +2 -2
  24. package/web/.next/prerender-manifest.json +3 -3
  25. package/web/.next/required-server-files.js +1 -1
  26. package/web/.next/required-server-files.json +1 -1
  27. package/web/.next/server/app/_global-error/page.js +1 -1
  28. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  29. package/web/.next/server/app/_global-error.html +2 -2
  30. package/web/.next/server/app/_global-error.rsc +1 -1
  31. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  32. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  33. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  34. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  35. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  36. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +17 -1
  37. package/web/.next/server/app/_not-found/page.js +2 -2
  38. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  39. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
  41. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  42. package/web/.next/server/app/page/server-reference-manifest.json +41 -41
  43. package/web/.next/server/app/page.js +2 -3
  44. package/web/.next/server/app/page.js.nft.json +1 -1
  45. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/tools/page/server-reference-manifest.json +17 -1
  47. package/web/.next/server/app/tools/page.js +2 -2
  48. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  49. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  50. package/web/.next/server/app/version/page/server-reference-manifest.json +17 -1
  51. package/web/.next/server/app/version/page.js +2 -2
  52. package/web/.next/server/app/version/page.js.nft.json +1 -1
  53. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/chunks/{[root-of-the-server]__332c8d91._.js → [root-of-the-server]__a6bf88cc._.js} +2 -2
  55. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +4 -0
  56. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -0
  57. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +4 -0
  58. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -0
  59. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +4 -0
  60. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -0
  61. package/web/.next/server/chunks/ssr/[root-of-the-server]__86c7bba5._.js +9 -0
  62. package/web/.next/server/chunks/ssr/[root-of-the-server]__86c7bba5._.js.map +1 -0
  63. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +12 -0
  64. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -0
  65. package/web/.next/server/chunks/ssr/{[root-of-the-server]__dbd220d2._.js → [root-of-the-server]__b79b0516._.js} +2 -2
  66. package/web/.next/server/chunks/ssr/{[root-of-the-server]__dbd220d2._.js.map → [root-of-the-server]__b79b0516._.js.map} +1 -1
  67. package/web/.next/server/chunks/ssr/{[root-of-the-server]__757c7912._.js → [root-of-the-server]__f7f90528._.js} +2 -2
  68. package/web/.next/server/chunks/ssr/{[root-of-the-server]__757c7912._.js.map → [root-of-the-server]__f7f90528._.js.map} +1 -1
  69. package/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  70. package/web/.next/server/chunks/ssr/{_0e2c2b4f._.js → _027596cf._.js} +2 -2
  71. package/web/.next/server/chunks/ssr/_027596cf._.js.map +1 -0
  72. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  73. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  74. package/web/.next/server/pages/500.html +2 -2
  75. package/web/.next/server/server-reference-manifest.js +1 -1
  76. package/web/.next/server/server-reference-manifest.json +63 -42
  77. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  78. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  79. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  80. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  81. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js +1 -1
  82. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  83. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  84. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  85. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  86. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  87. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  88. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  89. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  90. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +17 -1
  91. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js +2 -2
  92. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  93. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  94. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
  95. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  96. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +41 -41
  97. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +2 -3
  98. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  99. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  100. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +17 -1
  101. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js +2 -2
  102. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  103. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  104. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +17 -1
  105. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js +2 -2
  106. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  107. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  108. package/web/.next/standalone/src/presentation/web/.next/server/chunks/{[root-of-the-server]__332c8d91._.js → [root-of-the-server]__a6bf88cc._.js} +2 -2
  109. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +4 -0
  110. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +4 -0
  111. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +4 -0
  112. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__86c7bba5._.js +9 -0
  113. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +12 -0
  114. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__dbd220d2._.js → [root-of-the-server]__b79b0516._.js} +2 -2
  115. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__757c7912._.js → [root-of-the-server]__f7f90528._.js} +2 -2
  116. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fbc89707._.js +1 -1
  117. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_0e2c2b4f._.js → _027596cf._.js} +2 -2
  118. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  119. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  120. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  121. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +63 -42
  122. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-button.tsx +24 -15
  123. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.tsx +12 -0
  124. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +10 -0
  125. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +0 -41
  126. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +2 -7
  127. package/web/.next/standalone/src/presentation/web/components/layouts/app-shell/app-shell.tsx +6 -0
  128. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  129. package/web/.next/static/chunks/3f5de337d3fc604f.js +1 -0
  130. package/web/.next/static/chunks/60bbbe7ff679eb4c.css +2 -0
  131. package/web/.next/static/chunks/{ef237b70209d9853.js → 67459433cc866344.js} +1 -1
  132. package/web/.next/static/chunks/eb0e60434c992fc1.js +10 -0
  133. package/web/.next/trace +1 -1
  134. package/web/.next/trace-build +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js +0 -9
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js.map +0 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__48c68a96._.js +0 -12
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__48c68a96._.js.map +0 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__950afd5e._.js +0 -3
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__950afd5e._.js.map +0 -1
  141. package/web/.next/server/chunks/ssr/_0e2c2b4f._.js.map +0 -1
  142. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_a836bb2a.js +0 -3
  143. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_a836bb2a.js.map +0 -1
  144. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_f1dd7791.js +0 -3
  145. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_f1dd7791.js.map +0 -1
  146. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_ea925032.js +0 -3
  147. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_ea925032.js.map +0 -1
  148. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js +0 -9
  149. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__48c68a96._.js +0 -12
  150. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__950afd5e._.js +0 -3
  151. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_a836bb2a.js +0 -3
  152. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_f1dd7791.js +0 -3
  153. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_ea925032.js +0 -3
  154. package/web/.next/static/chunks/225de19e886a62ab.js +0 -10
  155. package/web/.next/static/chunks/4651f20be1a3b7d7.css +0 -2
  156. package/web/.next/static/chunks/a1f2befd62b321c0.js +0 -1
  157. /package/web/.next/server/chunks/{[root-of-the-server]__332c8d91._.js.map → [root-of-the-server]__a6bf88cc._.js.map} +0 -0
  158. /package/web/.next/static/{V2579MPjpJ_hqKjPsmMlR → e7Q45G0MI6cgci9Gn2J-i}/_buildManifest.js +0 -0
  159. /package/web/.next/static/{V2579MPjpJ_hqKjPsmMlR → e7Q45G0MI6cgci9Gn2J-i}/_clientMiddlewareManifest.json +0 -0
  160. /package/web/.next/static/{V2579MPjpJ_hqKjPsmMlR → e7Q45G0MI6cgci9Gn2J-i}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[66560,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(55003),e=a.i(69845),f=a.i(25700);let g=(0,f.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var h=a.i(17300),i=a.i(67837),j=a.i(66873),k=a.i(14272),l=a.i(7420),m=a.i(6175),n=a.i(79406),o=a.i(48939),p=a.i(61476),q=a.i(59653),r="ScrollArea",[s,t]=(0,l.createContextScope)(r),[u,v]=s(r),w=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,type:f="hover",dir:g,scrollHideDelay:h=600,...i}=a,[k,l]=c.useState(null),[n,p]=c.useState(null),[q,r]=c.useState(null),[s,t]=c.useState(null),[v,w]=c.useState(null),[x,y]=c.useState(0),[z,A]=c.useState(0),[B,C]=c.useState(!1),[D,E]=c.useState(!1),F=(0,m.useComposedRefs)(d,a=>l(a)),G=(0,o.useDirection)(g);return(0,b.jsx)(u,{scope:e,type:f,dir:G,scrollHideDelay:h,scrollArea:k,viewport:n,onViewportChange:p,content:q,onContentChange:r,scrollbarX:s,onScrollbarXChange:t,scrollbarXEnabled:B,onScrollbarXEnabledChange:C,scrollbarY:v,onScrollbarYChange:w,scrollbarYEnabled:D,onScrollbarYEnabledChange:E,onCornerWidthChange:y,onCornerHeightChange:A,children:(0,b.jsx)(j.Primitive.div,{dir:G,...i,ref:F,style:{position:"relative","--radix-scroll-area-corner-width":x+"px","--radix-scroll-area-corner-height":z+"px",...a.style}})})});w.displayName=r;var x="ScrollAreaViewport",y=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,children:f,nonce:g,...h}=a,i=v(x,e),k=c.useRef(null),l=(0,m.useComposedRefs)(d,k,i.onViewportChange);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:g}),(0,b.jsx)(j.Primitive.div,{"data-radix-scroll-area-viewport":"",...h,ref:l,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,b.jsx)("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:f})})]})});y.displayName=x;var z="ScrollAreaScrollbar",A=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=v(z,a.__scopeScrollArea),{onScrollbarXEnabledChange:h,onScrollbarYEnabledChange:i}=g,j="horizontal"===a.orientation;return c.useEffect(()=>(j?h(!0):i(!0),()=>{j?h(!1):i(!1)}),[j,h,i]),"hover"===g.type?(0,b.jsx)(B,{...f,ref:d,forceMount:e}):"scroll"===g.type?(0,b.jsx)(C,{...f,ref:d,forceMount:e}):"auto"===g.type?(0,b.jsx)(D,{...f,ref:d,forceMount:e}):"always"===g.type?(0,b.jsx)(E,{...f,ref:d}):null});A.displayName=z;var B=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=v(z,a.__scopeScrollArea),[h,i]=c.useState(!1);return c.useEffect(()=>{let a=g.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),i(!0)},d=()=>{b=window.setTimeout(()=>i(!1),g.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[g.scrollArea,g.scrollHideDelay]),(0,b.jsx)(k.Presence,{present:e||h,children:(0,b.jsx)(D,{"data-state":h?"visible":"hidden",...f,ref:d})})}),C=c.forwardRef((a,d)=>{var e;let{forceMount:f,...g}=a,h=v(z,a.__scopeScrollArea),i="horizontal"===a.orientation,j=W(()=>m("SCROLL_END"),100),[l,m]=(e={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},c.useReducer((a,b)=>e[a][b]??a,"hidden"));return c.useEffect(()=>{if("idle"===l){let a=window.setTimeout(()=>m("HIDE"),h.scrollHideDelay);return()=>window.clearTimeout(a)}},[l,h.scrollHideDelay,m]),c.useEffect(()=>{let a=h.viewport,b=i?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(m("SCROLL"),j()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[h.viewport,i,m,j]),(0,b.jsx)(k.Presence,{present:f||"hidden"!==l,children:(0,b.jsx)(E,{"data-state":"hidden"===l?"hidden":"visible",...g,ref:d,onPointerEnter:(0,q.composeEventHandlers)(a.onPointerEnter,()=>m("POINTER_ENTER")),onPointerLeave:(0,q.composeEventHandlers)(a.onPointerLeave,()=>m("POINTER_LEAVE"))})})}),D=c.forwardRef((a,d)=>{let e=v(z,a.__scopeScrollArea),{forceMount:f,...g}=a,[h,i]=c.useState(!1),j="horizontal"===a.orientation,l=W(()=>{if(e.viewport){let a=e.viewport.offsetWidth<e.viewport.scrollWidth,b=e.viewport.offsetHeight<e.viewport.scrollHeight;i(j?a:b)}},10);return X(e.viewport,l),X(e.content,l),(0,b.jsx)(k.Presence,{present:f||h,children:(0,b.jsx)(E,{"data-state":h?"visible":"hidden",...g,ref:d})})}),E=c.forwardRef((a,d)=>{let{orientation:e="vertical",...f}=a,g=v(z,a.__scopeScrollArea),h=c.useRef(null),i=c.useRef(0),[j,k]=c.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=R(j.viewport,j.content),m={...f,sizes:j,onSizesChange:k,hasThumb:!!(l>0&&l<1),onThumbChange:a=>h.current=a,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:a=>i.current=a};function n(a,b){return function(a,b,c,d="ltr"){let e=S(c),f=b||e/2,g=c.scrollbar.paddingStart+f,h=c.scrollbar.size-c.scrollbar.paddingEnd-(e-f),i=c.content-c.viewport;return U([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,i.current,j,b)}return"horizontal"===e?(0,b.jsx)(F,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=T(g.viewport.scrollLeft,j,g.dir);h.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollLeft=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollLeft=n(a,g.dir))}}):"vertical"===e?(0,b.jsx)(G,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=T(g.viewport.scrollTop,j);h.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollTop=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollTop=n(a))}}):null}),F=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...g}=a,h=v(z,a.__scopeScrollArea),[i,j]=c.useState(),k=c.useRef(null),l=(0,m.useComposedRefs)(d,k,h.onScrollbarXChange);return c.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,b.jsx)(J,{"data-orientation":"horizontal",...g,ref:l,sizes:e,style:{bottom:0,left:"rtl"===h.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===h.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":S(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollLeft+b.deltaX;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollWidth,viewport:h.viewport.offsetWidth,scrollbar:{size:k.current.clientWidth,paddingStart:Q(i.paddingLeft),paddingEnd:Q(i.paddingRight)}})}})}),G=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...g}=a,h=v(z,a.__scopeScrollArea),[i,j]=c.useState(),k=c.useRef(null),l=(0,m.useComposedRefs)(d,k,h.onScrollbarYChange);return c.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,b.jsx)(J,{"data-orientation":"vertical",...g,ref:l,sizes:e,style:{top:0,right:"ltr"===h.dir?0:void 0,left:"rtl"===h.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":S(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollTop+b.deltaY;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollHeight,viewport:h.viewport.offsetHeight,scrollbar:{size:k.current.clientHeight,paddingStart:Q(i.paddingTop),paddingEnd:Q(i.paddingBottom)}})}})}),[H,I]=s(z),J=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,sizes:f,hasThumb:g,onThumbChange:h,onThumbPointerUp:i,onThumbPointerDown:k,onThumbPositionChange:l,onDragScroll:o,onWheelScroll:p,onResize:r,...s}=a,t=v(z,e),[u,w]=c.useState(null),x=(0,m.useComposedRefs)(d,a=>w(a)),y=c.useRef(null),A=c.useRef(""),B=t.viewport,C=f.content-f.viewport,D=(0,n.useCallbackRef)(p),E=(0,n.useCallbackRef)(l),F=W(r,10);function G(a){y.current&&o({x:a.clientX-y.current.left,y:a.clientY-y.current.top})}return c.useEffect(()=>{let a=a=>{let b=a.target;u?.contains(b)&&D(a,C)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[B,u,C,D]),c.useEffect(E,[f,E]),X(u,F),X(t.content,F),(0,b.jsx)(H,{scope:e,scrollbar:u,hasThumb:g,onThumbChange:(0,n.useCallbackRef)(h),onThumbPointerUp:(0,n.useCallbackRef)(i),onThumbPositionChange:E,onThumbPointerDown:(0,n.useCallbackRef)(k),children:(0,b.jsx)(j.Primitive.div,{...s,ref:x,style:{position:"absolute",...s.style},onPointerDown:(0,q.composeEventHandlers)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),y.current=u.getBoundingClientRect(),A.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",t.viewport&&(t.viewport.style.scrollBehavior="auto"),G(a))}),onPointerMove:(0,q.composeEventHandlers)(a.onPointerMove,G),onPointerUp:(0,q.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=A.current,t.viewport&&(t.viewport.style.scrollBehavior=""),y.current=null})})})}),K="ScrollAreaThumb",L=c.forwardRef((a,c)=>{let{forceMount:d,...e}=a,f=I(K,a.__scopeScrollArea);return(0,b.jsx)(k.Presence,{present:d||f.hasThumb,children:(0,b.jsx)(M,{ref:c,...e})})}),M=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,style:f,...g}=a,h=v(K,e),i=I(K,e),{onThumbPositionChange:k}=i,l=(0,m.useComposedRefs)(d,a=>i.onThumbChange(a)),n=c.useRef(void 0),o=W(()=>{n.current&&(n.current(),n.current=void 0)},100);return c.useEffect(()=>{let a=h.viewport;if(a){let b=()=>{o(),n.current||(n.current=V(a,k),k())};return k(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[h.viewport,o,k]),(0,b.jsx)(j.Primitive.div,{"data-state":i.hasThumb?"visible":"hidden",...g,ref:l,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...f},onPointerDownCapture:(0,q.composeEventHandlers)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;i.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,q.composeEventHandlers)(a.onPointerUp,i.onThumbPointerUp)})});L.displayName=K;var N="ScrollAreaCorner",O=c.forwardRef((a,c)=>{let d=v(N,a.__scopeScrollArea),e=!!(d.scrollbarX&&d.scrollbarY);return"scroll"!==d.type&&e?(0,b.jsx)(P,{...a,ref:c}):null});O.displayName=N;var P=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,...f}=a,g=v(N,e),[h,i]=c.useState(0),[k,l]=c.useState(0),m=!!(h&&k);return X(g.scrollbarX,()=>{let a=g.scrollbarX?.offsetHeight||0;g.onCornerHeightChange(a),l(a)}),X(g.scrollbarY,()=>{let a=g.scrollbarY?.offsetWidth||0;g.onCornerWidthChange(a),i(a)}),m?(0,b.jsx)(j.Primitive.div,{...f,ref:d,style:{width:h,height:k,position:"absolute",right:"ltr"===g.dir?0:void 0,left:"rtl"===g.dir?0:void 0,bottom:0,...a.style}}):null});function Q(a){return a?parseInt(a,10):0}function R(a,b){let c=a/b;return isNaN(c)?0:c}function S(a){let b=R(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function T(a,b,c="ltr"){let d=S(b),e=b.scrollbar.paddingStart+b.scrollbar.paddingEnd,f=b.scrollbar.size-e,g=b.content-b.viewport,h=function(a,[b,c]){return Math.min(c,Math.max(b,a))}(a,"ltr"===c?[0,g]:[-1*g,0]);return U([0,g],[0,f-d])(h)}function U(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}var V=(a,b=()=>{})=>{let c={left:a.scrollLeft,top:a.scrollTop},d=0;return!function e(){let f={left:a.scrollLeft,top:a.scrollTop},g=c.left!==f.left,h=c.top!==f.top;(g||h)&&b(),c=f,d=window.requestAnimationFrame(e)}(),()=>window.cancelAnimationFrame(d)};function W(a,b){let d=(0,n.useCallbackRef)(a),e=c.useRef(0);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),c.useCallback(()=>{window.clearTimeout(e.current),e.current=window.setTimeout(d,b)},[d,b])}function X(a,b){let c=(0,n.useCallbackRef)(b);(0,p.useLayoutEffect)(()=>{let b=0;if(a){let d=new ResizeObserver(()=>{cancelAnimationFrame(b),b=window.requestAnimationFrame(c)});return d.observe(a),()=>{window.cancelAnimationFrame(b),d.unobserve(a)}}},[a,c])}a.s(["Corner",()=>O,"Root",()=>w,"ScrollArea",()=>w,"ScrollAreaCorner",()=>O,"ScrollAreaScrollbar",()=>A,"ScrollAreaThumb",()=>L,"ScrollAreaViewport",()=>y,"Scrollbar",()=>A,"Thumb",()=>L,"Viewport",()=>y,"createScrollAreaScope",()=>t],73942);var Y=a.i(73942),Y=Y,Z=a.i(85536);function $({className:a,children:c,...d}){return(0,b.jsxs)(Y.Root,{"data-slot":"scroll-area",className:(0,Z.cn)("relative",a),...d,children:[(0,b.jsx)(Y.Viewport,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:c}),(0,b.jsx)(_,{}),(0,b.jsx)(Y.Corner,{})]})}function _({className:a,orientation:c="vertical",...d}){return(0,b.jsx)(Y.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:c,className:(0,Z.cn)("flex touch-none p-px transition-colors select-none","vertical"===c&&"h-full w-2.5 border-l border-l-transparent","horizontal"===c&&"h-2.5 flex-col border-t border-t-transparent",a),...d,children:(0,b.jsx)(Y.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}a.i(47938);var aa=a.i(59503);a.i(69345);var ab=a.i(46969);a.i(48822);var ac=a.i(16911);a.i(4388);var ad=a.i(27756);a.i(77466);var ae=a.i(85637);a.i(34338);var af=a.i(54860),ag=a.i(49474);function ah({features:a,onNewFeature:f,onFeatureClick:j,onFeaturesFolderClick:k,onFeaturesMenuClick:l}){let m=(0,e.usePathname)(),{state:n}=(0,d.useSidebar)(),{mounted:o,visible:p}=function(a,b){let[d,e]=(0,c.useState)(!a),[f,g]=(0,c.useState)(!a);return(0,c.useEffect)(()=>{if(!a){e(!0);let a=requestAnimationFrame(()=>g(!0));return()=>cancelAnimationFrame(a)}g(!1);let b=window.setTimeout(()=>e(!1),200);return()=>window.clearTimeout(b)},[a,200]),{mounted:d,visible:f}}("collapsed"===n,0),q=ag.featureStatusOrder.map(b=>{let{label:c}=ag.featureStatusConfig[b],d=a.filter(a=>a.status===b);return{key:b,label:c,items:d}});return(0,b.jsxs)(d.Sidebar,{"data-testid":"app-sidebar",collapsible:"icon",children:[(0,b.jsx)(d.SidebarHeader,{children:(0,b.jsxs)(d.SidebarMenu,{children:[(0,b.jsx)(d.SidebarMenuItem,{children:(0,b.jsxs)("div",{className:"flex h-8 items-center group-data-[collapsible=icon]:justify-center",children:[o?(0,b.jsxs)("div",{className:["flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2 transition-opacity duration-200 ease-out",p?"opacity-100":"opacity-0"].join(" "),"aria-hidden":!p,children:[(0,b.jsx)(ac.ShepLogo,{className:"shrink-0",size:20}),(0,b.jsx)("span",{className:"truncate text-sm font-semibold tracking-tight",children:"Shep"})]}):null,(0,b.jsx)(ab.SidebarCollapseToggle,{className:"shrink-0 transition-all duration-200"})]})}),(0,b.jsx)(aa.SidebarNavItem,{icon:g,label:"Control Center",href:"/",active:"/"===m}),(0,b.jsx)(aa.SidebarNavItem,{icon:h.Wrench,label:"Tools",href:"/tools",active:"/tools"===m})]})}),(0,b.jsx)(d.SidebarContent,{children:o?(0,b.jsxs)("div",{className:["min-w-0 overflow-hidden transition-opacity duration-200 ease-out [&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none",p?"opacity-100":"opacity-0"].join(" "),children:[(0,b.jsx)(af.SidebarSectionHeader,{label:"Features",onFolderClick:k,onMenuClick:l}),(0,b.jsx)($,{children:q.map(({key:a,label:c,items:d})=>d.length>0?(0,b.jsx)(ae.FeatureStatusGroup,{label:c,count:d.length,children:d.map(a=>(0,b.jsx)(ad.FeatureListItem,{name:a.name,status:a.status,startedAt:a.startedAt,duration:a.duration,onClick:j?()=>j(a.name):void 0},a.name))},a):null)})]}):null}),(0,b.jsx)(d.SidebarFooter,{children:(0,b.jsx)(d.SidebarMenu,{children:(0,b.jsx)(d.SidebarMenuItem,{children:(0,b.jsxs)(d.SidebarMenuButton,{onClick:f,tooltip:"New feature",children:[(0,b.jsx)(i.Plus,{}),(0,b.jsx)("span",{children:"New feature"})]})})})}),(0,b.jsx)(d.SidebarRail,{})]})}a.i(20786);var ai=a.i(22550);let aj=(0,f.default)("volume-2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]),ak=(0,f.default)("volume-off",[["path",{d:"M16 9a5 5 0 0 1 .95 2.293",key:"1fgyg8"}],["path",{d:"M19.364 5.636a9 9 0 0 1 1.889 9.96",key:"l3zxae"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"m7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11",key:"1gbwow"}],["path",{d:"M9.828 4.172A.686.686 0 0 1 11 4.657v.686",key:"s2je0y"}]]);var al=a.i(18948),am=a.i(2103);function an(){let{enabled:a,toggle:c}=(0,am.useSoundEnabled)();return(0,b.jsxs)(al.Button,{variant:"ghost",size:"icon",onClick:c,"aria-label":a?"Mute sounds":"Unmute sounds",children:[a?(0,b.jsx)(aj,{className:"h-5 w-5"}):(0,b.jsx)(ak,{className:"h-5 w-5"}),(0,b.jsx)("span",{className:"sr-only",children:"Toggle sound"})]})}var ao=a.i(84871),ap=a.i(52313),aq=a.i(46847),ar=a.i(24233);let as={[aq.NotificationSeverity.Success]:"success",[aq.NotificationSeverity.Error]:"error",[aq.NotificationSeverity.Warning]:"warning",[aq.NotificationSeverity.Info]:"info"},at={[aq.NotificationSeverity.Success]:"celebration",[aq.NotificationSeverity.Error]:"caution",[aq.NotificationSeverity.Warning]:"notification",[aq.NotificationSeverity.Info]:"button"};function au({children:a}){!function(){let{events:a}=(0,ao.useAgentEventsContext)(),b=(0,ar.useSound)("celebration",{volume:.5}),d=(0,ar.useSound)("caution",{volume:.5}),e=(0,ar.useSound)("notification",{volume:.5}),f=(0,ar.useSound)("button",{volume:.5}),g=(0,c.useMemo)(()=>({celebration:b,caution:d,notification:e,button:f}),[b,d,e,f]),[h,i]=(0,c.useState)(()=>void 0===globalThis.Notification?"default":globalThis.Notification.permission),j=(0,c.useRef)(0);(0,c.useEffect)(()=>{if(a.length<=j.current)return;let b=a.slice(j.current);for(let c of(j.current=a.length,b)){if(c.severity!==aq.NotificationSeverity.Error&&c.severity!==aq.NotificationSeverity.Warning&&c.severity!==aq.NotificationSeverity.Success)continue;!function(a){let b=as[a.severity]??"info",c=a.eventType===aq.NotificationEventType.WaitingApproval;ap.toast[b](a.featureName,{description:a.message,...c&&{action:{label:"Review",onClick:()=>{window.dispatchEvent(new CustomEvent("shep:select-feature",{detail:{featureId:a.featureId}}))}}}})}(c),globalThis.Notification?.permission==="granted"&&new Notification(`Shep: ${c.featureName}`,{body:c.message,icon:"/favicon-light.svg"});let a=at[c.severity];g[a]?.play()}},[a,g]),(0,c.useCallback)(async()=>{void 0===globalThis.Notification||i(await globalThis.Notification.requestPermission())},[])}();let e=(0,c.useCallback)(()=>{window.dispatchEvent(new CustomEvent("shep:open-create-drawer"))},[]);return(0,b.jsxs)(d.SidebarProvider,{children:[(0,b.jsx)(ah,{features:[],onNewFeature:e}),(0,b.jsx)(d.SidebarInset,{children:(0,b.jsxs)("div",{className:"relative h-full",children:[(0,b.jsxs)("div",{className:"absolute top-3 right-3 z-50 flex gap-1",children:[(0,b.jsx)(an,{}),(0,b.jsx)(ai.ThemeToggle,{})]}),(0,b.jsx)("main",{className:"h-full",children:a})]})})]})}function av({children:a}){return(0,b.jsx)(ao.AgentEventsProvider,{children:(0,b.jsx)(au,{children:a})})}a.s(["AppShell",()=>av],66560)},73301,a=>{"use strict";var b=a.i(10973),c=a.i(52313);let d=({...a})=>(0,b.jsx)(c.Toaster,{className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...a});a.s(["Toaster",()=>d])}];
1
+ module.exports=[66560,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(55003),e=a.i(69845),f=a.i(25700);let g=(0,f.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var h=a.i(17300),i=a.i(67837),j=a.i(66873),k=a.i(14272),l=a.i(7420),m=a.i(6175),n=a.i(79406),o=a.i(48939),p=a.i(61476),q=a.i(59653),r="ScrollArea",[s,t]=(0,l.createContextScope)(r),[u,v]=s(r),w=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,type:f="hover",dir:g,scrollHideDelay:h=600,...i}=a,[k,l]=c.useState(null),[n,p]=c.useState(null),[q,r]=c.useState(null),[s,t]=c.useState(null),[v,w]=c.useState(null),[x,y]=c.useState(0),[z,A]=c.useState(0),[B,C]=c.useState(!1),[D,E]=c.useState(!1),F=(0,m.useComposedRefs)(d,a=>l(a)),G=(0,o.useDirection)(g);return(0,b.jsx)(u,{scope:e,type:f,dir:G,scrollHideDelay:h,scrollArea:k,viewport:n,onViewportChange:p,content:q,onContentChange:r,scrollbarX:s,onScrollbarXChange:t,scrollbarXEnabled:B,onScrollbarXEnabledChange:C,scrollbarY:v,onScrollbarYChange:w,scrollbarYEnabled:D,onScrollbarYEnabledChange:E,onCornerWidthChange:y,onCornerHeightChange:A,children:(0,b.jsx)(j.Primitive.div,{dir:G,...i,ref:F,style:{position:"relative","--radix-scroll-area-corner-width":x+"px","--radix-scroll-area-corner-height":z+"px",...a.style}})})});w.displayName=r;var x="ScrollAreaViewport",y=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,children:f,nonce:g,...h}=a,i=v(x,e),k=c.useRef(null),l=(0,m.useComposedRefs)(d,k,i.onViewportChange);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:g}),(0,b.jsx)(j.Primitive.div,{"data-radix-scroll-area-viewport":"",...h,ref:l,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,b.jsx)("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:f})})]})});y.displayName=x;var z="ScrollAreaScrollbar",A=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=v(z,a.__scopeScrollArea),{onScrollbarXEnabledChange:h,onScrollbarYEnabledChange:i}=g,j="horizontal"===a.orientation;return c.useEffect(()=>(j?h(!0):i(!0),()=>{j?h(!1):i(!1)}),[j,h,i]),"hover"===g.type?(0,b.jsx)(B,{...f,ref:d,forceMount:e}):"scroll"===g.type?(0,b.jsx)(C,{...f,ref:d,forceMount:e}):"auto"===g.type?(0,b.jsx)(D,{...f,ref:d,forceMount:e}):"always"===g.type?(0,b.jsx)(E,{...f,ref:d}):null});A.displayName=z;var B=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=v(z,a.__scopeScrollArea),[h,i]=c.useState(!1);return c.useEffect(()=>{let a=g.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),i(!0)},d=()=>{b=window.setTimeout(()=>i(!1),g.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[g.scrollArea,g.scrollHideDelay]),(0,b.jsx)(k.Presence,{present:e||h,children:(0,b.jsx)(D,{"data-state":h?"visible":"hidden",...f,ref:d})})}),C=c.forwardRef((a,d)=>{var e;let{forceMount:f,...g}=a,h=v(z,a.__scopeScrollArea),i="horizontal"===a.orientation,j=W(()=>m("SCROLL_END"),100),[l,m]=(e={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},c.useReducer((a,b)=>e[a][b]??a,"hidden"));return c.useEffect(()=>{if("idle"===l){let a=window.setTimeout(()=>m("HIDE"),h.scrollHideDelay);return()=>window.clearTimeout(a)}},[l,h.scrollHideDelay,m]),c.useEffect(()=>{let a=h.viewport,b=i?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(m("SCROLL"),j()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[h.viewport,i,m,j]),(0,b.jsx)(k.Presence,{present:f||"hidden"!==l,children:(0,b.jsx)(E,{"data-state":"hidden"===l?"hidden":"visible",...g,ref:d,onPointerEnter:(0,q.composeEventHandlers)(a.onPointerEnter,()=>m("POINTER_ENTER")),onPointerLeave:(0,q.composeEventHandlers)(a.onPointerLeave,()=>m("POINTER_LEAVE"))})})}),D=c.forwardRef((a,d)=>{let e=v(z,a.__scopeScrollArea),{forceMount:f,...g}=a,[h,i]=c.useState(!1),j="horizontal"===a.orientation,l=W(()=>{if(e.viewport){let a=e.viewport.offsetWidth<e.viewport.scrollWidth,b=e.viewport.offsetHeight<e.viewport.scrollHeight;i(j?a:b)}},10);return X(e.viewport,l),X(e.content,l),(0,b.jsx)(k.Presence,{present:f||h,children:(0,b.jsx)(E,{"data-state":h?"visible":"hidden",...g,ref:d})})}),E=c.forwardRef((a,d)=>{let{orientation:e="vertical",...f}=a,g=v(z,a.__scopeScrollArea),h=c.useRef(null),i=c.useRef(0),[j,k]=c.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=R(j.viewport,j.content),m={...f,sizes:j,onSizesChange:k,hasThumb:!!(l>0&&l<1),onThumbChange:a=>h.current=a,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:a=>i.current=a};function n(a,b){return function(a,b,c,d="ltr"){let e=S(c),f=b||e/2,g=c.scrollbar.paddingStart+f,h=c.scrollbar.size-c.scrollbar.paddingEnd-(e-f),i=c.content-c.viewport;return U([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,i.current,j,b)}return"horizontal"===e?(0,b.jsx)(F,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=T(g.viewport.scrollLeft,j,g.dir);h.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollLeft=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollLeft=n(a,g.dir))}}):"vertical"===e?(0,b.jsx)(G,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=T(g.viewport.scrollTop,j);h.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollTop=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollTop=n(a))}}):null}),F=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...g}=a,h=v(z,a.__scopeScrollArea),[i,j]=c.useState(),k=c.useRef(null),l=(0,m.useComposedRefs)(d,k,h.onScrollbarXChange);return c.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,b.jsx)(J,{"data-orientation":"horizontal",...g,ref:l,sizes:e,style:{bottom:0,left:"rtl"===h.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===h.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":S(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollLeft+b.deltaX;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollWidth,viewport:h.viewport.offsetWidth,scrollbar:{size:k.current.clientWidth,paddingStart:Q(i.paddingLeft),paddingEnd:Q(i.paddingRight)}})}})}),G=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...g}=a,h=v(z,a.__scopeScrollArea),[i,j]=c.useState(),k=c.useRef(null),l=(0,m.useComposedRefs)(d,k,h.onScrollbarYChange);return c.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,b.jsx)(J,{"data-orientation":"vertical",...g,ref:l,sizes:e,style:{top:0,right:"ltr"===h.dir?0:void 0,left:"rtl"===h.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":S(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollTop+b.deltaY;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollHeight,viewport:h.viewport.offsetHeight,scrollbar:{size:k.current.clientHeight,paddingStart:Q(i.paddingTop),paddingEnd:Q(i.paddingBottom)}})}})}),[H,I]=s(z),J=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,sizes:f,hasThumb:g,onThumbChange:h,onThumbPointerUp:i,onThumbPointerDown:k,onThumbPositionChange:l,onDragScroll:o,onWheelScroll:p,onResize:r,...s}=a,t=v(z,e),[u,w]=c.useState(null),x=(0,m.useComposedRefs)(d,a=>w(a)),y=c.useRef(null),A=c.useRef(""),B=t.viewport,C=f.content-f.viewport,D=(0,n.useCallbackRef)(p),E=(0,n.useCallbackRef)(l),F=W(r,10);function G(a){y.current&&o({x:a.clientX-y.current.left,y:a.clientY-y.current.top})}return c.useEffect(()=>{let a=a=>{let b=a.target;u?.contains(b)&&D(a,C)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[B,u,C,D]),c.useEffect(E,[f,E]),X(u,F),X(t.content,F),(0,b.jsx)(H,{scope:e,scrollbar:u,hasThumb:g,onThumbChange:(0,n.useCallbackRef)(h),onThumbPointerUp:(0,n.useCallbackRef)(i),onThumbPositionChange:E,onThumbPointerDown:(0,n.useCallbackRef)(k),children:(0,b.jsx)(j.Primitive.div,{...s,ref:x,style:{position:"absolute",...s.style},onPointerDown:(0,q.composeEventHandlers)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),y.current=u.getBoundingClientRect(),A.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",t.viewport&&(t.viewport.style.scrollBehavior="auto"),G(a))}),onPointerMove:(0,q.composeEventHandlers)(a.onPointerMove,G),onPointerUp:(0,q.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=A.current,t.viewport&&(t.viewport.style.scrollBehavior=""),y.current=null})})})}),K="ScrollAreaThumb",L=c.forwardRef((a,c)=>{let{forceMount:d,...e}=a,f=I(K,a.__scopeScrollArea);return(0,b.jsx)(k.Presence,{present:d||f.hasThumb,children:(0,b.jsx)(M,{ref:c,...e})})}),M=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,style:f,...g}=a,h=v(K,e),i=I(K,e),{onThumbPositionChange:k}=i,l=(0,m.useComposedRefs)(d,a=>i.onThumbChange(a)),n=c.useRef(void 0),o=W(()=>{n.current&&(n.current(),n.current=void 0)},100);return c.useEffect(()=>{let a=h.viewport;if(a){let b=()=>{o(),n.current||(n.current=V(a,k),k())};return k(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[h.viewport,o,k]),(0,b.jsx)(j.Primitive.div,{"data-state":i.hasThumb?"visible":"hidden",...g,ref:l,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...f},onPointerDownCapture:(0,q.composeEventHandlers)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;i.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,q.composeEventHandlers)(a.onPointerUp,i.onThumbPointerUp)})});L.displayName=K;var N="ScrollAreaCorner",O=c.forwardRef((a,c)=>{let d=v(N,a.__scopeScrollArea),e=!!(d.scrollbarX&&d.scrollbarY);return"scroll"!==d.type&&e?(0,b.jsx)(P,{...a,ref:c}):null});O.displayName=N;var P=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,...f}=a,g=v(N,e),[h,i]=c.useState(0),[k,l]=c.useState(0),m=!!(h&&k);return X(g.scrollbarX,()=>{let a=g.scrollbarX?.offsetHeight||0;g.onCornerHeightChange(a),l(a)}),X(g.scrollbarY,()=>{let a=g.scrollbarY?.offsetWidth||0;g.onCornerWidthChange(a),i(a)}),m?(0,b.jsx)(j.Primitive.div,{...f,ref:d,style:{width:h,height:k,position:"absolute",right:"ltr"===g.dir?0:void 0,left:"rtl"===g.dir?0:void 0,bottom:0,...a.style}}):null});function Q(a){return a?parseInt(a,10):0}function R(a,b){let c=a/b;return isNaN(c)?0:c}function S(a){let b=R(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function T(a,b,c="ltr"){let d=S(b),e=b.scrollbar.paddingStart+b.scrollbar.paddingEnd,f=b.scrollbar.size-e,g=b.content-b.viewport,h=function(a,[b,c]){return Math.min(c,Math.max(b,a))}(a,"ltr"===c?[0,g]:[-1*g,0]);return U([0,g],[0,f-d])(h)}function U(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}var V=(a,b=()=>{})=>{let c={left:a.scrollLeft,top:a.scrollTop},d=0;return!function e(){let f={left:a.scrollLeft,top:a.scrollTop},g=c.left!==f.left,h=c.top!==f.top;(g||h)&&b(),c=f,d=window.requestAnimationFrame(e)}(),()=>window.cancelAnimationFrame(d)};function W(a,b){let d=(0,n.useCallbackRef)(a),e=c.useRef(0);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),c.useCallback(()=>{window.clearTimeout(e.current),e.current=window.setTimeout(d,b)},[d,b])}function X(a,b){let c=(0,n.useCallbackRef)(b);(0,p.useLayoutEffect)(()=>{let b=0;if(a){let d=new ResizeObserver(()=>{cancelAnimationFrame(b),b=window.requestAnimationFrame(c)});return d.observe(a),()=>{window.cancelAnimationFrame(b),d.unobserve(a)}}},[a,c])}a.s(["Corner",()=>O,"Root",()=>w,"ScrollArea",()=>w,"ScrollAreaCorner",()=>O,"ScrollAreaScrollbar",()=>A,"ScrollAreaThumb",()=>L,"ScrollAreaViewport",()=>y,"Scrollbar",()=>A,"Thumb",()=>L,"Viewport",()=>y,"createScrollAreaScope",()=>t],73942);var Y=a.i(73942),Y=Y,Z=a.i(85536);function $({className:a,children:c,...d}){return(0,b.jsxs)(Y.Root,{"data-slot":"scroll-area",className:(0,Z.cn)("relative",a),...d,children:[(0,b.jsx)(Y.Viewport,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:c}),(0,b.jsx)(_,{}),(0,b.jsx)(Y.Corner,{})]})}function _({className:a,orientation:c="vertical",...d}){return(0,b.jsx)(Y.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:c,className:(0,Z.cn)("flex touch-none p-px transition-colors select-none","vertical"===c&&"h-full w-2.5 border-l border-l-transparent","horizontal"===c&&"h-2.5 flex-col border-t border-t-transparent",a),...d,children:(0,b.jsx)(Y.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}a.i(47938);var aa=a.i(59503);a.i(69345);var ab=a.i(46969);a.i(48822);var ac=a.i(16911);a.i(4388);var ad=a.i(27756);a.i(77466);var ae=a.i(85637);a.i(34338);var af=a.i(54860),ag=a.i(49474);function ah({features:a,onNewFeature:f,onFeatureClick:j,onFeaturesFolderClick:k,onFeaturesMenuClick:l}){let m=(0,e.usePathname)(),{state:n}=(0,d.useSidebar)(),{mounted:o,visible:p}=function(a,b){let[d,e]=(0,c.useState)(!a),[f,g]=(0,c.useState)(!a);return(0,c.useEffect)(()=>{if(!a){e(!0);let a=requestAnimationFrame(()=>g(!0));return()=>cancelAnimationFrame(a)}g(!1);let b=window.setTimeout(()=>e(!1),200);return()=>window.clearTimeout(b)},[a,200]),{mounted:d,visible:f}}("collapsed"===n,0),q=ag.featureStatusOrder.map(b=>{let{label:c}=ag.featureStatusConfig[b],d=a.filter(a=>a.status===b);return{key:b,label:c,items:d}});return(0,b.jsxs)(d.Sidebar,{"data-testid":"app-sidebar",collapsible:"icon",children:[(0,b.jsx)(d.SidebarHeader,{children:(0,b.jsxs)(d.SidebarMenu,{children:[(0,b.jsx)(d.SidebarMenuItem,{children:(0,b.jsxs)("div",{className:"flex h-8 items-center group-data-[collapsible=icon]:justify-center",children:[o?(0,b.jsxs)("div",{className:["flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2 transition-opacity duration-200 ease-out",p?"opacity-100":"opacity-0"].join(" "),"aria-hidden":!p,children:[(0,b.jsx)(ac.ShepLogo,{className:"shrink-0",size:20}),(0,b.jsx)("span",{className:"truncate text-sm font-semibold tracking-tight",children:"Shep"})]}):null,(0,b.jsx)(ab.SidebarCollapseToggle,{className:"shrink-0 transition-all duration-200"})]})}),(0,b.jsx)(aa.SidebarNavItem,{icon:g,label:"Control Center",href:"/",active:"/"===m}),(0,b.jsx)(aa.SidebarNavItem,{icon:h.Wrench,label:"Tools",href:"/tools",active:"/tools"===m})]})}),(0,b.jsx)(d.SidebarContent,{children:o?(0,b.jsxs)("div",{className:["min-w-0 overflow-hidden transition-opacity duration-200 ease-out [&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none",p?"opacity-100":"opacity-0"].join(" "),children:[(0,b.jsx)(af.SidebarSectionHeader,{label:"Features",onFolderClick:k,onMenuClick:l}),(0,b.jsx)($,{children:q.map(({key:a,label:c,items:d})=>d.length>0?(0,b.jsx)(ae.FeatureStatusGroup,{label:c,count:d.length,children:d.map(a=>(0,b.jsx)(ad.FeatureListItem,{name:a.name,status:a.status,startedAt:a.startedAt,duration:a.duration,onClick:j?()=>j(a.name):void 0},a.name))},a):null)})]}):null}),(0,b.jsx)(d.SidebarFooter,{children:(0,b.jsx)(d.SidebarMenu,{children:(0,b.jsx)(d.SidebarMenuItem,{children:(0,b.jsxs)(d.SidebarMenuButton,{onClick:f,tooltip:"New feature",children:[(0,b.jsx)(i.Plus,{}),(0,b.jsx)("span",{children:"New feature"})]})})})}),(0,b.jsx)(d.SidebarRail,{})]})}a.i(65079);var ai=a.i(21080);a.i(20786);var aj=a.i(22550);let ak=(0,f.default)("volume-2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]),al=(0,f.default)("volume-off",[["path",{d:"M16 9a5 5 0 0 1 .95 2.293",key:"1fgyg8"}],["path",{d:"M19.364 5.636a9 9 0 0 1 1.889 9.96",key:"l3zxae"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"m7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11",key:"1gbwow"}],["path",{d:"M9.828 4.172A.686.686 0 0 1 11 4.657v.686",key:"s2je0y"}]]);var am=a.i(18948),an=a.i(2103);function ao(){let{enabled:a,toggle:c}=(0,an.useSoundEnabled)();return(0,b.jsxs)(am.Button,{variant:"ghost",size:"icon",onClick:c,"aria-label":a?"Mute sounds":"Unmute sounds",children:[a?(0,b.jsx)(ak,{className:"h-5 w-5"}):(0,b.jsx)(al,{className:"h-5 w-5"}),(0,b.jsx)("span",{className:"sr-only",children:"Toggle sound"})]})}var ap=a.i(84871),aq=a.i(52313),ar=a.i(46847),as=a.i(24233);let at={[ar.NotificationSeverity.Success]:"success",[ar.NotificationSeverity.Error]:"error",[ar.NotificationSeverity.Warning]:"warning",[ar.NotificationSeverity.Info]:"info"},au={[ar.NotificationSeverity.Success]:"celebration",[ar.NotificationSeverity.Error]:"caution",[ar.NotificationSeverity.Warning]:"notification",[ar.NotificationSeverity.Info]:"button"};function av({children:a}){!function(){let{events:a}=(0,ap.useAgentEventsContext)(),b=(0,as.useSound)("celebration",{volume:.5}),d=(0,as.useSound)("caution",{volume:.5}),e=(0,as.useSound)("notification",{volume:.5}),f=(0,as.useSound)("button",{volume:.5}),g=(0,c.useMemo)(()=>({celebration:b,caution:d,notification:e,button:f}),[b,d,e,f]),[h,i]=(0,c.useState)(()=>void 0===globalThis.Notification?"default":globalThis.Notification.permission),j=(0,c.useRef)(0);(0,c.useEffect)(()=>{if(a.length<=j.current)return;let b=a.slice(j.current);for(let c of(j.current=a.length,b)){if(c.severity!==ar.NotificationSeverity.Error&&c.severity!==ar.NotificationSeverity.Warning&&c.severity!==ar.NotificationSeverity.Success)continue;!function(a){let b=at[a.severity]??"info",c=a.eventType===ar.NotificationEventType.WaitingApproval;aq.toast[b](a.featureName,{description:a.message,...c&&{action:{label:"Review",onClick:()=>{window.dispatchEvent(new CustomEvent("shep:select-feature",{detail:{featureId:a.featureId}}))}}}})}(c),globalThis.Notification?.permission==="granted"&&new Notification(`Shep: ${c.featureName}`,{body:c.message,icon:"/favicon-light.svg"});let a=au[c.severity];g[a]?.play()}},[a,g]),(0,c.useCallback)(async()=>{void 0===globalThis.Notification||i(await globalThis.Notification.requestPermission())},[])}();let e=(0,c.useCallback)(()=>{window.dispatchEvent(new CustomEvent("shep:open-create-drawer"))},[]),f=(0,c.useCallback)(a=>{window.dispatchEvent(new CustomEvent("shep:add-repository",{detail:{path:a}}))},[]);return(0,b.jsxs)(d.SidebarProvider,{children:[(0,b.jsx)(ah,{features:[],onNewFeature:e}),(0,b.jsx)(d.SidebarInset,{children:(0,b.jsxs)("div",{className:"relative h-full",children:[(0,b.jsxs)("div",{className:"absolute top-3 right-3 z-50 flex gap-1",children:[(0,b.jsx)(ai.AddRepositoryButton,{onSelect:f}),(0,b.jsx)(ao,{}),(0,b.jsx)(aj.ThemeToggle,{})]}),(0,b.jsx)("main",{className:"h-full",children:a})]})})]})}function aw({children:a}){return(0,b.jsx)(ap.AgentEventsProvider,{children:(0,b.jsx)(av,{children:a})})}a.s(["AppShell",()=>aw],66560)},73301,a=>{"use strict";var b=a.i(10973),c=a.i(52313);let d=({...a})=>(0,b.jsx)(c.Toaster,{className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...a});a.s(["Toaster",()=>d])}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_components_e599bb8c._.js.map
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--V2579MPjpJ_hqKjPsmMlR--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/a9c2b889c8749a94.js"/><script src="/_next/static/chunks/07f00e2e73d322d2.js" async=""></script><script src="/_next/static/chunks/1887af4ad3781531.js" async=""></script><script src="/_next/static/chunks/cfe4dc9904fcfddb.js" async=""></script><script src="/_next/static/chunks/turbopack-6a11f2f1634ff6e0.js" async=""></script><script src="/_next/static/chunks/ab02eec995295bef.js" async=""></script><script src="/_next/static/chunks/fe70e73feb07bcfd.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
- @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/a9c2b889c8749a94.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[40799,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n3:I[73006,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n4:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"ViewportBoundary\"]\n9:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"MetadataBoundary\"]\nb:I[42726,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"V2579MPjpJ_hqKjPsmMlR\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ab02eec995295bef.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/fe70e73feb07bcfd.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--e7Q45G0MI6cgci9Gn2J_i--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/a9c2b889c8749a94.js"/><script src="/_next/static/chunks/07f00e2e73d322d2.js" async=""></script><script src="/_next/static/chunks/1887af4ad3781531.js" async=""></script><script src="/_next/static/chunks/cfe4dc9904fcfddb.js" async=""></script><script src="/_next/static/chunks/turbopack-6a11f2f1634ff6e0.js" async=""></script><script src="/_next/static/chunks/ab02eec995295bef.js" async=""></script><script src="/_next/static/chunks/fe70e73feb07bcfd.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
+ @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/a9c2b889c8749a94.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[40799,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n3:I[73006,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n4:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"ViewportBoundary\"]\n9:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"MetadataBoundary\"]\nb:I[42726,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"e7Q45G0MI6cgci9Gn2J-i\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ab02eec995295bef.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/fe70e73feb07bcfd.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"60f7f22fb9e333f67ad58167be0c70550f76e3b676\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"approveFeature\",\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\",\n \"exportedName\": \"approveFeature\"\n },\n \"60a4e0164673c8bc1d87ee21164f4f33ed750943c3\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"rejectFeature\",\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\",\n \"exportedName\": \"rejectFeature\"\n },\n \"40e91f55e92f3aab97479c09c043102a587c0e0d0e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"getFeatureArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\",\n \"exportedName\": \"getFeatureArtifact\"\n },\n \"40453c4100e8bb0f9e318bfcfbe9fc0ceb8b75e1f7\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"getResearchArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\",\n \"exportedName\": \"getResearchArtifact\"\n },\n \"00f4eab6722fd6a22f18738f2d411bca6aa771147b\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"getWorkflowDefaults\",\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\",\n \"exportedName\": \"getWorkflowDefaults\"\n },\n \"407199288e8e7d84193f4f001ba5c9e791d68186c3\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"getMergeReviewData\",\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\",\n \"exportedName\": \"getMergeReviewData\"\n },\n \"4048bf9e5685b4e673ea0358836b9d555a599905f5\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"openIde\",\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\",\n \"exportedName\": \"openIde\"\n },\n \"40cafd7014cc8993aba594914b88ec2b4d2a5d6f9a\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"openShell\",\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\",\n \"exportedName\": \"openShell\"\n },\n \"40884a86d5c92522c25faf7a5eba9e8860faab1c9c\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"openFolder\",\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\",\n \"exportedName\": \"openFolder\"\n },\n \"004760a0efa55a18175f4eae285c7666da36f2aaf3\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\",\n \"exportedName\": \"pickFolder\"\n },\n \"400ce58b45c3a6d27dc5430fab6ff5d608fdf9d798\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"createFeature\",\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\",\n \"exportedName\": \"createFeature\"\n },\n \"4012a355d40514d64e25d8821a6467a18a27ed7556\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"deleteFeature\",\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\",\n \"exportedName\": \"deleteFeature\"\n },\n \"408d4d1c0a2f9fde0c18abaf9e2f477d060a65fb31\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"addRepository\",\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\",\n \"exportedName\": \"addRepository\"\n },\n \"400034429aeafce8e2a1fa82e2786c7899d47e2430\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"deleteRepository\",\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\",\n \"exportedName\": \"deleteRepository\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"e/JLE86x7YjRigPGZiByLlNElJs6bEMqHfLqHyWcbUw=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"00343ca416b42620b17391661e0deb38624b0afcd8\": {\n \"workers\": {\n \"app/_not-found/page\": {\n \"moduleId\": 66973,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/tools/page\": {\n \"moduleId\": 19036,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/version/page\": {\n \"moduleId\": 86139,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n }\n },\n \"layer\": {\n \"app/_not-found/page\": \"action-browser\",\n \"app/page\": \"action-browser\",\n \"app/tools/page\": \"action-browser\",\n \"app/version/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\",\n \"exportedName\": \"pickFolder\"\n },\n \"60a1f89db024aaff4db76163fb4bea56de4ad2f948\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"approveFeature\",\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\",\n \"exportedName\": \"approveFeature\"\n },\n \"60f270d7f54e6b3486aa9939630b72350bdd1622c8\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"rejectFeature\",\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\",\n \"exportedName\": \"rejectFeature\"\n },\n \"405a7e3511bfb12ad6d0e1f7df78cc2a07dd8d678f\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getFeatureArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\",\n \"exportedName\": \"getFeatureArtifact\"\n },\n \"408723fcd83dcea454c6f0f025d432f281794cb054\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getResearchArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\",\n \"exportedName\": \"getResearchArtifact\"\n },\n \"0015bdeba5110e7ebfd964fa721abfbc48cbd50b95\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getWorkflowDefaults\",\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\",\n \"exportedName\": \"getWorkflowDefaults\"\n },\n \"404df429ae559551c0316de4bc5c6fc123fbe89789\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"getMergeReviewData\",\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\",\n \"exportedName\": \"getMergeReviewData\"\n },\n \"406dc69a1ddf3a973603af051e75e8e179c64e49f6\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openIde\",\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\",\n \"exportedName\": \"openIde\"\n },\n \"40739ece751c3a8c4385129522c9af1b9562e6a10d\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openShell\",\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\",\n \"exportedName\": \"openShell\"\n },\n \"40c491a6c3a66efc0f2eb3ba53d58501688ce71de4\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"openFolder\",\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\",\n \"exportedName\": \"openFolder\"\n },\n \"40c773c67f565ba00c0d137d4882705d7141e5377c\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"createFeature\",\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\",\n \"exportedName\": \"createFeature\"\n },\n \"40a768ab7d37194222a118ad5a3c6e6bd19351c51d\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"deleteFeature\",\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\",\n \"exportedName\": \"deleteFeature\"\n },\n \"406d8ada637b9f71094821d4346f34d2f6cb99e549\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"addRepository\",\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\",\n \"exportedName\": \"addRepository\"\n },\n \"40ec664b7d0c35e0c7214b95f2482016f19e6ba64a\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 16555,\n \"async\": false,\n \"exportedName\": \"deleteRepository\",\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\",\n \"exportedName\": \"deleteRepository\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"yvx55vY3l69x6O4YIc/sn9ayoAvfB52b3TOfIFcbaZY=\"\n}"
@@ -1,9 +1,45 @@
1
1
  {
2
2
  "node": {
3
- "60f7f22fb9e333f67ad58167be0c70550f76e3b676": {
3
+ "00343ca416b42620b17391661e0deb38624b0afcd8": {
4
+ "workers": {
5
+ "app/_not-found/page": {
6
+ "moduleId": 66973,
7
+ "async": false,
8
+ "exportedName": "pickFolder",
9
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
10
+ },
11
+ "app/page": {
12
+ "moduleId": 16555,
13
+ "async": false,
14
+ "exportedName": "pickFolder",
15
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
16
+ },
17
+ "app/tools/page": {
18
+ "moduleId": 19036,
19
+ "async": false,
20
+ "exportedName": "pickFolder",
21
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
22
+ },
23
+ "app/version/page": {
24
+ "moduleId": 86139,
25
+ "async": false,
26
+ "exportedName": "pickFolder",
27
+ "filename": "src/presentation/web/app/actions/pick-folder.ts"
28
+ }
29
+ },
30
+ "layer": {
31
+ "app/_not-found/page": "action-browser",
32
+ "app/page": "action-browser",
33
+ "app/tools/page": "action-browser",
34
+ "app/version/page": "action-browser"
35
+ },
36
+ "filename": "src/presentation/web/app/actions/pick-folder.ts",
37
+ "exportedName": "pickFolder"
38
+ },
39
+ "60a1f89db024aaff4db76163fb4bea56de4ad2f948": {
4
40
  "workers": {
5
41
  "app/page": {
6
- "moduleId": 4510,
42
+ "moduleId": 16555,
7
43
  "async": false,
8
44
  "exportedName": "approveFeature",
9
45
  "filename": "src/presentation/web/app/actions/approve-feature.ts"
@@ -15,10 +51,10 @@
15
51
  "filename": "src/presentation/web/app/actions/approve-feature.ts",
16
52
  "exportedName": "approveFeature"
17
53
  },
18
- "60a4e0164673c8bc1d87ee21164f4f33ed750943c3": {
54
+ "60f270d7f54e6b3486aa9939630b72350bdd1622c8": {
19
55
  "workers": {
20
56
  "app/page": {
21
- "moduleId": 4510,
57
+ "moduleId": 16555,
22
58
  "async": false,
23
59
  "exportedName": "rejectFeature",
24
60
  "filename": "src/presentation/web/app/actions/reject-feature.ts"
@@ -30,10 +66,10 @@
30
66
  "filename": "src/presentation/web/app/actions/reject-feature.ts",
31
67
  "exportedName": "rejectFeature"
32
68
  },
33
- "40e91f55e92f3aab97479c09c043102a587c0e0d0e": {
69
+ "405a7e3511bfb12ad6d0e1f7df78cc2a07dd8d678f": {
34
70
  "workers": {
35
71
  "app/page": {
36
- "moduleId": 4510,
72
+ "moduleId": 16555,
37
73
  "async": false,
38
74
  "exportedName": "getFeatureArtifact",
39
75
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts"
@@ -45,10 +81,10 @@
45
81
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts",
46
82
  "exportedName": "getFeatureArtifact"
47
83
  },
48
- "40453c4100e8bb0f9e318bfcfbe9fc0ceb8b75e1f7": {
84
+ "408723fcd83dcea454c6f0f025d432f281794cb054": {
49
85
  "workers": {
50
86
  "app/page": {
51
- "moduleId": 4510,
87
+ "moduleId": 16555,
52
88
  "async": false,
53
89
  "exportedName": "getResearchArtifact",
54
90
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts"
@@ -60,10 +96,10 @@
60
96
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts",
61
97
  "exportedName": "getResearchArtifact"
62
98
  },
63
- "00f4eab6722fd6a22f18738f2d411bca6aa771147b": {
99
+ "0015bdeba5110e7ebfd964fa721abfbc48cbd50b95": {
64
100
  "workers": {
65
101
  "app/page": {
66
- "moduleId": 4510,
102
+ "moduleId": 16555,
67
103
  "async": false,
68
104
  "exportedName": "getWorkflowDefaults",
69
105
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts"
@@ -75,10 +111,10 @@
75
111
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts",
76
112
  "exportedName": "getWorkflowDefaults"
77
113
  },
78
- "407199288e8e7d84193f4f001ba5c9e791d68186c3": {
114
+ "404df429ae559551c0316de4bc5c6fc123fbe89789": {
79
115
  "workers": {
80
116
  "app/page": {
81
- "moduleId": 4510,
117
+ "moduleId": 16555,
82
118
  "async": false,
83
119
  "exportedName": "getMergeReviewData",
84
120
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts"
@@ -90,10 +126,10 @@
90
126
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts",
91
127
  "exportedName": "getMergeReviewData"
92
128
  },
93
- "4048bf9e5685b4e673ea0358836b9d555a599905f5": {
129
+ "406dc69a1ddf3a973603af051e75e8e179c64e49f6": {
94
130
  "workers": {
95
131
  "app/page": {
96
- "moduleId": 4510,
132
+ "moduleId": 16555,
97
133
  "async": false,
98
134
  "exportedName": "openIde",
99
135
  "filename": "src/presentation/web/app/actions/open-ide.ts"
@@ -105,10 +141,10 @@
105
141
  "filename": "src/presentation/web/app/actions/open-ide.ts",
106
142
  "exportedName": "openIde"
107
143
  },
108
- "40cafd7014cc8993aba594914b88ec2b4d2a5d6f9a": {
144
+ "40739ece751c3a8c4385129522c9af1b9562e6a10d": {
109
145
  "workers": {
110
146
  "app/page": {
111
- "moduleId": 4510,
147
+ "moduleId": 16555,
112
148
  "async": false,
113
149
  "exportedName": "openShell",
114
150
  "filename": "src/presentation/web/app/actions/open-shell.ts"
@@ -120,10 +156,10 @@
120
156
  "filename": "src/presentation/web/app/actions/open-shell.ts",
121
157
  "exportedName": "openShell"
122
158
  },
123
- "40884a86d5c92522c25faf7a5eba9e8860faab1c9c": {
159
+ "40c491a6c3a66efc0f2eb3ba53d58501688ce71de4": {
124
160
  "workers": {
125
161
  "app/page": {
126
- "moduleId": 4510,
162
+ "moduleId": 16555,
127
163
  "async": false,
128
164
  "exportedName": "openFolder",
129
165
  "filename": "src/presentation/web/app/actions/open-folder.ts"
@@ -135,25 +171,10 @@
135
171
  "filename": "src/presentation/web/app/actions/open-folder.ts",
136
172
  "exportedName": "openFolder"
137
173
  },
138
- "004760a0efa55a18175f4eae285c7666da36f2aaf3": {
139
- "workers": {
140
- "app/page": {
141
- "moduleId": 4510,
142
- "async": false,
143
- "exportedName": "pickFolder",
144
- "filename": "src/presentation/web/app/actions/pick-folder.ts"
145
- }
146
- },
147
- "layer": {
148
- "app/page": "action-browser"
149
- },
150
- "filename": "src/presentation/web/app/actions/pick-folder.ts",
151
- "exportedName": "pickFolder"
152
- },
153
- "400ce58b45c3a6d27dc5430fab6ff5d608fdf9d798": {
174
+ "40c773c67f565ba00c0d137d4882705d7141e5377c": {
154
175
  "workers": {
155
176
  "app/page": {
156
- "moduleId": 4510,
177
+ "moduleId": 16555,
157
178
  "async": false,
158
179
  "exportedName": "createFeature",
159
180
  "filename": "src/presentation/web/app/actions/create-feature.ts"
@@ -165,10 +186,10 @@
165
186
  "filename": "src/presentation/web/app/actions/create-feature.ts",
166
187
  "exportedName": "createFeature"
167
188
  },
168
- "4012a355d40514d64e25d8821a6467a18a27ed7556": {
189
+ "40a768ab7d37194222a118ad5a3c6e6bd19351c51d": {
169
190
  "workers": {
170
191
  "app/page": {
171
- "moduleId": 4510,
192
+ "moduleId": 16555,
172
193
  "async": false,
173
194
  "exportedName": "deleteFeature",
174
195
  "filename": "src/presentation/web/app/actions/delete-feature.ts"
@@ -180,10 +201,10 @@
180
201
  "filename": "src/presentation/web/app/actions/delete-feature.ts",
181
202
  "exportedName": "deleteFeature"
182
203
  },
183
- "408d4d1c0a2f9fde0c18abaf9e2f477d060a65fb31": {
204
+ "406d8ada637b9f71094821d4346f34d2f6cb99e549": {
184
205
  "workers": {
185
206
  "app/page": {
186
- "moduleId": 4510,
207
+ "moduleId": 16555,
187
208
  "async": false,
188
209
  "exportedName": "addRepository",
189
210
  "filename": "src/presentation/web/app/actions/add-repository.ts"
@@ -195,10 +216,10 @@
195
216
  "filename": "src/presentation/web/app/actions/add-repository.ts",
196
217
  "exportedName": "addRepository"
197
218
  },
198
- "400034429aeafce8e2a1fa82e2786c7899d47e2430": {
219
+ "40ec664b7d0c35e0c7214b95f2482016f19e6ba64a": {
199
220
  "workers": {
200
221
  "app/page": {
201
- "moduleId": 4510,
222
+ "moduleId": 16555,
202
223
  "async": false,
203
224
  "exportedName": "deleteRepository",
204
225
  "filename": "src/presentation/web/app/actions/delete-repository.ts"
@@ -212,5 +233,5 @@
212
233
  }
213
234
  },
214
235
  "edge": {},
215
- "encryptionKey": "e/JLE86x7YjRigPGZiByLlNElJs6bEMqHfLqHyWcbUw="
236
+ "encryptionKey": "yvx55vY3l69x6O4YIc/sn9ayoAvfB52b3TOfIFcbaZY="
216
237
  }
@@ -1,7 +1,9 @@
1
1
  'use client';
2
2
 
3
3
  import { useState } from 'react';
4
- import { Plus, Loader2 } from 'lucide-react';
4
+ import { FolderPlus, Loader2 } from 'lucide-react';
5
+ import { Button } from '@/components/ui/button';
6
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
5
7
  import { pickFolder } from './pick-folder';
6
8
 
7
9
  interface AddRepositoryButtonProps {
@@ -25,19 +27,26 @@ export function AddRepositoryButton({ onSelect }: AddRepositoryButtonProps) {
25
27
  }
26
28
 
27
29
  return (
28
- <button
29
- type="button"
30
- data-testid="add-repository-button"
31
- onClick={handleClick}
32
- disabled={loading}
33
- className="border-muted-foreground/30 flex cursor-pointer items-center gap-2 rounded-full border-2 border-dashed px-3 py-1.5 text-xs transition-colors hover:border-blue-500 hover:text-blue-500 disabled:cursor-wait disabled:opacity-60"
34
- >
35
- {loading ? (
36
- <Loader2 className="h-3.5 w-3.5 shrink-0 animate-spin" />
37
- ) : (
38
- <Plus className="h-3.5 w-3.5 shrink-0" />
39
- )}
40
- <span className="font-medium">{loading ? 'Opening...' : 'Add Repository'}</span>
41
- </button>
30
+ <TooltipProvider>
31
+ <Tooltip>
32
+ <TooltipTrigger asChild>
33
+ <Button
34
+ variant="ghost"
35
+ size="icon"
36
+ aria-label="Add Repository"
37
+ data-testid="add-repository-button"
38
+ onClick={handleClick}
39
+ disabled={loading}
40
+ >
41
+ {loading ? (
42
+ <Loader2 className="h-5 w-5 animate-spin" />
43
+ ) : (
44
+ <FolderPlus className="h-5 w-5" />
45
+ )}
46
+ </Button>
47
+ </TooltipTrigger>
48
+ <TooltipContent>Add Repository</TooltipContent>
49
+ </Tooltip>
50
+ </TooltipProvider>
42
51
  );
43
52
  }
@@ -2,6 +2,7 @@ import { useMemo } from 'react';
2
2
  import type { Meta, StoryObj } from '@storybook/react';
3
3
  import { ReactFlowProvider, ReactFlow } from '@xyflow/react';
4
4
  import { AddRepositoryNode } from './add-repository-node';
5
+ import { AddRepositoryButton } from './add-repository-button';
5
6
  import type { AddRepositoryNodeData, AddRepositoryNodeType } from './add-repository-node-config';
6
7
 
7
8
  const nodeTypes = { addRepositoryNode: AddRepositoryNode };
@@ -56,3 +57,14 @@ export const WithCallback: Story = {
56
57
  },
57
58
  render: (args) => <AddRepositoryNodeCanvas data={args} />,
58
59
  };
60
+
61
+ // --- Add Repository Button (top bar icon) stories ---
62
+
63
+ /** Add Repository button as it appears in the top bar alongside other toggles */
64
+ export const TopBarButton: StoryObj = {
65
+ render: () => (
66
+ <div className="flex gap-1">
67
+ <AddRepositoryButton onSelect={() => undefined} />
68
+ </div>
69
+ ),
70
+ };
@@ -329,6 +329,16 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
329
329
  return () => window.removeEventListener('shep:open-create-drawer', handler);
330
330
  }, [handleAddFeature]);
331
331
 
332
+ // Listen for global "add repository" events from the top bar button
333
+ useEffect(() => {
334
+ const handler = (e: Event) => {
335
+ const path = (e as CustomEvent<{ path: string }>).detail.path;
336
+ handleAddRepository(path);
337
+ };
338
+ window.addEventListener('shep:add-repository', handler);
339
+ return () => window.removeEventListener('shep:add-repository', handler);
340
+ }, [handleAddRepository]);
341
+
332
342
  // Listen for notification "Review" clicks to open the relevant drawer
333
343
  useEffect(() => {
334
344
  const handler = (e: Event) => {
@@ -608,44 +608,3 @@ export const InteractiveWithRepository: Story = {
608
608
  onRepositoryAdd: () => undefined,
609
609
  },
610
610
  };
611
-
612
- // Story to visually verify the Add Repository button does not overlap the ThemeToggle.
613
- // The simulated ThemeToggle (top-3 right-3, 40×40 px) is rendered as an overlay so
614
- // reviewers can confirm the mr-16 (64 px) gap keeps the Panel clear of the toggle zone.
615
- export const AddRepositoryButtonClearanceCheck: Story = {
616
- decorators: [
617
- (Story) => (
618
- <div style={{ height: '100vh', position: 'relative' }}>
619
- <Story />
620
- {/* Simulated ThemeToggle at top-3 right-3 (same position as AppShell) */}
621
- <div
622
- style={{
623
- position: 'absolute',
624
- top: 12,
625
- right: 12,
626
- width: 40,
627
- height: 40,
628
- background: 'rgba(255, 0, 0, 0.35)',
629
- border: '2px dashed red',
630
- borderRadius: 6,
631
- display: 'flex',
632
- alignItems: 'center',
633
- justifyContent: 'center',
634
- fontSize: 10,
635
- pointerEvents: 'none',
636
- zIndex: 50,
637
- }}
638
- >
639
- Theme
640
- </div>
641
- </div>
642
- ),
643
- ],
644
- args: {
645
- nodes: repoFeatureNodes,
646
- edges: repoFeatureEdges,
647
- onNodeAction: () => undefined,
648
- onNodeSettings: () => undefined,
649
- onRepositorySelect: () => undefined,
650
- },
651
- };
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { useCallback, useMemo } from 'react';
4
- import { ReactFlow, Background, Controls, Panel, ReactFlowProvider } from '@xyflow/react';
4
+ import { ReactFlow, Background, Controls, ReactFlowProvider } from '@xyflow/react';
5
5
  import type { Connection, Edge, NodeChange } from '@xyflow/react';
6
6
  import { Plus } from 'lucide-react';
7
7
  import { Button } from '@/components/ui/button';
@@ -10,7 +10,7 @@ import { FeatureNode } from '@/components/common/feature-node';
10
10
  import type { FeatureNodeType, FeatureNodeData } from '@/components/common/feature-node';
11
11
  import { RepositoryNode } from '@/components/common/repository-node';
12
12
  import type { RepositoryNodeType } from '@/components/common/repository-node';
13
- import { AddRepositoryButton, AddRepositoryNode } from '@/components/common/add-repository-node';
13
+ import { AddRepositoryNode } from '@/components/common/add-repository-node';
14
14
  import type { AddRepositoryNodeType } from '@/components/common/add-repository-node';
15
15
  import { DependencyEdge } from './dependency-edge';
16
16
 
@@ -158,11 +158,6 @@ export function FeaturesCanvas({
158
158
  >
159
159
  <Background />
160
160
  <Controls />
161
- {onRepositorySelect ? (
162
- <Panel position="top-right" className="mr-16">
163
- <AddRepositoryButton onSelect={onRepositorySelect} />
164
- </Panel>
165
- ) : null}
166
161
  {toolbar}
167
162
  </ReactFlow>
168
163
  </ReactFlowProvider>
@@ -3,6 +3,7 @@
3
3
  import { useCallback, type ReactNode } from 'react';
4
4
  import { SidebarProvider, SidebarInset } from '@/components/ui/sidebar';
5
5
  import { AppSidebar } from '@/components/layouts/app-sidebar';
6
+ import { AddRepositoryButton } from '@/components/common/add-repository-node';
6
7
  import { ThemeToggle } from '@/components/common/theme-toggle';
7
8
  import { SoundToggle } from '@/components/common/sound-toggle';
8
9
  import { AgentEventsProvider } from '@/hooks/agent-events-provider';
@@ -21,12 +22,17 @@ function AppShellInner({ children }: AppShellProps) {
21
22
  window.dispatchEvent(new CustomEvent('shep:open-create-drawer'));
22
23
  }, []);
23
24
 
25
+ const handleRepositorySelect = useCallback((path: string) => {
26
+ window.dispatchEvent(new CustomEvent('shep:add-repository', { detail: { path } }));
27
+ }, []);
28
+
24
29
  return (
25
30
  <SidebarProvider>
26
31
  <AppSidebar features={[]} onNewFeature={handleNewFeature} />
27
32
  <SidebarInset>
28
33
  <div className="relative h-full">
29
34
  <div className="absolute top-3 right-3 z-50 flex gap-1">
35
+ <AddRepositoryButton onSelect={handleRepositorySelect} />
30
36
  <SoundToggle />
31
37
  <ThemeToggle />
32
38
  </div>