@shepai/cli 1.76.0 → 1.77.0-pr244.422e487

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 (692) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +21 -0
  2. package/apis/json-schema/Settings.yaml +3 -0
  3. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +1 -0
  4. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +4 -1
  6. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +5 -2
  9. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
  10. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  11. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  12. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +7 -2
  13. package/dist/packages/core/src/domain/generated/output.d.ts +21 -0
  14. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/di/container.js +6 -0
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +6 -0
  18. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +17 -0
  20. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +27 -0
  22. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  23. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +13 -3
  24. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +220 -0
  25. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -0
  26. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.js +66 -0
  27. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +1 -0
  28. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  29. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -0
  30. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +1 -0
  31. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  32. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +10 -1
  33. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.js +1 -0
  35. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts +21 -0
  36. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -0
  37. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +60 -0
  38. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +1 -2
  40. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts +25 -0
  41. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +1 -0
  42. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +176 -0
  43. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts +10 -0
  44. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts.map +1 -1
  45. package/dist/packages/core/src/infrastructure/services/settings.service.js +15 -0
  46. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -1
  47. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  48. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +8 -3
  49. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  50. package/dist/src/presentation/cli/commands/feat/new.command.js +2 -0
  51. package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -0
  52. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  53. package/dist/src/presentation/web/app/actions/create-feature.js +3 -1
  54. package/dist/src/presentation/web/app/actions/load-settings.d.ts +9 -0
  55. package/dist/src/presentation/web/app/actions/load-settings.d.ts.map +1 -0
  56. package/dist/src/presentation/web/app/actions/load-settings.js +33 -0
  57. package/dist/src/presentation/web/app/actions/update-settings.d.ts +11 -0
  58. package/dist/src/presentation/web/app/actions/update-settings.d.ts.map +1 -0
  59. package/dist/src/presentation/web/app/actions/update-settings.js +45 -0
  60. package/dist/src/presentation/web/app/global-error.d.ts +7 -0
  61. package/dist/src/presentation/web/app/global-error.d.ts.map +1 -0
  62. package/dist/src/presentation/web/app/global-error.js +5 -0
  63. package/dist/src/presentation/web/app/settings/page.d.ts +4 -0
  64. package/dist/src/presentation/web/app/settings/page.d.ts.map +1 -0
  65. package/dist/src/presentation/web/app/settings/page.js +12 -0
  66. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -0
  67. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +5 -1
  69. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +18 -0
  70. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  71. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +49 -0
  72. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  73. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +28 -4
  74. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +4 -1
  75. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  76. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +6 -3
  77. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +1 -1
  78. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +1 -0
  79. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  80. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +71 -2
  81. package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts +6 -0
  82. package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts.map +1 -0
  83. package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +71 -0
  84. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts +16 -0
  85. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts.map +1 -0
  86. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +36 -0
  87. package/dist/src/presentation/web/components/features/settings/database-settings-section.d.ts +6 -0
  88. package/dist/src/presentation/web/components/features/settings/database-settings-section.d.ts.map +1 -0
  89. package/dist/src/presentation/web/components/features/settings/database-settings-section.js +8 -0
  90. package/dist/src/presentation/web/components/features/settings/database-settings-section.stories.d.ts +15 -0
  91. package/dist/src/presentation/web/components/features/settings/database-settings-section.stories.d.ts.map +1 -0
  92. package/dist/src/presentation/web/components/features/settings/database-settings-section.stories.js +22 -0
  93. package/dist/src/presentation/web/components/features/settings/environment-settings-section.d.ts +6 -0
  94. package/dist/src/presentation/web/components/features/settings/environment-settings-section.d.ts.map +1 -0
  95. package/dist/src/presentation/web/components/features/settings/environment-settings-section.js +54 -0
  96. package/dist/src/presentation/web/components/features/settings/environment-settings-section.stories.d.ts +15 -0
  97. package/dist/src/presentation/web/components/features/settings/environment-settings-section.stories.d.ts.map +1 -0
  98. package/dist/src/presentation/web/components/features/settings/environment-settings-section.stories.js +27 -0
  99. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts +6 -0
  100. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -0
  101. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +45 -0
  102. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts +16 -0
  103. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -0
  104. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +37 -0
  105. package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts +6 -0
  106. package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts.map +1 -0
  107. package/dist/src/presentation/web/components/features/settings/notification-settings-section.js +68 -0
  108. package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.d.ts +16 -0
  109. package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.d.ts.map +1 -0
  110. package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.js +62 -0
  111. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts +8 -0
  112. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -0
  113. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +21 -0
  114. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts +15 -0
  115. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -0
  116. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +39 -0
  117. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts +6 -0
  118. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts.map +1 -0
  119. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.js +76 -0
  120. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts +16 -0
  121. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts.map +1 -0
  122. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +55 -0
  123. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  124. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  125. package/dist/src/presentation/web/components/ui/switch.d.ts +7 -0
  126. package/dist/src/presentation/web/components/ui/switch.d.ts.map +1 -0
  127. package/dist/src/presentation/web/components/ui/switch.js +8 -0
  128. package/dist/src/presentation/web/hooks/use-graph-state.d.ts +2 -0
  129. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
  130. package/dist/src/presentation/web/hooks/use-graph-state.js +4 -0
  131. package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts +1 -0
  132. package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts.map +1 -1
  133. package/dist/src/presentation/web/lib/feature-flags.d.ts +14 -2
  134. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  135. package/dist/src/presentation/web/lib/feature-flags.js +39 -4
  136. package/dist/tsconfig.build.tsbuildinfo +1 -1
  137. package/package.json +1 -1
  138. package/web/.next/BUILD_ID +1 -1
  139. package/web/.next/app-path-routes-manifest.json +1 -0
  140. package/web/.next/build-manifest.json +6 -6
  141. package/web/.next/cache/.previewinfo +1 -1
  142. package/web/.next/cache/.rscinfo +1 -1
  143. package/web/.next/cache/.tsbuildinfo +1 -1
  144. package/web/.next/cache/config.json +3 -3
  145. package/web/.next/fallback-build-manifest.json +2 -2
  146. package/web/.next/prerender-manifest.json +3 -3
  147. package/web/.next/required-server-files.js +1 -1
  148. package/web/.next/required-server-files.json +1 -1
  149. package/web/.next/routes-manifest.json +6 -0
  150. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  151. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  152. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +8 -7
  153. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  154. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  155. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  156. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  157. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +8 -7
  158. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  159. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  160. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  161. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  162. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +8 -7
  163. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  164. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  165. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  166. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  167. package/web/.next/server/app/(dashboard)/create/page.js +8 -7
  168. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  169. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  170. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  171. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  172. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +8 -7
  173. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  174. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  175. package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  176. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  177. package/web/.next/server/app/(dashboard)/page.js +8 -7
  178. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  179. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  180. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  181. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  182. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +8 -7
  183. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  184. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  185. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  186. package/web/.next/server/app/_global-error/page.js +4 -3
  187. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  188. package/web/.next/server/app/_global-error.html +2 -2
  189. package/web/.next/server/app/_global-error.rsc +1 -1
  190. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  191. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  192. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  193. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  194. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  195. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  196. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  197. package/web/.next/server/app/_not-found/page.js +9 -7
  198. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  199. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  200. package/web/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  201. package/web/.next/server/app/settings/page/build-manifest.json +18 -0
  202. package/web/.next/server/app/settings/page/next-font-manifest.json +6 -0
  203. package/web/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  204. package/web/.next/server/app/settings/page/server-reference-manifest.json +50 -0
  205. package/web/.next/server/app/settings/page.js +18 -0
  206. package/web/.next/server/app/settings/page.js.map +5 -0
  207. package/web/.next/server/app/settings/page.js.nft.json +1 -0
  208. package/web/.next/server/app/settings/page_client-reference-manifest.js +2 -0
  209. package/web/.next/server/app/skills/page/build-manifest.json +4 -4
  210. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  211. package/web/.next/server/app/skills/page.js +11 -8
  212. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  213. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  214. package/web/.next/server/app/tools/page/build-manifest.json +4 -4
  215. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  216. package/web/.next/server/app/tools/page.js +9 -7
  217. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  218. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  219. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  220. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  221. package/web/.next/server/app/version/page.js +8 -7
  222. package/web/.next/server/app/version/page.js.nft.json +1 -1
  223. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  224. package/web/.next/server/app-paths-manifest.json +1 -0
  225. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/403f9_next_dist_190bdc35._.js +4 -0
  227. package/web/.next/server/chunks/ssr/{403f9_next_dist_6c821c12._.js.map → 403f9_next_dist_190bdc35._.js.map} +1 -1
  228. package/web/.next/server/chunks/ssr/403f9_next_dist_31ea46d3._.js +6 -0
  229. package/web/.next/server/chunks/ssr/403f9_next_dist_31ea46d3._.js.map +1 -0
  230. package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js +6 -0
  231. package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/403f9_next_dist_compiled_dc550646._.js +3 -0
  233. package/web/.next/server/chunks/ssr/403f9_next_dist_compiled_dc550646._.js.map +1 -0
  234. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_3981ee1d._.js +3 -0
  235. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_3981ee1d._.js.map +1 -0
  236. package/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_bec3d8d3.js → 403f9_next_dist_esm_build_templates_app-page_2eacac96.js} +3 -3
  237. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2eacac96.js.map +1 -0
  238. package/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_c27615b6.js → 403f9_next_dist_esm_build_templates_app-page_46d6bf1b.js} +3 -3
  239. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_46d6bf1b.js.map +1 -0
  240. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_bec3d8d3.js → server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_54b1e179.js} +3 -3
  241. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_54b1e179.js.map +1 -0
  242. package/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_dbf21e04.js → 403f9_next_dist_esm_build_templates_app-page_6c70ecca.js} +3 -3
  243. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_6c70ecca.js.map +1 -0
  244. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d302115b.js → server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c9978986.js} +3 -3
  245. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c9978986.js.map +1 -0
  246. package/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_d302115b.js → 403f9_next_dist_esm_build_templates_app-page_ce6dae5d.js} +3 -3
  247. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_ce6dae5d.js.map +1 -0
  248. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d82f78f0.js +4 -0
  249. package/web/.next/server/chunks/ssr/{_884ddade._.js.map → 403f9_next_dist_esm_build_templates_app-page_d82f78f0.js.map} +1 -1
  250. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  251. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  253. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  254. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  255. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__0880ff0e._.js +3 -0
  257. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8a947500._.js.map → [root-of-the-server]__0880ff0e._.js.map} +1 -1
  258. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c37779e6._.js → [root-of-the-server]__09af7f56._.js} +2 -2
  259. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c37779e6._.js.map → [root-of-the-server]__09af7f56._.js.map} +1 -1
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +4 -0
  261. package/web/.next/server/chunks/ssr/{[root-of-the-server]__6b17a22d._.js.map → [root-of-the-server]__11033878._.js.map} +1 -1
  262. package/web/.next/server/chunks/ssr/[root-of-the-server]__1e4ddb05._.js +4 -0
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__1e4ddb05._.js.map +1 -0
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js +3 -0
  265. package/web/.next/server/chunks/ssr/{[root-of-the-server]__6ee2450e._.js.map → [root-of-the-server]__23b5ca2c._.js.map} +1 -1
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__2f487654._.js +3 -0
  267. package/web/.next/server/chunks/ssr/[root-of-the-server]__2f487654._.js.map +1 -0
  268. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +3 -0
  269. package/web/.next/server/chunks/ssr/{[root-of-the-server]__249c74f6._.js.map → [root-of-the-server]__357d99f9._.js.map} +1 -1
  270. package/web/.next/server/chunks/ssr/[root-of-the-server]__5edfc56b._.js +3 -0
  271. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c18f84a4._.js.map → [root-of-the-server]__5edfc56b._.js.map} +1 -1
  272. package/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js +3 -0
  273. package/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js.map +1 -0
  274. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c88ef55._.js +3 -0
  275. package/web/.next/server/chunks/ssr/{[root-of-the-server]__fa87595c._.js.map → [root-of-the-server]__8c88ef55._.js.map} +1 -1
  276. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  277. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  278. package/web/.next/server/chunks/ssr/[root-of-the-server]__ad2b2a3c._.js +3 -0
  279. package/web/.next/server/chunks/ssr/[root-of-the-server]__ad2b2a3c._.js.map +1 -0
  280. package/web/.next/server/chunks/ssr/[root-of-the-server]__c0876a83._.js +3 -0
  281. package/web/.next/server/chunks/ssr/[root-of-the-server]__c0876a83._.js.map +1 -0
  282. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3c963c6._.js +3 -0
  283. package/web/.next/server/chunks/ssr/{[root-of-the-server]__2018e25f._.js.map → [root-of-the-server]__c3c963c6._.js.map} +1 -1
  284. package/web/.next/server/chunks/ssr/[root-of-the-server]__c9777776._.js +3 -0
  285. package/web/.next/server/chunks/ssr/{[root-of-the-server]__3b4af5ae._.js.map → [root-of-the-server]__c9777776._.js.map} +1 -1
  286. package/web/.next/server/chunks/ssr/[root-of-the-server]__c9eacb2e._.js +3 -0
  287. package/web/.next/server/chunks/ssr/[root-of-the-server]__c9eacb2e._.js.map +1 -0
  288. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +4 -0
  289. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js.map +1 -0
  290. package/web/.next/server/chunks/ssr/[root-of-the-server]__fb243197._.js +4 -0
  291. package/web/.next/server/chunks/ssr/[root-of-the-server]__fb243197._.js.map +1 -0
  292. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +4 -0
  293. package/web/.next/server/chunks/ssr/{[root-of-the-server]__804c006d._.js.map → [root-of-the-server]__fdc75809._.js.map} +1 -1
  294. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_8e8822d6.js → server/chunks/ssr/_16235e5e._.js} +3 -3
  295. package/web/.next/server/chunks/ssr/_16235e5e._.js.map +1 -0
  296. package/web/.next/server/chunks/ssr/_3a4c94e3._.js +3 -0
  297. package/web/.next/server/chunks/ssr/_3a4c94e3._.js.map +1 -0
  298. package/web/.next/server/chunks/ssr/_4b60a2b7._.js +3 -0
  299. package/web/.next/server/chunks/ssr/_4b60a2b7._.js.map +1 -0
  300. package/web/.next/server/chunks/ssr/_6645f218._.js +21 -0
  301. package/web/.next/server/chunks/ssr/_6645f218._.js.map +1 -0
  302. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_ad8a094f._.js → server/chunks/ssr/_6887cba3._.js} +3 -3
  303. package/web/.next/server/chunks/ssr/_6887cba3._.js.map +1 -0
  304. package/web/.next/server/chunks/ssr/_6d5ca3fe._.js +3 -0
  305. package/web/.next/server/chunks/ssr/_6d5ca3fe._.js.map +1 -0
  306. package/web/.next/server/chunks/ssr/_6e08ce21._.js.map +1 -1
  307. package/web/.next/server/chunks/ssr/_77989807._.js +3 -0
  308. package/web/.next/server/chunks/ssr/_77989807._.js.map +1 -0
  309. package/web/.next/server/chunks/ssr/_800acf27._.js +3 -0
  310. package/web/.next/server/chunks/ssr/_800acf27._.js.map +1 -0
  311. package/web/.next/server/chunks/ssr/{403f9_next_dist_6c821c12._.js → _8eeee4db._.js} +3 -3
  312. package/web/.next/server/chunks/ssr/_8eeee4db._.js.map +1 -0
  313. package/web/.next/server/chunks/ssr/_9025abb8._.js +3 -0
  314. package/web/.next/server/chunks/ssr/_9025abb8._.js.map +1 -0
  315. package/web/.next/server/chunks/ssr/_9603ace6._.js +3 -0
  316. package/web/.next/server/chunks/ssr/_9603ace6._.js.map +1 -0
  317. package/web/.next/server/chunks/ssr/_ad771b49._.js +6 -0
  318. package/web/.next/server/chunks/ssr/_ad771b49._.js.map +1 -0
  319. package/web/.next/server/chunks/ssr/_b11878f5._.js +3 -0
  320. package/web/.next/server/chunks/ssr/_b11878f5._.js.map +1 -0
  321. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_3197d5cb._.js → server/chunks/ssr/_caf236b9._.js} +2 -2
  322. package/web/.next/server/chunks/ssr/_caf236b9._.js.map +1 -0
  323. package/web/.next/server/chunks/ssr/_ce38ef23._.js +9 -0
  324. package/web/.next/server/chunks/ssr/_ce38ef23._.js.map +1 -0
  325. package/web/.next/server/chunks/ssr/_d13defa2._.js +3 -0
  326. package/web/.next/server/chunks/ssr/_d13defa2._.js.map +1 -0
  327. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_884ddade._.js → server/chunks/ssr/_ed11dcd6._.js} +3 -3
  328. package/web/.next/server/chunks/ssr/_ed11dcd6._.js.map +1 -0
  329. package/web/.next/server/chunks/ssr/_f0132aa7._.js +7 -0
  330. package/web/.next/server/chunks/ssr/_f0132aa7._.js.map +1 -0
  331. package/web/.next/server/chunks/ssr/_f38b49fe._.js +3 -0
  332. package/web/.next/server/chunks/ssr/_f38b49fe._.js.map +1 -0
  333. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_9d039634.js → server/chunks/ssr/_f4d222d6._.js} +3 -3
  334. package/web/.next/server/chunks/ssr/_f4d222d6._.js.map +1 -0
  335. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +3 -0
  336. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -0
  337. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js +3 -0
  338. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js.map +1 -0
  339. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  340. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js.map +1 -1
  341. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  342. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js.map +1 -1
  343. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  344. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js.map +1 -1
  345. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  346. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js.map +1 -1
  347. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  348. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  349. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +3 -0
  350. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -0
  351. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +3 -0
  352. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -0
  353. package/web/.next/server/chunks/ssr/src_presentation_web_app_global-error_tsx_14c389b5._.js +3 -0
  354. package/web/.next/server/chunks/ssr/src_presentation_web_app_global-error_tsx_14c389b5._.js.map +1 -0
  355. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  356. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  357. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  358. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  359. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_label_tsx_af3b4cd6._.js +3 -0
  360. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_label_tsx_af3b4cd6._.js.map +1 -0
  361. package/web/.next/server/middleware-build-manifest.js +4 -4
  362. package/web/.next/server/pages/500.html +2 -2
  363. package/web/.next/server/server-reference-manifest.js +1 -1
  364. package/web/.next/server/server-reference-manifest.json +59 -22
  365. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  366. package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +1 -0
  367. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +6 -6
  368. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  369. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  370. package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +6 -0
  371. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  372. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  373. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +8 -7
  374. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  375. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  376. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  377. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  378. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +8 -7
  379. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  380. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  381. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  382. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  383. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +8 -7
  384. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  385. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  386. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  387. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  388. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +8 -7
  389. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  390. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  391. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  392. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  393. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +8 -7
  394. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  395. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  396. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  397. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  398. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +8 -7
  399. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  400. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  401. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  402. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  403. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +8 -7
  404. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  405. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  406. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  407. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js +4 -3
  408. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  409. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  410. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  411. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  412. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  413. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  414. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  415. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  416. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  417. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  418. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js +9 -7
  419. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  420. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  421. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  422. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/build-manifest.json +18 -0
  423. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/next-font-manifest.json +6 -0
  424. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  425. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/server-reference-manifest.json +50 -0
  426. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page.js +18 -0
  427. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page.js.map +5 -0
  428. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page.js.nft.json +1 -0
  429. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page_client-reference-manifest.js +2 -0
  430. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +4 -4
  431. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  432. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +11 -8
  433. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  434. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  435. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +4 -4
  436. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  437. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js +9 -7
  438. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  439. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  440. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +4 -4
  441. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  442. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js +8 -7
  443. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  444. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  445. package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +1 -0
  446. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_190bdc35._.js +4 -0
  447. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_31ea46d3._.js +6 -0
  448. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js +6 -0
  449. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_compiled_dc550646._.js +3 -0
  450. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_3981ee1d._.js +3 -0
  451. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2eacac96.js +4 -0
  452. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_c27615b6.js → 403f9_next_dist_esm_build_templates_app-page_46d6bf1b.js} +3 -3
  453. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_54b1e179.js +4 -0
  454. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_dbf21e04.js → 403f9_next_dist_esm_build_templates_app-page_6c70ecca.js} +3 -3
  455. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c9978986.js +4 -0
  456. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_ce6dae5d.js +4 -0
  457. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d82f78f0.js +4 -0
  458. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  459. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  460. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  461. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__0880ff0e._.js +3 -0
  462. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__c37779e6._.js → [root-of-the-server]__09af7f56._.js} +2 -2
  463. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +4 -0
  464. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__1e4ddb05._.js +4 -0
  465. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js +3 -0
  466. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2f487654._.js +3 -0
  467. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +3 -0
  468. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__5edfc56b._.js +3 -0
  469. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js +3 -0
  470. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8c88ef55._.js +3 -0
  471. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  472. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ad2b2a3c._.js +3 -0
  473. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c0876a83._.js +3 -0
  474. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c3c963c6._.js +3 -0
  475. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c9777776._.js +3 -0
  476. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c9eacb2e._.js +3 -0
  477. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +4 -0
  478. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fb243197._.js +4 -0
  479. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +4 -0
  480. package/web/.next/{server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_8e8822d6.js → standalone/src/presentation/web/.next/server/chunks/ssr/_16235e5e._.js} +3 -3
  481. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_3a4c94e3._.js +3 -0
  482. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_4b60a2b7._.js +3 -0
  483. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6645f218._.js +21 -0
  484. package/web/.next/{server/chunks/ssr/_ad8a094f._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_6887cba3._.js} +3 -3
  485. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6d5ca3fe._.js +3 -0
  486. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_77989807._.js +3 -0
  487. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_800acf27._.js +3 -0
  488. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{403f9_next_dist_6c821c12._.js → _8eeee4db._.js} +3 -3
  489. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9025abb8._.js +3 -0
  490. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9603ace6._.js +3 -0
  491. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_ad771b49._.js +6 -0
  492. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_b11878f5._.js +3 -0
  493. package/web/.next/{server/chunks/ssr/_3197d5cb._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_caf236b9._.js} +2 -2
  494. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_ce38ef23._.js +9 -0
  495. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_d13defa2._.js +3 -0
  496. package/web/.next/{server/chunks/ssr/_884ddade._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_ed11dcd6._.js} +3 -3
  497. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_f0132aa7._.js +7 -0
  498. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_f38b49fe._.js +3 -0
  499. package/web/.next/{server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_9d039634.js → standalone/src/presentation/web/.next/server/chunks/ssr/_f4d222d6._.js} +3 -3
  500. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +3 -0
  501. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js +3 -0
  502. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  503. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  504. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  505. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  506. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  507. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +3 -0
  508. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +3 -0
  509. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_app_global-error_tsx_14c389b5._.js +3 -0
  510. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  511. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  512. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ui_label_tsx_af3b4cd6._.js +3 -0
  513. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +4 -4
  514. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  515. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  516. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +59 -22
  517. package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +6 -1
  518. package/web/.next/standalone/src/presentation/web/app/actions/load-settings.ts +43 -0
  519. package/web/.next/standalone/src/presentation/web/app/actions/update-settings.ts +73 -0
  520. package/web/.next/standalone/src/presentation/web/app/global-error.tsx +23 -0
  521. package/web/.next/standalone/src/presentation/web/app/settings/page.tsx +27 -0
  522. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +57 -0
  523. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +21 -0
  524. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +32 -4
  525. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +9 -4
  526. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +81 -2
  527. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +1 -1
  528. package/web/.next/standalone/src/presentation/web/components/features/settings/agent-settings-section.stories.tsx +43 -0
  529. package/web/.next/standalone/src/presentation/web/components/features/settings/agent-settings-section.tsx +176 -0
  530. package/web/.next/standalone/src/presentation/web/components/features/settings/database-settings-section.stories.tsx +28 -0
  531. package/web/.next/standalone/src/presentation/web/components/features/settings/database-settings-section.tsx +43 -0
  532. package/web/.next/standalone/src/presentation/web/components/features/settings/environment-settings-section.stories.tsx +33 -0
  533. package/web/.next/standalone/src/presentation/web/components/features/settings/environment-settings-section.tsx +125 -0
  534. package/web/.next/standalone/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.tsx +44 -0
  535. package/web/.next/standalone/src/presentation/web/components/features/settings/feature-flags-settings-section.tsx +94 -0
  536. package/web/.next/standalone/src/presentation/web/components/features/settings/notification-settings-section.stories.tsx +71 -0
  537. package/web/.next/standalone/src/presentation/web/components/features/settings/notification-settings-section.tsx +178 -0
  538. package/web/.next/standalone/src/presentation/web/components/features/settings/settings-page-client.stories.tsx +46 -0
  539. package/web/.next/standalone/src/presentation/web/components/features/settings/settings-page-client.tsx +60 -0
  540. package/web/.next/standalone/src/presentation/web/components/features/settings/workflow-settings-section.stories.tsx +62 -0
  541. package/web/.next/standalone/src/presentation/web/components/features/settings/workflow-settings-section.tsx +274 -0
  542. package/web/.next/standalone/src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx +7 -1
  543. package/web/.next/standalone/src/presentation/web/components/ui/switch.tsx +35 -0
  544. package/web/.next/standalone/src/presentation/web/hooks/use-graph-state.ts +7 -0
  545. package/web/.next/standalone/src/presentation/web/hooks/use-viewport-persistence.ts +2 -0
  546. package/web/.next/standalone/src/presentation/web/lib/feature-flags.ts +47 -4
  547. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  548. package/web/.next/static/chunks/0c9c6fa052f30692.js +1 -0
  549. package/web/.next/static/chunks/12c0a9e7b566f998.css +2 -0
  550. package/web/.next/static/chunks/2500bf7056aaeff1.js +1 -0
  551. package/web/.next/static/chunks/27a80588cf4e08df.js +1 -0
  552. package/web/.next/static/chunks/27f7260befce4dea.js +1 -0
  553. package/web/.next/static/chunks/2bbd5c12e2c90c0c.js +1 -0
  554. package/web/.next/static/chunks/356ebc89a2a97627.js +1 -0
  555. package/web/.next/static/chunks/3b37508221559c80.js +1 -0
  556. package/web/.next/static/chunks/3e4dc2cc60a49743.js +1 -0
  557. package/web/.next/static/chunks/{716547ef8d13139d.js → 4d4a4111dec5f70f.js} +1 -1
  558. package/web/.next/static/chunks/700501f5ac2bb320.js +1 -0
  559. package/web/.next/static/chunks/736bef33b328e5e6.js +1 -0
  560. package/web/.next/static/chunks/8857165c23fc8fe5.js +1 -0
  561. package/web/.next/static/chunks/89aac43287d73b02.js +1 -0
  562. package/web/.next/static/chunks/9c74a889605bb2a3.js +1 -0
  563. package/web/.next/static/chunks/a5c6c77b79b9ed9b.js +1 -0
  564. package/web/.next/static/chunks/b1c0e555cf7bb4f8.js +1 -0
  565. package/web/.next/static/chunks/d0732d738a696000.js +1 -0
  566. package/web/.next/static/chunks/{07f00e2e73d322d2.js → d4d8f0a137bd2eb4.js} +3 -3
  567. package/web/.next/static/chunks/d9c55c5f00f6d29b.js +1 -0
  568. package/web/.next/static/chunks/db55ff93af6c8455.js +4 -0
  569. package/web/.next/static/chunks/{00adfce42dbbd5ef.js → f742ff5c1be2ef77.js} +1 -1
  570. package/web/.next/static/chunks/f97fd41212035056.js +11 -0
  571. package/web/.next/static/chunks/fa9742636bdfcce6.js +1 -0
  572. package/web/.next/static/chunks/{turbopack-05820f781f3ffc22.js → turbopack-3bdf15471eef2eec.js} +1 -1
  573. package/web/.next/trace +1 -1
  574. package/web/.next/trace-build +1 -1
  575. package/web/.next/types/link.d.ts +1 -0
  576. package/web/.next/types/routes.d.ts +2 -1
  577. package/web/.next/types/validator.ts +9 -0
  578. package/web/.next/server/chunks/ssr/403f9_next_dist_client_components_builtin_global-error_5fefc4d7.js +0 -3
  579. package/web/.next/server/chunks/ssr/403f9_next_dist_client_components_builtin_global-error_5fefc4d7.js.map +0 -1
  580. package/web/.next/server/chunks/ssr/403f9_next_dist_d738ab66._.js +0 -3
  581. package/web/.next/server/chunks/ssr/403f9_next_dist_d738ab66._.js.map +0 -1
  582. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_0f115902.js +0 -4
  583. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_0f115902.js.map +0 -1
  584. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_8e8822d6.js.map +0 -1
  585. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_9d039634.js.map +0 -1
  586. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_bec3d8d3.js.map +0 -1
  587. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c27615b6.js.map +0 -1
  588. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d302115b.js.map +0 -1
  589. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_dbf21e04.js.map +0 -1
  590. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +0 -4
  591. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +0 -1
  592. package/web/.next/server/chunks/ssr/[root-of-the-server]__2018e25f._.js +0 -3
  593. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +0 -3
  594. package/web/.next/server/chunks/ssr/[root-of-the-server]__3b4af5ae._.js +0 -3
  595. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +0 -4
  596. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +0 -1
  597. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +0 -3
  598. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +0 -1
  599. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +0 -4
  600. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +0 -4
  601. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +0 -1
  602. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ee2450e._.js +0 -3
  603. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +0 -4
  604. package/web/.next/server/chunks/ssr/[root-of-the-server]__80e5bed2._.js +0 -3
  605. package/web/.next/server/chunks/ssr/[root-of-the-server]__80e5bed2._.js.map +0 -1
  606. package/web/.next/server/chunks/ssr/[root-of-the-server]__8a947500._.js +0 -3
  607. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +0 -3
  608. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +0 -1
  609. package/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +0 -3
  610. package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +0 -3
  611. package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js.map +0 -1
  612. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa87595c._.js +0 -3
  613. package/web/.next/server/chunks/ssr/_07c2a32a._.js +0 -9
  614. package/web/.next/server/chunks/ssr/_07c2a32a._.js.map +0 -1
  615. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +0 -3
  616. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +0 -1
  617. package/web/.next/server/chunks/ssr/_3197d5cb._.js.map +0 -1
  618. package/web/.next/server/chunks/ssr/_380c6567._.js +0 -6
  619. package/web/.next/server/chunks/ssr/_380c6567._.js.map +0 -1
  620. package/web/.next/server/chunks/ssr/_44cce4e0._.js +0 -4
  621. package/web/.next/server/chunks/ssr/_44cce4e0._.js.map +0 -1
  622. package/web/.next/server/chunks/ssr/_5ee4f5a7._.js +0 -7
  623. package/web/.next/server/chunks/ssr/_5ee4f5a7._.js.map +0 -1
  624. package/web/.next/server/chunks/ssr/_61351ed3._.js +0 -3
  625. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +0 -1
  626. package/web/.next/server/chunks/ssr/_8400c8bb._.js +0 -3
  627. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +0 -1
  628. package/web/.next/server/chunks/ssr/_9f940437._.js +0 -3
  629. package/web/.next/server/chunks/ssr/_9f940437._.js.map +0 -1
  630. package/web/.next/server/chunks/ssr/_a29296f0._.js +0 -3
  631. package/web/.next/server/chunks/ssr/_a29296f0._.js.map +0 -1
  632. package/web/.next/server/chunks/ssr/_a3854150._.js +0 -6
  633. package/web/.next/server/chunks/ssr/_a3854150._.js.map +0 -1
  634. package/web/.next/server/chunks/ssr/_ad8a094f._.js.map +0 -1
  635. package/web/.next/server/chunks/ssr/_dc379243._.js +0 -4
  636. package/web/.next/server/chunks/ssr/_dc379243._.js.map +0 -1
  637. package/web/.next/server/chunks/ssr/_e806976d._.js +0 -3
  638. package/web/.next/server/chunks/ssr/_e806976d._.js.map +0 -1
  639. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js +0 -3
  640. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js.map +0 -1
  641. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_client_components_builtin_global-error_5fefc4d7.js +0 -3
  642. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_d738ab66._.js +0 -3
  643. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_0f115902.js +0 -4
  644. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +0 -4
  645. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2018e25f._.js +0 -3
  646. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +0 -3
  647. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__3b4af5ae._.js +0 -3
  648. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +0 -4
  649. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +0 -3
  650. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +0 -4
  651. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +0 -4
  652. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6ee2450e._.js +0 -3
  653. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +0 -4
  654. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__80e5bed2._.js +0 -3
  655. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8a947500._.js +0 -3
  656. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +0 -3
  657. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +0 -3
  658. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +0 -3
  659. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fa87595c._.js +0 -3
  660. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_07c2a32a._.js +0 -9
  661. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +0 -3
  662. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_380c6567._.js +0 -6
  663. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_44cce4e0._.js +0 -4
  664. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_5ee4f5a7._.js +0 -7
  665. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +0 -3
  666. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +0 -3
  667. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +0 -3
  668. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a29296f0._.js +0 -3
  669. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a3854150._.js +0 -6
  670. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_dc379243._.js +0 -4
  671. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e806976d._.js +0 -3
  672. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js +0 -3
  673. package/web/.next/static/chunks/11a6c88ffcbac93f.js +0 -1
  674. package/web/.next/static/chunks/1f5c93a8b939416d.js +0 -5
  675. package/web/.next/static/chunks/255140c45a023ff4.js +0 -1
  676. package/web/.next/static/chunks/293231ccc0b144fa.js +0 -1
  677. package/web/.next/static/chunks/3bc2a07d02372939.js +0 -1
  678. package/web/.next/static/chunks/3f205fd6adbfd20a.js +0 -7
  679. package/web/.next/static/chunks/424982cd78174a1a.js +0 -1
  680. package/web/.next/static/chunks/4a3b3cfcc85e7254.js +0 -1
  681. package/web/.next/static/chunks/5d0a6417c4e4e545.js +0 -1
  682. package/web/.next/static/chunks/6931ae67c2484ddf.js +0 -1
  683. package/web/.next/static/chunks/9215b6fb973482c5.js +0 -1
  684. package/web/.next/static/chunks/9a765e022ef2b815.js +0 -1
  685. package/web/.next/static/chunks/b6c507fc42d9a277.js +0 -1
  686. package/web/.next/static/chunks/c1dbeb3307dab443.js +0 -4
  687. package/web/.next/static/chunks/d7786685ec8efe10.js +0 -1
  688. package/web/.next/static/chunks/e12fff3b57456bc2.css +0 -2
  689. package/web/.next/static/chunks/edbd674102e897b4.js +0 -1
  690. /package/web/.next/static/{L6_6jZ4TnQuuDXIF5GZEf → OY9vo9JHlYYnBy-WPoYAQ}/_buildManifest.js +0 -0
  691. /package/web/.next/static/{L6_6jZ4TnQuuDXIF5GZEf → OY9vo9JHlYYnBy-WPoYAQ}/_clientMiddlewareManifest.json +0 -0
  692. /package/web/.next/static/{L6_6jZ4TnQuuDXIF5GZEf → OY9vo9JHlYYnBy-WPoYAQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,274 @@
1
+ 'use client';
2
+
3
+ import { useState, useTransition, useRef, useEffect } from 'react';
4
+ import { GitBranch, Check } from 'lucide-react';
5
+ import { toast } from 'sonner';
6
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
7
+ import { Label } from '@/components/ui/label';
8
+ import { Input } from '@/components/ui/input';
9
+ import { Switch } from '@/components/ui/switch';
10
+ import { Separator } from '@/components/ui/separator';
11
+ import { updateSettingsAction } from '@/app/actions/update-settings';
12
+ import type { WorkflowConfig } from '@shepai/core/domain/generated/output';
13
+
14
+ export interface WorkflowSettingsSectionProps {
15
+ workflow: WorkflowConfig;
16
+ }
17
+
18
+ export function WorkflowSettingsSection({ workflow }: WorkflowSettingsSectionProps) {
19
+ const [openPr, setOpenPr] = useState(workflow.openPrOnImplementationComplete);
20
+ const [pushOnComplete, setPushOnComplete] = useState(
21
+ workflow.approvalGateDefaults.pushOnImplementationComplete
22
+ );
23
+ const [allowPrd, setAllowPrd] = useState(workflow.approvalGateDefaults.allowPrd);
24
+ const [allowPlan, setAllowPlan] = useState(workflow.approvalGateDefaults.allowPlan);
25
+ const [allowMerge, setAllowMerge] = useState(workflow.approvalGateDefaults.allowMerge);
26
+ const [ciMaxFix, setCiMaxFix] = useState(
27
+ workflow.ciMaxFixAttempts != null ? String(workflow.ciMaxFixAttempts) : ''
28
+ );
29
+ const [ciTimeout, setCiTimeout] = useState(
30
+ workflow.ciWatchTimeoutMs != null ? String(Math.round(workflow.ciWatchTimeoutMs / 1000)) : ''
31
+ );
32
+ const [ciLogMax, setCiLogMax] = useState(
33
+ workflow.ciLogMaxChars != null ? String(workflow.ciLogMaxChars) : ''
34
+ );
35
+ const [isPending, startTransition] = useTransition();
36
+ const [showSaved, setShowSaved] = useState(false);
37
+ const prevPendingRef = useRef(false);
38
+
39
+ useEffect(() => {
40
+ if (prevPendingRef.current && !isPending) {
41
+ setShowSaved(true);
42
+ const timer = setTimeout(() => setShowSaved(false), 2000);
43
+ return () => clearTimeout(timer);
44
+ }
45
+ prevPendingRef.current = isPending;
46
+ }, [isPending]);
47
+
48
+ function parseOptionalInt(value: string): number | undefined {
49
+ if (value === '') return undefined;
50
+ const n = parseInt(value, 10);
51
+ return Number.isNaN(n) || n <= 0 ? undefined : n;
52
+ }
53
+
54
+ function buildPayload(
55
+ overrides: {
56
+ openPr?: boolean;
57
+ pushOnComplete?: boolean;
58
+ allowPrd?: boolean;
59
+ allowPlan?: boolean;
60
+ allowMerge?: boolean;
61
+ ciMaxFix?: string;
62
+ ciTimeout?: string;
63
+ ciLogMax?: string;
64
+ } = {}
65
+ ) {
66
+ const timeoutSeconds = parseOptionalInt(overrides.ciTimeout ?? ciTimeout);
67
+ return {
68
+ workflow: {
69
+ openPrOnImplementationComplete: overrides.openPr ?? openPr,
70
+ approvalGateDefaults: {
71
+ pushOnImplementationComplete: overrides.pushOnComplete ?? pushOnComplete,
72
+ allowPrd: overrides.allowPrd ?? allowPrd,
73
+ allowPlan: overrides.allowPlan ?? allowPlan,
74
+ allowMerge: overrides.allowMerge ?? allowMerge,
75
+ },
76
+ ciMaxFixAttempts: parseOptionalInt(overrides.ciMaxFix ?? ciMaxFix),
77
+ ciWatchTimeoutMs: timeoutSeconds != null ? timeoutSeconds * 1000 : undefined,
78
+ ciLogMaxChars: parseOptionalInt(overrides.ciLogMax ?? ciLogMax),
79
+ },
80
+ };
81
+ }
82
+
83
+ function save(overrides: Parameters<typeof buildPayload>[0] = {}) {
84
+ startTransition(async () => {
85
+ const result = await updateSettingsAction(buildPayload(overrides));
86
+ if (!result.success) {
87
+ toast.error(result.error ?? 'Failed to save workflow settings');
88
+ }
89
+ });
90
+ }
91
+
92
+ function handleSwitchChange(
93
+ key: 'openPr' | 'pushOnComplete' | 'allowPrd' | 'allowPlan' | 'allowMerge',
94
+ setter: (v: boolean) => void,
95
+ value: boolean
96
+ ) {
97
+ setter(value);
98
+ save({ [key]: value });
99
+ }
100
+
101
+ function handleCiFieldBlur(
102
+ key: 'ciMaxFix' | 'ciTimeout' | 'ciLogMax',
103
+ currentValue: string,
104
+ originalValue: string
105
+ ) {
106
+ if (currentValue !== originalValue) {
107
+ save({ [key]: currentValue });
108
+ }
109
+ }
110
+
111
+ const originalCiMaxFix =
112
+ workflow.ciMaxFixAttempts != null ? String(workflow.ciMaxFixAttempts) : '';
113
+ const originalCiTimeout =
114
+ workflow.ciWatchTimeoutMs != null ? String(Math.round(workflow.ciWatchTimeoutMs / 1000)) : '';
115
+ const originalCiLogMax = workflow.ciLogMaxChars != null ? String(workflow.ciLogMaxChars) : '';
116
+
117
+ return (
118
+ <Card id="workflow" className="scroll-mt-6" data-testid="workflow-settings-section">
119
+ <CardHeader>
120
+ <div className="flex items-center justify-between">
121
+ <div className="flex items-center gap-2">
122
+ <GitBranch className="text-muted-foreground h-4 w-4" />
123
+ <CardTitle>Workflow</CardTitle>
124
+ </div>
125
+ {isPending ? <span className="text-muted-foreground text-xs">Saving...</span> : null}
126
+ {showSaved && !isPending ? (
127
+ <span className="flex items-center gap-1 text-xs text-green-600">
128
+ <Check className="h-3 w-3" />
129
+ Saved
130
+ </span>
131
+ ) : null}
132
+ </div>
133
+ <CardDescription>Configure PR behavior, approval gates, and CI settings</CardDescription>
134
+ </CardHeader>
135
+ <CardContent className="space-y-4">
136
+ <div className="space-y-3">
137
+ <div className="flex items-center justify-between gap-4">
138
+ <div className="space-y-0.5">
139
+ <Label htmlFor="open-pr">Open PR on implementation complete</Label>
140
+ <p className="text-muted-foreground text-xs">
141
+ Automatically create a pull request when the agent finishes
142
+ </p>
143
+ </div>
144
+ <Switch
145
+ id="open-pr"
146
+ data-testid="switch-open-pr"
147
+ checked={openPr}
148
+ onCheckedChange={(v) => handleSwitchChange('openPr', setOpenPr, v)}
149
+ />
150
+ </div>
151
+ <div className="flex items-center justify-between gap-4">
152
+ <div className="space-y-0.5">
153
+ <Label htmlFor="push-on-complete">Push on implementation complete</Label>
154
+ <p className="text-muted-foreground text-xs">
155
+ Push the branch to remote when implementation is done
156
+ </p>
157
+ </div>
158
+ <Switch
159
+ id="push-on-complete"
160
+ data-testid="switch-push-on-complete"
161
+ checked={pushOnComplete}
162
+ onCheckedChange={(v) => handleSwitchChange('pushOnComplete', setPushOnComplete, v)}
163
+ />
164
+ </div>
165
+ </div>
166
+
167
+ <Separator />
168
+
169
+ <div className="space-y-3">
170
+ <h3 className="text-sm font-semibold">Approval Gates</h3>
171
+ <div className="flex items-center justify-between gap-4">
172
+ <div className="space-y-0.5">
173
+ <Label htmlFor="allow-prd">PRD auto-approval</Label>
174
+ <p className="text-muted-foreground text-xs">
175
+ Skip manual approval for product requirement documents
176
+ </p>
177
+ </div>
178
+ <Switch
179
+ id="allow-prd"
180
+ data-testid="switch-allow-prd"
181
+ checked={allowPrd}
182
+ onCheckedChange={(v) => handleSwitchChange('allowPrd', setAllowPrd, v)}
183
+ />
184
+ </div>
185
+ <div className="flex items-center justify-between gap-4">
186
+ <div className="space-y-0.5">
187
+ <Label htmlFor="allow-plan">Plan auto-approval</Label>
188
+ <p className="text-muted-foreground text-xs">
189
+ Skip manual approval for implementation plans
190
+ </p>
191
+ </div>
192
+ <Switch
193
+ id="allow-plan"
194
+ data-testid="switch-allow-plan"
195
+ checked={allowPlan}
196
+ onCheckedChange={(v) => handleSwitchChange('allowPlan', setAllowPlan, v)}
197
+ />
198
+ </div>
199
+ <div className="flex items-center justify-between gap-4">
200
+ <div className="space-y-0.5">
201
+ <Label htmlFor="allow-merge">Merge auto-approval</Label>
202
+ <p className="text-muted-foreground text-xs">Skip manual approval for PR merges</p>
203
+ </div>
204
+ <Switch
205
+ id="allow-merge"
206
+ data-testid="switch-allow-merge"
207
+ checked={allowMerge}
208
+ onCheckedChange={(v) => handleSwitchChange('allowMerge', setAllowMerge, v)}
209
+ />
210
+ </div>
211
+ </div>
212
+
213
+ <Separator />
214
+
215
+ <div className="space-y-3">
216
+ <h3 className="text-sm font-semibold">CI Settings</h3>
217
+ <div className="space-y-1.5">
218
+ <Label htmlFor="ci-max-fix">Max fix attempts</Label>
219
+ <Input
220
+ id="ci-max-fix"
221
+ data-testid="ci-max-fix-input"
222
+ type="text"
223
+ inputMode="numeric"
224
+ pattern="[0-9]*"
225
+ min={1}
226
+ max={10}
227
+ placeholder="e.g., 3"
228
+ value={ciMaxFix}
229
+ onChange={(e) => setCiMaxFix(e.target.value)}
230
+ onBlur={() => handleCiFieldBlur('ciMaxFix', ciMaxFix, originalCiMaxFix)}
231
+ />
232
+ <p className="text-muted-foreground text-xs">
233
+ How many times the agent retries fixing CI failures
234
+ </p>
235
+ </div>
236
+ <div className="space-y-1.5">
237
+ <Label htmlFor="ci-timeout">Watch timeout (seconds)</Label>
238
+ <Input
239
+ id="ci-timeout"
240
+ data-testid="ci-timeout-input"
241
+ type="text"
242
+ inputMode="numeric"
243
+ pattern="[0-9]*"
244
+ placeholder="e.g., 300"
245
+ value={ciTimeout}
246
+ onChange={(e) => setCiTimeout(e.target.value)}
247
+ onBlur={() => handleCiFieldBlur('ciTimeout', ciTimeout, originalCiTimeout)}
248
+ />
249
+ <p className="text-muted-foreground text-xs">
250
+ How long to wait for CI to complete before timing out
251
+ </p>
252
+ </div>
253
+ <div className="space-y-1.5">
254
+ <Label htmlFor="ci-log-max">Max log characters</Label>
255
+ <Input
256
+ id="ci-log-max"
257
+ data-testid="ci-log-max-input"
258
+ type="text"
259
+ inputMode="numeric"
260
+ pattern="[0-9]*"
261
+ placeholder="e.g., 50000"
262
+ value={ciLogMax}
263
+ onChange={(e) => setCiLogMax(e.target.value)}
264
+ onBlur={() => handleCiFieldBlur('ciLogMax', ciLogMax, originalCiLogMax)}
265
+ />
266
+ <p className="text-muted-foreground text-xs">
267
+ Maximum characters to capture from CI logs
268
+ </p>
269
+ </div>
270
+ </div>
271
+ </CardContent>
272
+ </Card>
273
+ );
274
+ }
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { usePathname } from 'next/navigation';
4
- import { Home, Wrench, Puzzle, Plus } from 'lucide-react';
4
+ import { Home, Wrench, Puzzle, Plus, Settings } from 'lucide-react';
5
5
  import {
6
6
  Sidebar,
7
7
  SidebarHeader,
@@ -89,6 +89,12 @@ export function AppSidebar({ features, onNewFeature, onFeatureClick }: AppSideba
89
89
  active={pathname === '/skills'}
90
90
  />
91
91
  ) : null}
92
+ <SidebarNavItem
93
+ icon={Settings}
94
+ label="Settings"
95
+ href="/settings"
96
+ active={pathname === '/settings'}
97
+ />
92
98
  </SidebarMenu>
93
99
  </SidebarHeader>
94
100
 
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { Switch as SwitchPrimitive } from 'radix-ui';
5
+
6
+ import { cn } from '@/lib/utils';
7
+
8
+ function Switch({
9
+ className,
10
+ size = 'default',
11
+ ...props
12
+ }: React.ComponentProps<typeof SwitchPrimitive.Root> & {
13
+ size?: 'sm' | 'default';
14
+ }) {
15
+ return (
16
+ <SwitchPrimitive.Root
17
+ data-slot="switch"
18
+ data-size={size}
19
+ className={cn(
20
+ 'peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6',
21
+ className
22
+ )}
23
+ {...props}
24
+ >
25
+ <SwitchPrimitive.Thumb
26
+ data-slot="switch-thumb"
27
+ className={cn(
28
+ 'bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0'
29
+ )}
30
+ />
31
+ </SwitchPrimitive.Root>
32
+ );
33
+ }
34
+
35
+ export { Switch };
@@ -45,6 +45,8 @@ export interface UseGraphStateReturn {
45
45
  getFeatureRepositoryPath: (featureNodeId: string) => string | undefined;
46
46
  /** Stable lookup: get repository node data by nodeId. */
47
47
  getRepositoryData: (nodeId: string) => RepositoryNodeData | undefined;
48
+ /** Stable lookup: get the current number of repositories in the domain Map. */
49
+ getRepoMapSize: () => number;
48
50
  /** Update callbacks injected into node data (does NOT trigger re-render). */
49
51
  setCallbacks: (callbacks: GraphCallbacks) => void;
50
52
  }
@@ -353,6 +355,10 @@ export function useGraphState(
353
355
  return repoMapRef.current.get(nodeId)?.data;
354
356
  }, []);
355
357
 
358
+ const getRepoMapSize = useCallback((): number => {
359
+ return repoMapRef.current.size;
360
+ }, []);
361
+
356
362
  const setCallbacks = useCallback((callbacks: GraphCallbacks) => {
357
363
  callbacksRef.current = callbacks;
358
364
  }, []);
@@ -371,6 +377,7 @@ export function useGraphState(
371
377
  replaceRepository,
372
378
  getFeatureRepositoryPath,
373
379
  getRepositoryData,
380
+ getRepoMapSize,
374
381
  setCallbacks,
375
382
  };
376
383
  }
@@ -3,6 +3,8 @@
3
3
  import { useCallback, useEffect, useRef } from 'react';
4
4
  import type { Viewport } from '@xyflow/react';
5
5
 
6
+ export type { Viewport } from '@xyflow/react';
7
+
6
8
  export const STORAGE_KEY = 'shep-canvas-viewport';
7
9
  export const DEBOUNCE_MS = 500;
8
10
 
@@ -1,15 +1,58 @@
1
1
  /**
2
2
  * Feature flags for the web UI.
3
3
  *
4
- * Toggle via environment variables (NEXT_PUBLIC_ prefix for client access).
5
- * All flags default to **off** unless explicitly set to "true" or "1".
4
+ * DB-primary resolution: reads from Settings.featureFlags when available,
5
+ * falls back to NEXT_PUBLIC_ environment variables.
6
+ * The debug flag is DB-only (no env var fallback).
6
7
  */
7
8
 
9
+ import { hasSettings, getSettings } from '@shepai/core/infrastructure/services/settings.service';
10
+
8
11
  function isEnabled(envVar: string | undefined): boolean {
9
12
  return envVar === 'true' || envVar === '1';
10
13
  }
11
14
 
15
+ export interface FeatureFlagsState {
16
+ skills: boolean;
17
+ envDeploy: boolean;
18
+ debug: boolean;
19
+ }
20
+
21
+ export function getFeatureFlags(): FeatureFlagsState {
22
+ try {
23
+ if (hasSettings()) {
24
+ const flags = getSettings().featureFlags;
25
+ if (flags) {
26
+ return {
27
+ skills: flags.skills,
28
+ envDeploy: flags.envDeploy,
29
+ debug: flags.debug,
30
+ };
31
+ }
32
+ }
33
+ } catch {
34
+ // Settings not initialized (e.g., during build/SSG or client-side hydration)
35
+ }
36
+
37
+ return {
38
+ skills: isEnabled(process.env.NEXT_PUBLIC_FLAG_SKILLS),
39
+ envDeploy: isEnabled(process.env.NEXT_PUBLIC_FLAG_ENV_DEPLOY),
40
+ debug: false,
41
+ };
42
+ }
43
+
44
+ /**
45
+ * @deprecated Use getFeatureFlags() instead for DB-primary resolution.
46
+ * Kept for backward compatibility during migration.
47
+ */
12
48
  export const featureFlags = {
13
- skills: isEnabled(process.env.NEXT_PUBLIC_FLAG_SKILLS),
14
- envDeploy: isEnabled(process.env.NEXT_PUBLIC_FLAG_ENV_DEPLOY),
49
+ get skills() {
50
+ return getFeatureFlags().skills;
51
+ },
52
+ get envDeploy() {
53
+ return getFeatureFlags().envDeploy;
54
+ },
55
+ get debug() {
56
+ return getFeatureFlags().debug;
57
+ },
15
58
  } as const;
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
15
15
  const hostname = process.env.HOSTNAME || '0.0.0.0'
16
16
 
17
17
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
18
- const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.75.0","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
18
+ const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.77.0","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
19
19
 
20
20
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
21
21
 
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68304,51080,e=>{"use strict";var t=e.i(20314),s=e.i(79054),r=e.i(91967),a=e.i(22528),i=e.i(87342),l=e.i(5978),n=e.i(13123),o=e.i(87620),c=e.i(29297),d=e.i(36589),u=e.i(66033),m="rovingFocusGroup.onEntryFocus",f={bubbles:!1,cancelable:!0},h="RovingFocusGroup",[x,p,g]=(0,i.createCollection)(h),[v,y]=(0,a.createContextScope)(h,[g]),[b,j]=v(h),k=s.forwardRef((e,s)=>(0,t.jsx)(x.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,t.jsx)(x.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,t.jsx)(w,{...e,ref:s})})}));k.displayName=h;var w=s.forwardRef((e,a)=>{let{__scopeRovingFocusGroup:i,orientation:n,loop:x=!1,dir:g,currentTabStopId:v,defaultCurrentTabStopId:y,onCurrentTabStopIdChange:j,onEntryFocus:k,preventScrollOnEntryFocus:w=!1,...N}=e,C=s.useRef(null),T=(0,l.useComposedRefs)(a,C),I=(0,u.useDirection)(g),[S,A]=(0,d.useControllableState)({prop:v,defaultProp:y??null,onChange:j,caller:h}),[z,E]=s.useState(!1),M=(0,c.useCallbackRef)(k),D=p(i),L=s.useRef(!1),[P,F]=s.useState(0);return s.useEffect(()=>{let e=C.current;if(e)return e.addEventListener(m,M),()=>e.removeEventListener(m,M)},[M]),(0,t.jsx)(b,{scope:i,orientation:n,dir:I,loop:x,currentTabStopId:S,onItemFocus:s.useCallback(e=>A(e),[A]),onItemShiftTab:s.useCallback(()=>E(!0),[]),onFocusableItemAdd:s.useCallback(()=>F(e=>e+1),[]),onFocusableItemRemove:s.useCallback(()=>F(e=>e-1),[]),children:(0,t.jsx)(o.Primitive.div,{tabIndex:z||0===P?-1:0,"data-orientation":n,...N,ref:T,style:{outline:"none",...e.style},onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,()=>{L.current=!0}),onFocus:(0,r.composeEventHandlers)(e.onFocus,e=>{let t=!L.current;if(e.target===e.currentTarget&&t&&!z){let t=new CustomEvent(m,f);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=D().filter(e=>e.focusable);R([e.find(e=>e.active),e.find(e=>e.id===S),...e].filter(Boolean).map(e=>e.ref.current),w)}}L.current=!1}),onBlur:(0,r.composeEventHandlers)(e.onBlur,()=>E(!1))})})}),N="RovingFocusGroupItem",C=s.forwardRef((e,a)=>{let{__scopeRovingFocusGroup:i,focusable:l=!0,active:c=!1,tabStopId:d,children:u,...m}=e,f=(0,n.useId)(),h=d||f,g=j(N,i),v=g.currentTabStopId===h,y=p(i),{onFocusableItemAdd:b,onFocusableItemRemove:k,currentTabStopId:w}=g;return s.useEffect(()=>{if(l)return b(),()=>k()},[l,b,k]),(0,t.jsx)(x.ItemSlot,{scope:i,id:h,focusable:l,active:c,children:(0,t.jsx)(o.Primitive.span,{tabIndex:v?0:-1,"data-orientation":g.orientation,...m,ref:a,onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,e=>{l?g.onItemFocus(h):e.preventDefault()}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>g.onItemFocus(h)),onKeyDown:(0,r.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void g.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,s){var r;let a=(r=e.key,"rtl"!==s?r:"ArrowLeft"===r?"ArrowRight":"ArrowRight"===r?"ArrowLeft":r);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(a))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(a)))return T[a]}(e,g.orientation,g.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let a=y().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)a.reverse();else if("prev"===t||"next"===t){var s,r;"prev"===t&&a.reverse();let i=a.indexOf(e.currentTarget);a=g.loop?(s=a,r=i+1,s.map((e,t)=>s[(r+t)%s.length])):a.slice(i+1)}setTimeout(()=>R(a))}}),children:"function"==typeof u?u({isCurrentTabStop:v,hasTabStop:null!=w}):u})})});C.displayName=N;var T={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function R(e,t=!1){let s=document.activeElement;for(let r of e)if(r===s||(r.focus({preventScroll:t}),document.activeElement!==s))return}e.s(["Item",()=>C,"Root",()=>k,"createRovingFocusGroupScope",()=>y],51080);var I=e.i(85995),S="Tabs",[A,z]=(0,a.createContextScope)(S,[y]),E=y(),[M,D]=A(S),L=s.forwardRef((e,s)=>{let{__scopeTabs:r,value:a,onValueChange:i,defaultValue:l,orientation:c="horizontal",dir:m,activationMode:f="automatic",...h}=e,x=(0,u.useDirection)(m),[p,g]=(0,d.useControllableState)({prop:a,onChange:i,defaultProp:l??"",caller:S});return(0,t.jsx)(M,{scope:r,baseId:(0,n.useId)(),value:p,onValueChange:g,orientation:c,dir:x,activationMode:f,children:(0,t.jsx)(o.Primitive.div,{dir:x,"data-orientation":c,...h,ref:s})})});L.displayName=S;var P="TabsList",F=s.forwardRef((e,s)=>{let{__scopeTabs:r,loop:a=!0,...i}=e,l=D(P,r),n=E(r);return(0,t.jsx)(k,{asChild:!0,...n,orientation:l.orientation,dir:l.dir,loop:a,children:(0,t.jsx)(o.Primitive.div,{role:"tablist","aria-orientation":l.orientation,...i,ref:s})})});F.displayName=P;var O="TabsTrigger",B=s.forwardRef((e,s)=>{let{__scopeTabs:a,value:i,disabled:l=!1,...n}=e,c=D(O,a),d=E(a),u=q(c.baseId,i),m=K(c.baseId,i),f=i===c.value;return(0,t.jsx)(C,{asChild:!0,...d,focusable:!l,active:f,children:(0,t.jsx)(o.Primitive.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":m,"data-state":f?"active":"inactive","data-disabled":l?"":void 0,disabled:l,id:u,...n,ref:s,onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,e=>{l||0!==e.button||!1!==e.ctrlKey?e.preventDefault():c.onValueChange(i)}),onKeyDown:(0,r.composeEventHandlers)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&c.onValueChange(i)}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>{let e="manual"!==c.activationMode;f||l||!e||c.onValueChange(i)})})})});B.displayName=O;var H="TabsContent",V=s.forwardRef((e,r)=>{let{__scopeTabs:a,value:i,forceMount:l,children:n,...c}=e,d=D(H,a),u=q(d.baseId,i),m=K(d.baseId,i),f=i===d.value,h=s.useRef(f);return s.useEffect(()=>{let e=requestAnimationFrame(()=>h.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,t.jsx)(I.Presence,{present:l||f,children:({present:s})=>(0,t.jsx)(o.Primitive.div,{"data-state":f?"active":"inactive","data-orientation":d.orientation,role:"tabpanel","aria-labelledby":u,hidden:!s,id:m,tabIndex:0,...c,ref:r,style:{...e.style,animationDuration:h.current?"0s":void 0},children:s&&n})})});function q(e,t){return`${e}-trigger-${t}`}function K(e,t){return`${e}-content-${t}`}V.displayName=H,e.s(["Content",()=>V,"List",()=>F,"Root",()=>L,"Tabs",()=>L,"TabsContent",()=>V,"TabsList",()=>F,"TabsTrigger",()=>B,"Trigger",()=>B,"createTabsScope",()=>z],43133);var $=e.i(43133),$=$,U=e.i(31777);let G=$.Root,_=s.forwardRef(({className:e,...s},r)=>(0,t.jsx)($.List,{ref:r,className:(0,U.cn)("bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1",e),...s}));_.displayName=$.List.displayName;let W=s.forwardRef(({className:e,...s},r)=>(0,t.jsx)($.Trigger,{ref:r,className:(0,U.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",e),...s}));W.displayName=$.Trigger.displayName;let X=s.forwardRef(({className:e,...s},r)=>(0,t.jsx)($.Content,{ref:r,className:(0,U.cn)("ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",e),...s}));X.displayName=$.Content.displayName,e.s(["Tabs",()=>G,"TabsContent",()=>X,"TabsList",()=>_,"TabsTrigger",()=>W],68304)},87342,e=>{"use strict";var t=e.i(79054),s=e.i(22528),r=e.i(5978),a=e.i(86874),i=e.i(20314);function l(e){let l=e+"CollectionProvider",[n,o]=(0,s.createContextScope)(l),[c,d]=n(l,{collectionRef:{current:null},itemMap:new Map}),u=e=>{let{scope:s,children:r}=e,a=t.default.useRef(null),l=t.default.useRef(new Map).current;return(0,i.jsx)(c,{scope:s,itemMap:l,collectionRef:a,children:r})};u.displayName=l;let m=e+"CollectionSlot",f=(0,a.createSlot)(m),h=t.default.forwardRef((e,t)=>{let{scope:s,children:a}=e,l=d(m,s),n=(0,r.useComposedRefs)(t,l.collectionRef);return(0,i.jsx)(f,{ref:n,children:a})});h.displayName=m;let x=e+"CollectionItemSlot",p="data-radix-collection-item",g=(0,a.createSlot)(x),v=t.default.forwardRef((e,s)=>{let{scope:a,children:l,...n}=e,o=t.default.useRef(null),c=(0,r.useComposedRefs)(s,o),u=d(x,a);return t.default.useEffect(()=>(u.itemMap.set(o,{ref:o,...n}),()=>void u.itemMap.delete(o))),(0,i.jsx)(g,{...{[p]:""},ref:c,children:l})});return v.displayName=x,[{Provider:u,Slot:h,ItemSlot:v},function(s){let r=d(e+"CollectionConsumer",s);return t.default.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${p}]`));return Array.from(r.itemMap.values()).sort((e,s)=>t.indexOf(e.ref.current)-t.indexOf(s.ref.current))},[r.collectionRef,r.itemMap])},o]}var n=new WeakMap;function o(e,t){var s,r;let a,i,l;if("at"in Array.prototype)return Array.prototype.at.call(e,t);let n=(s=e,r=t,a=s.length,(l=(i=c(r))>=0?i:a+i)<0||l>=a?-1:l);return -1===n?void 0:e[n]}function c(e){return e!=e||0===e?0:Math.trunc(e)}(class e extends Map{#e;constructor(e){super(e),this.#e=[...super.keys()],n.set(this,!0)}set(e,t){return n.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,s){let r,a=this.has(t),i=this.#e.length,l=c(e),n=l>=0?l:i+l,o=n<0||n>=i?-1:n;if(o===this.size||a&&o===this.size-1||-1===o)return this.set(t,s),this;let d=this.size+ +!a;l<0&&n++;let u=[...this.#e],m=!1;for(let e=n;e<d;e++)if(n===e){let i=u[e];u[e]===t&&(i=u[e+1]),a&&this.delete(t),r=this.get(i),this.set(t,s)}else{m||u[e-1]!==t||(m=!0);let s=u[m?e:e-1],a=r;r=this.get(s),this.delete(s),this.set(s,a)}return this}with(t,s,r){let a=new e(this);return a.insert(t,s,r),a}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,s){let r=this.#e.indexOf(e);return -1===r?this:this.insert(r,t,s)}after(e){let t=this.#e.indexOf(e);if(-1!==(t=-1===t||t===this.size-1?-1:t+1))return this.entryAt(t)}setAfter(e,t,s){let r=this.#e.indexOf(e);return -1===r?this:this.insert(r+1,t,s)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return void 0!==t&&this.delete(t)}at(e){let t=o(this.#e,e);if(void 0!==t)return this.get(t)}entryAt(e){let t=o(this.#e,e);if(void 0!==t)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return o(this.#e,e)}from(e,t){let s=this.indexOf(e);if(-1===s)return;let r=s+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.at(r)}keyFrom(e,t){let s=this.indexOf(e);if(-1===s)return;let r=s+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.keyAt(r)}find(e,t){let s=0;for(let r of this){if(Reflect.apply(e,t,[r,s,this]))return r;s++}}findIndex(e,t){let s=0;for(let r of this){if(Reflect.apply(e,t,[r,s,this]))return s;s++}return -1}filter(t,s){let r=[],a=0;for(let e of this)Reflect.apply(t,s,[e,a,this])&&r.push(e),a++;return new e(r)}map(t,s){let r=[],a=0;for(let e of this)r.push([e[0],Reflect.apply(t,s,[e,a,this])]),a++;return new e(r)}reduce(...e){let[t,s]=e,r=0,a=s??this.at(0);for(let s of this)a=0===r&&1===e.length?s:Reflect.apply(t,this,[a,s,r,this]),r++;return a}reduceRight(...e){let[t,s]=e,r=s??this.at(-1);for(let s=this.size-1;s>=0;s--){let a=this.at(s);r=s===this.size-1&&1===e.length?a:Reflect.apply(t,this,[r,a,s,this])}return r}toSorted(t){return new e([...this.entries()].sort(t))}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let s=this.keyAt(e),r=this.get(s);t.set(s,r)}return t}toSpliced(...t){let s=[...this.entries()];return s.splice(...t),new e(s)}slice(t,s){let r=new e,a=this.size-1;if(void 0===t)return r;t<0&&(t+=this.size),void 0!==s&&s>0&&(a=s-1);for(let e=t;e<=a;e++){let t=this.keyAt(e),s=this.get(t);r.set(t,s)}return r}every(e,t){let s=0;for(let r of this){if(!Reflect.apply(e,t,[r,s,this]))return!1;s++}return!0}some(e,t){let s=0;for(let r of this){if(Reflect.apply(e,t,[r,s,this]))return!0;s++}return!1}}),e.s(["createCollection",()=>l])},49228,e=>{"use strict";let t=(0,e.i(3645).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>t],49228)},30090,e=>{"use strict";let t=(0,e.i(3645).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["default",()=>t])},54277,e=>{"use strict";var t=e.i(30090);e.s(["CircleX",()=>t.default])},33548,e=>{"use strict";let t=(0,e.i(3645).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],33548)},23925,e=>{"use strict";var t=e.i(1012);e.s(["Check",()=>t.default])},38573,e=>{"use strict";let t=(0,e.i(3645).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",()=>t],38573)},81846,e=>{"use strict";var t=e.i(20314),s=e.i(94237),r=e.i(31777);let a=(0,s.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function i({className:e,variant:s,...i}){return(0,t.jsx)("div",{className:(0,r.cn)(a({variant:s}),e),...i})}e.s(["Badge",()=>i])},1012,e=>{"use strict";let t=(0,e.i(3645).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",()=>t])},95812,e=>{"use strict";let t=(0,e.i(3645).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",()=>t],95812)},35e3,e=>{"use strict";var t=e.i(80986);e.s(["CheckCircle2",()=>t.default])},44412,e=>{"use strict";var t=e.i(20314),s=e.i(79054),r=e.i(81975),a=e.i(68304),i=e.i(31777),l=e.i(83428),n=e.i(3645);let o=(0,n.default)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]),c=(0,n.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),d=(0,n.default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);var u=e.i(38573),m=e.i(49228),f=e.i(54277),h=e.i(95812),x=e.i(35e3);let p=(0,n.default)("package",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);var g=e.i(35364),v=e.i(2828),y=e.i(33548),b=e.i(23925),j=e.i(30702),k=e.i(11495);let w={linux:"Linux",darwin:"macOS",win32:"Windows"},N={ide:{label:"IDE",icon:d},"cli-agent":{label:"CLI Agent",icon:u.Terminal},vcs:{label:"VCS",icon:m.GitBranch},terminal:{label:"Terminal",icon:u.Terminal}};function C({status:e}){return"available"===e?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-emerald-100 px-2 py-0.5 text-xs font-medium text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400",children:[(0,t.jsx)(b.Check,{className:"h-3 w-3"}),"Installed"]}):"error"===e?(0,t.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-red-100 px-2 py-0.5 text-xs font-medium text-red-700 dark:bg-red-900/30 dark:text-red-400",children:"Error"}):(0,t.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-amber-100 px-2 py-0.5 text-xs font-medium text-amber-700 dark:bg-amber-900/30 dark:text-amber-400",children:"Missing"})}function T({tool:e,open:r,onClose:a,onRefresh:i,autoStart:n}){let[u,m]=(0,s.useState)(!1),[f,h]=(0,s.useState)(!1),{logs:x,status:v,startInstall:T}=function(e){let[t,r]=(0,s.useState)([]),[a,i]=(0,s.useState)("idle"),[l,n]=(0,s.useState)(null),o=(0,s.useRef)(null),c=(0,s.useCallback)(()=>{o.current&&(o.current.close(),o.current=null)},[]);return(0,s.useEffect)(()=>c,[c]),{logs:t,status:a,result:l,startInstall:(0,s.useCallback)(()=>{c(),r([]),n(null),i("streaming");let t=new EventSource(`/api/tools/${e}/install/stream`);o.current=t,t.onmessage=e=>{r(t=>[...t,e.data])},t.addEventListener("done",e=>{let t=JSON.parse(e.data);n(t),i("error"===t.status?"error":"done"),c()}),t.onerror=()=>{i("error"),c()}},[e,c])}}(e.id),R=(0,s.useRef)(null),I=(0,s.useRef)(!0),S=(0,s.useRef)(!1),A="available"===e.status.status,z="error"===e.status.status,E=A&&!!e.openDirectory,M=!A&&!z&&e.autoInstall;async function D(){h(!0);try{await fetch(`/api/tools/${e.id}/launch`,{method:"POST"})}finally{h(!1)}}(0,s.useEffect)(()=>{r&&n&&M&&"idle"===v&&!S.current&&(S.current=!0,T()),r||(S.current=!1)},[r,n,M,v,T]);let L=(0,s.useCallback)(()=>{let e=R.current;e&&(I.current=e.scrollTop+e.clientHeight>=e.scrollHeight-50)},[]);(0,s.useEffect)(()=>{I.current&&R.current&&(R.current.scrollTop=R.current.scrollHeight)},[x,v]),(0,s.useEffect)(()=>{"done"===v&&i&&i()},[v,i]);let P=(0,t.jsxs)("div",{className:"flex flex-col gap-1.5 pr-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[e.iconUrl?(0,t.jsx)("img",{src:e.iconUrl,alt:"",width:24,height:24,className:"shrink-0 dark:invert"}):(0,t.jsx)(p,{className:"text-muted-foreground h-6 w-6 shrink-0"}),(0,t.jsx)("h2",{className:"text-base font-bold",children:e.name}),(0,t.jsx)(C,{status:e.status.status})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:e.tags.map(e=>{let s=N[e]??{label:e,icon:d},r=s.icon;return(0,t.jsxs)("span",{className:"text-muted-foreground/70 inline-flex items-center gap-0.5 text-[10px]",children:[(0,t.jsx)(r,{className:"h-3 w-3"}),s.label]},e)})})]});return(0,t.jsx)(k.BaseDrawer,{open:r,onClose:a,size:"md",modal:!0,title:e.name,header:P,"data-testid":"tool-detail-drawer",children:(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-4 overflow-y-auto p-4",children:[(0,t.jsx)("p",{className:"text-muted-foreground text-sm",children:e.description}),e.author||e.platforms?(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs",children:[e.author?(0,t.jsxs)("span",{className:"text-muted-foreground",children:["by"," ",e.website?(0,t.jsx)("a",{href:e.website,target:"_blank",rel:"noopener noreferrer",className:"text-foreground hover:underline",children:e.author}):(0,t.jsx)("span",{className:"text-foreground",children:e.author})]}):null,e.platforms&&e.platforms.length>0?(0,t.jsx)("span",{className:"text-muted-foreground",children:e.platforms.map(e=>w[e]??e).join(" · ")}):null]}):null,e.installCommand?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs font-semibold tracking-wide uppercase",children:"Install command"}),(0,t.jsxs)("div",{className:"relative rounded-md bg-zinc-900 text-zinc-100",children:[(0,t.jsx)("pre",{className:"overflow-x-auto px-3 py-2.5 pr-16 font-mono text-xs leading-relaxed break-all whitespace-pre-wrap",children:(0,t.jsx)("code",{children:e.installCommand})}),(0,t.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"absolute top-1.5 right-1.5 h-7 cursor-pointer px-2 text-zinc-400 hover:text-zinc-100",onClick:function(){e.installCommand&&navigator.clipboard.writeText(e.installCommand).then(()=>{m(!0),setTimeout(()=>m(!1),2e3)})},"aria-label":u?"Copied!":"Copy install command",children:[u?(0,t.jsx)(b.Check,{className:"h-3.5 w-3.5 text-emerald-500"}):(0,t.jsx)(y.Copy,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"ml-1 text-[10px]",children:u?"Copied!":"Copy"})]})]})]}):null,(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[M?(0,t.jsxs)(g.Button,{size:"sm",onClick:T,disabled:"streaming"===v,"aria-label":`Install ${e.name}`,className:"cursor-pointer",children:["streaming"===v?(0,t.jsx)(l.Loader2,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(c,{className:"mr-1.5 h-3.5 w-3.5"}),"streaming"===v?"Installing...":"Install"]}):null,E?(0,t.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:()=>void D(),disabled:f,"aria-label":`Launch ${e.name}`,className:"cursor-pointer",children:[f?(0,t.jsx)(l.Loader2,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(o,{className:"mr-1.5 h-3.5 w-3.5"}),"Launch"]}):null,e.documentationUrl?(0,t.jsx)(g.Button,{variant:"outline",size:"sm",className:"cursor-pointer",asChild:!0,children:(0,t.jsxs)("a",{href:e.documentationUrl,target:"_blank",rel:"noopener noreferrer",children:["Docs",(0,t.jsx)(j.ExternalLink,{className:"ml-1 h-3 w-3"})]})}):null]}),("streaming"===v||"done"===v||"error"===v)&&x.length>0?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs font-semibold tracking-wide uppercase",children:"Install log"}),(0,t.jsxs)("div",{ref:R,onScroll:L,className:"max-h-60 overflow-auto rounded-md bg-zinc-900 p-3 font-mono text-xs leading-relaxed text-zinc-100","data-testid":"tool-install-log",children:[x.map((e,s)=>(0,t.jsx)("div",{className:"break-all whitespace-pre-wrap",children:e},s)),"done"===v?(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-700 pt-2 text-emerald-400",children:"Installation complete"}):null,"error"===v?(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-700 pt-2 text-red-400",children:"Installation failed"}):null]})]}):null]})})}let R={ide:{label:"IDE",icon:d},"cli-agent":{label:"CLI Agent",icon:u.Terminal},vcs:{label:"VCS",icon:m.GitBranch},terminal:{label:"Terminal",icon:u.Terminal}};function I({tool:e,onRefresh:r,className:a}){let[n,u]=(0,s.useState)(!1),[m,y]=(0,s.useState)(!1),[b,j]=(0,s.useTransition)(),k="available"===e.status.status,w="error"===e.status.status,N=k&&!!e.openDirectory;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{"data-testid":"tool-card",onClick:function(){y(!1),u(!0)},className:(0,i.cn)("bg-card group flex h-30 w-full cursor-pointer flex-col rounded-lg border p-3 transition-shadow hover:shadow-md",a),children:[(0,t.jsxs)("div",{className:"mb-2 flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[e.iconUrl?(0,t.jsx)("img",{src:e.iconUrl,alt:"",width:20,height:20,className:"shrink-0 dark:invert"}):(0,t.jsx)(p,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,t.jsx)("h3",{"data-testid":"tool-card-name",className:"truncate text-sm font-bold",children:e.name})]}),(0,t.jsx)("div",{"data-testid":"tool-card-tags",className:"flex shrink-0 items-center gap-1",children:e.tags.map(e=>{let s=R[e]??{label:e,icon:d},r=s.icon;return(0,t.jsxs)("span",{className:"text-muted-foreground/70 inline-flex items-center gap-0.5 text-[9px]",children:[(0,t.jsx)(r,{className:"h-2.5 w-2.5"}),s.label]},e)})})]}),(0,t.jsx)("p",{"data-testid":"tool-card-summary",className:"text-muted-foreground mt-1 truncate text-xs",children:e.summary}),(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between pt-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[w&&"error"===e.status.status?(0,t.jsxs)("span",{className:"flex items-center gap-1 truncate text-[10px] text-red-600 dark:text-red-400",title:e.status.errorMessage,children:[(0,t.jsx)(f.CircleX,{className:"h-3 w-3 shrink-0"}),e.status.errorMessage??"Error"]}):k?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-emerald-600 dark:text-emerald-400",children:[(0,t.jsx)(x.CheckCircle2,{className:"h-3 w-3"}),"Installed"]}):(0,t.jsxs)("span",{className:"text-muted-foreground flex items-center gap-1 text-[10px]",children:[(0,t.jsx)(h.Circle,{className:"h-3 w-3"}),"Not installed"]}),e.required?(0,t.jsx)(v.TooltipProvider,{children:(0,t.jsxs)(v.Tooltip,{children:[(0,t.jsx)(v.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"rounded bg-amber-100 px-1.5 py-0.5 text-[9px] font-medium text-amber-700 dark:bg-amber-900/50 dark:text-amber-400",children:"Required"})}),(0,t.jsx)(v.TooltipContent,{side:"top",children:"This tool is required for Shep to function properly"})]})}):null]}),(0,t.jsx)("div",{className:"flex items-center gap-1",children:k&&N?(0,t.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:function(t){t.stopPropagation(),j(async()=>{await fetch(`/api/tools/${e.id}/launch`,{method:"POST"})})},disabled:b,"aria-label":`Launch ${e.name}`,"data-testid":"tool-card-launch-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[b?(0,t.jsx)(l.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}):(0,t.jsx)(o,{className:"mr-1 h-3 w-3"}),"Launch"]}):k||w?null:(0,t.jsxs)(g.Button,{size:"sm",variant:"default",onClick:function(t){t.stopPropagation(),y(e.autoInstall),u(!0)},"aria-label":`Install ${e.name}`,"data-testid":"tool-card-install-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[(0,t.jsx)(c,{className:"mr-1 h-3 w-3"}),"Install"]})})]})]}),(0,t.jsx)(T,{tool:e,open:n,onClose:()=>u(!1),onRefresh:r,autoStart:m})]})}let S={all:()=>!0,ide:e=>e.tags.includes("ide"),"cli-agent":e=>e.tags.includes("cli-agent"),vcs:e=>e.tags.includes("vcs"),terminal:e=>e.tags.includes("terminal")};function A({tools:e,className:l}){let[n,o]=(0,s.useState)(e),[c,d]=(0,s.useState)("all"),u=(0,s.useCallback)(async()=>{try{let e=await fetch("/api/tools");if(e.ok){let t=await e.json();o(t)}}catch{}},[]),m=n.filter(S[c]);return(0,t.jsxs)("div",{"data-testid":"tools-page-client",className:(0,i.cn)("space-y-4",l),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(r.Wrench,{className:"text-muted-foreground h-4 w-4"}),(0,t.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Tools"}),(0,t.jsxs)("span",{className:"text-muted-foreground text-[10px]",children:[n.filter(e=>"available"===e.status.status).length,"/",n.length," installed"]})]}),(0,t.jsxs)(a.Tabs,{value:c,onValueChange:e=>d(e),"data-testid":"tools-page-tabs",children:[(0,t.jsxs)(a.TabsList,{className:"h-7",children:[(0,t.jsx)(a.TabsTrigger,{value:"all","data-testid":"tools-tab-all",className:"px-2.5 text-xs",children:"All"}),(0,t.jsx)(a.TabsTrigger,{value:"ide","data-testid":"tools-tab-ide",className:"px-2.5 text-xs",children:"IDEs"}),(0,t.jsx)(a.TabsTrigger,{value:"cli-agent","data-testid":"tools-tab-cli-agent",className:"px-2.5 text-xs",children:"CLI Agents"}),(0,t.jsx)(a.TabsTrigger,{value:"vcs","data-testid":"tools-tab-vcs",className:"px-2.5 text-xs",children:"Version Control"}),(0,t.jsx)(a.TabsTrigger,{value:"terminal","data-testid":"tools-tab-terminal",className:"px-2.5 text-xs",children:"Terminals"})]}),(0,t.jsx)(a.TabsContent,{value:c,className:"mt-3",children:0===m.length?(0,t.jsxs)("div",{"data-testid":"tools-page-empty",className:"text-muted-foreground flex flex-col items-center justify-center py-12 text-center",children:[(0,t.jsx)(r.Wrench,{className:"mb-2 h-6 w-6 opacity-20"}),(0,t.jsx)("p",{className:"text-xs",children:"No tools in this category."})]}):(0,t.jsx)("div",{"data-testid":"tools-page-grid",className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:m.map(e=>(0,t.jsx)(I,{tool:e,onRefresh:u},e.id))})})]})]})}e.s(["ToolsPageClient",()=>A],44412)}]);