@shepai/cli 1.37.2 → 1.38.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 (532) hide show
  1. package/README.md +1 -1
  2. package/dist/packages/core/src/application/use-cases/features/get-feature-artifact.use-case.d.ts +19 -0
  3. package/dist/packages/core/src/application/use-cases/features/get-feature-artifact.use-case.d.ts.map +1 -0
  4. package/dist/packages/core/src/application/use-cases/features/get-feature-artifact.use-case.js +52 -0
  5. package/dist/packages/core/src/application/use-cases/features/get-research-artifact.use-case.d.ts +19 -0
  6. package/dist/packages/core/src/application/use-cases/features/get-research-artifact.use-case.d.ts.map +1 -0
  7. package/dist/packages/core/src/application/use-cases/features/get-research-artifact.use-case.js +52 -0
  8. package/dist/packages/core/src/domain/factories/spec-yaml-parser.d.ts.map +1 -1
  9. package/dist/packages/core/src/domain/factories/spec-yaml-parser.js +3 -1
  10. package/dist/packages/core/src/domain/generated/output.d.ts +84 -0
  11. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/di/container.js +14 -2
  14. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.js +27 -3
  16. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.d.ts.map +1 -1
  17. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.js +14 -1
  18. package/dist/packages/core/src/infrastructure/services/notifications/notification-bus.d.ts +2 -17
  19. package/dist/packages/core/src/infrastructure/services/notifications/notification-bus.d.ts.map +1 -1
  20. package/dist/packages/core/src/infrastructure/services/notifications/notification-bus.js +3 -27
  21. package/dist/src/presentation/cli/commands/feat/show.command.js +2 -2
  22. package/dist/src/presentation/web/app/actions/approve-feature.d.ts +5 -0
  23. package/dist/src/presentation/web/app/actions/approve-feature.d.ts.map +1 -0
  24. package/dist/src/presentation/web/app/actions/approve-feature.js +27 -0
  25. package/dist/src/presentation/web/app/actions/create-feature.d.ts +22 -0
  26. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -0
  27. package/dist/src/presentation/web/app/actions/create-feature.js +41 -0
  28. package/dist/src/presentation/web/app/actions/delete-feature.d.ts +6 -0
  29. package/dist/src/presentation/web/app/actions/delete-feature.d.ts.map +1 -0
  30. package/dist/src/presentation/web/app/actions/delete-feature.js +16 -0
  31. package/dist/src/presentation/web/app/actions/get-feature-artifact.d.ts +10 -0
  32. package/dist/src/presentation/web/app/actions/get-feature-artifact.d.ts.map +1 -0
  33. package/dist/src/presentation/web/app/actions/get-feature-artifact.js +43 -0
  34. package/dist/src/presentation/web/app/actions/get-research-artifact.d.ts +14 -0
  35. package/dist/src/presentation/web/app/actions/get-research-artifact.d.ts.map +1 -0
  36. package/dist/src/presentation/web/app/actions/get-research-artifact.js +25 -0
  37. package/dist/src/presentation/web/app/actions/open-folder.d.ts +6 -0
  38. package/dist/src/presentation/web/app/actions/open-folder.d.ts.map +1 -0
  39. package/dist/src/presentation/web/app/actions/open-folder.js +39 -0
  40. package/dist/src/presentation/web/app/actions/open-ide.d.ts +12 -0
  41. package/dist/src/presentation/web/app/actions/open-ide.d.ts.map +1 -0
  42. package/dist/src/presentation/web/app/actions/open-ide.js +22 -0
  43. package/dist/src/presentation/web/app/actions/open-shell.d.ts +12 -0
  44. package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -0
  45. package/dist/src/presentation/web/app/actions/open-shell.js +45 -0
  46. package/dist/src/presentation/web/app/actions/pick-folder.d.ts +5 -0
  47. package/dist/src/presentation/web/app/actions/pick-folder.d.ts.map +1 -0
  48. package/dist/src/presentation/web/app/actions/pick-folder.js +13 -0
  49. package/dist/src/presentation/web/app/api/agent-events/route.d.ts +1 -1
  50. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  51. package/dist/src/presentation/web/app/api/agent-events/route.js +2 -9
  52. package/dist/src/presentation/web/app/api/dialog/pick-files/route.d.ts +1 -9
  53. package/dist/src/presentation/web/app/api/dialog/pick-files/route.d.ts.map +1 -1
  54. package/dist/src/presentation/web/app/api/dialog/pick-files/route.js +3 -6
  55. package/dist/src/presentation/web/app/page.d.ts.map +1 -1
  56. package/dist/src/presentation/web/app/page.js +1 -0
  57. package/dist/src/presentation/web/components/common/add-repository-node/pick-folder.d.ts +1 -1
  58. package/dist/src/presentation/web/components/common/add-repository-node/pick-folder.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/common/add-repository-node/pick-folder.js +6 -7
  60. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -1
  61. package/dist/src/presentation/web/components/common/feature-create-drawer/pick-files.d.ts +1 -1
  62. package/dist/src/presentation/web/components/common/feature-create-drawer/pick-files.d.ts.map +1 -1
  63. package/dist/src/presentation/web/components/common/feature-create-drawer/pick-files.js +6 -7
  64. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
  65. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +7 -7
  66. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +4 -0
  67. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +52 -14
  69. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts.map +1 -1
  70. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.js +2 -2
  71. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +2 -0
  72. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  73. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  74. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +33 -2
  75. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
  76. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +10 -0
  77. package/dist/src/presentation/web/components/common/index.d.ts +3 -0
  78. package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
  79. package/dist/src/presentation/web/components/common/index.js +3 -0
  80. package/dist/src/presentation/web/components/common/notification-permission-banner/index.d.ts +2 -0
  81. package/dist/src/presentation/web/components/common/notification-permission-banner/index.d.ts.map +1 -0
  82. package/dist/src/presentation/web/components/common/notification-permission-banner/index.js +1 -0
  83. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.d.ts +2 -0
  84. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.d.ts.map +1 -0
  85. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.js +33 -0
  86. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.d.ts +6 -0
  87. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.d.ts.map +1 -0
  88. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.js +24 -0
  89. package/dist/src/presentation/web/components/common/open-action-menu/config.d.ts +10 -0
  90. package/dist/src/presentation/web/components/common/open-action-menu/config.d.ts.map +1 -0
  91. package/dist/src/presentation/web/components/common/open-action-menu/config.js +1 -0
  92. package/dist/src/presentation/web/components/common/open-action-menu/index.d.ts +3 -0
  93. package/dist/src/presentation/web/components/common/open-action-menu/index.d.ts.map +1 -0
  94. package/dist/src/presentation/web/components/common/open-action-menu/index.js +1 -0
  95. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.d.ts +3 -0
  96. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.d.ts.map +1 -0
  97. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.js +18 -0
  98. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts +14 -0
  99. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts.map +1 -0
  100. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.js +54 -0
  101. package/dist/src/presentation/web/components/common/prd-questionnaire/index.d.ts +4 -0
  102. package/dist/src/presentation/web/components/common/prd-questionnaire/index.d.ts.map +1 -0
  103. package/dist/src/presentation/web/components/common/prd-questionnaire/index.js +2 -0
  104. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-config.d.ts +41 -0
  105. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-config.d.ts.map +1 -0
  106. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-config.js +1 -0
  107. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-drawer.d.ts +3 -0
  108. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-drawer.d.ts.map +1 -0
  109. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-drawer.js +7 -0
  110. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.d.ts +3 -0
  111. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.d.ts.map +1 -0
  112. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +42 -0
  113. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts +26 -0
  114. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts.map +1 -0
  115. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.js +267 -0
  116. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  117. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +2 -2
  118. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts +3 -0
  119. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
  120. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +51 -14
  121. package/dist/src/presentation/web/components/common/review-drawer-shell/index.d.ts +3 -0
  122. package/dist/src/presentation/web/components/common/review-drawer-shell/index.d.ts.map +1 -0
  123. package/dist/src/presentation/web/components/common/review-drawer-shell/index.js +1 -0
  124. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell-config.d.ts +24 -0
  125. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell-config.d.ts.map +1 -0
  126. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell-config.js +1 -0
  127. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.d.ts +3 -0
  128. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.d.ts.map +1 -0
  129. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.js +17 -0
  130. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.stories.d.ts +14 -0
  131. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.stories.d.ts.map +1 -0
  132. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.stories.js +33 -0
  133. package/dist/src/presentation/web/components/common/tech-decisions-review/index.d.ts +4 -0
  134. package/dist/src/presentation/web/components/common/tech-decisions-review/index.d.ts.map +1 -0
  135. package/dist/src/presentation/web/components/common/tech-decisions-review/index.js +2 -0
  136. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-drawer.d.ts +3 -0
  137. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-drawer.d.ts.map +1 -0
  138. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-drawer.js +7 -0
  139. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review-config.d.ts +39 -0
  140. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review-config.d.ts.map +1 -0
  141. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review-config.js +1 -0
  142. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts +3 -0
  143. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts.map +1 -0
  144. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +39 -0
  145. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts +22 -0
  146. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts.map +1 -0
  147. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.js +108 -0
  148. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  149. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +133 -2
  150. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  151. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +28 -19
  152. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  153. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +6 -1
  154. package/dist/src/presentation/web/components/ui/drawer.d.ts.map +1 -1
  155. package/dist/src/presentation/web/components/ui/drawer.js +3 -1
  156. package/dist/src/presentation/web/components/ui/dropdown-menu.d.ts +28 -0
  157. package/dist/src/presentation/web/components/ui/dropdown-menu.d.ts.map +1 -0
  158. package/dist/src/presentation/web/components/ui/dropdown-menu.js +33 -0
  159. package/dist/src/presentation/web/hooks/agent-events-provider.d.ts +13 -0
  160. package/dist/src/presentation/web/hooks/agent-events-provider.d.ts.map +1 -0
  161. package/dist/src/presentation/web/hooks/agent-events-provider.js +20 -0
  162. package/dist/src/presentation/web/hooks/use-agent-events.d.ts.map +1 -1
  163. package/dist/src/presentation/web/hooks/use-agent-events.js +21 -1
  164. package/dist/src/presentation/web/hooks/use-notifications.d.ts +1 -5
  165. package/dist/src/presentation/web/hooks/use-notifications.d.ts.map +1 -1
  166. package/dist/src/presentation/web/hooks/use-notifications.js +5 -10
  167. package/dist/src/presentation/web/next.config.d.ts.map +1 -1
  168. package/dist/src/presentation/web/next.config.js +5 -0
  169. package/dist/tsconfig.build.tsbuildinfo +1 -1
  170. package/package.json +2 -1
  171. package/web/.next/BUILD_ID +1 -1
  172. package/web/.next/app-path-routes-manifest.json +0 -5
  173. package/web/.next/build-manifest.json +6 -6
  174. package/web/.next/cache/.previewinfo +1 -1
  175. package/web/.next/cache/.rscinfo +1 -1
  176. package/web/.next/cache/.tsbuildinfo +1 -1
  177. package/web/.next/cache/config.json +3 -3
  178. package/web/.next/fallback-build-manifest.json +2 -2
  179. package/web/.next/prerender-manifest.json +3 -3
  180. package/web/.next/required-server-files.js +4 -4
  181. package/web/.next/required-server-files.json +4 -4
  182. package/web/.next/routes-manifest.json +1 -34
  183. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  184. package/web/.next/server/app/_global-error/page.js +1 -1
  185. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  186. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  187. package/web/.next/server/app/_global-error.html +2 -2
  188. package/web/.next/server/app/_global-error.rsc +7 -7
  189. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  190. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  191. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  192. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  193. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  194. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  195. package/web/.next/server/app/_not-found/page.js +1 -1
  196. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  197. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  198. package/web/.next/server/app/api/agent-events/route.js +1 -1
  199. package/web/.next/server/app/api/agent-events/route.js.nft.json +1 -1
  200. package/web/.next/server/app/api/dialog/pick-files/route.js +2 -2
  201. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  202. package/web/.next/server/app/page/build-manifest.json +4 -4
  203. package/web/.next/server/app/page/server-reference-manifest.json +137 -1
  204. package/web/.next/server/app/page.js +2 -2
  205. package/web/.next/server/app/page.js.nft.json +1 -1
  206. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  207. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  208. package/web/.next/server/app/version/page.js +1 -1
  209. package/web/.next/server/app/version/page.js.nft.json +1 -1
  210. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  211. package/web/.next/server/app-paths-manifest.json +0 -5
  212. package/web/.next/server/chunks/{403f9_next_567de315._.js → 403f9_next_435614de._.js} +7 -6
  213. package/web/.next/server/chunks/403f9_next_435614de._.js.map +1 -0
  214. package/web/.next/server/chunks/[externals]__ba6223e5._.js +3 -0
  215. package/web/.next/server/chunks/[root-of-the-server]__7d5c8b74._.js +6 -0
  216. package/web/.next/server/chunks/[root-of-the-server]__7d5c8b74._.js.map +1 -0
  217. package/web/.next/server/chunks/ssr/[externals]_node:path_d28a9bfe._.js +3 -0
  218. package/web/.next/server/chunks/ssr/[root-of-the-server]__03a0dba7._.js +12 -0
  219. package/web/.next/server/chunks/ssr/[root-of-the-server]__03a0dba7._.js.map +1 -0
  220. package/web/.next/server/chunks/ssr/[root-of-the-server]__19354aea._.js +9 -0
  221. package/web/.next/server/chunks/ssr/[root-of-the-server]__19354aea._.js.map +1 -0
  222. package/web/.next/server/chunks/ssr/{[root-of-the-server]__685eaa45._.js → [root-of-the-server]__32472b89._.js} +2 -2
  223. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a21ef212._.js → [root-of-the-server]__d21f0894._.js} +2 -2
  224. package/web/.next/server/chunks/ssr/[root-of-the-server]__d21f0894._.js.map +1 -0
  225. package/web/.next/server/chunks/ssr/[root-of-the-server]__e1c44885._.js +3 -0
  226. package/web/.next/server/chunks/ssr/[root-of-the-server]__f12b60be._.js +1 -1
  227. package/web/.next/server/chunks/ssr/[root-of-the-server]__f47a461b._.js +3 -0
  228. package/web/.next/server/chunks/ssr/_285de9aa._.js +3 -0
  229. package/web/.next/server/chunks/ssr/_285de9aa._.js.map +1 -0
  230. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_94d22d37._.js → server/chunks/ssr/_b1f2507a._.js} +4 -4
  231. package/web/.next/server/chunks/ssr/_b1f2507a._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_version_version-page-client_tsx_fe9db753._.js +1 -1
  233. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_version_version-page-client_tsx_fe9db753._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  235. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_badge_tsx_964c2a3b._.js +1 -1
  237. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_badge_tsx_964c2a3b._.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
  239. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js.map +1 -1
  240. package/web/.next/server/middleware-build-manifest.js +4 -4
  241. package/web/.next/server/pages/500.html +2 -2
  242. package/web/.next/server/server-reference-manifest.js +1 -1
  243. package/web/.next/server/server-reference-manifest.json +138 -2
  244. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  245. package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +0 -5
  246. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +6 -6
  247. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  248. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +4 -4
  249. package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +1 -34
  250. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  251. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js +1 -1
  252. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  253. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  254. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  255. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +7 -7
  256. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  257. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  258. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  259. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  260. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  261. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  262. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js +1 -1
  263. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  264. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  265. package/web/.next/standalone/src/presentation/web/.next/server/app/api/agent-events/route.js +1 -1
  266. package/web/.next/standalone/src/presentation/web/.next/server/app/api/agent-events/route.js.nft.json +1 -1
  267. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-files/route.js +2 -2
  268. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  269. package/web/.next/standalone/src/presentation/web/.next/server/app/page/build-manifest.json +4 -4
  270. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +137 -1
  271. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +2 -2
  272. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  273. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  274. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +4 -4
  275. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js +1 -1
  276. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  277. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  278. package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +0 -5
  279. package/web/.next/standalone/src/presentation/web/.next/server/chunks/{403f9_next_567de315._.js → 403f9_next_435614de._.js} +7 -6
  280. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[externals]__ba6223e5._.js +3 -0
  281. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__7d5c8b74._.js +6 -0
  282. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[externals]_node:path_d28a9bfe._.js +3 -0
  283. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__03a0dba7._.js +12 -0
  284. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__19354aea._.js +9 -0
  285. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__685eaa45._.js → [root-of-the-server]__32472b89._.js} +2 -2
  286. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__a21ef212._.js → [root-of-the-server]__d21f0894._.js} +2 -2
  287. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e1c44885._.js +3 -0
  288. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f12b60be._.js +1 -1
  289. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f47a461b._.js +3 -0
  290. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_285de9aa._.js +3 -0
  291. package/web/.next/{server/chunks/ssr/_94d22d37._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_b1f2507a._.js} +4 -4
  292. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_version_version-page-client_tsx_fe9db753._.js +1 -1
  293. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  294. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ui_badge_tsx_964c2a3b._.js +1 -1
  295. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
  296. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +4 -4
  297. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  298. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  299. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +138 -2
  300. package/web/.next/standalone/src/presentation/web/app/actions/approve-feature.ts +38 -0
  301. package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +81 -0
  302. package/web/.next/standalone/src/presentation/web/app/actions/delete-feature.ts +22 -0
  303. package/web/.next/standalone/src/presentation/web/app/actions/get-feature-artifact.ts +55 -0
  304. package/web/.next/standalone/src/presentation/web/app/actions/get-research-artifact.ts +42 -0
  305. package/web/.next/standalone/src/presentation/web/app/actions/open-folder.ts +44 -0
  306. package/web/.next/standalone/src/presentation/web/app/actions/open-ide.ts +37 -0
  307. package/web/.next/standalone/src/presentation/web/app/{api/shell/open/route.ts → actions/open-shell.ts} +19 -27
  308. package/web/.next/standalone/src/presentation/web/app/{api/dialog/pick-folder/route.ts → actions/pick-folder.ts} +5 -9
  309. package/web/.next/standalone/src/presentation/web/app/api/agent-events/route.ts +2 -14
  310. package/web/.next/standalone/src/presentation/web/app/api/dialog/pick-files/route.ts +8 -10
  311. package/web/.next/standalone/src/presentation/web/app/globals.css +10 -0
  312. package/web/.next/standalone/src/presentation/web/app/page.tsx +1 -0
  313. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/pick-folder.ts +7 -7
  314. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +1 -1
  315. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/pick-files.ts +6 -7
  316. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.tsx +15 -19
  317. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/use-feature-actions.ts +61 -17
  318. package/web/.next/standalone/src/presentation/web/components/common/feature-node/agent-type-icons.tsx +10 -2
  319. package/web/.next/standalone/src/presentation/web/components/common/feature-node/feature-node-state-config.ts +2 -0
  320. package/web/.next/standalone/src/presentation/web/components/common/feature-node/feature-node.stories.tsx +10 -0
  321. package/web/.next/standalone/src/presentation/web/components/common/feature-node/feature-node.tsx +38 -7
  322. package/web/.next/standalone/src/presentation/web/components/common/index.ts +18 -0
  323. package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/index.ts +1 -0
  324. package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.tsx +52 -0
  325. package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.tsx +55 -0
  326. package/web/.next/standalone/src/presentation/web/components/common/open-action-menu/config.ts +10 -0
  327. package/web/.next/standalone/src/presentation/web/components/common/open-action-menu/index.ts +2 -0
  328. package/web/.next/standalone/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.tsx +64 -0
  329. package/web/.next/standalone/src/presentation/web/components/common/open-action-menu/open-action-menu.tsx +111 -0
  330. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/index.ts +10 -0
  331. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-config.ts +48 -0
  332. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-drawer.tsx +34 -0
  333. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.tsx +384 -0
  334. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.tsx +216 -0
  335. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +20 -1
  336. package/web/.next/standalone/src/presentation/web/components/common/repository-node/use-repository-actions.ts +83 -20
  337. package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/index.ts +2 -0
  338. package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell-config.ts +24 -0
  339. package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.stories.tsx +85 -0
  340. package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.tsx +139 -0
  341. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/index.ts +8 -0
  342. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-drawer.tsx +34 -0
  343. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review-config.ts +42 -0
  344. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.tsx +177 -0
  345. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.tsx +188 -0
  346. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +189 -2
  347. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +28 -19
  348. package/web/.next/standalone/src/presentation/web/components/layouts/app-shell/app-shell.tsx +11 -1
  349. package/web/.next/standalone/src/presentation/web/components/ui/drawer.tsx +4 -2
  350. package/web/.next/standalone/src/presentation/web/components/ui/dropdown-menu.tsx +187 -0
  351. package/web/.next/standalone/src/presentation/web/hooks/agent-events-provider.tsx +32 -0
  352. package/web/.next/standalone/src/presentation/web/hooks/use-agent-events.ts +23 -1
  353. package/web/.next/standalone/src/presentation/web/hooks/use-notifications.ts +5 -16
  354. package/web/.next/standalone/src/presentation/web/next.config.ts +6 -0
  355. package/web/.next/standalone/src/presentation/web/package.json +2 -1
  356. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  357. package/web/.next/static/chunks/{70993ebedee7eab0.js → 084314470f2144d2.js} +1 -1
  358. package/web/.next/static/chunks/36bb03a0314fb990.css +2 -0
  359. package/web/.next/static/chunks/83ff3b6bbee54bce.js +1 -0
  360. package/web/.next/static/chunks/{fe5e04e707adb039.js → 8c0b96eb95dd31a9.js} +1 -1
  361. package/web/.next/static/chunks/{df7d29673e0ac11d.js → b13aa397579082e7.js} +1 -1
  362. package/web/.next/static/chunks/{f3b4460b1496ef52.js → cfe4dc9904fcfddb.js} +1 -1
  363. package/web/.next/static/chunks/e21d644e5a584136.js +1 -0
  364. package/web/.next/static/chunks/eca1959e083d0a45.js +10 -0
  365. package/web/.next/static/chunks/f9519a5c455143e6.js +1 -0
  366. package/web/.next/static/chunks/{c4b1e95eceaa36ca.js → fe6427c156bda6b0.js} +2 -2
  367. package/web/.next/static/chunks/{37bc3e283f734dca.js → fe70e73feb07bcfd.js} +1 -1
  368. package/web/.next/static/chunks/{turbopack-a5a88a85e7ac8e8d.js → turbopack-35ff53de4dab1e56.js} +2 -2
  369. package/web/.next/trace +1 -1
  370. package/web/.next/trace-build +1 -1
  371. package/web/.next/types/link.d.ts +1 -6
  372. package/web/.next/types/routes.d.ts +1 -6
  373. package/web/.next/types/validator.ts +0 -45
  374. package/web/package.json +2 -1
  375. package/dist/src/presentation/web/app/api/dialog/pick-folder/route.d.ts +0 -11
  376. package/dist/src/presentation/web/app/api/dialog/pick-folder/route.d.ts.map +0 -1
  377. package/dist/src/presentation/web/app/api/dialog/pick-folder/route.js +0 -16
  378. package/dist/src/presentation/web/app/api/features/[id]/route.d.ts +0 -11
  379. package/dist/src/presentation/web/app/api/features/[id]/route.d.ts.map +0 -1
  380. package/dist/src/presentation/web/app/api/features/[id]/route.js +0 -17
  381. package/dist/src/presentation/web/app/api/features/create/route.d.ts +0 -5
  382. package/dist/src/presentation/web/app/api/features/create/route.d.ts.map +0 -1
  383. package/dist/src/presentation/web/app/api/features/create/route.js +0 -65
  384. package/dist/src/presentation/web/app/api/ide/open/route.d.ts +0 -9
  385. package/dist/src/presentation/web/app/api/ide/open/route.d.ts.map +0 -1
  386. package/dist/src/presentation/web/app/api/ide/open/route.js +0 -36
  387. package/dist/src/presentation/web/app/api/shell/open/route.d.ts +0 -9
  388. package/dist/src/presentation/web/app/api/shell/open/route.d.ts.map +0 -1
  389. package/dist/src/presentation/web/app/api/shell/open/route.js +0 -57
  390. package/dist/src/presentation/web/app/api/validate-toolbar-input.d.ts +0 -18
  391. package/dist/src/presentation/web/app/api/validate-toolbar-input.d.ts.map +0 -1
  392. package/dist/src/presentation/web/app/api/validate-toolbar-input.js +0 -29
  393. package/web/.next/server/app/api/dialog/pick-folder/route/app-paths-manifest.json +0 -3
  394. package/web/.next/server/app/api/dialog/pick-folder/route/build-manifest.json +0 -11
  395. package/web/.next/server/app/api/dialog/pick-folder/route/server-reference-manifest.json +0 -4
  396. package/web/.next/server/app/api/dialog/pick-folder/route.js +0 -7
  397. package/web/.next/server/app/api/dialog/pick-folder/route.js.map +0 -5
  398. package/web/.next/server/app/api/dialog/pick-folder/route.js.nft.json +0 -1
  399. package/web/.next/server/app/api/dialog/pick-folder/route_client-reference-manifest.js +0 -2
  400. package/web/.next/server/app/api/features/[id]/route/app-paths-manifest.json +0 -3
  401. package/web/.next/server/app/api/features/[id]/route/build-manifest.json +0 -11
  402. package/web/.next/server/app/api/features/[id]/route/server-reference-manifest.json +0 -4
  403. package/web/.next/server/app/api/features/[id]/route.js +0 -7
  404. package/web/.next/server/app/api/features/[id]/route.js.map +0 -5
  405. package/web/.next/server/app/api/features/[id]/route.js.nft.json +0 -1
  406. package/web/.next/server/app/api/features/[id]/route_client-reference-manifest.js +0 -2
  407. package/web/.next/server/app/api/features/create/route/app-paths-manifest.json +0 -3
  408. package/web/.next/server/app/api/features/create/route/build-manifest.json +0 -11
  409. package/web/.next/server/app/api/features/create/route/server-reference-manifest.json +0 -4
  410. package/web/.next/server/app/api/features/create/route.js +0 -7
  411. package/web/.next/server/app/api/features/create/route.js.map +0 -5
  412. package/web/.next/server/app/api/features/create/route.js.nft.json +0 -1
  413. package/web/.next/server/app/api/features/create/route_client-reference-manifest.js +0 -2
  414. package/web/.next/server/app/api/ide/open/route/app-paths-manifest.json +0 -3
  415. package/web/.next/server/app/api/ide/open/route/build-manifest.json +0 -11
  416. package/web/.next/server/app/api/ide/open/route/server-reference-manifest.json +0 -4
  417. package/web/.next/server/app/api/ide/open/route.js +0 -7
  418. package/web/.next/server/app/api/ide/open/route.js.map +0 -5
  419. package/web/.next/server/app/api/ide/open/route.js.nft.json +0 -1
  420. package/web/.next/server/app/api/ide/open/route_client-reference-manifest.js +0 -2
  421. package/web/.next/server/app/api/shell/open/route/app-paths-manifest.json +0 -3
  422. package/web/.next/server/app/api/shell/open/route/build-manifest.json +0 -11
  423. package/web/.next/server/app/api/shell/open/route/server-reference-manifest.json +0 -4
  424. package/web/.next/server/app/api/shell/open/route.js +0 -7
  425. package/web/.next/server/app/api/shell/open/route.js.map +0 -5
  426. package/web/.next/server/app/api/shell/open/route.js.nft.json +0 -1
  427. package/web/.next/server/app/api/shell/open/route_client-reference-manifest.js +0 -2
  428. package/web/.next/server/chunks/403f9_next_567de315._.js.map +0 -1
  429. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_dialog_pick-folder_route_actions_375ed12f.js +0 -3
  430. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_features_[id]_route_actions_03b9a4b5.js +0 -3
  431. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_features_create_route_actions_de49a114.js +0 -3
  432. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_features_create_route_actions_de49a114.js.map +0 -1
  433. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_shell_open_route_actions_814dc5b6.js +0 -3
  434. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_shell_open_route_actions_814dc5b6.js.map +0 -1
  435. package/web/.next/server/chunks/[root-of-the-server]__04ae3a77._.js +0 -3
  436. package/web/.next/server/chunks/[root-of-the-server]__04ae3a77._.js.map +0 -1
  437. package/web/.next/server/chunks/[root-of-the-server]__3d63a020._.js +0 -8
  438. package/web/.next/server/chunks/[root-of-the-server]__3d63a020._.js.map +0 -1
  439. package/web/.next/server/chunks/[root-of-the-server]__a6bf88cc._.js +0 -4
  440. package/web/.next/server/chunks/[root-of-the-server]__a6bf88cc._.js.map +0 -1
  441. package/web/.next/server/chunks/[root-of-the-server]__acfd2769._.js +0 -3
  442. package/web/.next/server/chunks/[root-of-the-server]__acfd2769._.js.map +0 -1
  443. package/web/.next/server/chunks/[root-of-the-server]__ec87d735._.js +0 -3
  444. package/web/.next/server/chunks/[root-of-the-server]__ec87d735._.js.map +0 -1
  445. package/web/.next/server/chunks/[root-of-the-server]__ecaf05bc._.js +0 -3
  446. package/web/.next/server/chunks/[root-of-the-server]__ecaf05bc._.js.map +0 -1
  447. package/web/.next/server/chunks/[root-of-the-server]__f32c280c._.js +0 -3
  448. package/web/.next/server/chunks/[root-of-the-server]__f32c280c._.js.map +0 -1
  449. package/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_ide_open_route_actions_9fe6e1cd.js +0 -3
  450. package/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_ide_open_route_actions_9fe6e1cd.js.map +0 -1
  451. package/web/.next/server/chunks/ssr/[root-of-the-server]__1eade43f._.js +0 -3
  452. package/web/.next/server/chunks/ssr/[root-of-the-server]__1eade43f._.js.map +0 -1
  453. package/web/.next/server/chunks/ssr/[root-of-the-server]__97377864._.js +0 -3
  454. package/web/.next/server/chunks/ssr/[root-of-the-server]__a21ef212._.js.map +0 -1
  455. package/web/.next/server/chunks/ssr/[root-of-the-server]__f285e474._.js +0 -3
  456. package/web/.next/server/chunks/ssr/_09afa42a._.js +0 -10
  457. package/web/.next/server/chunks/ssr/_09afa42a._.js.map +0 -1
  458. package/web/.next/server/chunks/ssr/_4676cf52._.js +0 -3
  459. package/web/.next/server/chunks/ssr/_4676cf52._.js.map +0 -1
  460. package/web/.next/server/chunks/ssr/_94d22d37._.js.map +0 -1
  461. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_a4e3cb6f.js +0 -3
  462. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_a4e3cb6f.js.map +0 -1
  463. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-folder/route/app-paths-manifest.json +0 -3
  464. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-folder/route/build-manifest.json +0 -11
  465. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-folder/route/server-reference-manifest.json +0 -4
  466. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-folder/route.js +0 -7
  467. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-folder/route.js.map +0 -5
  468. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-folder/route.js.nft.json +0 -1
  469. package/web/.next/standalone/src/presentation/web/.next/server/app/api/dialog/pick-folder/route_client-reference-manifest.js +0 -2
  470. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/[id]/route/app-paths-manifest.json +0 -3
  471. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/[id]/route/build-manifest.json +0 -11
  472. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/[id]/route/server-reference-manifest.json +0 -4
  473. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/[id]/route.js +0 -7
  474. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/[id]/route.js.map +0 -5
  475. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/[id]/route.js.nft.json +0 -1
  476. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/[id]/route_client-reference-manifest.js +0 -2
  477. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/create/route/app-paths-manifest.json +0 -3
  478. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/create/route/build-manifest.json +0 -11
  479. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/create/route/server-reference-manifest.json +0 -4
  480. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/create/route.js +0 -7
  481. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/create/route.js.map +0 -5
  482. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/create/route.js.nft.json +0 -1
  483. package/web/.next/standalone/src/presentation/web/.next/server/app/api/features/create/route_client-reference-manifest.js +0 -2
  484. package/web/.next/standalone/src/presentation/web/.next/server/app/api/ide/open/route/app-paths-manifest.json +0 -3
  485. package/web/.next/standalone/src/presentation/web/.next/server/app/api/ide/open/route/build-manifest.json +0 -11
  486. package/web/.next/standalone/src/presentation/web/.next/server/app/api/ide/open/route/server-reference-manifest.json +0 -4
  487. package/web/.next/standalone/src/presentation/web/.next/server/app/api/ide/open/route.js +0 -7
  488. package/web/.next/standalone/src/presentation/web/.next/server/app/api/ide/open/route.js.map +0 -5
  489. package/web/.next/standalone/src/presentation/web/.next/server/app/api/ide/open/route.js.nft.json +0 -1
  490. package/web/.next/standalone/src/presentation/web/.next/server/app/api/ide/open/route_client-reference-manifest.js +0 -2
  491. package/web/.next/standalone/src/presentation/web/.next/server/app/api/shell/open/route/app-paths-manifest.json +0 -3
  492. package/web/.next/standalone/src/presentation/web/.next/server/app/api/shell/open/route/build-manifest.json +0 -11
  493. package/web/.next/standalone/src/presentation/web/.next/server/app/api/shell/open/route/server-reference-manifest.json +0 -4
  494. package/web/.next/standalone/src/presentation/web/.next/server/app/api/shell/open/route.js +0 -7
  495. package/web/.next/standalone/src/presentation/web/.next/server/app/api/shell/open/route.js.map +0 -5
  496. package/web/.next/standalone/src/presentation/web/.next/server/app/api/shell/open/route.js.nft.json +0 -1
  497. package/web/.next/standalone/src/presentation/web/.next/server/app/api/shell/open/route_client-reference-manifest.js +0 -2
  498. package/web/.next/standalone/src/presentation/web/.next/server/chunks/744ca_web__next-internal_server_app_api_dialog_pick-folder_route_actions_375ed12f.js +0 -3
  499. package/web/.next/standalone/src/presentation/web/.next/server/chunks/744ca_web__next-internal_server_app_api_features_[id]_route_actions_03b9a4b5.js +0 -3
  500. package/web/.next/standalone/src/presentation/web/.next/server/chunks/744ca_web__next-internal_server_app_api_features_create_route_actions_de49a114.js +0 -3
  501. package/web/.next/standalone/src/presentation/web/.next/server/chunks/744ca_web__next-internal_server_app_api_shell_open_route_actions_814dc5b6.js +0 -3
  502. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__04ae3a77._.js +0 -3
  503. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__3d63a020._.js +0 -8
  504. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__a6bf88cc._.js +0 -4
  505. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__acfd2769._.js +0 -3
  506. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__ec87d735._.js +0 -3
  507. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__ecaf05bc._.js +0 -3
  508. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__f32c280c._.js +0 -3
  509. package/web/.next/standalone/src/presentation/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_ide_open_route_actions_9fe6e1cd.js +0 -3
  510. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__1eade43f._.js +0 -3
  511. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__97377864._.js +0 -3
  512. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f285e474._.js +0 -3
  513. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_09afa42a._.js +0 -10
  514. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_4676cf52._.js +0 -3
  515. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_a4e3cb6f.js +0 -3
  516. package/web/.next/standalone/src/presentation/web/app/api/features/[id]/route.ts +0 -20
  517. package/web/.next/standalone/src/presentation/web/app/api/features/create/route.ts +0 -103
  518. package/web/.next/standalone/src/presentation/web/app/api/ide/open/route.ts +0 -44
  519. package/web/.next/standalone/src/presentation/web/app/api/validate-toolbar-input.ts +0 -46
  520. package/web/.next/static/chunks/54743561bbaa307a.js +0 -8
  521. package/web/.next/static/chunks/74f27128e5fbfe52.css +0 -2
  522. package/web/.next/static/chunks/9993505b2a26c454.js +0 -1
  523. package/web/.next/static/chunks/c95b4cf170b7f301.js +0 -1
  524. package/web/.next/static/chunks/e78d1b265b8110c3.js +0 -1
  525. /package/web/.next/server/chunks/{744ca_web__next-internal_server_app_api_dialog_pick-folder_route_actions_375ed12f.js.map → [externals]__ba6223e5._.js.map} +0 -0
  526. /package/web/.next/server/chunks/{744ca_web__next-internal_server_app_api_features_[id]_route_actions_03b9a4b5.js.map → ssr/[externals]_node:path_d28a9bfe._.js.map} +0 -0
  527. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__685eaa45._.js.map → [root-of-the-server]__32472b89._.js.map} +0 -0
  528. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__f285e474._.js.map → [root-of-the-server]__e1c44885._.js.map} +0 -0
  529. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__97377864._.js.map → [root-of-the-server]__f47a461b._.js.map} +0 -0
  530. /package/web/.next/static/{AaXDy79mMK8ywoCbOquJB → yvV-GEMagQiZhZAF0YqQs}/_buildManifest.js +0 -0
  531. /package/web/.next/static/{AaXDy79mMK8ywoCbOquJB → yvV-GEMagQiZhZAF0YqQs}/_clientMiddlewareManifest.json +0 -0
  532. /package/web/.next/static/{AaXDy79mMK8ywoCbOquJB → yvV-GEMagQiZhZAF0YqQs}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[86259,a=>{"use strict";var b=a.i(10973),c=a.i(56109),d=a.i(96960),e=a.i(85536);let f=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("bg-card text-card-foreground rounded-xl border shadow",a),...c}));f.displayName="Card";let g=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("flex flex-col space-y-1.5 p-6",a),...c}));g.displayName="CardHeader";let h=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("leading-none font-semibold tracking-tight",a),...c}));h.displayName="CardTitle";let i=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("text-muted-foreground text-sm",a),...c}));i.displayName="CardDescription";let j=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("p-6 pt-0",a),...c}));j.displayName="CardContent",d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("flex items-center p-6 pt-0",a),...c})).displayName="CardFooter";var k=a.i(58339),l=a.i(18948),m=a.i(59653),n=a.i(7420),o=a.i(6175),p=a.i(90986),q=new WeakMap;function r(a,b){var c,d;let e,f,g;if("at"in Array.prototype)return Array.prototype.at.call(a,b);let h=(c=a,d=b,e=c.length,(g=(f=s(d))>=0?f:e+f)<0||g>=e?-1:g);return -1===h?void 0:a[h]}function s(a){return a!=a||0===a?0:Math.trunc(a)}(class a extends Map{#a;constructor(a){super(a),this.#a=[...super.keys()],q.set(this,!0)}set(a,b){return q.get(this)&&(this.has(a)?this.#a[this.#a.indexOf(a)]=a:this.#a.push(a)),super.set(a,b),this}insert(a,b,c){let d,e=this.has(b),f=this.#a.length,g=s(a),h=g>=0?g:f+g,i=h<0||h>=f?-1:h;if(i===this.size||e&&i===this.size-1||-1===i)return this.set(b,c),this;let j=this.size+ +!e;g<0&&h++;let k=[...this.#a],l=!1;for(let a=h;a<j;a++)if(h===a){let f=k[a];k[a]===b&&(f=k[a+1]),e&&this.delete(b),d=this.get(f),this.set(b,c)}else{l||k[a-1]!==b||(l=!0);let c=k[l?a:a-1],e=d;d=this.get(c),this.delete(c),this.set(c,e)}return this}with(b,c,d){let e=new a(this);return e.insert(b,c,d),e}before(a){let b=this.#a.indexOf(a)-1;if(!(b<0))return this.entryAt(b)}setBefore(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d,b,c)}after(a){let b=this.#a.indexOf(a);if(-1!==(b=-1===b||b===this.size-1?-1:b+1))return this.entryAt(b)}setAfter(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d+1,b,c)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#a=[],super.clear()}delete(a){let b=super.delete(a);return b&&this.#a.splice(this.#a.indexOf(a),1),b}deleteAt(a){let b=this.keyAt(a);return void 0!==b&&this.delete(b)}at(a){let b=r(this.#a,a);if(void 0!==b)return this.get(b)}entryAt(a){let b=r(this.#a,a);if(void 0!==b)return[b,this.get(b)]}indexOf(a){return this.#a.indexOf(a)}keyAt(a){return r(this.#a,a)}from(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.at(d)}keyFrom(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.keyAt(d)}find(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return d;c++}}findIndex(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return c;c++}return -1}filter(b,c){let d=[],e=0;for(let a of this)Reflect.apply(b,c,[a,e,this])&&d.push(a),e++;return new a(d)}map(b,c){let d=[],e=0;for(let a of this)d.push([a[0],Reflect.apply(b,c,[a,e,this])]),e++;return new a(d)}reduce(...a){let[b,c]=a,d=0,e=c??this.at(0);for(let c of this)e=0===d&&1===a.length?c:Reflect.apply(b,this,[e,c,d,this]),d++;return e}reduceRight(...a){let[b,c]=a,d=c??this.at(-1);for(let c=this.size-1;c>=0;c--){let e=this.at(c);d=c===this.size-1&&1===a.length?e:Reflect.apply(b,this,[d,e,c,this])}return d}toSorted(b){return new a([...this.entries()].sort(b))}toReversed(){let b=new a;for(let a=this.size-1;a>=0;a--){let c=this.keyAt(a),d=this.get(c);b.set(c,d)}return b}toSpliced(...b){let c=[...this.entries()];return c.splice(...b),new a(c)}slice(b,c){let d=new a,e=this.size-1;if(void 0===b)return d;b<0&&(b+=this.size),void 0!==c&&c>0&&(e=c-1);for(let a=b;a<=e;a++){let b=this.keyAt(a),c=this.get(b);d.set(b,c)}return d}every(a,b){let c=0;for(let d of this){if(!Reflect.apply(a,b,[d,c,this]))return!1;c++}return!0}some(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return!0;c++}return!1}});var t=a.i(5472),u=a.i(66873),v=a.i(79406),w=a.i(17329),x=a.i(48939),y="rovingFocusGroup.onEntryFocus",z={bubbles:!1,cancelable:!0},A="RovingFocusGroup",[B,C,D]=function(a){let c=a+"CollectionProvider",[e,f]=(0,n.createContextScope)(c),[g,h]=e(c,{collectionRef:{current:null},itemMap:new Map}),i=a=>{let{scope:c,children:e}=a,f=d.default.useRef(null),h=d.default.useRef(new Map).current;return(0,b.jsx)(g,{scope:c,itemMap:h,collectionRef:f,children:e})};i.displayName=c;let j=a+"CollectionSlot",k=(0,p.createSlot)(j),l=d.default.forwardRef((a,c)=>{let{scope:d,children:e}=a,f=h(j,d),g=(0,o.useComposedRefs)(c,f.collectionRef);return(0,b.jsx)(k,{ref:g,children:e})});l.displayName=j;let m=a+"CollectionItemSlot",q="data-radix-collection-item",r=(0,p.createSlot)(m),s=d.default.forwardRef((a,c)=>{let{scope:e,children:f,...g}=a,i=d.default.useRef(null),j=(0,o.useComposedRefs)(c,i),k=h(m,e);return d.default.useEffect(()=>(k.itemMap.set(i,{ref:i,...g}),()=>void k.itemMap.delete(i))),(0,b.jsx)(r,{...{[q]:""},ref:j,children:f})});return s.displayName=m,[{Provider:i,Slot:l,ItemSlot:s},function(b){let c=h(a+"CollectionConsumer",b);return d.default.useCallback(()=>{let a=c.collectionRef.current;if(!a)return[];let b=Array.from(a.querySelectorAll(`[${q}]`));return Array.from(c.itemMap.values()).sort((a,c)=>b.indexOf(a.ref.current)-b.indexOf(c.ref.current))},[c.collectionRef,c.itemMap])},f]}(A),[E,F]=(0,n.createContextScope)(A,[D]),[G,H]=E(A),I=d.forwardRef((a,c)=>(0,b.jsx)(B.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(B.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(J,{...a,ref:c})})}));I.displayName=A;var J=d.forwardRef((a,c)=>{let{__scopeRovingFocusGroup:e,orientation:f,loop:g=!1,dir:h,currentTabStopId:i,defaultCurrentTabStopId:j,onCurrentTabStopIdChange:k,onEntryFocus:l,preventScrollOnEntryFocus:n=!1,...p}=a,q=d.useRef(null),r=(0,o.useComposedRefs)(c,q),s=(0,x.useDirection)(h),[t,B]=(0,w.useControllableState)({prop:i,defaultProp:j??null,onChange:k,caller:A}),[D,E]=d.useState(!1),F=(0,v.useCallbackRef)(l),H=C(e),I=d.useRef(!1),[J,K]=d.useState(0);return d.useEffect(()=>{let a=q.current;if(a)return a.addEventListener(y,F),()=>a.removeEventListener(y,F)},[F]),(0,b.jsx)(G,{scope:e,orientation:f,dir:s,loop:g,currentTabStopId:t,onItemFocus:d.useCallback(a=>B(a),[B]),onItemShiftTab:d.useCallback(()=>E(!0),[]),onFocusableItemAdd:d.useCallback(()=>K(a=>a+1),[]),onFocusableItemRemove:d.useCallback(()=>K(a=>a-1),[]),children:(0,b.jsx)(u.Primitive.div,{tabIndex:D||0===J?-1:0,"data-orientation":f,...p,ref:r,style:{outline:"none",...a.style},onMouseDown:(0,m.composeEventHandlers)(a.onMouseDown,()=>{I.current=!0}),onFocus:(0,m.composeEventHandlers)(a.onFocus,a=>{let b=!I.current;if(a.target===a.currentTarget&&b&&!D){let b=new CustomEvent(y,z);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=H().filter(a=>a.focusable);N([a.find(a=>a.active),a.find(a=>a.id===t),...a].filter(Boolean).map(a=>a.ref.current),n)}}I.current=!1}),onBlur:(0,m.composeEventHandlers)(a.onBlur,()=>E(!1))})})}),K="RovingFocusGroupItem",L=d.forwardRef((a,c)=>{let{__scopeRovingFocusGroup:e,focusable:f=!0,active:g=!1,tabStopId:h,children:i,...j}=a,k=(0,t.useId)(),l=h||k,n=H(K,e),o=n.currentTabStopId===l,p=C(e),{onFocusableItemAdd:q,onFocusableItemRemove:r,currentTabStopId:s}=n;return d.useEffect(()=>{if(f)return q(),()=>r()},[f,q,r]),(0,b.jsx)(B.ItemSlot,{scope:e,id:l,focusable:f,active:g,children:(0,b.jsx)(u.Primitive.span,{tabIndex:o?0:-1,"data-orientation":n.orientation,...j,ref:c,onMouseDown:(0,m.composeEventHandlers)(a.onMouseDown,a=>{f?n.onItemFocus(l):a.preventDefault()}),onFocus:(0,m.composeEventHandlers)(a.onFocus,()=>n.onItemFocus(l)),onKeyDown:(0,m.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void n.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return M[e]}(a,n.orientation,n.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=p().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=n.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>N(e))}}),children:"function"==typeof i?i({isCurrentTabStop:o,hasTabStop:null!=s}):i})})});L.displayName=K;var M={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function N(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}var O=a.i(14272),P="Tabs",[Q,R]=(0,n.createContextScope)(P,[F]),S=F(),[T,U]=Q(P),V=d.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:h="horizontal",dir:i,activationMode:j="automatic",...k}=a,l=(0,x.useDirection)(i),[m,n]=(0,w.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:P});return(0,b.jsx)(T,{scope:d,baseId:(0,t.useId)(),value:m,onValueChange:n,orientation:h,dir:l,activationMode:j,children:(0,b.jsx)(u.Primitive.div,{dir:l,"data-orientation":h,...k,ref:c})})});V.displayName=P;var W="TabsList",X=d.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...f}=a,g=U(W,d),h=S(d);return(0,b.jsx)(I,{asChild:!0,...h,orientation:g.orientation,dir:g.dir,loop:e,children:(0,b.jsx)(u.Primitive.div,{role:"tablist","aria-orientation":g.orientation,...f,ref:c})})});X.displayName=W;var Y="TabsTrigger",Z=d.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,disabled:f=!1,...g}=a,h=U(Y,d),i=S(d),j=aa(h.baseId,e),k=ab(h.baseId,e),l=e===h.value;return(0,b.jsx)(L,{asChild:!0,...i,focusable:!f,active:l,children:(0,b.jsx)(u.Primitive.button,{type:"button",role:"tab","aria-selected":l,"aria-controls":k,"data-state":l?"active":"inactive","data-disabled":f?"":void 0,disabled:f,id:j,...g,ref:c,onMouseDown:(0,m.composeEventHandlers)(a.onMouseDown,a=>{f||0!==a.button||!1!==a.ctrlKey?a.preventDefault():h.onValueChange(e)}),onKeyDown:(0,m.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&h.onValueChange(e)}),onFocus:(0,m.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==h.activationMode;l||f||!a||h.onValueChange(e)})})})});Z.displayName=Y;var $="TabsContent",_=d.forwardRef((a,c)=>{let{__scopeTabs:e,value:f,forceMount:g,children:h,...i}=a,j=U($,e),k=aa(j.baseId,f),l=ab(j.baseId,f),m=f===j.value,n=d.useRef(m);return d.useEffect(()=>{let a=requestAnimationFrame(()=>n.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(O.Presence,{present:g||m,children:({present:d})=>(0,b.jsx)(u.Primitive.div,{"data-state":m?"active":"inactive","data-orientation":j.orientation,role:"tabpanel","aria-labelledby":k,hidden:!d,id:l,tabIndex:0,...i,ref:c,style:{...a.style,animationDuration:n.current?"0s":void 0},children:d&&h})})});function aa(a,b){return`${a}-trigger-${b}`}function ab(a,b){return`${a}-content-${b}`}_.displayName=$,a.s(["Content",()=>_,"List",()=>X,"Root",()=>V,"Tabs",()=>V,"TabsContent",()=>_,"TabsList",()=>X,"TabsTrigger",()=>Z,"Trigger",()=>Z,"createTabsScope",()=>R],287);var ac=a.i(287),ac=ac;let ad=ac.Root,ae=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(ac.List,{ref:d,className:(0,e.cn)("bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1",a),...c}));ae.displayName=ac.List.displayName;let af=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(ac.Trigger,{ref:d,className:(0,e.cn)("ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow",a),...c}));af.displayName=ac.Trigger.displayName;let ag=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(ac.Content,{ref:d,className:(0,e.cn)("ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",a),...c}));function ah({label:a,value:c,badge:d,badgeVariant:e="secondary"}){return(0,b.jsxs)("div",{className:"flex items-center justify-between py-2",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-sm",children:a}),d?(0,b.jsx)(k.Badge,{variant:e,children:c}):(0,b.jsx)("span",{className:"font-mono text-sm",children:c})]})}function ai({versionInfo:a,systemInfo:d}){return(0,b.jsx)("div",{className:"flex flex-col items-center justify-center p-4",children:(0,b.jsxs)("div",{className:"w-full max-w-2xl space-y-6",children:[(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:a.name}),(0,b.jsx)("p",{className:"text-muted-foreground mt-2",children:a.description}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsxs)(k.Badge,{variant:"default","data-testid":"version-badge",children:["v",a.version]})})]}),(0,b.jsxs)(ad,{defaultValue:"overview",className:"w-full",children:[(0,b.jsxs)(ae,{className:"grid w-full grid-cols-3",children:[(0,b.jsx)(af,{value:"overview",children:"Overview"}),(0,b.jsx)(af,{value:"system",children:"System"}),(0,b.jsx)(af,{value:"features",children:"Features"})]}),(0,b.jsx)(ag,{value:"overview",children:(0,b.jsxs)(f,{children:[(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{children:"Package Information"}),(0,b.jsx)(i,{children:"Details about the Shep AI CLI package"})]}),(0,b.jsxs)(j,{className:"space-y-1",children:[(0,b.jsx)(ah,{label:"Package",value:a.name}),(0,b.jsx)(ah,{label:"Version",value:`v${a.version}`,badge:!0,badgeVariant:"default"}),(0,b.jsx)(ah,{label:"License",value:"MIT",badge:!0,badgeVariant:"outline"}),(0,b.jsx)(ah,{label:"Author",value:"Shep AI"})]})]})}),(0,b.jsx)(ag,{value:"system",children:(0,b.jsxs)(f,{children:[(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{children:"System Information"}),(0,b.jsx)(i,{children:"Runtime environment details"})]}),(0,b.jsxs)(j,{className:"space-y-1",children:[(0,b.jsx)(ah,{label:"Node.js",value:d.nodeVersion,badge:!0,badgeVariant:"secondary"}),(0,b.jsx)(ah,{label:"Platform",value:`${d.platform} ${d.arch}`})]})]})}),(0,b.jsx)(ag,{value:"features",children:(0,b.jsxs)(f,{children:[(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{children:"Key Features"}),(0,b.jsx)(i,{children:"What Shep AI can do for you"})]}),(0,b.jsx)(j,{children:(0,b.jsxs)("ul",{className:"space-y-2 text-sm",children:[(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.Badge,{variant:"outline",children:"AI"}),(0,b.jsx)("span",{children:"Autonomous code generation"})]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.Badge,{variant:"outline",children:"SDLC"}),(0,b.jsx)("span",{children:"Full development lifecycle automation"})]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.Badge,{variant:"outline",children:"CLI"}),(0,b.jsx)("span",{children:"Powerful command-line interface"})]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.Badge,{variant:"outline",children:"Web"}),(0,b.jsx)("span",{children:"Modern web UI dashboard"})]})]})})]})})]}),(0,b.jsxs)("div",{className:"flex justify-center gap-4",children:[(0,b.jsx)(l.Button,{asChild:!0,variant:"outline",children:(0,b.jsx)(c.default,{href:"/",children:"Back to Home"})}),(0,b.jsx)(l.Button,{asChild:!0,children:(0,b.jsx)("a",{href:"https://github.com/shep-ai/cli",target:"_blank",rel:"noopener noreferrer",children:"View on GitHub"})})]})]})})}ag.displayName=ac.Content.displayName,a.s(["default",()=>ai],86259)}];
1
+ module.exports=[86259,a=>{"use strict";var b=a.i(10973),c=a.i(56109),d=a.i(96960),e=a.i(85536);let f=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("bg-card text-card-foreground rounded-xl border shadow",a),...c}));f.displayName="Card";let g=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("flex flex-col space-y-1.5 p-6",a),...c}));g.displayName="CardHeader";let h=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("leading-none font-semibold tracking-tight",a),...c}));h.displayName="CardTitle";let i=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("text-muted-foreground text-sm",a),...c}));i.displayName="CardDescription";let j=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("p-6 pt-0",a),...c}));j.displayName="CardContent",d.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,e.cn)("flex items-center p-6 pt-0",a),...c})).displayName="CardFooter";var k=a.i(58339),l=a.i(18948),m=a.i(59653),n=a.i(7420),o=a.i(77127),p=a.i(14272),q=a.i(66873),r=a.i(48939),s=a.i(17329),t=a.i(5472),u="Tabs",[v,w]=(0,n.createContextScope)(u,[o.createRovingFocusGroupScope]),x=(0,o.createRovingFocusGroupScope)(),[y,z]=v(u),A=d.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:h="horizontal",dir:i,activationMode:j="automatic",...k}=a,l=(0,r.useDirection)(i),[m,n]=(0,s.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:u});return(0,b.jsx)(y,{scope:d,baseId:(0,t.useId)(),value:m,onValueChange:n,orientation:h,dir:l,activationMode:j,children:(0,b.jsx)(q.Primitive.div,{dir:l,"data-orientation":h,...k,ref:c})})});A.displayName=u;var B="TabsList",C=d.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...f}=a,g=z(B,d),h=x(d);return(0,b.jsx)(o.Root,{asChild:!0,...h,orientation:g.orientation,dir:g.dir,loop:e,children:(0,b.jsx)(q.Primitive.div,{role:"tablist","aria-orientation":g.orientation,...f,ref:c})})});C.displayName=B;var D="TabsTrigger",E=d.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,disabled:f=!1,...g}=a,h=z(D,d),i=x(d),j=H(h.baseId,e),k=I(h.baseId,e),l=e===h.value;return(0,b.jsx)(o.Item,{asChild:!0,...i,focusable:!f,active:l,children:(0,b.jsx)(q.Primitive.button,{type:"button",role:"tab","aria-selected":l,"aria-controls":k,"data-state":l?"active":"inactive","data-disabled":f?"":void 0,disabled:f,id:j,...g,ref:c,onMouseDown:(0,m.composeEventHandlers)(a.onMouseDown,a=>{f||0!==a.button||!1!==a.ctrlKey?a.preventDefault():h.onValueChange(e)}),onKeyDown:(0,m.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&h.onValueChange(e)}),onFocus:(0,m.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==h.activationMode;l||f||!a||h.onValueChange(e)})})})});E.displayName=D;var F="TabsContent",G=d.forwardRef((a,c)=>{let{__scopeTabs:e,value:f,forceMount:g,children:h,...i}=a,j=z(F,e),k=H(j.baseId,f),l=I(j.baseId,f),m=f===j.value,n=d.useRef(m);return d.useEffect(()=>{let a=requestAnimationFrame(()=>n.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(p.Presence,{present:g||m,children:({present:d})=>(0,b.jsx)(q.Primitive.div,{"data-state":m?"active":"inactive","data-orientation":j.orientation,role:"tabpanel","aria-labelledby":k,hidden:!d,id:l,tabIndex:0,...i,ref:c,style:{...a.style,animationDuration:n.current?"0s":void 0},children:d&&h})})});function H(a,b){return`${a}-trigger-${b}`}function I(a,b){return`${a}-content-${b}`}G.displayName=F,a.s(["Content",()=>G,"List",()=>C,"Root",()=>A,"Tabs",()=>A,"TabsContent",()=>G,"TabsList",()=>C,"TabsTrigger",()=>E,"Trigger",()=>E,"createTabsScope",()=>w],287);var J=a.i(287),J=J;let K=J.Root,L=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(J.List,{ref:d,className:(0,e.cn)("bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1",a),...c}));L.displayName=J.List.displayName;let M=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(J.Trigger,{ref:d,className:(0,e.cn)("ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow",a),...c}));M.displayName=J.Trigger.displayName;let N=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(J.Content,{ref:d,className:(0,e.cn)("ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",a),...c}));function O({label:a,value:c,badge:d,badgeVariant:e="secondary"}){return(0,b.jsxs)("div",{className:"flex items-center justify-between py-2",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-sm",children:a}),d?(0,b.jsx)(k.Badge,{variant:e,children:c}):(0,b.jsx)("span",{className:"font-mono text-sm",children:c})]})}function P({versionInfo:a,systemInfo:d}){return(0,b.jsx)("div",{className:"flex flex-col items-center justify-center p-4",children:(0,b.jsxs)("div",{className:"w-full max-w-2xl space-y-6",children:[(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:a.name}),(0,b.jsx)("p",{className:"text-muted-foreground mt-2",children:a.description}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsxs)(k.Badge,{variant:"default","data-testid":"version-badge",children:["v",a.version]})})]}),(0,b.jsxs)(K,{defaultValue:"overview",className:"w-full",children:[(0,b.jsxs)(L,{className:"grid w-full grid-cols-3",children:[(0,b.jsx)(M,{value:"overview",children:"Overview"}),(0,b.jsx)(M,{value:"system",children:"System"}),(0,b.jsx)(M,{value:"features",children:"Features"})]}),(0,b.jsx)(N,{value:"overview",children:(0,b.jsxs)(f,{children:[(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{children:"Package Information"}),(0,b.jsx)(i,{children:"Details about the Shep AI CLI package"})]}),(0,b.jsxs)(j,{className:"space-y-1",children:[(0,b.jsx)(O,{label:"Package",value:a.name}),(0,b.jsx)(O,{label:"Version",value:`v${a.version}`,badge:!0,badgeVariant:"default"}),(0,b.jsx)(O,{label:"License",value:"MIT",badge:!0,badgeVariant:"outline"}),(0,b.jsx)(O,{label:"Author",value:"Shep AI"})]})]})}),(0,b.jsx)(N,{value:"system",children:(0,b.jsxs)(f,{children:[(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{children:"System Information"}),(0,b.jsx)(i,{children:"Runtime environment details"})]}),(0,b.jsxs)(j,{className:"space-y-1",children:[(0,b.jsx)(O,{label:"Node.js",value:d.nodeVersion,badge:!0,badgeVariant:"secondary"}),(0,b.jsx)(O,{label:"Platform",value:`${d.platform} ${d.arch}`})]})]})}),(0,b.jsx)(N,{value:"features",children:(0,b.jsxs)(f,{children:[(0,b.jsxs)(g,{children:[(0,b.jsx)(h,{children:"Key Features"}),(0,b.jsx)(i,{children:"What Shep AI can do for you"})]}),(0,b.jsx)(j,{children:(0,b.jsxs)("ul",{className:"space-y-2 text-sm",children:[(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.Badge,{variant:"outline",children:"AI"}),(0,b.jsx)("span",{children:"Autonomous code generation"})]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.Badge,{variant:"outline",children:"SDLC"}),(0,b.jsx)("span",{children:"Full development lifecycle automation"})]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.Badge,{variant:"outline",children:"CLI"}),(0,b.jsx)("span",{children:"Powerful command-line interface"})]}),(0,b.jsxs)("li",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.Badge,{variant:"outline",children:"Web"}),(0,b.jsx)("span",{children:"Modern web UI dashboard"})]})]})})]})})]}),(0,b.jsxs)("div",{className:"flex justify-center gap-4",children:[(0,b.jsx)(l.Button,{asChild:!0,variant:"outline",children:(0,b.jsx)(c.default,{href:"/",children:"Back to Home"})}),(0,b.jsx)(l.Button,{asChild:!0,children:(0,b.jsx)("a",{href:"https://github.com/shep-ai/cli",target:"_blank",rel:"noopener noreferrer",children:"View on GitHub"})})]})]})})}N.displayName=J.Content.displayName,a.s(["default",()=>P],86259)}];
2
2
 
3
3
  //# sourceMappingURL=b1a17_presentation_web_components_features_version_version-page-client_tsx_fe9db753._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Br_2988d950cbd44144aec5e6ce60804441/node_modules/%40radix-ui/react-collection/dist/index.mjs","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-roving-focus%401.1.11_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40type_61b1e57265158db0f110fd8c0c27aeba/node_modules/%40radix-ui/react-roving-focus/dist/index.mjs","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-tabs%401.1.13_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact%40_68a385a9eea120600bb372a91de22b00/node_modules/%40radix-ui/react-tabs/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/tabs.tsx","../../../../../../../src/presentation/web/components/features/version/version-page-client.tsx","../../../../../../../src/presentation/web/components/ui/card.tsx"],"sourcesContent":["\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1',\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow',\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","'use client';\n\nimport Link from 'next/link';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport type { VersionInfo, SystemInfo } from '@/lib/version';\n\ninterface InfoRowProps {\n label: string;\n value: string;\n badge?: boolean;\n badgeVariant?: 'default' | 'secondary' | 'outline';\n}\n\nfunction InfoRow({ label, value, badge, badgeVariant = 'secondary' }: InfoRowProps) {\n return (\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-muted-foreground text-sm\">{label}</span>\n {badge ? (\n <Badge variant={badgeVariant}>{value}</Badge>\n ) : (\n <span className=\"font-mono text-sm\">{value}</span>\n )}\n </div>\n );\n}\n\ninterface VersionPageClientProps {\n versionInfo: VersionInfo;\n systemInfo: SystemInfo;\n}\n\nexport default function VersionPageClient({ versionInfo, systemInfo }: VersionPageClientProps) {\n return (\n <div className=\"flex flex-col items-center justify-center p-4\">\n <div className=\"w-full max-w-2xl space-y-6\">\n <div className=\"text-center\">\n <h1 className=\"text-3xl font-bold tracking-tight\">{versionInfo.name}</h1>\n <p className=\"text-muted-foreground mt-2\">{versionInfo.description}</p>\n <div className=\"mt-4\">\n <Badge variant=\"default\" data-testid=\"version-badge\">\n v{versionInfo.version}\n </Badge>\n </div>\n </div>\n\n <Tabs defaultValue=\"overview\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"system\">System</TabsTrigger>\n <TabsTrigger value=\"features\">Features</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\">\n <Card>\n <CardHeader>\n <CardTitle>Package Information</CardTitle>\n <CardDescription>Details about the Shep AI CLI package</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-1\">\n <InfoRow label=\"Package\" value={versionInfo.name} />\n <InfoRow\n label=\"Version\"\n value={`v${versionInfo.version}`}\n badge\n badgeVariant=\"default\"\n />\n <InfoRow label=\"License\" value=\"MIT\" badge badgeVariant=\"outline\" />\n <InfoRow label=\"Author\" value=\"Shep AI\" />\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"system\">\n <Card>\n <CardHeader>\n <CardTitle>System Information</CardTitle>\n <CardDescription>Runtime environment details</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-1\">\n <InfoRow\n label=\"Node.js\"\n value={systemInfo.nodeVersion}\n badge\n badgeVariant=\"secondary\"\n />\n <InfoRow label=\"Platform\" value={`${systemInfo.platform} ${systemInfo.arch}`} />\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"features\">\n <Card>\n <CardHeader>\n <CardTitle>Key Features</CardTitle>\n <CardDescription>What Shep AI can do for you</CardDescription>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-2 text-sm\">\n <li className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">AI</Badge>\n <span>Autonomous code generation</span>\n </li>\n <li className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">SDLC</Badge>\n <span>Full development lifecycle automation</span>\n </li>\n <li className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">CLI</Badge>\n <span>Powerful command-line interface</span>\n </li>\n <li className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">Web</Badge>\n <span>Modern web UI dashboard</span>\n </li>\n </ul>\n </CardContent>\n </Card>\n </TabsContent>\n </Tabs>\n\n <div className=\"flex justify-center gap-4\">\n <Button asChild variant=\"outline\">\n <Link href=\"/\">Back to Home</Link>\n </Button>\n <Button asChild>\n <a href=\"https://github.com/shep-ai/cli\" target=\"_blank\" rel=\"noopener noreferrer\">\n View on GitHub\n </a>\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground rounded-xl border shadow', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n"],"names":[],"mappings":"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","ignoreList":[0,1,2]}
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-tabs%401.1.13_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact%40_68a385a9eea120600bb372a91de22b00/node_modules/%40radix-ui/react-tabs/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/tabs.tsx","../../../../../../../src/presentation/web/components/ui/card.tsx","../../../../../../../src/presentation/web/components/features/version/version-page-client.tsx"],"sourcesContent":["\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1',\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow',\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground rounded-xl border shadow', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","'use client';\n\nimport Link from 'next/link';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport type { VersionInfo, SystemInfo } from '@/lib/version';\n\ninterface InfoRowProps {\n label: string;\n value: string;\n badge?: boolean;\n badgeVariant?: 'default' | 'secondary' | 'outline';\n}\n\nfunction InfoRow({ label, value, badge, badgeVariant = 'secondary' }: InfoRowProps) {\n return (\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-muted-foreground text-sm\">{label}</span>\n {badge ? (\n <Badge variant={badgeVariant}>{value}</Badge>\n ) : (\n <span className=\"font-mono text-sm\">{value}</span>\n )}\n </div>\n );\n}\n\ninterface VersionPageClientProps {\n versionInfo: VersionInfo;\n systemInfo: SystemInfo;\n}\n\nexport default function VersionPageClient({ versionInfo, systemInfo }: VersionPageClientProps) {\n return (\n <div className=\"flex flex-col items-center justify-center p-4\">\n <div className=\"w-full max-w-2xl space-y-6\">\n <div className=\"text-center\">\n <h1 className=\"text-3xl font-bold tracking-tight\">{versionInfo.name}</h1>\n <p className=\"text-muted-foreground mt-2\">{versionInfo.description}</p>\n <div className=\"mt-4\">\n <Badge variant=\"default\" data-testid=\"version-badge\">\n v{versionInfo.version}\n </Badge>\n </div>\n </div>\n\n <Tabs defaultValue=\"overview\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"system\">System</TabsTrigger>\n <TabsTrigger value=\"features\">Features</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\">\n <Card>\n <CardHeader>\n <CardTitle>Package Information</CardTitle>\n <CardDescription>Details about the Shep AI CLI package</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-1\">\n <InfoRow label=\"Package\" value={versionInfo.name} />\n <InfoRow\n label=\"Version\"\n value={`v${versionInfo.version}`}\n badge\n badgeVariant=\"default\"\n />\n <InfoRow label=\"License\" value=\"MIT\" badge badgeVariant=\"outline\" />\n <InfoRow label=\"Author\" value=\"Shep AI\" />\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"system\">\n <Card>\n <CardHeader>\n <CardTitle>System Information</CardTitle>\n <CardDescription>Runtime environment details</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-1\">\n <InfoRow\n label=\"Node.js\"\n value={systemInfo.nodeVersion}\n badge\n badgeVariant=\"secondary\"\n />\n <InfoRow label=\"Platform\" value={`${systemInfo.platform} ${systemInfo.arch}`} />\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"features\">\n <Card>\n <CardHeader>\n <CardTitle>Key Features</CardTitle>\n <CardDescription>What Shep AI can do for you</CardDescription>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-2 text-sm\">\n <li className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">AI</Badge>\n <span>Autonomous code generation</span>\n </li>\n <li className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">SDLC</Badge>\n <span>Full development lifecycle automation</span>\n </li>\n <li className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">CLI</Badge>\n <span>Powerful command-line interface</span>\n </li>\n <li className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">Web</Badge>\n <span>Modern web UI dashboard</span>\n </li>\n </ul>\n </CardContent>\n </Card>\n </TabsContent>\n </Tabs>\n\n <div className=\"flex justify-center gap-4\">\n <Button asChild variant=\"outline\">\n <Link href=\"/\">Back to Home</Link>\n </Button>\n <Button asChild>\n <a href=\"https://github.com/shep-ai/cli\" target=\"_blank\" rel=\"noopener noreferrer\">\n View on GitHub\n </a>\n </Button>\n </div>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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","ignoreList":[0]}
@@ -1,3 +1,3 @@
1
- module.exports=[66560,a=>{"use strict";var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=a.i(10973),A=a.i(96960),B=a.i(55003),C=a.i(69845),D=a.i(25700);let E=(0,D.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"}]]),F=(0,D.default)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]);var G=a.i(67837),H=a.i(66873),I=a.i(14272),J=a.i(7420),K=a.i(6175),L=a.i(79406),M=a.i(48939),N=a.i(61476),O=a.i(59653),P="ScrollArea",[Q,R]=(0,J.createContextScope)(P),[S,T]=Q(P),U=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,type:d="hover",dir:e,scrollHideDelay:f=600,...g}=a,[h,i]=A.useState(null),[j,k]=A.useState(null),[l,m]=A.useState(null),[n,o]=A.useState(null),[p,q]=A.useState(null),[r,s]=A.useState(0),[t,u]=A.useState(0),[v,w]=A.useState(!1),[x,y]=A.useState(!1),B=(0,K.useComposedRefs)(b,a=>i(a)),C=(0,M.useDirection)(e);return(0,z.jsx)(S,{scope:c,type:d,dir:C,scrollHideDelay:f,scrollArea:h,viewport:j,onViewportChange:k,content:l,onContentChange:m,scrollbarX:n,onScrollbarXChange:o,scrollbarXEnabled:v,onScrollbarXEnabledChange:w,scrollbarY:p,onScrollbarYChange:q,scrollbarYEnabled:x,onScrollbarYEnabledChange:y,onCornerWidthChange:s,onCornerHeightChange:u,children:(0,z.jsx)(H.Primitive.div,{dir:C,...g,ref:B,style:{position:"relative","--radix-scroll-area-corner-width":r+"px","--radix-scroll-area-corner-height":t+"px",...a.style}})})});U.displayName=P;var V="ScrollAreaViewport",W=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,children:d,nonce:e,...f}=a,g=T(V,c),h=A.useRef(null),i=(0,K.useComposedRefs)(b,h,g.onViewportChange);return(0,z.jsxs)(z.Fragment,{children:[(0,z.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:e}),(0,z.jsx)(H.Primitive.div,{"data-radix-scroll-area-viewport":"",...f,ref:i,style:{overflowX:g.scrollbarXEnabled?"scroll":"hidden",overflowY:g.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,z.jsx)("div",{ref:g.onContentChange,style:{minWidth:"100%",display:"table"},children:d})})]})});W.displayName=V;var X="ScrollAreaScrollbar",Y=A.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=T(X,a.__scopeScrollArea),{onScrollbarXEnabledChange:f,onScrollbarYEnabledChange:g}=e,h="horizontal"===a.orientation;return A.useEffect(()=>(h?f(!0):g(!0),()=>{h?f(!1):g(!1)}),[h,f,g]),"hover"===e.type?(0,z.jsx)(Z,{...d,ref:b,forceMount:c}):"scroll"===e.type?(0,z.jsx)($,{...d,ref:b,forceMount:c}):"auto"===e.type?(0,z.jsx)(_,{...d,ref:b,forceMount:c}):"always"===e.type?(0,z.jsx)(aa,{...d,ref:b}):null});Y.displayName=X;var Z=A.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=T(X,a.__scopeScrollArea),[f,g]=A.useState(!1);return A.useEffect(()=>{let a=e.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),g(!0)},d=()=>{b=window.setTimeout(()=>g(!1),e.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[e.scrollArea,e.scrollHideDelay]),(0,z.jsx)(I.Presence,{present:c||f,children:(0,z.jsx)(_,{"data-state":f?"visible":"hidden",...d,ref:b})})}),$=A.forwardRef((a,b)=>{var c;let{forceMount:d,...e}=a,f=T(X,a.__scopeScrollArea),g="horizontal"===a.orientation,h=as(()=>j("SCROLL_END"),100),[i,j]=(c={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},A.useReducer((a,b)=>c[a][b]??a,"hidden"));return A.useEffect(()=>{if("idle"===i){let a=window.setTimeout(()=>j("HIDE"),f.scrollHideDelay);return()=>window.clearTimeout(a)}},[i,f.scrollHideDelay,j]),A.useEffect(()=>{let a=f.viewport,b=g?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(j("SCROLL"),h()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[f.viewport,g,j,h]),(0,z.jsx)(I.Presence,{present:d||"hidden"!==i,children:(0,z.jsx)(aa,{"data-state":"hidden"===i?"hidden":"visible",...e,ref:b,onPointerEnter:(0,O.composeEventHandlers)(a.onPointerEnter,()=>j("POINTER_ENTER")),onPointerLeave:(0,O.composeEventHandlers)(a.onPointerLeave,()=>j("POINTER_LEAVE"))})})}),_=A.forwardRef((a,b)=>{let c=T(X,a.__scopeScrollArea),{forceMount:d,...e}=a,[f,g]=A.useState(!1),h="horizontal"===a.orientation,i=as(()=>{if(c.viewport){let a=c.viewport.offsetWidth<c.viewport.scrollWidth,b=c.viewport.offsetHeight<c.viewport.scrollHeight;g(h?a:b)}},10);return at(c.viewport,i),at(c.content,i),(0,z.jsx)(I.Presence,{present:d||f,children:(0,z.jsx)(aa,{"data-state":f?"visible":"hidden",...e,ref:b})})}),aa=A.forwardRef((a,b)=>{let{orientation:c="vertical",...d}=a,e=T(X,a.__scopeScrollArea),f=A.useRef(null),g=A.useRef(0),[h,i]=A.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),j=an(h.viewport,h.content),k={...d,sizes:h,onSizesChange:i,hasThumb:!!(j>0&&j<1),onThumbChange:a=>f.current=a,onThumbPointerUp:()=>g.current=0,onThumbPointerDown:a=>g.current=a};function l(a,b){return function(a,b,c,d="ltr"){let e=ao(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 aq([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,g.current,h,b)}return"horizontal"===c?(0,z.jsx)(ab,{...k,ref:b,onThumbPositionChange:()=>{if(e.viewport&&f.current){let a=ap(e.viewport.scrollLeft,h,e.dir);f.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{e.viewport&&(e.viewport.scrollLeft=a)},onDragScroll:a=>{e.viewport&&(e.viewport.scrollLeft=l(a,e.dir))}}):"vertical"===c?(0,z.jsx)(ac,{...k,ref:b,onThumbPositionChange:()=>{if(e.viewport&&f.current){let a=ap(e.viewport.scrollTop,h);f.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{e.viewport&&(e.viewport.scrollTop=a)},onDragScroll:a=>{e.viewport&&(e.viewport.scrollTop=l(a))}}):null}),ab=A.forwardRef((a,b)=>{let{sizes:c,onSizesChange:d,...e}=a,f=T(X,a.__scopeScrollArea),[g,h]=A.useState(),i=A.useRef(null),j=(0,K.useComposedRefs)(b,i,f.onScrollbarXChange);return A.useEffect(()=>{i.current&&h(getComputedStyle(i.current))},[i]),(0,z.jsx)(af,{"data-orientation":"horizontal",...e,ref:j,sizes:c,style:{bottom:0,left:"rtl"===f.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===f.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":ao(c)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(f.viewport){var d,e;let g=f.viewport.scrollLeft+b.deltaX;a.onWheelScroll(g),d=g,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{i.current&&f.viewport&&g&&d({content:f.viewport.scrollWidth,viewport:f.viewport.offsetWidth,scrollbar:{size:i.current.clientWidth,paddingStart:am(g.paddingLeft),paddingEnd:am(g.paddingRight)}})}})}),ac=A.forwardRef((a,b)=>{let{sizes:c,onSizesChange:d,...e}=a,f=T(X,a.__scopeScrollArea),[g,h]=A.useState(),i=A.useRef(null),j=(0,K.useComposedRefs)(b,i,f.onScrollbarYChange);return A.useEffect(()=>{i.current&&h(getComputedStyle(i.current))},[i]),(0,z.jsx)(af,{"data-orientation":"vertical",...e,ref:j,sizes:c,style:{top:0,right:"ltr"===f.dir?0:void 0,left:"rtl"===f.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":ao(c)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(f.viewport){var d,e;let g=f.viewport.scrollTop+b.deltaY;a.onWheelScroll(g),d=g,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{i.current&&f.viewport&&g&&d({content:f.viewport.scrollHeight,viewport:f.viewport.offsetHeight,scrollbar:{size:i.current.clientHeight,paddingStart:am(g.paddingTop),paddingEnd:am(g.paddingBottom)}})}})}),[ad,ae]=Q(X),af=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,sizes:d,hasThumb:e,onThumbChange:f,onThumbPointerUp:g,onThumbPointerDown:h,onThumbPositionChange:i,onDragScroll:j,onWheelScroll:k,onResize:l,...m}=a,n=T(X,c),[o,p]=A.useState(null),q=(0,K.useComposedRefs)(b,a=>p(a)),r=A.useRef(null),s=A.useRef(""),t=n.viewport,u=d.content-d.viewport,v=(0,L.useCallbackRef)(k),w=(0,L.useCallbackRef)(i),x=as(l,10);function y(a){r.current&&j({x:a.clientX-r.current.left,y:a.clientY-r.current.top})}return A.useEffect(()=>{let a=a=>{let b=a.target;o?.contains(b)&&v(a,u)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[t,o,u,v]),A.useEffect(w,[d,w]),at(o,x),at(n.content,x),(0,z.jsx)(ad,{scope:c,scrollbar:o,hasThumb:e,onThumbChange:(0,L.useCallbackRef)(f),onThumbPointerUp:(0,L.useCallbackRef)(g),onThumbPositionChange:w,onThumbPointerDown:(0,L.useCallbackRef)(h),children:(0,z.jsx)(H.Primitive.div,{...m,ref:q,style:{position:"absolute",...m.style},onPointerDown:(0,O.composeEventHandlers)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),r.current=o.getBoundingClientRect(),s.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",n.viewport&&(n.viewport.style.scrollBehavior="auto"),y(a))}),onPointerMove:(0,O.composeEventHandlers)(a.onPointerMove,y),onPointerUp:(0,O.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=s.current,n.viewport&&(n.viewport.style.scrollBehavior=""),r.current=null})})})}),ag="ScrollAreaThumb",ah=A.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=ae(ag,a.__scopeScrollArea);return(0,z.jsx)(I.Presence,{present:c||e.hasThumb,children:(0,z.jsx)(ai,{ref:b,...d})})}),ai=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,style:d,...e}=a,f=T(ag,c),g=ae(ag,c),{onThumbPositionChange:h}=g,i=(0,K.useComposedRefs)(b,a=>g.onThumbChange(a)),j=A.useRef(void 0),k=as(()=>{j.current&&(j.current(),j.current=void 0)},100);return A.useEffect(()=>{let a=f.viewport;if(a){let b=()=>{k(),j.current||(j.current=ar(a,h),h())};return h(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[f.viewport,k,h]),(0,z.jsx)(H.Primitive.div,{"data-state":g.hasThumb?"visible":"hidden",...e,ref:i,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...d},onPointerDownCapture:(0,O.composeEventHandlers)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;g.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,O.composeEventHandlers)(a.onPointerUp,g.onThumbPointerUp)})});ah.displayName=ag;var aj="ScrollAreaCorner",ak=A.forwardRef((a,b)=>{let c=T(aj,a.__scopeScrollArea),d=!!(c.scrollbarX&&c.scrollbarY);return"scroll"!==c.type&&d?(0,z.jsx)(al,{...a,ref:b}):null});ak.displayName=aj;var al=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,...d}=a,e=T(aj,c),[f,g]=A.useState(0),[h,i]=A.useState(0),j=!!(f&&h);return at(e.scrollbarX,()=>{let a=e.scrollbarX?.offsetHeight||0;e.onCornerHeightChange(a),i(a)}),at(e.scrollbarY,()=>{let a=e.scrollbarY?.offsetWidth||0;e.onCornerWidthChange(a),g(a)}),j?(0,z.jsx)(H.Primitive.div,{...d,ref:b,style:{width:f,height:h,position:"absolute",right:"ltr"===e.dir?0:void 0,left:"rtl"===e.dir?0:void 0,bottom:0,...a.style}}):null});function am(a){return a?parseInt(a,10):0}function an(a,b){let c=a/b;return isNaN(c)?0:c}function ao(a){let b=an(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function ap(a,b,c="ltr"){let d=ao(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 aq([0,g],[0,f-d])(h)}function aq(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 ar=(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 as(a,b){let c=(0,L.useCallbackRef)(a),d=A.useRef(0);return A.useEffect(()=>()=>window.clearTimeout(d.current),[]),A.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(c,b)},[c,b])}function at(a,b){let c=(0,L.useCallbackRef)(b);(0,N.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",()=>ak,"Root",()=>U,"ScrollArea",()=>U,"ScrollAreaCorner",()=>ak,"ScrollAreaScrollbar",()=>Y,"ScrollAreaThumb",()=>ah,"ScrollAreaViewport",()=>W,"Scrollbar",()=>Y,"Thumb",()=>ah,"Viewport",()=>W,"createScrollAreaScope",()=>R],73942);var au=a.i(73942),au=au,av=a.i(85536);function aw({className:a,children:b,...c}){return(0,z.jsxs)(au.Root,{"data-slot":"scroll-area",className:(0,av.cn)("relative",a),...c,children:[(0,z.jsx)(au.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:b}),(0,z.jsx)(ax,{}),(0,z.jsx)(au.Corner,{})]})}function ax({className:a,orientation:b="vertical",...c}){return(0,z.jsx)(au.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:b,className:(0,av.cn)("flex touch-none p-px transition-colors select-none","vertical"===b&&"h-full w-2.5 border-l border-l-transparent","horizontal"===b&&"h-2.5 flex-col border-t border-t-transparent",a),...c,children:(0,z.jsx)(au.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}a.i(47938);var ay=a.i(59503);a.i(69345);var az=a.i(46969);a.i(48822);var aA=a.i(16911);a.i(4388);var aB=a.i(27756);a.i(77466);var aC=a.i(85637);a.i(34338);var aD=a.i(54860),aE=a.i(49474);function aF({features:a,onNewFeature:b,onFeatureClick:c,onFeaturesFolderClick:d,onFeaturesMenuClick:e}){let f=(0,C.usePathname)(),{state:g}=(0,B.useSidebar)(),{mounted:h,visible:i}=function(a,b){let[c,d]=(0,A.useState)(!a),[e,f]=(0,A.useState)(!a);return(0,A.useEffect)(()=>{if(!a){d(!0);let a=requestAnimationFrame(()=>f(!0));return()=>cancelAnimationFrame(a)}f(!1);let b=window.setTimeout(()=>d(!1),200);return()=>window.clearTimeout(b)},[a,200]),{mounted:c,visible:e}}("collapsed"===g,0),j=aE.featureStatusOrder.map(b=>{let{label:c}=aE.featureStatusConfig[b],d=a.filter(a=>a.status===b);return{key:b,label:c,items:d}});return(0,z.jsxs)(B.Sidebar,{"data-testid":"app-sidebar",collapsible:"icon",children:[(0,z.jsx)(B.SidebarHeader,{children:(0,z.jsxs)(B.SidebarMenu,{children:[(0,z.jsx)(B.SidebarMenuItem,{children:(0,z.jsxs)("div",{className:"flex h-8 items-center group-data-[collapsible=icon]:justify-center",children:[h?(0,z.jsxs)("div",{className:["flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2 transition-opacity duration-200 ease-out",i?"opacity-100":"opacity-0"].join(" "),"aria-hidden":!i,children:[(0,z.jsx)(aA.ShepLogo,{className:"shrink-0",size:20}),(0,z.jsx)("span",{className:"truncate text-sm font-semibold tracking-tight",children:"Shep"})]}):null,(0,z.jsx)(az.SidebarCollapseToggle,{className:"shrink-0 transition-all duration-200"})]})}),(0,z.jsx)(ay.SidebarNavItem,{icon:E,label:"Control Center",href:"/",active:"/"===f}),(0,z.jsx)(ay.SidebarNavItem,{icon:F,label:"Memory",href:"/memory",active:"/memory"===f})]})}),(0,z.jsx)(B.SidebarContent,{children:h?(0,z.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",i?"opacity-100":"opacity-0"].join(" "),children:[(0,z.jsx)(aD.SidebarSectionHeader,{label:"Features",onFolderClick:d,onMenuClick:e}),(0,z.jsx)(aw,{children:j.map(({key:a,label:b,items:d})=>d.length>0?(0,z.jsx)(aC.FeatureStatusGroup,{label:b,count:d.length,children:d.map(a=>(0,z.jsx)(aB.FeatureListItem,{name:a.name,status:a.status,startedAt:a.startedAt,duration:a.duration,onClick:c?()=>c(a.name):void 0},a.name))},a):null)})]}):null}),(0,z.jsx)(B.SidebarFooter,{children:(0,z.jsx)(B.SidebarMenu,{children:(0,z.jsx)(B.SidebarMenuItem,{children:(0,z.jsxs)(B.SidebarMenuButton,{onClick:b,tooltip:"New feature",children:[(0,z.jsx)(G.Plus,{}),(0,z.jsx)("span",{children:"New feature"})]})})})}),(0,z.jsx)(B.SidebarRail,{})]})}a.i(20786);var aG=a.i(22550),aH=a.i(52313);(b={}).PRD="PRD",b.API="API",b.Design="Design",b.Other="Other",(c={}).Markdown="md",c.Text="txt",c.Yaml="yaml",c.Other="Other",(d={}).Todo="Todo",d.Elaborating="Elaborating",d.Done="Done",(e={}).Assistant="assistant",e.User="user",(f={}).Functional="Functional",f.NonFunctional="NonFunctional",(g={}).NotStarted="NotStarted",g.Running="Running",g.Finished="Finished",(h={}).VsCode="vscode",h.Cursor="cursor",h.Windsurf="windsurf",h.Zed="zed",h.Antigravity="antigravity",(i={}).ClaudeCode="claude-code",i.GeminiCli="gemini-cli",i.Aider="aider",i.Continue="continue",i.Cursor="cursor",(j={}).Session="session",j.Token="token",(k={}).Todo="Todo",k.WIP="Work in Progress",k.Done="Done",k.Review="Review",(l={}).Requirements="Requirements",l.ClarificationRequired="ClarificationRequired",l.Ready="Ready",(m={}).Started="Started",m.Analyze="Analyze",m.Requirements="Requirements",m.Research="Research",m.Planning="Planning",m.Implementation="Implementation",m.Review="Review",m.Maintain="Maintain",(n={}).Open="Open",n.Merged="Merged",n.Closed="Closed",(o={}).Pending="Pending",o.Success="Success",o.Failure="Failure",(p={}).VsCode="vscode",p.Cursor="cursor",p.Windsurf="windsurf",p.Zed="zed",p.Antigravity="antigravity",p.CursorCli="cursor-cli",p.ClaudeCode="claude-code",(q={}).AgentStarted="agent_started",q.PhaseCompleted="phase_completed",q.WaitingApproval="waiting_approval",q.AgentCompleted="agent_completed",q.AgentFailed="agent_failed";var aI=((r={}).Info="info",r.Warning="warning",r.Success="success",r.Error="error",r);(s={}).Idle="Idle",s.Running="Running",s.Paused="Paused",s.Stopped="Stopped",(t={}).GatheringRequirements="GatheringRequirements",t.ClarificationsRequired="ClarificationsRequired",t.DoingResearch="DoingResearch",t.AwaitingReview="AwaitingReview",t.ExecutingWorkPlan="ExecutingWorkPlan",t.Ready="Ready",(u={}).TCP="TCP",u.UDP="UDP",(v={}).DockerCompose="DockerCompose",v.Docker="Docker",v.Kubernetes="Kubernetes",v.Script="Script",v.Manual="Manual",(w={}).Booting="Booting",w.Ready="Ready",w.Stopped="Stopped",(x={}).pending="pending",x.running="running",x.completed="completed",x.failed="failed",x.interrupted="interrupted",x.cancelled="cancelled",x.waitingApproval="waiting_approval",(y={}).sessionResume="session-resume",y.streaming="streaming",y.toolScoping="tool-scoping",y.structuredOutput="structured-output",y.systemPrompt="system-prompt";let aJ={[aI.Success]:"success",[aI.Error]:"error",[aI.Warning]:"warning",[aI.Info]:"info"};function aK({children:a}){!function(a){let b=(void 0)??!1,{lastEvent:c}=function(a){let[b,c]=(0,A.useState)([]),[d,e]=(0,A.useState)(null),[f,g]=(0,A.useState)("disconnected");(0,A.useRef)(1e3);let h=(0,A.useRef)(null),i=(0,A.useRef)(null),j=a?.runId,k=(0,A.useCallback)(()=>{},[j]);return(0,A.useEffect)(()=>(k(),()=>{null!==h.current&&(clearTimeout(h.current),h.current=null),i.current&&(i.current.close(),i.current=null)}),[k]),{events:b,lastEvent:d,connectionStatus:f}}({runId:void 0}),[d,e]=(0,A.useState)(()=>void 0===globalThis.Notification?"default":globalThis.Notification.permission),f=(0,A.useRef)(new Set);(0,A.useEffect)(()=>{if(!c)return;let a=`${c.agentRunId}-${c.eventType}-${c.timestamp}`;if(!f.current.has(a)){let d;f.current.add(a),d=aJ[c.severity]??"info",aH.toast[d](c.featureName,{description:c.message}),b&&globalThis.Notification?.permission==="granted"&&new Notification(c.featureName,{body:c.message})}},[c,b]),(0,A.useCallback)(async()=>{void 0===globalThis.Notification||e(await globalThis.Notification.requestPermission())},[])}();let b=(0,A.useCallback)(()=>{window.dispatchEvent(new CustomEvent("shep:open-create-drawer"))},[]);return(0,z.jsxs)(B.SidebarProvider,{children:[(0,z.jsx)(aF,{features:[],onNewFeature:b}),(0,z.jsx)(B.SidebarInset,{children:(0,z.jsxs)("div",{className:"relative h-full",children:[(0,z.jsx)("div",{className:"absolute top-3 right-3 z-50",children:(0,z.jsx)(aG.ThemeToggle,{})}),(0,z.jsx)("main",{className:"h-full",children:a})]})})]})}a.s(["AppShell",()=>aK],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,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=a.i(10973),A=a.i(96960),B=a.i(55003),C=a.i(69845),D=a.i(25700);let E=(0,D.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"}]]),F=(0,D.default)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]);var G=a.i(67837),H=a.i(66873),I=a.i(14272),J=a.i(7420),K=a.i(6175),L=a.i(79406),M=a.i(48939),N=a.i(61476),O=a.i(59653),P="ScrollArea",[Q,R]=(0,J.createContextScope)(P),[S,T]=Q(P),U=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,type:d="hover",dir:e,scrollHideDelay:f=600,...g}=a,[h,i]=A.useState(null),[j,k]=A.useState(null),[l,m]=A.useState(null),[n,o]=A.useState(null),[p,q]=A.useState(null),[r,s]=A.useState(0),[t,u]=A.useState(0),[v,w]=A.useState(!1),[x,y]=A.useState(!1),B=(0,K.useComposedRefs)(b,a=>i(a)),C=(0,M.useDirection)(e);return(0,z.jsx)(S,{scope:c,type:d,dir:C,scrollHideDelay:f,scrollArea:h,viewport:j,onViewportChange:k,content:l,onContentChange:m,scrollbarX:n,onScrollbarXChange:o,scrollbarXEnabled:v,onScrollbarXEnabledChange:w,scrollbarY:p,onScrollbarYChange:q,scrollbarYEnabled:x,onScrollbarYEnabledChange:y,onCornerWidthChange:s,onCornerHeightChange:u,children:(0,z.jsx)(H.Primitive.div,{dir:C,...g,ref:B,style:{position:"relative","--radix-scroll-area-corner-width":r+"px","--radix-scroll-area-corner-height":t+"px",...a.style}})})});U.displayName=P;var V="ScrollAreaViewport",W=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,children:d,nonce:e,...f}=a,g=T(V,c),h=A.useRef(null),i=(0,K.useComposedRefs)(b,h,g.onViewportChange);return(0,z.jsxs)(z.Fragment,{children:[(0,z.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:e}),(0,z.jsx)(H.Primitive.div,{"data-radix-scroll-area-viewport":"",...f,ref:i,style:{overflowX:g.scrollbarXEnabled?"scroll":"hidden",overflowY:g.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,z.jsx)("div",{ref:g.onContentChange,style:{minWidth:"100%",display:"table"},children:d})})]})});W.displayName=V;var X="ScrollAreaScrollbar",Y=A.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=T(X,a.__scopeScrollArea),{onScrollbarXEnabledChange:f,onScrollbarYEnabledChange:g}=e,h="horizontal"===a.orientation;return A.useEffect(()=>(h?f(!0):g(!0),()=>{h?f(!1):g(!1)}),[h,f,g]),"hover"===e.type?(0,z.jsx)(Z,{...d,ref:b,forceMount:c}):"scroll"===e.type?(0,z.jsx)($,{...d,ref:b,forceMount:c}):"auto"===e.type?(0,z.jsx)(_,{...d,ref:b,forceMount:c}):"always"===e.type?(0,z.jsx)(aa,{...d,ref:b}):null});Y.displayName=X;var Z=A.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=T(X,a.__scopeScrollArea),[f,g]=A.useState(!1);return A.useEffect(()=>{let a=e.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),g(!0)},d=()=>{b=window.setTimeout(()=>g(!1),e.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[e.scrollArea,e.scrollHideDelay]),(0,z.jsx)(I.Presence,{present:c||f,children:(0,z.jsx)(_,{"data-state":f?"visible":"hidden",...d,ref:b})})}),$=A.forwardRef((a,b)=>{var c;let{forceMount:d,...e}=a,f=T(X,a.__scopeScrollArea),g="horizontal"===a.orientation,h=as(()=>j("SCROLL_END"),100),[i,j]=(c={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},A.useReducer((a,b)=>c[a][b]??a,"hidden"));return A.useEffect(()=>{if("idle"===i){let a=window.setTimeout(()=>j("HIDE"),f.scrollHideDelay);return()=>window.clearTimeout(a)}},[i,f.scrollHideDelay,j]),A.useEffect(()=>{let a=f.viewport,b=g?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(j("SCROLL"),h()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[f.viewport,g,j,h]),(0,z.jsx)(I.Presence,{present:d||"hidden"!==i,children:(0,z.jsx)(aa,{"data-state":"hidden"===i?"hidden":"visible",...e,ref:b,onPointerEnter:(0,O.composeEventHandlers)(a.onPointerEnter,()=>j("POINTER_ENTER")),onPointerLeave:(0,O.composeEventHandlers)(a.onPointerLeave,()=>j("POINTER_LEAVE"))})})}),_=A.forwardRef((a,b)=>{let c=T(X,a.__scopeScrollArea),{forceMount:d,...e}=a,[f,g]=A.useState(!1),h="horizontal"===a.orientation,i=as(()=>{if(c.viewport){let a=c.viewport.offsetWidth<c.viewport.scrollWidth,b=c.viewport.offsetHeight<c.viewport.scrollHeight;g(h?a:b)}},10);return at(c.viewport,i),at(c.content,i),(0,z.jsx)(I.Presence,{present:d||f,children:(0,z.jsx)(aa,{"data-state":f?"visible":"hidden",...e,ref:b})})}),aa=A.forwardRef((a,b)=>{let{orientation:c="vertical",...d}=a,e=T(X,a.__scopeScrollArea),f=A.useRef(null),g=A.useRef(0),[h,i]=A.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),j=an(h.viewport,h.content),k={...d,sizes:h,onSizesChange:i,hasThumb:!!(j>0&&j<1),onThumbChange:a=>f.current=a,onThumbPointerUp:()=>g.current=0,onThumbPointerDown:a=>g.current=a};function l(a,b){return function(a,b,c,d="ltr"){let e=ao(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 aq([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,g.current,h,b)}return"horizontal"===c?(0,z.jsx)(ab,{...k,ref:b,onThumbPositionChange:()=>{if(e.viewport&&f.current){let a=ap(e.viewport.scrollLeft,h,e.dir);f.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{e.viewport&&(e.viewport.scrollLeft=a)},onDragScroll:a=>{e.viewport&&(e.viewport.scrollLeft=l(a,e.dir))}}):"vertical"===c?(0,z.jsx)(ac,{...k,ref:b,onThumbPositionChange:()=>{if(e.viewport&&f.current){let a=ap(e.viewport.scrollTop,h);f.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{e.viewport&&(e.viewport.scrollTop=a)},onDragScroll:a=>{e.viewport&&(e.viewport.scrollTop=l(a))}}):null}),ab=A.forwardRef((a,b)=>{let{sizes:c,onSizesChange:d,...e}=a,f=T(X,a.__scopeScrollArea),[g,h]=A.useState(),i=A.useRef(null),j=(0,K.useComposedRefs)(b,i,f.onScrollbarXChange);return A.useEffect(()=>{i.current&&h(getComputedStyle(i.current))},[i]),(0,z.jsx)(af,{"data-orientation":"horizontal",...e,ref:j,sizes:c,style:{bottom:0,left:"rtl"===f.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===f.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":ao(c)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(f.viewport){var d,e;let g=f.viewport.scrollLeft+b.deltaX;a.onWheelScroll(g),d=g,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{i.current&&f.viewport&&g&&d({content:f.viewport.scrollWidth,viewport:f.viewport.offsetWidth,scrollbar:{size:i.current.clientWidth,paddingStart:am(g.paddingLeft),paddingEnd:am(g.paddingRight)}})}})}),ac=A.forwardRef((a,b)=>{let{sizes:c,onSizesChange:d,...e}=a,f=T(X,a.__scopeScrollArea),[g,h]=A.useState(),i=A.useRef(null),j=(0,K.useComposedRefs)(b,i,f.onScrollbarYChange);return A.useEffect(()=>{i.current&&h(getComputedStyle(i.current))},[i]),(0,z.jsx)(af,{"data-orientation":"vertical",...e,ref:j,sizes:c,style:{top:0,right:"ltr"===f.dir?0:void 0,left:"rtl"===f.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":ao(c)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(f.viewport){var d,e;let g=f.viewport.scrollTop+b.deltaY;a.onWheelScroll(g),d=g,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{i.current&&f.viewport&&g&&d({content:f.viewport.scrollHeight,viewport:f.viewport.offsetHeight,scrollbar:{size:i.current.clientHeight,paddingStart:am(g.paddingTop),paddingEnd:am(g.paddingBottom)}})}})}),[ad,ae]=Q(X),af=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,sizes:d,hasThumb:e,onThumbChange:f,onThumbPointerUp:g,onThumbPointerDown:h,onThumbPositionChange:i,onDragScroll:j,onWheelScroll:k,onResize:l,...m}=a,n=T(X,c),[o,p]=A.useState(null),q=(0,K.useComposedRefs)(b,a=>p(a)),r=A.useRef(null),s=A.useRef(""),t=n.viewport,u=d.content-d.viewport,v=(0,L.useCallbackRef)(k),w=(0,L.useCallbackRef)(i),x=as(l,10);function y(a){r.current&&j({x:a.clientX-r.current.left,y:a.clientY-r.current.top})}return A.useEffect(()=>{let a=a=>{let b=a.target;o?.contains(b)&&v(a,u)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[t,o,u,v]),A.useEffect(w,[d,w]),at(o,x),at(n.content,x),(0,z.jsx)(ad,{scope:c,scrollbar:o,hasThumb:e,onThumbChange:(0,L.useCallbackRef)(f),onThumbPointerUp:(0,L.useCallbackRef)(g),onThumbPositionChange:w,onThumbPointerDown:(0,L.useCallbackRef)(h),children:(0,z.jsx)(H.Primitive.div,{...m,ref:q,style:{position:"absolute",...m.style},onPointerDown:(0,O.composeEventHandlers)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),r.current=o.getBoundingClientRect(),s.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",n.viewport&&(n.viewport.style.scrollBehavior="auto"),y(a))}),onPointerMove:(0,O.composeEventHandlers)(a.onPointerMove,y),onPointerUp:(0,O.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=s.current,n.viewport&&(n.viewport.style.scrollBehavior=""),r.current=null})})})}),ag="ScrollAreaThumb",ah=A.forwardRef((a,b)=>{let{forceMount:c,...d}=a,e=ae(ag,a.__scopeScrollArea);return(0,z.jsx)(I.Presence,{present:c||e.hasThumb,children:(0,z.jsx)(ai,{ref:b,...d})})}),ai=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,style:d,...e}=a,f=T(ag,c),g=ae(ag,c),{onThumbPositionChange:h}=g,i=(0,K.useComposedRefs)(b,a=>g.onThumbChange(a)),j=A.useRef(void 0),k=as(()=>{j.current&&(j.current(),j.current=void 0)},100);return A.useEffect(()=>{let a=f.viewport;if(a){let b=()=>{k(),j.current||(j.current=ar(a,h),h())};return h(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[f.viewport,k,h]),(0,z.jsx)(H.Primitive.div,{"data-state":g.hasThumb?"visible":"hidden",...e,ref:i,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...d},onPointerDownCapture:(0,O.composeEventHandlers)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;g.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,O.composeEventHandlers)(a.onPointerUp,g.onThumbPointerUp)})});ah.displayName=ag;var aj="ScrollAreaCorner",ak=A.forwardRef((a,b)=>{let c=T(aj,a.__scopeScrollArea),d=!!(c.scrollbarX&&c.scrollbarY);return"scroll"!==c.type&&d?(0,z.jsx)(al,{...a,ref:b}):null});ak.displayName=aj;var al=A.forwardRef((a,b)=>{let{__scopeScrollArea:c,...d}=a,e=T(aj,c),[f,g]=A.useState(0),[h,i]=A.useState(0),j=!!(f&&h);return at(e.scrollbarX,()=>{let a=e.scrollbarX?.offsetHeight||0;e.onCornerHeightChange(a),i(a)}),at(e.scrollbarY,()=>{let a=e.scrollbarY?.offsetWidth||0;e.onCornerWidthChange(a),g(a)}),j?(0,z.jsx)(H.Primitive.div,{...d,ref:b,style:{width:f,height:h,position:"absolute",right:"ltr"===e.dir?0:void 0,left:"rtl"===e.dir?0:void 0,bottom:0,...a.style}}):null});function am(a){return a?parseInt(a,10):0}function an(a,b){let c=a/b;return isNaN(c)?0:c}function ao(a){let b=an(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function ap(a,b,c="ltr"){let d=ao(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 aq([0,g],[0,f-d])(h)}function aq(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 ar=(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 as(a,b){let c=(0,L.useCallbackRef)(a),d=A.useRef(0);return A.useEffect(()=>()=>window.clearTimeout(d.current),[]),A.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(c,b)},[c,b])}function at(a,b){let c=(0,L.useCallbackRef)(b);(0,N.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",()=>ak,"Root",()=>U,"ScrollArea",()=>U,"ScrollAreaCorner",()=>ak,"ScrollAreaScrollbar",()=>Y,"ScrollAreaThumb",()=>ah,"ScrollAreaViewport",()=>W,"Scrollbar",()=>Y,"Thumb",()=>ah,"Viewport",()=>W,"createScrollAreaScope",()=>R],73942);var au=a.i(73942),au=au,av=a.i(85536);function aw({className:a,children:b,...c}){return(0,z.jsxs)(au.Root,{"data-slot":"scroll-area",className:(0,av.cn)("relative",a),...c,children:[(0,z.jsx)(au.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:b}),(0,z.jsx)(ax,{}),(0,z.jsx)(au.Corner,{})]})}function ax({className:a,orientation:b="vertical",...c}){return(0,z.jsx)(au.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:b,className:(0,av.cn)("flex touch-none p-px transition-colors select-none","vertical"===b&&"h-full w-2.5 border-l border-l-transparent","horizontal"===b&&"h-2.5 flex-col border-t border-t-transparent",a),...c,children:(0,z.jsx)(au.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}a.i(47938);var ay=a.i(59503);a.i(69345);var az=a.i(46969);a.i(48822);var aA=a.i(16911);a.i(4388);var aB=a.i(27756);a.i(77466);var aC=a.i(85637);a.i(34338);var aD=a.i(54860),aE=a.i(49474);function aF({features:a,onNewFeature:b,onFeatureClick:c,onFeaturesFolderClick:d,onFeaturesMenuClick:e}){let f=(0,C.usePathname)(),{state:g}=(0,B.useSidebar)(),{mounted:h,visible:i}=function(a,b){let[c,d]=(0,A.useState)(!a),[e,f]=(0,A.useState)(!a);return(0,A.useEffect)(()=>{if(!a){d(!0);let a=requestAnimationFrame(()=>f(!0));return()=>cancelAnimationFrame(a)}f(!1);let b=window.setTimeout(()=>d(!1),200);return()=>window.clearTimeout(b)},[a,200]),{mounted:c,visible:e}}("collapsed"===g,0),j=aE.featureStatusOrder.map(b=>{let{label:c}=aE.featureStatusConfig[b],d=a.filter(a=>a.status===b);return{key:b,label:c,items:d}});return(0,z.jsxs)(B.Sidebar,{"data-testid":"app-sidebar",collapsible:"icon",children:[(0,z.jsx)(B.SidebarHeader,{children:(0,z.jsxs)(B.SidebarMenu,{children:[(0,z.jsx)(B.SidebarMenuItem,{children:(0,z.jsxs)("div",{className:"flex h-8 items-center group-data-[collapsible=icon]:justify-center",children:[h?(0,z.jsxs)("div",{className:["flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2 transition-opacity duration-200 ease-out",i?"opacity-100":"opacity-0"].join(" "),"aria-hidden":!i,children:[(0,z.jsx)(aA.ShepLogo,{className:"shrink-0",size:20}),(0,z.jsx)("span",{className:"truncate text-sm font-semibold tracking-tight",children:"Shep"})]}):null,(0,z.jsx)(az.SidebarCollapseToggle,{className:"shrink-0 transition-all duration-200"})]})}),(0,z.jsx)(ay.SidebarNavItem,{icon:E,label:"Control Center",href:"/",active:"/"===f}),(0,z.jsx)(ay.SidebarNavItem,{icon:F,label:"Memory",href:"/memory",active:"/memory"===f})]})}),(0,z.jsx)(B.SidebarContent,{children:h?(0,z.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",i?"opacity-100":"opacity-0"].join(" "),children:[(0,z.jsx)(aD.SidebarSectionHeader,{label:"Features",onFolderClick:d,onMenuClick:e}),(0,z.jsx)(aw,{children:j.map(({key:a,label:b,items:d})=>d.length>0?(0,z.jsx)(aC.FeatureStatusGroup,{label:b,count:d.length,children:d.map(a=>(0,z.jsx)(aB.FeatureListItem,{name:a.name,status:a.status,startedAt:a.startedAt,duration:a.duration,onClick:c?()=>c(a.name):void 0},a.name))},a):null)})]}):null}),(0,z.jsx)(B.SidebarFooter,{children:(0,z.jsx)(B.SidebarMenu,{children:(0,z.jsx)(B.SidebarMenuItem,{children:(0,z.jsxs)(B.SidebarMenuButton,{onClick:b,tooltip:"New feature",children:[(0,z.jsx)(G.Plus,{}),(0,z.jsx)("span",{children:"New feature"})]})})})}),(0,z.jsx)(B.SidebarRail,{})]})}a.i(20786);var aG=a.i(22550),aH=a.i(84871),aI=a.i(52313);(b={}).PRD="PRD",b.API="API",b.Design="Design",b.Other="Other",(c={}).Markdown="md",c.Text="txt",c.Yaml="yaml",c.Other="Other",(d={}).Todo="Todo",d.Elaborating="Elaborating",d.Done="Done",(e={}).Assistant="assistant",e.User="user",(f={}).Functional="Functional",f.NonFunctional="NonFunctional",(g={}).NotStarted="NotStarted",g.Running="Running",g.Finished="Finished",(h={}).VsCode="vscode",h.Cursor="cursor",h.Windsurf="windsurf",h.Zed="zed",h.Antigravity="antigravity",(i={}).ClaudeCode="claude-code",i.GeminiCli="gemini-cli",i.Aider="aider",i.Continue="continue",i.Cursor="cursor",(j={}).Session="session",j.Token="token",(k={}).Todo="Todo",k.WIP="Work in Progress",k.Done="Done",k.Review="Review",(l={}).Requirements="Requirements",l.ClarificationRequired="ClarificationRequired",l.Ready="Ready",(m={}).Started="Started",m.Analyze="Analyze",m.Requirements="Requirements",m.Research="Research",m.Planning="Planning",m.Implementation="Implementation",m.Review="Review",m.Maintain="Maintain",(n={}).Open="Open",n.Merged="Merged",n.Closed="Closed",(o={}).Pending="Pending",o.Success="Success",o.Failure="Failure",(p={}).VsCode="vscode",p.Cursor="cursor",p.Windsurf="windsurf",p.Zed="zed",p.Antigravity="antigravity",p.CursorCli="cursor-cli",p.ClaudeCode="claude-code",(q={}).AgentStarted="agent_started",q.PhaseCompleted="phase_completed",q.WaitingApproval="waiting_approval",q.AgentCompleted="agent_completed",q.AgentFailed="agent_failed";var aJ=((r={}).Info="info",r.Warning="warning",r.Success="success",r.Error="error",r);(s={}).Idle="Idle",s.Running="Running",s.Paused="Paused",s.Stopped="Stopped",(t={}).GatheringRequirements="GatheringRequirements",t.ClarificationsRequired="ClarificationsRequired",t.DoingResearch="DoingResearch",t.AwaitingReview="AwaitingReview",t.ExecutingWorkPlan="ExecutingWorkPlan",t.Ready="Ready",(u={}).TCP="TCP",u.UDP="UDP",(v={}).DockerCompose="DockerCompose",v.Docker="Docker",v.Kubernetes="Kubernetes",v.Script="Script",v.Manual="Manual",(w={}).Booting="Booting",w.Ready="Ready",w.Stopped="Stopped",(x={}).pending="pending",x.running="running",x.completed="completed",x.failed="failed",x.interrupted="interrupted",x.cancelled="cancelled",x.waitingApproval="waiting_approval",(y={}).sessionResume="session-resume",y.streaming="streaming",y.toolScoping="tool-scoping",y.structuredOutput="structured-output",y.systemPrompt="system-prompt";let aK={[aJ.Success]:"success",[aJ.Error]:"error",[aJ.Warning]:"warning",[aJ.Info]:"info"};function aL({children:a}){!function(){let{lastEvent:a}=(0,aH.useAgentEventsContext)(),[b,c]=(0,A.useState)(()=>void 0===globalThis.Notification?"default":globalThis.Notification.permission),d=(0,A.useRef)(new Set);(0,A.useEffect)(()=>{if(!a)return;let b=`${a.agentRunId}-${a.eventType}-${a.timestamp}`;if(!d.current.has(b)){let c;d.current.add(b),c=aK[a.severity]??"info",aI.toast[c](a.featureName,{description:a.message}),globalThis.Notification?.permission==="granted"&&new Notification(a.featureName,{body:a.message})}},[a]),(0,A.useCallback)(async()=>{void 0===globalThis.Notification||c(await globalThis.Notification.requestPermission())},[])}();let b=(0,A.useCallback)(()=>{window.dispatchEvent(new CustomEvent("shep:open-create-drawer"))},[]);return(0,z.jsxs)(B.SidebarProvider,{children:[(0,z.jsx)(aF,{features:[],onNewFeature:b}),(0,z.jsx)(B.SidebarInset,{children:(0,z.jsxs)("div",{className:"relative h-full",children:[(0,z.jsx)("div",{className:"absolute top-3 right-3 z-50",children:(0,z.jsx)(aG.ThemeToggle,{})}),(0,z.jsx)("main",{className:"h-full",children:a})]})})]})}function aM({children:a}){return(0,z.jsx)(aH.AgentEventsProvider,{children:(0,z.jsx)(aL,{children:a})})}a.s(["AppShell",()=>aM],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