@shepai/cli 1.106.3 → 1.106.4-pr327.f3fea88

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 (697) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +5 -0
  2. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  3. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
  4. package/dist/packages/core/src/domain/generated/output.d.ts +4 -0
  5. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  6. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
  7. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +3 -1
  9. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  10. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +11 -0
  11. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
  13. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +5 -0
  15. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/schemas/spec.schema.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/schemas/spec.schema.js +6 -1
  17. package/dist/src/presentation/web/app/api/chat/stream/route.d.ts +14 -0
  18. package/dist/src/presentation/web/app/api/chat/stream/route.d.ts.map +1 -0
  19. package/dist/src/presentation/web/app/api/chat/stream/route.js +153 -0
  20. package/dist/src/presentation/web/app/chat/page.d.ts +4 -0
  21. package/dist/src/presentation/web/app/chat/page.d.ts.map +1 -0
  22. package/dist/src/presentation/web/app/chat/page.js +11 -0
  23. package/dist/src/presentation/web/components/features/chat/chat-empty-state.d.ts +6 -0
  24. package/dist/src/presentation/web/components/features/chat/chat-empty-state.d.ts.map +1 -0
  25. package/dist/src/presentation/web/components/features/chat/chat-empty-state.js +14 -0
  26. package/dist/src/presentation/web/components/features/chat/chat-empty-state.stories.d.ts +7 -0
  27. package/dist/src/presentation/web/components/features/chat/chat-empty-state.stories.d.ts.map +1 -0
  28. package/dist/src/presentation/web/components/features/chat/chat-empty-state.stories.js +15 -0
  29. package/dist/src/presentation/web/components/features/chat/chat-header.d.ts +7 -0
  30. package/dist/src/presentation/web/components/features/chat/chat-header.d.ts.map +1 -0
  31. package/dist/src/presentation/web/components/features/chat/chat-header.js +10 -0
  32. package/dist/src/presentation/web/components/features/chat/chat-header.stories.d.ts +8 -0
  33. package/dist/src/presentation/web/components/features/chat/chat-header.stories.d.ts.map +1 -0
  34. package/dist/src/presentation/web/components/features/chat/chat-header.stories.js +20 -0
  35. package/dist/src/presentation/web/components/features/chat/chat-page-client.d.ts +2 -0
  36. package/dist/src/presentation/web/components/features/chat/chat-page-client.d.ts.map +1 -0
  37. package/dist/src/presentation/web/components/features/chat/chat-page-client.js +50 -0
  38. package/dist/src/presentation/web/components/features/chat/chat-page-client.stories.d.ts +7 -0
  39. package/dist/src/presentation/web/components/features/chat/chat-page-client.stories.d.ts.map +1 -0
  40. package/dist/src/presentation/web/components/features/chat/chat-page-client.stories.js +15 -0
  41. package/dist/src/presentation/web/components/features/chat/chat-view.d.ts +24 -0
  42. package/dist/src/presentation/web/components/features/chat/chat-view.d.ts.map +1 -0
  43. package/dist/src/presentation/web/components/features/chat/chat-view.js +17 -0
  44. package/dist/src/presentation/web/components/features/chat/chat-view.stories.d.ts +14 -0
  45. package/dist/src/presentation/web/components/features/chat/chat-view.stories.d.ts.map +1 -0
  46. package/dist/src/presentation/web/components/features/chat/chat-view.stories.js +149 -0
  47. package/dist/src/presentation/web/components/features/chat/index.d.ts +5 -0
  48. package/dist/src/presentation/web/components/features/chat/index.d.ts.map +1 -0
  49. package/dist/src/presentation/web/components/features/chat/index.js +4 -0
  50. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  51. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +3 -1
  52. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  53. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +3 -0
  54. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  55. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +6 -1
  56. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  57. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  58. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  60. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -1
  61. package/dist/src/presentation/web/components/ui/avatar.d.ts +12 -0
  62. package/dist/src/presentation/web/components/ui/avatar.d.ts.map +1 -0
  63. package/dist/src/presentation/web/components/ui/avatar.js +23 -0
  64. package/dist/src/presentation/web/components/ui/chat-container.d.ts +17 -0
  65. package/dist/src/presentation/web/components/ui/chat-container.d.ts.map +1 -0
  66. package/dist/src/presentation/web/components/ui/chat-container.js +14 -0
  67. package/dist/src/presentation/web/components/ui/code-block.d.ts +17 -0
  68. package/dist/src/presentation/web/components/ui/code-block.d.ts.map +1 -0
  69. package/dist/src/presentation/web/components/ui/code-block.js +29 -0
  70. package/dist/src/presentation/web/components/ui/loader.d.ts +60 -0
  71. package/dist/src/presentation/web/components/ui/loader.d.ts.map +1 -0
  72. package/dist/src/presentation/web/components/ui/loader.js +190 -0
  73. package/dist/src/presentation/web/components/ui/markdown.d.ts +12 -0
  74. package/dist/src/presentation/web/components/ui/markdown.d.ts.map +1 -0
  75. package/dist/src/presentation/web/components/ui/markdown.js +50 -0
  76. package/dist/src/presentation/web/components/ui/message.d.ts +35 -0
  77. package/dist/src/presentation/web/components/ui/message.d.ts.map +1 -0
  78. package/dist/src/presentation/web/components/ui/message.js +18 -0
  79. package/dist/src/presentation/web/components/ui/prompt-input.d.ts +30 -0
  80. package/dist/src/presentation/web/components/ui/prompt-input.d.ts.map +1 -0
  81. package/dist/src/presentation/web/components/ui/prompt-input.js +98 -0
  82. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  83. package/dist/src/presentation/web/hooks/feature-flags-context.js +6 -1
  84. package/dist/src/presentation/web/hooks/use-chat.d.ts +57 -0
  85. package/dist/src/presentation/web/hooks/use-chat.d.ts.map +1 -0
  86. package/dist/src/presentation/web/hooks/use-chat.js +217 -0
  87. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
  88. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  89. package/dist/src/presentation/web/lib/feature-flags.js +7 -0
  90. package/dist/tsconfig.build.tsbuildinfo +1 -1
  91. package/package.json +1 -1
  92. package/web/.next/BUILD_ID +1 -1
  93. package/web/.next/app-path-routes-manifest.json +2 -0
  94. package/web/.next/build-manifest.json +7 -7
  95. package/web/.next/fallback-build-manifest.json +2 -2
  96. package/web/.next/prerender-manifest.json +3 -3
  97. package/web/.next/required-server-files.js +3 -3
  98. package/web/.next/required-server-files.json +3 -3
  99. package/web/.next/routes-manifest.json +12 -0
  100. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +5 -5
  101. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +20 -20
  102. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  103. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +5 -5
  105. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +25 -25
  106. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +5 -5
  109. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +25 -25
  110. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  111. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +5 -5
  113. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  114. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  115. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +5 -5
  117. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +20 -20
  118. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  119. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  120. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +5 -5
  121. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +25 -25
  122. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  123. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  124. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +5 -5
  125. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +25 -25
  126. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  127. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/(dashboard)/page/build-manifest.json +5 -5
  129. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +18 -18
  130. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  131. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  132. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +5 -5
  133. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  134. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  135. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  136. package/web/.next/server/app/_global-error/page/build-manifest.json +5 -5
  137. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  138. package/web/.next/server/app/_global-error.html +2 -2
  139. package/web/.next/server/app/_global-error.rsc +7 -7
  140. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  141. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  142. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  143. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  144. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  145. package/web/.next/server/app/_not-found/page/build-manifest.json +5 -5
  146. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  147. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  148. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  149. package/web/.next/server/app/api/agent-events/route.js +1 -2
  150. package/web/.next/server/app/api/agent-events/route.js.nft.json +1 -1
  151. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  152. package/web/.next/server/app/api/attachments/upload-from-path/route.js +1 -1
  153. package/web/.next/server/app/api/attachments/upload-from-path/route.js.nft.json +1 -1
  154. package/web/.next/server/app/api/chat/stream/route/app-paths-manifest.json +3 -0
  155. package/web/.next/server/app/api/chat/stream/route/build-manifest.json +11 -0
  156. package/web/.next/server/app/api/chat/stream/route/server-reference-manifest.json +4 -0
  157. package/web/.next/server/app/api/chat/stream/route.js +6 -0
  158. package/web/.next/server/app/api/chat/stream/route.js.map +5 -0
  159. package/web/.next/server/app/api/chat/stream/route.js.nft.json +1 -0
  160. package/web/.next/server/app/api/chat/stream/route_client-reference-manifest.js +2 -0
  161. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  162. package/web/.next/server/app/api/feature-logs/route.js +1 -1
  163. package/web/.next/server/app/api/feature-logs/route.js.nft.json +1 -1
  164. package/web/.next/server/app/chat/page/app-paths-manifest.json +3 -0
  165. package/web/.next/server/app/chat/page/build-manifest.json +18 -0
  166. package/web/.next/server/app/chat/page/next-font-manifest.json +6 -0
  167. package/web/.next/server/app/chat/page/react-loadable-manifest.json +1 -0
  168. package/web/.next/server/app/chat/page/server-reference-manifest.json +20 -0
  169. package/web/.next/server/app/chat/page.js +17 -0
  170. package/web/.next/server/app/chat/page.js.map +5 -0
  171. package/web/.next/server/app/chat/page.js.nft.json +1 -0
  172. package/web/.next/server/app/chat/page_client-reference-manifest.js +2 -0
  173. package/web/.next/server/app/settings/page/build-manifest.json +5 -5
  174. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  175. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  176. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  177. package/web/.next/server/app/skills/page/build-manifest.json +5 -5
  178. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  179. package/web/.next/server/app/skills/page.js +4 -4
  180. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  181. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  182. package/web/.next/server/app/tools/page/build-manifest.json +5 -5
  183. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  184. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  185. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  186. package/web/.next/server/app/version/page/build-manifest.json +5 -5
  187. package/web/.next/server/app/version/page/server-reference-manifest.json +2 -2
  188. package/web/.next/server/app/version/page.js.nft.json +1 -1
  189. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  190. package/web/.next/server/app-paths-manifest.json +2 -0
  191. package/web/.next/server/chunks/403f9_next_567de315._.js +1 -1
  192. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_chat_stream_route_actions_ea265361.js +3 -0
  193. package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js +1 -1
  194. package/web/.next/server/chunks/[root-of-the-server]__332c8d91._.js +1 -1
  195. package/web/.next/server/chunks/[root-of-the-server]__3b72e8b0._.js +1 -1
  196. package/web/.next/server/chunks/{[root-of-the-server]__91d44424._.js → [root-of-the-server]__52c318d1._.js} +2 -2
  197. package/web/.next/server/chunks/[root-of-the-server]__57104a4c._.js +1 -1
  198. package/web/.next/server/chunks/[root-of-the-server]__7d63f9a4._.js +1 -1
  199. package/web/.next/server/chunks/[root-of-the-server]__9191749c._.js +1 -1
  200. package/web/.next/server/chunks/[root-of-the-server]__99c20fe5._.js +5 -0
  201. package/web/.next/server/chunks/[root-of-the-server]__99c20fe5._.js.map +1 -0
  202. package/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js +1 -1
  203. package/web/.next/server/chunks/[root-of-the-server]__a1c7c02a._.js +1 -1
  204. package/web/.next/server/chunks/{[root-of-the-server]__db04ed44._.js → [root-of-the-server]__a5879003._.js} +2 -2
  205. package/web/.next/server/chunks/[root-of-the-server]__aae14de3._.js +6 -0
  206. package/web/.next/server/chunks/[root-of-the-server]__aae14de3._.js.map +1 -0
  207. package/web/.next/server/chunks/[root-of-the-server]__b2f9a412._.js +1 -1
  208. package/web/.next/server/chunks/[root-of-the-server]__b4102cc7._.js +1 -1
  209. package/web/.next/server/chunks/[root-of-the-server]__d2c18946._.js +1 -1
  210. package/web/.next/server/chunks/[root-of-the-server]__d9d410a8._.js +1 -1
  211. package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js +1 -1
  212. package/web/.next/server/chunks/[root-of-the-server]__f47bb8a5._.js +1 -1
  213. package/web/.next/server/chunks/ssr/403f9_next_dist_31ea46d3._.js +1 -1
  214. package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js +1 -1
  215. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  216. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +4 -0
  218. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -0
  219. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_0a7546ed.js +1 -1
  220. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_0a7546ed.js.map +1 -1
  221. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_978cbb4c.js +1 -1
  222. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_978cbb4c.js.map +1 -1
  223. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  224. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  225. package/web/.next/server/chunks/ssr/[root-of-the-server]__13482941._.js +4 -0
  226. package/web/.next/server/chunks/ssr/[root-of-the-server]__13482941._.js.map +1 -0
  227. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f1931f8._.js +3 -0
  228. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f1931f8._.js.map +1 -0
  229. package/web/.next/server/chunks/ssr/[root-of-the-server]__248ee887._.js +1 -1
  230. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
  231. package/web/.next/server/chunks/ssr/[root-of-the-server]__26d31159._.js +3 -0
  232. package/web/.next/server/chunks/ssr/[root-of-the-server]__26d31159._.js.map +1 -0
  233. package/web/.next/server/chunks/ssr/[root-of-the-server]__2a6f3e3f._.js +3 -0
  234. package/web/.next/server/chunks/ssr/[root-of-the-server]__2a6f3e3f._.js.map +1 -0
  235. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  236. package/web/.next/server/chunks/ssr/[root-of-the-server]__51fc98b0._.js +1 -1
  237. package/web/.next/server/chunks/ssr/[root-of-the-server]__51fc98b0._.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/[root-of-the-server]__57f37786._.js +1 -1
  239. package/web/.next/server/chunks/ssr/[root-of-the-server]__57f37786._.js.map +1 -1
  240. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__6803b571._.js +3 -0
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__6803b571._.js.map +1 -0
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__708dcad1._.js +1 -1
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__708dcad1._.js.map +1 -1
  245. package/web/.next/server/chunks/ssr/{[root-of-the-server]__845a9d2a._.js → [root-of-the-server]__753f42eb._.js} +2 -2
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__753f42eb._.js.map +1 -0
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e002910._.js +1 -1
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e002910._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__99857356._.js +61 -0
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__99857356._.js.map +1 -0
  253. package/web/.next/server/chunks/ssr/[root-of-the-server]__9b8f6941._.js +3 -0
  254. package/web/.next/server/chunks/ssr/[root-of-the-server]__9b8f6941._.js.map +1 -0
  255. package/web/.next/server/chunks/ssr/[root-of-the-server]__b062b383._.js +1 -1
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  257. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  258. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  259. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  260. package/web/.next/server/chunks/ssr/{_1f9b7ad3._.js → _15dc3761._.js} +2 -2
  261. package/web/.next/server/chunks/ssr/{_1f9b7ad3._.js.map → _15dc3761._.js.map} +1 -1
  262. package/web/.next/server/chunks/ssr/_25eb2abf._.js +4 -0
  263. package/web/.next/server/chunks/ssr/_25eb2abf._.js.map +1 -0
  264. package/web/.next/server/chunks/ssr/_273d4632._.js +1 -1
  265. package/web/.next/server/chunks/ssr/_34ba40e0._.js +3 -0
  266. package/web/.next/server/chunks/ssr/_34ba40e0._.js.map +1 -0
  267. package/web/.next/server/chunks/ssr/_4093a637._.js +5 -0
  268. package/web/.next/server/chunks/ssr/_4093a637._.js.map +1 -0
  269. package/web/.next/server/chunks/ssr/_6a2e8373._.js +3 -0
  270. package/web/.next/server/chunks/ssr/_6a2e8373._.js.map +1 -0
  271. package/web/.next/server/chunks/ssr/_6e08ce21._.js.map +1 -1
  272. package/web/.next/server/chunks/ssr/_7ba5f9bd._.js +9 -0
  273. package/web/.next/server/chunks/ssr/_7ba5f9bd._.js.map +1 -0
  274. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +2 -2
  275. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  276. package/web/.next/server/chunks/ssr/_906e9cde._.js +3 -0
  277. package/web/.next/server/chunks/ssr/_906e9cde._.js.map +1 -0
  278. package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
  279. package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
  280. package/web/.next/server/chunks/ssr/_b407679c._.js +3 -0
  281. package/web/.next/server/chunks/ssr/_b407679c._.js.map +1 -0
  282. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  283. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  284. package/web/.next/server/chunks/ssr/_d7c4fb01._.js +7 -0
  285. package/web/.next/server/chunks/ssr/_d7c4fb01._.js.map +1 -0
  286. package/web/.next/server/chunks/ssr/_eb8add9f._.js +4 -0
  287. package/web/.next/server/chunks/ssr/_eb8add9f._.js.map +1 -0
  288. package/web/.next/server/chunks/ssr/_f5316e67._.js +1 -1
  289. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  290. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  291. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js +3 -0
  292. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js.map +1 -0
  293. package/web/.next/server/chunks/ssr/src_presentation_web_7275ce5d._.js +2 -2
  294. package/web/.next/server/chunks/ssr/src_presentation_web_7275ce5d._.js.map +1 -1
  295. package/web/.next/server/chunks/ssr/src_presentation_web_758dfa10._.js +2 -2
  296. package/web/.next/server/chunks/ssr/src_presentation_web_758dfa10._.js.map +1 -1
  297. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_84803221.js +1 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_84803221.js.map +1 -1
  299. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  306. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js.map +1 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
  312. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +3 -0
  313. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -0
  314. package/web/.next/server/middleware-build-manifest.js +5 -5
  315. package/web/.next/server/pages/500.html +2 -2
  316. package/web/.next/server/server-reference-manifest.js +1 -1
  317. package/web/.next/server/server-reference-manifest.json +38 -31
  318. package/web/.next/static/chunks/0000a3bd9d33363e.js +1 -0
  319. package/web/.next/static/chunks/{29c29800f5a2acc6.js → 0146cc63e09aa1fc.js} +1 -1
  320. package/web/.next/static/chunks/01c44c0f52e94d13.js +1 -0
  321. package/web/.next/static/chunks/025972c91961cb4f.js +1 -0
  322. package/web/.next/static/chunks/04077bc8814ebb95.js +1 -0
  323. package/web/.next/static/chunks/040f765faf202f21.js +1 -0
  324. package/web/.next/static/chunks/0452bf6331941e3f.js +1 -0
  325. package/web/.next/static/chunks/04abfd0d3656c990.js +1 -0
  326. package/web/.next/static/chunks/04ba2061ab93d4b4.js +1 -0
  327. package/web/.next/static/chunks/053a7b986353ec4b.js +1 -0
  328. package/web/.next/static/chunks/06f273bdc5828685.js +1 -0
  329. package/web/.next/static/chunks/0749a5b512d6df6b.js +1 -0
  330. package/web/.next/static/chunks/07720f62d0494cff.js +1 -0
  331. package/web/.next/static/chunks/07b3a3fe5ed6806c.js +1 -0
  332. package/web/.next/static/chunks/07ed2655f92b082d.js +1 -0
  333. package/web/.next/static/chunks/0820c893f5292ab6.js +1 -0
  334. package/web/.next/static/chunks/08fb03f101641646.js +1 -0
  335. package/web/.next/static/chunks/0992e1494eb73f73.js +1 -0
  336. package/web/.next/static/chunks/{b2b65ee0666a829a.js → 0b0f65124c9e6e98.js} +1 -1
  337. package/web/.next/static/chunks/0b64f70d18b592a9.js +1 -0
  338. package/web/.next/static/chunks/0b925ca1a402d3cd.js +1 -0
  339. package/web/.next/static/chunks/0c4d93176dc739f0.js +1 -0
  340. package/web/.next/static/chunks/0c65283281ae11be.js +1 -0
  341. package/web/.next/static/chunks/0c82301271695b04.js +1 -0
  342. package/web/.next/static/chunks/0d6db841c33ab4f1.js +1 -0
  343. package/web/.next/static/chunks/0d813d73dacd9b43.js +1 -0
  344. package/web/.next/static/chunks/0dcf159fb9a610e4.js +1 -0
  345. package/web/.next/static/chunks/0e7dfad45e402b87.js +1 -0
  346. package/web/.next/static/chunks/0e827c7f60ca4551.js +1 -0
  347. package/web/.next/static/chunks/0f619c5c402fb9f4.js +1 -0
  348. package/web/.next/static/chunks/0f83f16fa24fd5d7.js +1 -0
  349. package/web/.next/static/chunks/0feedea346fd5fbe.js +1 -0
  350. package/web/.next/static/chunks/12dbfd5ed203fd8c.js +1 -0
  351. package/web/.next/static/chunks/13ab63bcbd1b9d73.js +1 -0
  352. package/web/.next/static/chunks/14e6e069b833483c.js +1 -0
  353. package/web/.next/static/chunks/15049e8c70931a5c.js +1 -0
  354. package/web/.next/static/chunks/15e9e6d3526dba19.js +1 -0
  355. package/web/.next/static/chunks/1675a99c138a8dff.js +1 -0
  356. package/web/.next/static/chunks/18257a988399c500.js +1 -0
  357. package/web/.next/static/chunks/18b8b7c0f43653ed.js +1 -0
  358. package/web/.next/static/chunks/1903ea0fc4a1c66a.js +1 -0
  359. package/web/.next/static/chunks/1a9763ce5ba22b57.js +1 -0
  360. package/web/.next/static/chunks/1c5a18c436c08be5.js +1 -0
  361. package/web/.next/static/chunks/1d95a3b4ad425e84.js +1 -0
  362. package/web/.next/static/chunks/1e88753738d86281.js +1 -0
  363. package/web/.next/static/chunks/1f5b06b26b55f61e.js +1 -0
  364. package/web/.next/static/chunks/20e893034947cff0.js +1 -0
  365. package/web/.next/static/chunks/2199bd4a3f61c371.js +1 -0
  366. package/web/.next/static/chunks/21f6010e9d824e2b.js +1 -0
  367. package/web/.next/static/chunks/2277de4cd5d76ea0.js +1 -0
  368. package/web/.next/static/chunks/23874b32b27bc398.js +1 -0
  369. package/web/.next/static/chunks/242af1b1794692bb.js +1 -0
  370. package/web/.next/static/chunks/24ff7613e7640548.js +1 -0
  371. package/web/.next/static/chunks/255b89458bc45261.js +1 -0
  372. package/web/.next/static/chunks/256f95ef70dd81c3.js +1 -0
  373. package/web/.next/static/chunks/2612e5560f8ba2c2.js +1 -0
  374. package/web/.next/static/chunks/26cc1fb330a4c4ef.js +1 -0
  375. package/web/.next/static/chunks/2796913db81fa3a0.js +1 -0
  376. package/web/.next/static/chunks/2a0985b01345546d.js +1 -0
  377. package/web/.next/static/chunks/2a13aed05cd157cb.js +1 -0
  378. package/web/.next/static/chunks/2a65cbda6248ac45.js +1 -0
  379. package/web/.next/static/chunks/2a9e798066780ccb.js +1 -0
  380. package/web/.next/static/chunks/2aecaa7075dff32c.js +1 -0
  381. package/web/.next/static/chunks/2aff3eb00311b5ff.js +1 -0
  382. package/web/.next/static/chunks/2b601943d3e94e5b.js +1 -0
  383. package/web/.next/static/chunks/2ce5939b18e1a21e.js +1 -0
  384. package/web/.next/static/chunks/2d204a2a777b935d.js +1 -0
  385. package/web/.next/static/chunks/2d64b4ffcaccace0.js +1 -0
  386. package/web/.next/static/chunks/2d890ccc3bdefafa.js +1 -0
  387. package/web/.next/static/chunks/2e25aca5b7400f56.js +1 -0
  388. package/web/.next/static/chunks/2ed750fa9ff05fb4.js +1 -0
  389. package/web/.next/static/chunks/2f1a7ab193aa56ab.js +1 -0
  390. package/web/.next/static/chunks/2fc0965d77242987.js +1 -0
  391. package/web/.next/static/chunks/3054fd6667aee1d2.js +1 -0
  392. package/web/.next/static/chunks/305ea36a55b1b01d.js +1 -0
  393. package/web/.next/static/chunks/31345772bfb5b56d.js +1 -0
  394. package/web/.next/static/chunks/31e19c87048a2dd2.js +1 -0
  395. package/web/.next/static/chunks/32a5dff7a1424ce7.js +1 -0
  396. package/web/.next/static/chunks/3320db3c4bd922dd.js +1 -0
  397. package/web/.next/static/chunks/338b409bcf9c5da6.js +1 -0
  398. package/web/.next/static/chunks/33f71ecfbcc40eb8.js +1 -0
  399. package/web/.next/static/chunks/35bc063ce1c82d62.js +1 -0
  400. package/web/.next/static/chunks/366630af12ceb9aa.js +1 -0
  401. package/web/.next/static/chunks/36a02bc96e797be1.js +1 -0
  402. package/web/.next/static/chunks/3857a5a593f557b6.js +1 -0
  403. package/web/.next/static/chunks/38f38199611b387a.js +1 -0
  404. package/web/.next/static/chunks/39fd8dea78ce33a1.js +1 -0
  405. package/web/.next/static/chunks/3a9753d40e045b8f.js +1 -0
  406. package/web/.next/static/chunks/3ae3c50c728eab31.js +11 -0
  407. package/web/.next/static/chunks/3b811f725088f5ec.js +1 -0
  408. package/web/.next/static/chunks/3d0086082ce28745.js +1 -0
  409. package/web/.next/static/chunks/3daba4c77e106a0b.js +1 -0
  410. package/web/.next/static/chunks/3eeb840a2075bfde.js +1 -0
  411. package/web/.next/static/chunks/3f2585c9332265e2.js +1 -0
  412. package/web/.next/static/chunks/3f701f917196c596.js +1 -0
  413. package/web/.next/static/chunks/4028b1961891bd0b.js +1 -0
  414. package/web/.next/static/chunks/40962df79d5b9308.js +1 -0
  415. package/web/.next/static/chunks/40bdb6b0b6b24b30.js +1 -0
  416. package/web/.next/static/chunks/419f2849c47d15b0.js +1 -0
  417. package/web/.next/static/chunks/4301b2746001957f.js +1 -0
  418. package/web/.next/static/chunks/458a6ec844531967.js +1 -0
  419. package/web/.next/static/chunks/45ae42a60c5885ba.js +1 -0
  420. package/web/.next/static/chunks/45d55f26409a62e9.js +1 -0
  421. package/web/.next/static/chunks/469057391d9b81af.js +1 -0
  422. package/web/.next/static/chunks/46af0d08db9ec138.js +1 -0
  423. package/web/.next/static/chunks/47dd15642d568b90.js +1 -0
  424. package/web/.next/static/chunks/4be33773114cd302.js +1 -0
  425. package/web/.next/static/chunks/4c3eff62cda82668.js +1 -0
  426. package/web/.next/static/chunks/4c592610236f630f.js +4 -0
  427. package/web/.next/static/chunks/4cc404bcff34a71f.js +1 -0
  428. package/web/.next/static/chunks/4d44c49ec4cdd79f.js +1 -0
  429. package/web/.next/static/chunks/4f0c36555d75e5fe.js +1 -0
  430. package/web/.next/static/chunks/554aadda059a8430.js +1 -0
  431. package/web/.next/static/chunks/55c4d9d2fddbead4.js +1 -0
  432. package/web/.next/static/chunks/55dc4e8d31455c2d.js +1 -0
  433. package/web/.next/static/chunks/5737640b5eb3844c.js +1 -0
  434. package/web/.next/static/chunks/5874c94c33f9b7b0.js +1 -0
  435. package/web/.next/static/chunks/58d9b3be51fd5de0.js +1 -0
  436. package/web/.next/static/chunks/5a4e2f295be16022.js +1 -0
  437. package/web/.next/static/chunks/5bc3c8f3a6aca6fa.js +1 -0
  438. package/web/.next/static/chunks/5c3c605bb590e3e7.js +1 -0
  439. package/web/.next/static/chunks/5c955aad7e021e56.js +1 -0
  440. package/web/.next/static/chunks/5cb21622c5e5747e.js +1 -0
  441. package/web/.next/static/chunks/5cdf0942d4f7ed5f.js +1 -0
  442. package/web/.next/static/chunks/5d4a3f9a24a357ab.js +1 -0
  443. package/web/.next/static/chunks/5d97d16f083409e9.js +1 -0
  444. package/web/.next/static/chunks/60f3d869542bf677.js +1 -0
  445. package/web/.next/static/chunks/62224eae737b4521.js +1 -0
  446. package/web/.next/static/chunks/6539d0757f0cfc29.js +1 -0
  447. package/web/.next/static/chunks/65a238abdcb11bcd.js +1 -0
  448. package/web/.next/static/chunks/65b76ab700c2a9d0.js +1 -0
  449. package/web/.next/static/chunks/660ad72a4adcb7fc.js +1 -0
  450. package/web/.next/static/chunks/664c671566a249f4.js +1 -0
  451. package/web/.next/static/chunks/66bbfced65db425f.js +1 -0
  452. package/web/.next/static/chunks/68b6eedefa12f8c7.js +1 -0
  453. package/web/.next/static/chunks/68fa8559029f9f41.js +1 -0
  454. package/web/.next/static/chunks/6947ab623933a779.js +1 -0
  455. package/web/.next/static/chunks/6e9f2a1a17352af0.js +1 -0
  456. package/web/.next/static/chunks/6ee18bbefc401436.js +1 -0
  457. package/web/.next/static/chunks/6f83a2cba6850e4a.js +1 -0
  458. package/web/.next/static/chunks/6fb42a88b84aa22b.js +1 -0
  459. package/web/.next/static/chunks/6ffd8d481eb5e86a.js +1 -0
  460. package/web/.next/static/chunks/70ebb562067defff.js +1 -0
  461. package/web/.next/static/chunks/719ffd0d25696861.js +1 -0
  462. package/web/.next/static/chunks/71bbf75ff7ac7d1c.js +1 -0
  463. package/web/.next/static/chunks/72452c79bb483893.js +1 -0
  464. package/web/.next/static/chunks/{0102ce60a2a42fab.js → 73512dcafc035901.js} +1 -1
  465. package/web/.next/static/chunks/737b452d10950f75.js +1 -0
  466. package/web/.next/static/chunks/73c9849a26d56eaf.js +1 -0
  467. package/web/.next/static/chunks/742ddcbde2de0a5f.js +1 -0
  468. package/web/.next/static/chunks/75f20501876081ae.js +1 -0
  469. package/web/.next/static/chunks/771904aa3f2b5890.js +1 -0
  470. package/web/.next/static/chunks/78140b3927f34ee1.js +1 -0
  471. package/web/.next/static/chunks/78c2221a0e9ac3e0.js +1 -0
  472. package/web/.next/static/chunks/7a16988476a29ae1.js +1 -0
  473. package/web/.next/static/chunks/7aebb2852b03cf3b.js +1 -0
  474. package/web/.next/static/chunks/{d4ee1f8f03cee0aa.js → 7b3bad34a11293ef.js} +1 -1
  475. package/web/.next/static/chunks/7cada01735a2de18.js +1 -0
  476. package/web/.next/static/chunks/7cd5e13ac856cf73.js +1 -0
  477. package/web/.next/static/chunks/7d0c918f6da54095.js +1 -0
  478. package/web/.next/static/chunks/7e55ce83f10514a3.js +1 -0
  479. package/web/.next/static/chunks/7e70c7df8d1224f0.js +1 -0
  480. package/web/.next/static/chunks/7f3161de6996c05f.js +1 -0
  481. package/web/.next/static/chunks/806207333fba56e3.js +1 -0
  482. package/web/.next/static/chunks/825f5a75a38db3ec.js +1 -0
  483. package/web/.next/static/chunks/82df15d2af5efffe.js +1 -0
  484. package/web/.next/static/chunks/83397d71344d405d.js +1 -0
  485. package/web/.next/static/chunks/8478b108a35675bb.js +1 -0
  486. package/web/.next/static/chunks/84b6fde40fe98bbc.js +1 -0
  487. package/web/.next/static/chunks/8525e0fed6102ee4.js +1 -0
  488. package/web/.next/static/chunks/858a571e17cbe069.js +1 -0
  489. package/web/.next/static/chunks/8599414ffd4e15f5.js +1 -0
  490. package/web/.next/static/chunks/85da8b6aabbfc33c.js +1 -0
  491. package/web/.next/static/chunks/8866422156b74976.js +1 -0
  492. package/web/.next/static/chunks/8884218357d06e4c.js +1 -0
  493. package/web/.next/static/chunks/890e85bcb002030f.js +1 -0
  494. package/web/.next/static/chunks/8a6482e4289bd485.js +1 -0
  495. package/web/.next/static/chunks/8b34938e48e56746.js +1 -0
  496. package/web/.next/static/chunks/8bc16f2ee0ac282b.js +1 -0
  497. package/web/.next/static/chunks/8c05e7493172a40a.js +1 -0
  498. package/web/.next/static/chunks/8c16bb1814e36e5d.js +1 -0
  499. package/web/.next/static/chunks/8d9c6ac44d75942c.js +1 -0
  500. package/web/.next/static/chunks/8e2d9292729601b9.js +1 -0
  501. package/web/.next/static/chunks/8ed313638226f782.js +1 -0
  502. package/web/.next/static/chunks/{cfe4dc9904fcfddb.js → 8f4b01641dd98daa.js} +1 -1
  503. package/web/.next/static/chunks/8f98e5a8f241fe53.js +1 -0
  504. package/web/.next/static/chunks/8fc154c5edda0beb.js +1 -0
  505. package/web/.next/static/chunks/8fe2d5b09bf432b8.js +1 -0
  506. package/web/.next/static/chunks/8fe35ce71e4ad05b.js +1 -0
  507. package/web/.next/static/chunks/9067d4871d0c903f.js +1 -0
  508. package/web/.next/static/chunks/92d091aa318b78fb.js +1 -0
  509. package/web/.next/static/chunks/93af57e60f3a66ba.js +1 -0
  510. package/web/.next/static/chunks/93dd149a0766adcc.js +1 -0
  511. package/web/.next/static/chunks/957474fa08a22115.js +1 -0
  512. package/web/.next/static/chunks/95b925bb74686af7.js +1 -0
  513. package/web/.next/static/chunks/96158847987b2403.js +1 -0
  514. package/web/.next/static/chunks/975c124d34c8c6a8.js +1 -0
  515. package/web/.next/static/chunks/97bf3636621b58c7.js +1 -0
  516. package/web/.next/static/chunks/97e9c48e0abc9a50.js +1 -0
  517. package/web/.next/static/chunks/{fe70e73feb07bcfd.js → 98c68c9ea7a9e597.js} +1 -1
  518. package/web/.next/static/chunks/99052b059a0075f9.js +1 -0
  519. package/web/.next/static/chunks/99de3f6268e262a3.js +1 -0
  520. package/web/.next/static/chunks/99e12f466e3868ca.js +1 -0
  521. package/web/.next/static/chunks/9ba434534d00d922.js +1 -0
  522. package/web/.next/static/chunks/9d3cb38ab5fb405b.js +1 -0
  523. package/web/.next/static/chunks/9d5adb23e0187d9c.js +1 -0
  524. package/web/.next/static/chunks/9d8444f3f16a0998.js +1 -0
  525. package/web/.next/static/chunks/9dd2a16ac3fea1f1.js +1 -0
  526. package/web/.next/static/chunks/9e66ab37fd08bc66.js +1 -0
  527. package/web/.next/static/chunks/a09fa49dbf0f3636.js +1 -0
  528. package/web/.next/static/chunks/a2000986cd87a131.js +1 -0
  529. package/web/.next/static/chunks/a31fd9cfaa7a3158.js +1 -0
  530. package/web/.next/static/chunks/a38e1790e76ded6c.js +1 -0
  531. package/web/.next/static/chunks/a662e9340d282c55.js +1 -0
  532. package/web/.next/static/chunks/a77c0a719a2cc920.js +1 -0
  533. package/web/.next/static/chunks/a7f8cdb6749f9bdd.js +1 -0
  534. package/web/.next/static/chunks/a8a4fdbbcb3a5998.js +1 -0
  535. package/web/.next/static/chunks/a8f26eabe8187392.js +1 -0
  536. package/web/.next/static/chunks/a954d978d5e9781e.js +1 -0
  537. package/web/.next/static/chunks/a977e04dad1a77c7.js +1 -0
  538. package/web/.next/static/chunks/abd77592929f00d5.js +1 -0
  539. package/web/.next/static/chunks/ac53962c1a4765c7.js +1 -0
  540. package/web/.next/static/chunks/ade5ee5b3412436e.js +1 -0
  541. package/web/.next/static/chunks/ae84e9326b9e9200.js +2 -0
  542. package/web/.next/static/chunks/b0810838151379a2.js +1 -0
  543. package/web/.next/static/chunks/b1106224fbc2f015.js +1 -0
  544. package/web/.next/static/chunks/b13329875853d9a5.js +1 -0
  545. package/web/.next/static/chunks/b1460995e7a388b9.css +1 -0
  546. package/web/.next/static/chunks/b2b08e8fb70210c7.js +1 -0
  547. package/web/.next/static/chunks/b2f0e49369262eea.js +1 -0
  548. package/web/.next/static/chunks/b46abe587d05f58c.js +1 -0
  549. package/web/.next/static/chunks/b555154c60b9d90c.js +1 -0
  550. package/web/.next/static/chunks/b61982efe6f7e40e.js +1 -0
  551. package/web/.next/static/chunks/b6972d679174ce65.js +1 -0
  552. package/web/.next/static/chunks/b6ae34a5c2627d04.js +1 -0
  553. package/web/.next/static/chunks/bae57337da9a2d34.js +1 -0
  554. package/web/.next/static/chunks/bba2ccf4fd7849e1.js +1 -0
  555. package/web/.next/static/chunks/bc21e40585b8dcf4.js +1 -0
  556. package/web/.next/static/chunks/bd0cd7805b800eab.js +1 -0
  557. package/web/.next/static/chunks/bf13e9bc0390b21d.js +59 -0
  558. package/web/.next/static/chunks/bfec0c4899344791.js +1 -0
  559. package/web/.next/static/chunks/c1a40361928a6f90.js +1 -0
  560. package/web/.next/static/chunks/c1f34786f0d6908c.js +2 -0
  561. package/web/.next/static/chunks/c1fa94e9df162cb2.js +1 -0
  562. package/web/.next/static/chunks/c260a37325b283d3.js +1 -0
  563. package/web/.next/static/chunks/c3abb9ed0d089656.js +1 -0
  564. package/web/.next/static/chunks/c49a32e2d002dd91.js +1 -0
  565. package/web/.next/static/chunks/c564bdda2d517997.js +1 -0
  566. package/web/.next/static/chunks/c5c7a925445f4d05.js +1 -0
  567. package/web/.next/static/chunks/c7e793951b20a67f.js +1 -0
  568. package/web/.next/static/chunks/c86d4c471f194ad0.js +1 -0
  569. package/web/.next/static/chunks/c8d2cd372806e8b4.js +1 -0
  570. package/web/.next/static/chunks/c932b41ef3a40647.js +1 -0
  571. package/web/.next/static/chunks/c95abf23ce28b320.js +1 -0
  572. package/web/.next/static/chunks/c9d225b49db0980e.js +1 -0
  573. package/web/.next/static/chunks/c9e3afa09e76a4b2.js +1 -0
  574. package/web/.next/static/chunks/c9ef2470073e11cb.js +1 -0
  575. package/web/.next/static/chunks/ca201ae288dba155.js +1 -0
  576. package/web/.next/static/chunks/ca6196a863fc258d.js +1 -0
  577. package/web/.next/static/chunks/cac3a64966a112f7.js +1 -0
  578. package/web/.next/static/chunks/cb1e02415930189c.js +1 -0
  579. package/web/.next/static/chunks/cb412c095989545d.js +1 -0
  580. package/web/.next/static/chunks/cba332976e88a351.js +1 -0
  581. package/web/.next/static/chunks/cbf0c6470851a2f0.js +1 -0
  582. package/web/.next/static/chunks/cc60420e9bf53d96.js +1 -0
  583. package/web/.next/static/chunks/cc9054c5e6e1c706.js +1 -0
  584. package/web/.next/static/chunks/cd3bf2c5469b9646.js +1 -0
  585. package/web/.next/static/chunks/cdd7964a31b63d66.js +1 -0
  586. package/web/.next/static/chunks/cdd7f91e23b5ea49.js +1 -0
  587. package/web/.next/static/chunks/ce6a2fd4485c50c7.js +1 -0
  588. package/web/.next/static/chunks/d04de4be30ab78ca.js +3 -0
  589. package/web/.next/static/chunks/d0be65e7d38590b6.js +1 -0
  590. package/web/.next/static/chunks/d128b5501807e6f0.js +1 -0
  591. package/web/.next/static/chunks/d2124558f2b71c54.js +1 -0
  592. package/web/.next/static/chunks/d21a7ac5bcd538a3.js +1 -0
  593. package/web/.next/static/chunks/d35123b0dc2e2702.js +1 -0
  594. package/web/.next/static/chunks/d3ff3d218c7ad329.js +1 -0
  595. package/web/.next/static/chunks/d47def0da790a783.js +1 -0
  596. package/web/.next/static/chunks/d56169a6ceb14d27.js +1 -0
  597. package/web/.next/static/chunks/d5f1eede831e271a.js +1 -0
  598. package/web/.next/static/chunks/d62ba6ca7b41e179.js +1 -0
  599. package/web/.next/static/chunks/d6e74c394e816b3a.js +1 -0
  600. package/web/.next/static/chunks/d700d036b0dd9d28.js +1 -0
  601. package/web/.next/static/chunks/d7922dc82b3d8177.js +1 -0
  602. package/web/.next/static/chunks/d79a28dee31b3e43.js +1 -0
  603. package/web/.next/static/chunks/d88d6c7dd4fb3eb0.js +1 -0
  604. package/web/.next/static/chunks/d95b6e4c9a832b75.js +1 -0
  605. package/web/.next/static/chunks/dac044a4e6d8e3d4.js +1 -0
  606. package/web/.next/static/chunks/db873305cb622122.js +1 -0
  607. package/web/.next/static/chunks/dba11645cc1ddde8.js +1 -0
  608. package/web/.next/static/chunks/dbfb2921fe1fbe42.js +1 -0
  609. package/web/.next/static/chunks/dc75258a3914ab28.js +1 -0
  610. package/web/.next/static/chunks/ddbb7e6d2aa7940f.js +1 -0
  611. package/web/.next/static/chunks/ddcfb6c08594ccb7.js +1 -0
  612. package/web/.next/static/chunks/de82d83003608b30.js +1 -0
  613. package/web/.next/static/chunks/debe9e537fa1dd5c.js +1 -0
  614. package/web/.next/static/chunks/e0e2881173c1b4ea.js +1 -0
  615. package/web/.next/static/chunks/e16538f1db410909.js +1 -0
  616. package/web/.next/static/chunks/e1dcb6b88dd2cbfb.js +1 -0
  617. package/web/.next/static/chunks/e1ec2aeadbc3e43e.js +1 -0
  618. package/web/.next/static/chunks/e4967b0e84ca5a95.js +1 -0
  619. package/web/.next/static/chunks/e4c653eb9557c225.js +1 -0
  620. package/web/.next/static/chunks/e51516e366109a4d.js +1 -0
  621. package/web/.next/static/chunks/e759235b76258903.js +1 -0
  622. package/web/.next/static/chunks/e75c5376799db08c.js +1 -0
  623. package/web/.next/static/chunks/e8341f198526730e.js +1 -0
  624. package/web/.next/static/chunks/e8d014f4a5df5f4b.js +1 -0
  625. package/web/.next/static/chunks/eab21ff64827175b.js +1 -0
  626. package/web/.next/static/chunks/eaf5638419fe834d.js +1 -0
  627. package/web/.next/static/chunks/eb49387d22b57020.js +1 -0
  628. package/web/.next/static/chunks/ebb7e6387076d1f2.js +1 -0
  629. package/web/.next/static/chunks/ecf9bd4e51bc22b2.js +1 -0
  630. package/web/.next/static/chunks/ed5f5eaaba3fe86e.js +1 -0
  631. package/web/.next/static/chunks/ee3792dfe67952fc.js +1 -0
  632. package/web/.next/static/chunks/ee96f625d002bb6f.js +1 -0
  633. package/web/.next/static/chunks/f01c407dc77e32e6.js +1 -0
  634. package/web/.next/static/chunks/f05e324248b7eefa.js +1 -0
  635. package/web/.next/static/chunks/f116adff993e4e78.js +1 -0
  636. package/web/.next/static/chunks/f48a6189ac11bc51.js +1 -0
  637. package/web/.next/static/chunks/f57a12cf8a7fa100.js +1 -0
  638. package/web/.next/static/chunks/f6bf8273ddaca996.js +1 -0
  639. package/web/.next/static/chunks/f7313a12522304e8.js +1 -0
  640. package/web/.next/static/chunks/f7938fccffa01b89.js +1 -0
  641. package/web/.next/static/chunks/f7b685bb0cb377c2.js +1 -0
  642. package/web/.next/static/chunks/f7e499a9733db05b.js +1 -0
  643. package/web/.next/static/chunks/fa113f988d09306b.js +1 -0
  644. package/web/.next/static/chunks/fc1587c1e44444d4.js +1 -0
  645. package/web/.next/static/chunks/fcb420148a0cf38e.js +1 -0
  646. package/web/.next/static/chunks/fd6bbc9c53b0101e.js +1 -0
  647. package/web/.next/static/chunks/fef1f3b5114b8d2d.js +1 -0
  648. package/web/.next/static/chunks/{b1eadf24106c53ce.js → ff20a3511ab6687b.js} +1 -1
  649. package/web/.next/static/chunks/{turbopack-426d9bc2450816ba.js → turbopack-19fdba76a6171f31.js} +1 -1
  650. package/web/package.json +6 -1
  651. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +0 -6
  652. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +0 -1
  653. package/web/.next/server/chunks/[root-of-the-server]__3b22a1eb._.js +0 -3
  654. package/web/.next/server/chunks/[root-of-the-server]__3b22a1eb._.js.map +0 -1
  655. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_d0119342._.js +0 -3
  656. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_d0119342._.js.map +0 -1
  657. package/web/.next/server/chunks/ssr/[root-of-the-server]__52485955._.js +0 -3
  658. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js.map +0 -1
  659. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +0 -4
  660. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +0 -1
  661. package/web/.next/server/chunks/ssr/[root-of-the-server]__d91fdd51._.js +0 -3
  662. package/web/.next/server/chunks/ssr/[root-of-the-server]__d91fdd51._.js.map +0 -1
  663. package/web/.next/server/chunks/ssr/_025a2fa0._.js +0 -4
  664. package/web/.next/server/chunks/ssr/_025a2fa0._.js.map +0 -1
  665. package/web/.next/server/chunks/ssr/_1bb131c4._.js +0 -3
  666. package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +0 -1
  667. package/web/.next/server/chunks/ssr/_3a4c94e3._.js +0 -3
  668. package/web/.next/server/chunks/ssr/_3a4c94e3._.js.map +0 -1
  669. package/web/.next/server/chunks/ssr/_8afac0ca._.js +0 -3
  670. package/web/.next/server/chunks/ssr/_8afac0ca._.js.map +0 -1
  671. package/web/.next/server/chunks/ssr/_9ac70f88._.js +0 -5
  672. package/web/.next/server/chunks/ssr/_9ac70f88._.js.map +0 -1
  673. package/web/.next/server/chunks/ssr/_a68d7e1c._.js +0 -9
  674. package/web/.next/server/chunks/ssr/_a68d7e1c._.js.map +0 -1
  675. package/web/.next/server/chunks/ssr/_b5fc318a._.js +0 -3
  676. package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +0 -1
  677. package/web/.next/server/chunks/ssr/_e6f2da4f._.js +0 -7
  678. package/web/.next/server/chunks/ssr/_e6f2da4f._.js.map +0 -1
  679. package/web/.next/static/chunks/07b853e29af1e5f2.js +0 -1
  680. package/web/.next/static/chunks/3bb35e0689e8b6b7.js +0 -1
  681. package/web/.next/static/chunks/52b56677c842e45f.js +0 -3
  682. package/web/.next/static/chunks/77ae4e64052864f9.js +0 -2
  683. package/web/.next/static/chunks/79474459eb409359.js +0 -1
  684. package/web/.next/static/chunks/84a181ff3270fd9f.js +0 -1
  685. package/web/.next/static/chunks/8c0f3126502dea0a.js +0 -11
  686. package/web/.next/static/chunks/8c3a1b4dd386fb21.js +0 -1
  687. package/web/.next/static/chunks/c750d771701b9b97.js +0 -1
  688. package/web/.next/static/chunks/d4d8f0a137bd2eb4.js +0 -4
  689. package/web/.next/static/chunks/db122a6247f69104.css +0 -1
  690. package/web/.next/static/chunks/ea320f314a210a70.js +0 -2
  691. package/web/.next/static/chunks/ed3a602003bcb31b.js +0 -1
  692. /package/web/.next/server/chunks/{ssr/[root-of-the-server]__52485955._.js.map → 744ca_web__next-internal_server_app_api_chat_stream_route_actions_ea265361.js.map} +0 -0
  693. /package/web/.next/server/chunks/{[root-of-the-server]__91d44424._.js.map → [root-of-the-server]__52c318d1._.js.map} +0 -0
  694. /package/web/.next/server/chunks/{[root-of-the-server]__db04ed44._.js.map → [root-of-the-server]__a5879003._.js.map} +0 -0
  695. /package/web/.next/static/{uT0QQwg2cbMo46NG69Bky → OiQDaxgdMUYHZ4ZGZWNWt}/_buildManifest.js +0 -0
  696. /package/web/.next/static/{uT0QQwg2cbMo46NG69Bky → OiQDaxgdMUYHZ4ZGZWNWt}/_clientMiddlewareManifest.json +0 -0
  697. /package/web/.next/static/{uT0QQwg2cbMo46NG69Bky → OiQDaxgdMUYHZ4ZGZWNWt}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[61402,76052,13008,74607,6542,740,12104,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60de1303c3976da3930b925b26dd192c9fbcc5b335",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"70f6183cc331e54fed1aaa8539f9a30c5cba88fc6e",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40b73a99baf248573eda4a0583e96edc52ce7659d9",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"4068841fb6315c1c927eeb0f206b0294d332c53eca",null),a.s(["getResearchArtifact",()=>h],74607);var i=a.i(2157),j=a.i(50227),k=a.i(29918);async function l(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d,e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{error:"Feature not found"};let g=f.pr?{url:f.pr.url,number:f.pr.number,status:f.pr.status,commitHash:f.pr.commitHash,ciStatus:f.pr.ciStatus,mergeable:f.pr.mergeable}:void 0,h=f.branch?{source:f.branch,target:"main"}:void 0,l=f.worktreePath??(f.repositoryPath&&f.branch?(0,k.computeWorktreePath)(f.repositoryPath,f.branch):null);if(l)try{let c=(0,j.dirname)((0,j.dirname)(l)),e=(0,j.join)(c,"evidence",a),f=(0,j.join)(e,"manifest.json");(0,i.existsSync)(f)&&(b=JSON.parse((0,i.readFileSync)(f,"utf-8")),d=l)}catch{}if(!l)return{pr:g,branch:h,evidence:b,evidenceBasePath:d,warning:g?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),[e,f]=await Promise.all([a.getPrDiffSummary(l,"main"),a.getFileDiffs(l,"main").catch(()=>void 0)]);return{pr:g,branch:h,diffSummary:e,fileDiffs:f,evidence:b,evidenceBasePath:d}}catch{return{pr:g,branch:h,evidence:b,evidenceBasePath:d,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function m(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt,completedAt:a.completedAt,durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt,approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0})),e=await n(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function n(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function o(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}(0,d.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"40559e6816e62debe0fdfb7a062748cfc42f4dd840",null),a.s(["getMergeReviewData",()=>l],6542),(0,d.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"4026359afd9c00ba31b7e38ecae28053887edc71df",null),a.s(["getFeaturePhaseTimings",()=>m],740),(0,d.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"4088dc978dbab607a9d63b3be2830c1dbc700307bb",null),a.s(["getFeaturePlan",()=>o],12104)},69992,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(41872),l=a.i(9959),m=a.i(23504),n=a.i(27900),o=a.i(50845),p=a.i(49560),q=a.i(39353),r=a.i(29207),s=a.i(31075),t=a.i(61402),u=a.i(76052),v=a.i(13008),w=a.i(74607),x=a.i(6542),y=a.i(740),z=a.i(12104);a.s([],11963),a.i(11963),a.s(["0004805c5fe588c64c791cede95178f4db386c8b66",()=>b.pickFolder,"0023f23a32f070f09c3fb5cbfd26a13f5206804e07",()=>l.checkAgentAuth,"003451b6fba043c85030351d32f9e3dfb8fe89c925",()=>k.isAgentSetupComplete,"00a51d2cbf97894916cf38262023a5db5dd6ac4f2d",()=>m.getAllAgentModels,"00dc6e950a94082ce6811be529111810e5f24957db",()=>s.fetchGraphData,"40008a51c62dfc8c84a60e4ef9a5c99593f354faf1",()=>h.openIde,"400c82a35abeef5efe6fcc53ee18fdc6d593f9a284",()=>d.deployFeature,"400f5ae6a6639cc75bc73cba0964c4e30e00fac5da",()=>q.deleteRepository,"401d1867f017055bef281ab4366f6c9d437b049bbb",()=>j.openFolder,"4026359afd9c00ba31b7e38ecae28053887edc71df",()=>y.getFeaturePhaseTimings,"40350574cbb46962093996037e5a84e1455d515033",()=>e.deployRepository,"403934861c1e9745c722204887d4dfe4ede329a97d",()=>p.addRepository,"404f39fc95a318d461965ab249065d7d52c89dfe7c",()=>r.getFeatureMetadata,"40559e6816e62debe0fdfb7a062748cfc42f4dd840",()=>x.getMergeReviewData,"4068841fb6315c1c927eeb0f206b0294d332c53eca",()=>w.getResearchArtifact,"407bfb36cf8f9fadfb6d78e936fedcb1b09eb6f0f4",()=>f.stopDeployment,"407c233697de2c082762d5159f769caed3c15598c9",()=>g.getDeploymentStatus,"4088dc978dbab607a9d63b3be2830c1dbc700307bb",()=>z.getFeaturePlan,"409b03913f580f44263dc7c4e0c57d564571c28678",()=>i.openShell,"40b73a99baf248573eda4a0583e96edc52ce7659d9",()=>v.getFeatureArtifact,"40e74bce6be2c8c08ab32bac9c38b5c7bf1c597c56",()=>c.getDeploymentLogs,"604a4aaa1623a9b72522642db65c6bbb6ca6b45278",()=>n.updateAgentAndModel,"604af635ea1b916d769bd0be29a4b1f5daeb5e421b",()=>o.deleteFeature,"60de1303c3976da3930b925b26dd192c9fbcc5b335",()=>t.approveFeature,"70f6183cc331e54fed1aaa8539f9a30c5cba88fc6e",()=>u.rejectFeature],69992)},6714,a=>{a.v(a=>Promise.resolve().then(()=>a(2157)))},11105,a=>{a.v(a=>Promise.resolve().then(()=>a(50227)))},29718,a=>{a.v(b=>Promise.all(["server/chunks/ssr/90b01_js-yaml_dist_js-yaml_mjs_c897fb57._.js"].map(b=>a.l(b))).then(()=>b(32996)))}];
1
+ module.exports=[61402,76052,13008,74607,6542,740,12104,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"600354d7eab1d8e5402851de743290fb8df9bf8ddf",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"7058dc441303c1826b9c1b5b1f6f3c2649f68ba8f7",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40c980025b80478071fbf1a3186c40e2617904cb48",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"402e79faba18617f065025f77da5616b83c6e35731",null),a.s(["getResearchArtifact",()=>h],74607);var i=a.i(2157),j=a.i(50227),k=a.i(29918);async function l(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d,e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{error:"Feature not found"};let g=f.pr?{url:f.pr.url,number:f.pr.number,status:f.pr.status,commitHash:f.pr.commitHash,ciStatus:f.pr.ciStatus,mergeable:f.pr.mergeable}:void 0,h=f.branch?{source:f.branch,target:"main"}:void 0,l=f.worktreePath??(f.repositoryPath&&f.branch?(0,k.computeWorktreePath)(f.repositoryPath,f.branch):null);if(l)try{let c=(0,j.dirname)((0,j.dirname)(l)),e=(0,j.join)(c,"evidence",a),f=(0,j.join)(e,"manifest.json");(0,i.existsSync)(f)&&(b=JSON.parse((0,i.readFileSync)(f,"utf-8")),d=l)}catch{}if(!l)return{pr:g,branch:h,evidence:b,evidenceBasePath:d,warning:g?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),[e,f]=await Promise.all([a.getPrDiffSummary(l,"main"),a.getFileDiffs(l,"main").catch(()=>void 0)]);return{pr:g,branch:h,diffSummary:e,fileDiffs:f,evidence:b,evidenceBasePath:d}}catch{return{pr:g,branch:h,evidence:b,evidenceBasePath:d,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function m(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt,completedAt:a.completedAt,durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt,approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0})),e=await n(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function n(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function o(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}(0,d.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"408910c395c221becfb0b9501cd78223d9a11ab64c",null),a.s(["getMergeReviewData",()=>l],6542),(0,d.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"40b49dc2c181ebabcdb9b4fdc5e1167a0f40b38043",null),a.s(["getFeaturePhaseTimings",()=>m],740),(0,d.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"40329fc9d2e1925005e7776841588b82f6da65e177",null),a.s(["getFeaturePlan",()=>o],12104)},69992,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(41872),l=a.i(9959),m=a.i(23504),n=a.i(27900),o=a.i(50845),p=a.i(49560),q=a.i(39353),r=a.i(29207),s=a.i(31075),t=a.i(61402),u=a.i(76052),v=a.i(13008),w=a.i(74607),x=a.i(6542),y=a.i(740),z=a.i(12104);a.s([],11963),a.i(11963),a.s(["000864180e806c03446d61cc27e211db8a118dd380",()=>s.fetchGraphData,"001f28091b7ab95f0c4538fa4cfd1fbc304eb098e7",()=>l.checkAgentAuth,"006c9cb87fda568ceabf189d04e819f29c32e5b91b",()=>b.pickFolder,"00956c3eeecfb585023391c0f0f0c5edc26f3c08c4",()=>k.isAgentSetupComplete,"00f314d8d3b6d06cbd017be5780f932bfdf1910caa",()=>m.getAllAgentModels,"400c7b1b7d6bbb265e7f4feda45c4494b42115ee8f",()=>j.openFolder,"402e79faba18617f065025f77da5616b83c6e35731",()=>w.getResearchArtifact,"40329fc9d2e1925005e7776841588b82f6da65e177",()=>z.getFeaturePlan,"404256ba6207ab327eb6b5ec0798703910161ff47a",()=>p.addRepository,"404316ffbb06b1b3dce7bcba47c9bc2fa8124b7109",()=>f.stopDeployment,"404bd17f744a17b20231f90035371ffca34b0b13dd",()=>h.openIde,"405ed0b4bdb2b510ccccee752f7dfe47fa9d3b4c35",()=>r.getFeatureMetadata,"408910c395c221becfb0b9501cd78223d9a11ab64c",()=>x.getMergeReviewData,"4096d4d468876505a764040fe88c0d199de9ae3150",()=>g.getDeploymentStatus,"40b49dc2c181ebabcdb9b4fdc5e1167a0f40b38043",()=>y.getFeaturePhaseTimings,"40b745e4d76fc3802398620e5ddb74ad8a4526e703",()=>c.getDeploymentLogs,"40bb8cf8c960e202dd5aa970983624f34567308edb",()=>q.deleteRepository,"40c980025b80478071fbf1a3186c40e2617904cb48",()=>v.getFeatureArtifact,"40d4c33644f5f7ce1caab41719e292371d82aad8d0",()=>e.deployRepository,"40d9d5865a7a51f3824554c9ddad984308bc726781",()=>d.deployFeature,"40ddd631bf0b32d79e31bc49b7930c15d80982206a",()=>i.openShell,"600354d7eab1d8e5402851de743290fb8df9bf8ddf",()=>t.approveFeature,"6039aec25baffed90753a7e810806458598ef46905",()=>o.deleteFeature,"60be3f60ebd6d3f42c3fb8db6763af9f6cec7f0b33",()=>n.updateAgentAndModel,"7058dc441303c1826b9c1b5b1f6f3c2649f68ba8f7",()=>u.rejectFeature],69992)},6714,a=>{a.v(a=>Promise.resolve().then(()=>a(2157)))},11105,a=>{a.v(a=>Promise.resolve().then(()=>a(50227)))},29718,a=>{a.v(b=>Promise.all(["server/chunks/ssr/90b01_js-yaml_dist_js-yaml_mjs_c897fb57._.js"].map(b=>a.l(b))).then(()=>b(32996)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__708dcad1._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts","../../../../../../../src/presentation/web/app/actions/get-feature-plan.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/feature/%5BfeatureId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string,\n attachments?: string[]\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback, attachments);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { readFileSync, existsSync } from 'node:fs';\nimport { join, dirname } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type {\n MergeReviewData,\n MergeReviewEvidence,\n} from '@/components/common/merge-review/merge-review-config';\nimport { computeWorktreePath } from '@shepai/core/infrastructure/services/ide-launchers/compute-worktree-path';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n mergeable: feature.pr.mergeable,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n const worktreePath =\n feature.worktreePath ??\n (feature.repositoryPath && feature.branch\n ? computeWorktreePath(feature.repositoryPath, feature.branch)\n : null);\n\n // Load evidence manifest (best-effort)\n let evidence: MergeReviewEvidence[] | undefined;\n let evidenceBasePath: string | undefined;\n if (worktreePath) {\n try {\n // Worktree path: ~/.shep/repos/<hash>/wt/<slug>\n // Evidence manifest: ~/.shep/repos/<hash>/evidence/<featureId>/manifest.json\n const repoHashDir = dirname(dirname(worktreePath));\n const evidenceDir = join(repoHashDir, 'evidence', featureId);\n const manifestPath = join(evidenceDir, 'manifest.json');\n if (existsSync(manifestPath)) {\n evidence = JSON.parse(readFileSync(manifestPath, 'utf-8'));\n evidenceBasePath = worktreePath;\n }\n } catch {\n // Evidence unavailable — not critical\n }\n }\n\n if (!worktreePath) {\n return {\n pr,\n branch,\n evidence,\n evidenceBasePath,\n warning: pr ? undefined : 'No PR or diff data available',\n };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const [diffSummary, fileDiffs] = await Promise.all([\n gitPrService.getPrDiffSummary(worktreePath, 'main'),\n gitPrService.getFileDiffs(worktreePath, 'main').catch(() => undefined),\n ]);\n return { pr, branch, diffSummary, fileDiffs, evidence, evidenceBasePath };\n } catch {\n return {\n pr,\n branch,\n evidence,\n evidenceBasePath,\n warning: 'Diff statistics unavailable',\n };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IPhaseTimingRepository } from '@shepai/core/application/ports/output/agents/phase-timing-repository.interface';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface PhaseTimingData {\n agentRunId: string;\n phase: string;\n startedAt: string;\n completedAt?: string;\n durationMs?: number;\n waitingApprovalAt?: string;\n approvalWaitMs?: number;\n}\n\nexport interface RejectionFeedbackData {\n iteration: number;\n message: string;\n phase?: string;\n timestamp?: string;\n attachments?: string[];\n}\n\ntype GetPhaseTimingsResult =\n | { timings: PhaseTimingData[]; rejectionFeedback: RejectionFeedbackData[] }\n | { error: string };\n\nexport async function getFeaturePhaseTimings(featureId: string): Promise<GetPhaseTimingsResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n const phaseTimings = await repo.findByFeatureId(featureId);\n\n const timings: PhaseTimingData[] = phaseTimings.map((t) => ({\n agentRunId: t.agentRunId,\n phase: t.phase,\n startedAt: t.startedAt,\n completedAt: t.completedAt,\n durationMs: t.durationMs != null ? Number(t.durationMs) : undefined,\n waitingApprovalAt: t.waitingApprovalAt,\n approvalWaitMs: t.approvalWaitMs != null ? Number(t.approvalWaitMs) : undefined,\n }));\n\n // Read rejection feedback from spec.yaml\n const rejectionFeedback = await readRejectionFeedback(featureId);\n\n return { timings, rejectionFeedback };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load phase timings';\n return { error: message };\n }\n}\n\nasync function readRejectionFeedback(featureId: string): Promise<RejectionFeedbackData[]> {\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature?.specPath) return [];\n\n const { readFileSync } = await import('node:fs');\n const { join } = await import('node:path');\n const yaml = (await import('js-yaml')).default;\n\n const specContent = readFileSync(join(feature.specPath, 'spec.yaml'), 'utf-8');\n const spec = yaml.load(specContent) as Record<string, unknown>;\n\n if (!Array.isArray(spec?.rejectionFeedback)) return [];\n\n return (spec.rejectionFeedback as Record<string, unknown>[]).map((entry) => ({\n iteration: Number(entry.iteration ?? 1),\n message: String(entry.message ?? ''),\n phase: entry.phase ? String(entry.phase) : undefined,\n timestamp: entry.timestamp ? String(entry.timestamp) : undefined,\n attachments: Array.isArray(entry.attachments)\n ? (entry.attachments as unknown[]).map(String)\n : undefined,\n }));\n } catch {\n return [];\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface AcceptanceCriterionData {\n description: string;\n verified: boolean;\n}\n\nexport interface ActionItemData {\n name: string;\n description: string;\n acceptanceCriteria: AcceptanceCriterionData[];\n}\n\nexport interface PlanTaskData {\n title: string;\n description: string;\n state: string;\n actionItems: ActionItemData[];\n}\n\nexport interface PlanData {\n state: string;\n overview: string;\n tasks: PlanTaskData[];\n}\n\ntype GetPlanResult = { plan: PlanData | undefined } | { error: string };\n\nexport async function getFeaturePlan(featureId: string): Promise<GetPlanResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await repo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n if (!feature.plan) {\n return { plan: undefined };\n }\n\n const plan: PlanData = {\n state: feature.plan.state,\n overview: feature.plan.overview,\n tasks: feature.plan.tasks.map((t) => ({\n title: t.title ?? '',\n description: t.description ?? '',\n state: t.state,\n actionItems: (t.actionItems ?? []).map((ai) => ({\n name: ai.name,\n description: ai.description,\n acceptanceCriteria: (ai.acceptanceCriteria ?? []).map((ac) => ({\n description: ac.description,\n verified: ac.verified,\n })),\n })),\n })),\n };\n\n return { plan };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature plan';\n return { error: message };\n }\n}\n","export {pickFolder as '0004805c5fe588c64c791cede95178f4db386c8b66'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40e74bce6be2c8c08ab32bac9c38b5c7bf1c597c56'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '400c82a35abeef5efe6fcc53ee18fdc6d593f9a284'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '40350574cbb46962093996037e5a84e1455d515033'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '407bfb36cf8f9fadfb6d78e936fedcb1b09eb6f0f4'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '407c233697de2c082762d5159f769caed3c15598c9'} from 'ACTIONS_MODULE5'\nexport {openIde as '40008a51c62dfc8c84a60e4ef9a5c99593f354faf1'} from 'ACTIONS_MODULE6'\nexport {openShell as '409b03913f580f44263dc7c4e0c57d564571c28678'} from 'ACTIONS_MODULE7'\nexport {openFolder as '401d1867f017055bef281ab4366f6c9d437b049bbb'} from 'ACTIONS_MODULE8'\nexport {isAgentSetupComplete as '003451b6fba043c85030351d32f9e3dfb8fe89c925'} from 'ACTIONS_MODULE9'\nexport {checkAgentAuth as '0023f23a32f070f09c3fb5cbfd26a13f5206804e07'} from 'ACTIONS_MODULE10'\nexport {getAllAgentModels as '00a51d2cbf97894916cf38262023a5db5dd6ac4f2d'} from 'ACTIONS_MODULE11'\nexport {updateAgentAndModel as '604a4aaa1623a9b72522642db65c6bbb6ca6b45278'} from 'ACTIONS_MODULE12'\nexport {deleteFeature as '604af635ea1b916d769bd0be29a4b1f5daeb5e421b'} from 'ACTIONS_MODULE13'\nexport {addRepository as '403934861c1e9745c722204887d4dfe4ede329a97d'} from 'ACTIONS_MODULE14'\nexport {deleteRepository as '400f5ae6a6639cc75bc73cba0964c4e30e00fac5da'} from 'ACTIONS_MODULE15'\nexport {getFeatureMetadata as '404f39fc95a318d461965ab249065d7d52c89dfe7c'} from 'ACTIONS_MODULE16'\nexport {fetchGraphData as '00dc6e950a94082ce6811be529111810e5f24957db'} from 'ACTIONS_MODULE17'\nexport {approveFeature as '60de1303c3976da3930b925b26dd192c9fbcc5b335'} from 'ACTIONS_MODULE18'\nexport {rejectFeature as '70f6183cc331e54fed1aaa8539f9a30c5cba88fc6e'} from 'ACTIONS_MODULE19'\nexport {getFeatureArtifact as '40b73a99baf248573eda4a0583e96edc52ce7659d9'} from 'ACTIONS_MODULE20'\nexport {getResearchArtifact as '4068841fb6315c1c927eeb0f206b0294d332c53eca'} from 'ACTIONS_MODULE21'\nexport {getMergeReviewData as '40559e6816e62debe0fdfb7a062748cfc42f4dd840'} from 'ACTIONS_MODULE22'\nexport {getFeaturePhaseTimings as '4026359afd9c00ba31b7e38ecae28053887edc71df'} from 'ACTIONS_MODULE23'\nexport {getFeaturePlan as '4088dc978dbab607a9d63b3be2830c1dbc700307bb'} from 'ACTIONS_MODULE24'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts","../../../../../../../src/presentation/web/app/actions/get-feature-plan.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/feature/%5BfeatureId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string,\n attachments?: string[]\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback, attachments);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { readFileSync, existsSync } from 'node:fs';\nimport { join, dirname } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type {\n MergeReviewData,\n MergeReviewEvidence,\n} from '@/components/common/merge-review/merge-review-config';\nimport { computeWorktreePath } from '@shepai/core/infrastructure/services/ide-launchers/compute-worktree-path';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n mergeable: feature.pr.mergeable,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n const worktreePath =\n feature.worktreePath ??\n (feature.repositoryPath && feature.branch\n ? computeWorktreePath(feature.repositoryPath, feature.branch)\n : null);\n\n // Load evidence manifest (best-effort)\n let evidence: MergeReviewEvidence[] | undefined;\n let evidenceBasePath: string | undefined;\n if (worktreePath) {\n try {\n // Worktree path: ~/.shep/repos/<hash>/wt/<slug>\n // Evidence manifest: ~/.shep/repos/<hash>/evidence/<featureId>/manifest.json\n const repoHashDir = dirname(dirname(worktreePath));\n const evidenceDir = join(repoHashDir, 'evidence', featureId);\n const manifestPath = join(evidenceDir, 'manifest.json');\n if (existsSync(manifestPath)) {\n evidence = JSON.parse(readFileSync(manifestPath, 'utf-8'));\n evidenceBasePath = worktreePath;\n }\n } catch {\n // Evidence unavailable — not critical\n }\n }\n\n if (!worktreePath) {\n return {\n pr,\n branch,\n evidence,\n evidenceBasePath,\n warning: pr ? undefined : 'No PR or diff data available',\n };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const [diffSummary, fileDiffs] = await Promise.all([\n gitPrService.getPrDiffSummary(worktreePath, 'main'),\n gitPrService.getFileDiffs(worktreePath, 'main').catch(() => undefined),\n ]);\n return { pr, branch, diffSummary, fileDiffs, evidence, evidenceBasePath };\n } catch {\n return {\n pr,\n branch,\n evidence,\n evidenceBasePath,\n warning: 'Diff statistics unavailable',\n };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IPhaseTimingRepository } from '@shepai/core/application/ports/output/agents/phase-timing-repository.interface';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface PhaseTimingData {\n agentRunId: string;\n phase: string;\n startedAt: string;\n completedAt?: string;\n durationMs?: number;\n waitingApprovalAt?: string;\n approvalWaitMs?: number;\n}\n\nexport interface RejectionFeedbackData {\n iteration: number;\n message: string;\n phase?: string;\n timestamp?: string;\n attachments?: string[];\n}\n\ntype GetPhaseTimingsResult =\n | { timings: PhaseTimingData[]; rejectionFeedback: RejectionFeedbackData[] }\n | { error: string };\n\nexport async function getFeaturePhaseTimings(featureId: string): Promise<GetPhaseTimingsResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n const phaseTimings = await repo.findByFeatureId(featureId);\n\n const timings: PhaseTimingData[] = phaseTimings.map((t) => ({\n agentRunId: t.agentRunId,\n phase: t.phase,\n startedAt: t.startedAt,\n completedAt: t.completedAt,\n durationMs: t.durationMs != null ? Number(t.durationMs) : undefined,\n waitingApprovalAt: t.waitingApprovalAt,\n approvalWaitMs: t.approvalWaitMs != null ? Number(t.approvalWaitMs) : undefined,\n }));\n\n // Read rejection feedback from spec.yaml\n const rejectionFeedback = await readRejectionFeedback(featureId);\n\n return { timings, rejectionFeedback };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load phase timings';\n return { error: message };\n }\n}\n\nasync function readRejectionFeedback(featureId: string): Promise<RejectionFeedbackData[]> {\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature?.specPath) return [];\n\n const { readFileSync } = await import('node:fs');\n const { join } = await import('node:path');\n const yaml = (await import('js-yaml')).default;\n\n const specContent = readFileSync(join(feature.specPath, 'spec.yaml'), 'utf-8');\n const spec = yaml.load(specContent) as Record<string, unknown>;\n\n if (!Array.isArray(spec?.rejectionFeedback)) return [];\n\n return (spec.rejectionFeedback as Record<string, unknown>[]).map((entry) => ({\n iteration: Number(entry.iteration ?? 1),\n message: String(entry.message ?? ''),\n phase: entry.phase ? String(entry.phase) : undefined,\n timestamp: entry.timestamp ? String(entry.timestamp) : undefined,\n attachments: Array.isArray(entry.attachments)\n ? (entry.attachments as unknown[]).map(String)\n : undefined,\n }));\n } catch {\n return [];\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface AcceptanceCriterionData {\n description: string;\n verified: boolean;\n}\n\nexport interface ActionItemData {\n name: string;\n description: string;\n acceptanceCriteria: AcceptanceCriterionData[];\n}\n\nexport interface PlanTaskData {\n title: string;\n description: string;\n state: string;\n actionItems: ActionItemData[];\n}\n\nexport interface PlanData {\n state: string;\n overview: string;\n tasks: PlanTaskData[];\n}\n\ntype GetPlanResult = { plan: PlanData | undefined } | { error: string };\n\nexport async function getFeaturePlan(featureId: string): Promise<GetPlanResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await repo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n if (!feature.plan) {\n return { plan: undefined };\n }\n\n const plan: PlanData = {\n state: feature.plan.state,\n overview: feature.plan.overview,\n tasks: feature.plan.tasks.map((t) => ({\n title: t.title ?? '',\n description: t.description ?? '',\n state: t.state,\n actionItems: (t.actionItems ?? []).map((ai) => ({\n name: ai.name,\n description: ai.description,\n acceptanceCriteria: (ai.acceptanceCriteria ?? []).map((ac) => ({\n description: ac.description,\n verified: ac.verified,\n })),\n })),\n })),\n };\n\n return { plan };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature plan';\n return { error: message };\n }\n}\n","export {pickFolder as '006c9cb87fda568ceabf189d04e819f29c32e5b91b'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40b745e4d76fc3802398620e5ddb74ad8a4526e703'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40d9d5865a7a51f3824554c9ddad984308bc726781'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '40d4c33644f5f7ce1caab41719e292371d82aad8d0'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '404316ffbb06b1b3dce7bcba47c9bc2fa8124b7109'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '4096d4d468876505a764040fe88c0d199de9ae3150'} from 'ACTIONS_MODULE5'\nexport {openIde as '404bd17f744a17b20231f90035371ffca34b0b13dd'} from 'ACTIONS_MODULE6'\nexport {openShell as '40ddd631bf0b32d79e31bc49b7930c15d80982206a'} from 'ACTIONS_MODULE7'\nexport {openFolder as '400c7b1b7d6bbb265e7f4feda45c4494b42115ee8f'} from 'ACTIONS_MODULE8'\nexport {isAgentSetupComplete as '00956c3eeecfb585023391c0f0f0c5edc26f3c08c4'} from 'ACTIONS_MODULE9'\nexport {checkAgentAuth as '001f28091b7ab95f0c4538fa4cfd1fbc304eb098e7'} from 'ACTIONS_MODULE10'\nexport {getAllAgentModels as '00f314d8d3b6d06cbd017be5780f932bfdf1910caa'} from 'ACTIONS_MODULE11'\nexport {updateAgentAndModel as '60be3f60ebd6d3f42c3fb8db6763af9f6cec7f0b33'} from 'ACTIONS_MODULE12'\nexport {deleteFeature as '6039aec25baffed90753a7e810806458598ef46905'} from 'ACTIONS_MODULE13'\nexport {addRepository as '404256ba6207ab327eb6b5ec0798703910161ff47a'} from 'ACTIONS_MODULE14'\nexport {deleteRepository as '40bb8cf8c960e202dd5aa970983624f34567308edb'} from 'ACTIONS_MODULE15'\nexport {getFeatureMetadata as '405ed0b4bdb2b510ccccee752f7dfe47fa9d3b4c35'} from 'ACTIONS_MODULE16'\nexport {fetchGraphData as '000864180e806c03446d61cc27e211db8a118dd380'} from 'ACTIONS_MODULE17'\nexport {approveFeature as '600354d7eab1d8e5402851de743290fb8df9bf8ddf'} from 'ACTIONS_MODULE18'\nexport {rejectFeature as '7058dc441303c1826b9c1b5b1f6f3c2649f68ba8f7'} from 'ACTIONS_MODULE19'\nexport {getFeatureArtifact as '40c980025b80478071fbf1a3186c40e2617904cb48'} from 'ACTIONS_MODULE20'\nexport {getResearchArtifact as '402e79faba18617f065025f77da5616b83c6e35731'} from 'ACTIONS_MODULE21'\nexport {getMergeReviewData as '408910c395c221becfb0b9501cd78223d9a11ab64c'} from 'ACTIONS_MODULE22'\nexport {getFeaturePhaseTimings as '40b49dc2c181ebabcdb9b4fdc5e1167a0f40b38043'} from 'ACTIONS_MODULE23'\nexport {getFeaturePlan as '40329fc9d2e1925005e7776841588b82f6da65e177'} from 'ACTIONS_MODULE24'\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[15108,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.HooksClientContext},71915,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.ServerInsertedHtml},18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},55721,(a,b,c)=>{"use strict";b.exports=a.r(18622)},10973,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactJsxRuntime},96960,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].React},55690,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactDOM},21032,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored["react-ssr"].ReactServerDOMTurbopackClient},62485,(a,b,c)=>{"use strict";b.exports=a.r(55721).vendored.contexts.AppRouterContext},48939,a=>{"use strict";var b=a.i(96960);a.i(10973);var c=b.createContext(void 0);function d(a){let d=b.useContext(c);return a||d||"ltr"}a.s(["useDirection",()=>d])},90920,a=>{"use strict";var b=a.i(10973),c=a.i(85536);function d({className:a,type:d,...e}){return(0,b.jsx)("input",{type:d,"data-slot":"input",className:(0,c.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...e})}a.s(["Input",()=>d])},67837,a=>{"use strict";let b=(0,a.i(25700).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],67837)},17300,a=>{"use strict";let b=(0,a.i(25700).default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]);a.s(["Wrench",()=>b],17300)},2811,a=>{"use strict";let b=(0,a.i(25700).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["default",()=>b])},58428,a=>{"use strict";let b=(0,a.i(25700).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"}]]);a.s(["default",()=>b])},56926,a=>{"use strict";var b=a.i(58428);a.s(["CircleX",()=>b.default])},67273,93866,a=>{"use strict";var b=a.i(2811);a.s(["CircleCheck",()=>b.default],67273);let c=(0,a.i(25700).default)("ban",[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Ban",()=>c],93866)},84871,a=>{"use strict";var b=a.i(10973),c=a.i(96960);let d=(0,a.i(87139).createLogger)("[SSE]"),e=(0,c.createContext)(null);function f({children:a,runId:f}){let{events:g,lastEvent:h,connectionStatus:i}=function(a){let[b,e]=(0,c.useState)([]),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)("disconnected"),j=a?.runId;(0,c.useRef)(null);let k=(0,c.useCallback)(a=>{let b=a.data;if(b&&"object"==typeof b)if("notification"===b.type){let a=b.data;d.debug("event received:",a.eventType,a),e(b=>{let c=[...b,a];return c.length>500?c.slice(-250):c}),g(a)}else"status"===b.type&&i(b.status)},[]);return(0,c.useEffect)(()=>{},[j,k]),{events:b,lastEvent:f,connectionStatus:h}}({runId:f}),j=(0,c.useMemo)(()=>({events:g,lastEvent:h,connectionStatus:i}),[g,h,i]);return(0,b.jsx)(e.Provider,{value:j,children:a})}function g(){let a=(0,c.useContext)(e);if(!a)throw Error("useAgentEventsContext must be used within an <AgentEventsProvider>");return a}a.s(["AgentEventsProvider",()=>f,"useAgentEventsContext",()=>g],84871)},48972,a=>{"use strict";function b(a,[b,c]){return Math.min(c,Math.max(b,a))}a.s(["clamp",()=>b])},67424,a=>{"use strict";let b=(0,a.i(25700).default)("puzzle",[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]]);a.s(["Puzzle",()=>b],67424)},1377,a=>{"use strict";var b=a.i(25674);let c=(0,b.createServerReference)("0004805c5fe588c64c791cede95178f4db386c8b66",b.callServer,void 0,b.findSourceMapURL,"pickFolder");async function d(){let a=await c();if(a.error)throw Error(a.error);return a.path}a.s(["pickFolder",()=>d],1377)},1356,a=>{"use strict";var b=a.i(10973),c=a.i(96960);let d={"action-required":"action-needed",running:"in-progress",done:"done",blocked:"blocked",error:"error",creating:null,deleting:null};function e(a){return d[a]}let f=(0,c.createContext)(null);function g({children:a}){let[d,e]=(0,c.useState)([]),g=(0,c.useMemo)(()=>({features:d,setFeatures:e}),[d]);return(0,b.jsx)(f.Provider,{value:g,children:a})}function h(){let a=(0,c.useContext)(f);if(!a)throw Error("useSidebarFeaturesContext must be used within a <SidebarFeaturesProvider>");return a}a.s(["SidebarFeaturesProvider",()=>g,"mapNodeStateToSidebarStatus",()=>e,"useSidebarFeaturesContext",()=>h])}];
1
+ module.exports=[15108,(a,b,c)=>{"use strict";b.exports=a.r(56553).vendored.contexts.HooksClientContext},71915,(a,b,c)=>{"use strict";b.exports=a.r(56553).vendored.contexts.ServerInsertedHtml},18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},56553,(a,b,c)=>{"use strict";b.exports=a.r(18622)},10973,(a,b,c)=>{"use strict";b.exports=a.r(56553).vendored["react-ssr"].ReactJsxRuntime},96960,(a,b,c)=>{"use strict";b.exports=a.r(56553).vendored["react-ssr"].React},55690,(a,b,c)=>{"use strict";b.exports=a.r(56553).vendored["react-ssr"].ReactDOM},21032,(a,b,c)=>{"use strict";b.exports=a.r(56553).vendored["react-ssr"].ReactServerDOMTurbopackClient},62485,(a,b,c)=>{"use strict";b.exports=a.r(56553).vendored.contexts.AppRouterContext},48939,a=>{"use strict";var b=a.i(96960);a.i(10973);var c=b.createContext(void 0);function d(a){let d=b.useContext(c);return a||d||"ltr"}a.s(["useDirection",()=>d])},90920,a=>{"use strict";var b=a.i(10973),c=a.i(85536);function d({className:a,type:d,...e}){return(0,b.jsx)("input",{type:d,"data-slot":"input",className:(0,c.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...e})}a.s(["Input",()=>d])},67837,a=>{"use strict";let b=(0,a.i(25700).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],67837)},17300,a=>{"use strict";let b=(0,a.i(25700).default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]);a.s(["Wrench",()=>b],17300)},2811,a=>{"use strict";let b=(0,a.i(25700).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["default",()=>b])},58428,a=>{"use strict";let b=(0,a.i(25700).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"}]]);a.s(["default",()=>b])},84579,a=>{"use strict";var b=a.i(58428);a.s(["CircleX",()=>b.default])},67273,93866,a=>{"use strict";var b=a.i(2811);a.s(["CircleCheck",()=>b.default],67273);let c=(0,a.i(25700).default)("ban",[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Ban",()=>c],93866)},84871,a=>{"use strict";var b=a.i(10973),c=a.i(96960);let d=(0,a.i(87139).createLogger)("[SSE]"),e=(0,c.createContext)(null);function f({children:a,runId:f}){let{events:g,lastEvent:h,connectionStatus:i}=function(a){let[b,e]=(0,c.useState)([]),[f,g]=(0,c.useState)(null),[h,i]=(0,c.useState)("disconnected"),j=a?.runId;(0,c.useRef)(null);let k=(0,c.useCallback)(a=>{let b=a.data;if(b&&"object"==typeof b)if("notification"===b.type){let a=b.data;d.debug("event received:",a.eventType,a),e(b=>{let c=[...b,a];return c.length>500?c.slice(-250):c}),g(a)}else"status"===b.type&&i(b.status)},[]);return(0,c.useEffect)(()=>{},[j,k]),{events:b,lastEvent:f,connectionStatus:h}}({runId:f}),j=(0,c.useMemo)(()=>({events:g,lastEvent:h,connectionStatus:i}),[g,h,i]);return(0,b.jsx)(e.Provider,{value:j,children:a})}function g(){let a=(0,c.useContext)(e);if(!a)throw Error("useAgentEventsContext must be used within an <AgentEventsProvider>");return a}a.s(["AgentEventsProvider",()=>f,"useAgentEventsContext",()=>g],84871)},48972,a=>{"use strict";function b(a,[b,c]){return Math.min(c,Math.max(b,a))}a.s(["clamp",()=>b])},12882,a=>{"use strict";let b=(0,a.i(25700).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",()=>b],12882)},67424,a=>{"use strict";let b=(0,a.i(25700).default)("puzzle",[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]]);a.s(["Puzzle",()=>b],67424)},1377,a=>{"use strict";var b=a.i(25674);let c=(0,b.createServerReference)("006c9cb87fda568ceabf189d04e819f29c32e5b91b",b.callServer,void 0,b.findSourceMapURL,"pickFolder");async function d(){let a=await c();if(a.error)throw Error(a.error);return a.path}a.s(["pickFolder",()=>d],1377)},1356,a=>{"use strict";var b=a.i(10973),c=a.i(96960);let d={"action-required":"action-needed",running:"in-progress",done:"done",blocked:"blocked",error:"error",creating:null,deleting:null};function e(a){return d[a]}let f=(0,c.createContext)(null);function g({children:a}){let[d,e]=(0,c.useState)([]),g=(0,c.useMemo)(()=>({features:d,setFeatures:e}),[d]);return(0,b.jsx)(f.Provider,{value:g,children:a})}function h(){let a=(0,c.useContext)(f);if(!a)throw Error("useSidebarFeaturesContext must be used within a <SidebarFeaturesProvider>");return a}a.s(["SidebarFeaturesProvider",()=>g,"mapNodeStateToSidebarStatus",()=>e,"useSidebarFeaturesContext",()=>h])}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__845a9d2a._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__753f42eb._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/module.compiled.js","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-dom.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-direction%401.1.1_%40types%2Breact%4019.2.10_react%4019.2.4/node_modules/%40radix-ui/react-direction/src/direction.tsx","../../../../../../../src/presentation/web/components/ui/input.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/plus.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/wrench.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle-check.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle-x.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/ban.ts","../../../../../../../src/presentation/web/hooks/agent-events-provider.tsx","../../../../../../../src/presentation/web/hooks/use-agent-events.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Bnumber%401.1.1/node_modules/%40radix-ui/number/src/number.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/message-square.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/puzzle.ts","../../../../../../../src/presentation/web/app/actions/data%3A51fda5%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/add-repository-button/pick-folder.ts","../../../../../../../src/presentation/web/hooks/sidebar-features-context.tsx"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactDOM\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactServerDOMTurbopackClient\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC<DirectionProviderProps> = (props) => {\n const { dir, children } = props;\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n];\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('plus', __iconNode);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z',\n key: '1ngwbx',\n },\n ],\n];\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNyA2LjNhMSAxIDAgMCAwIDAgMS40bDEuNiAxLjZhMSAxIDAgMCAwIDEuNCAwbDMuMTA2LTMuMTA1Yy4zMi0uMzIyLjg2My0uMjIuOTgzLjIxOGE2IDYgMCAwIDEtOC4yNTkgNy4wNTdsLTcuOTEgNy45MWExIDEgMCAwIDEtMi45OTktM2w3LjkxLTcuOTFhNiA2IDAgMCAxIDcuMDU3LTguMjU5Yy40MzguMTIuNTQuNjYyLjIxOS45ODR6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('wrench', __iconNode);\n\nexport default Wrench;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n];\n\n/**\n * @component @name CircleCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJtOSAxMiAyIDIgNC00IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/circle-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleCheck = createLucideIcon('circle-check', __iconNode);\n\nexport default CircleCheck;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm15 9-6 6', key: '1uzhvr' }],\n ['path', { d: 'm9 9 6 6', key: 'z0biqf' }],\n];\n\n/**\n * @component @name CircleX\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJtMTUgOS02IDYiIC8+CiAgPHBhdGggZD0ibTkgOSA2IDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleX = createLucideIcon('circle-x', __iconNode);\n\nexport default CircleX;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M4.929 4.929 19.07 19.071', key: '196cmz' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Ban\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNC45MjkgNC45MjkgMTkuMDcgMTkuMDcxIiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ban\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ban = createLucideIcon('ban', __iconNode);\n\nexport default Ban;\n","'use client';\n\nimport { createContext, useContext, useMemo, type ReactNode } from 'react';\nimport {\n useAgentEvents,\n type UseAgentEventsOptions,\n type UseAgentEventsResult,\n} from './use-agent-events';\n\nconst AgentEventsContext = createContext<UseAgentEventsResult | null>(null);\n\ninterface AgentEventsProviderProps extends UseAgentEventsOptions {\n children: ReactNode;\n}\n\n/**\n * Single SSE connection for agent events shared across all consumers.\n * Wrap the app once; use `useAgentEventsContext()` to read.\n */\nexport function AgentEventsProvider({ children, runId }: AgentEventsProviderProps) {\n const { events, lastEvent, connectionStatus } = useAgentEvents({ runId });\n\n const value = useMemo<UseAgentEventsResult>(\n () => ({ events, lastEvent, connectionStatus }),\n [events, lastEvent, connectionStatus]\n );\n\n return <AgentEventsContext.Provider value={value}>{children}</AgentEventsContext.Provider>;\n}\n\nexport function useAgentEventsContext(): UseAgentEventsResult {\n const ctx = useContext(AgentEventsContext);\n if (!ctx) {\n throw new Error('useAgentEventsContext must be used within an <AgentEventsProvider>');\n }\n return ctx;\n}\n","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { NotificationEvent } from '@shepai/core/domain/generated/output';\nimport { createLogger } from '@/lib/logger';\n\nexport type ConnectionStatus = 'connected' | 'connecting' | 'disconnected';\n\nexport interface UseAgentEventsOptions {\n runId?: string;\n}\n\nexport interface UseAgentEventsResult {\n events: NotificationEvent[];\n lastEvent: NotificationEvent | null;\n connectionStatus: ConnectionStatus;\n}\n\nconst log = createLogger('[SSE]');\nconst SW_PATH = '/agent-events-sw.js';\nconst MAX_EVENTS = 500;\nconst PRUNE_KEEP = 250;\n\n/**\n * Hook that receives real-time agent notification events via a Service Worker.\n *\n * The SW maintains a single SSE connection to /api/agent-events and\n * broadcasts events to all open tabs. Falls back to direct EventSource\n * when Service Workers are unavailable.\n */\nexport function useAgentEvents(options?: UseAgentEventsOptions): UseAgentEventsResult {\n const [events, setEvents] = useState<NotificationEvent[]>([]);\n const [lastEvent, setLastEvent] = useState<NotificationEvent | null>(null);\n const [connectionStatus, setConnectionStatus] = useState<ConnectionStatus>('disconnected');\n\n const runId = options?.runId;\n const swRef = useRef<ServiceWorker | null>(null);\n\n const onMessage = useCallback((event: MessageEvent) => {\n const msg = event.data;\n if (!msg || typeof msg !== 'object') return;\n\n if (msg.type === 'notification') {\n const parsed = msg.data as NotificationEvent;\n log.debug('event received:', parsed.eventType, parsed);\n setEvents((prev) => {\n const next = [...prev, parsed];\n return next.length > MAX_EVENTS ? next.slice(-PRUNE_KEEP) : next;\n });\n setLastEvent(parsed);\n } else if (msg.type === 'status') {\n setConnectionStatus(msg.status as ConnectionStatus);\n }\n }, []);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n // ?sse=direct bypasses the Service Worker for debugging\n const bypassSW =\n typeof location !== 'undefined' && new URLSearchParams(location.search).has('sse');\n\n // Fallback: direct EventSource when SW not supported or bypassed\n if (!navigator.serviceWorker || bypassSW) {\n return connectDirectEventSource(runId, setEvents, setLastEvent, setConnectionStatus);\n }\n\n let cancelled = false;\n const fallbackCleanupRef = { current: undefined as (() => void) | undefined };\n\n function subscribeToWorker(worker: ServiceWorker) {\n if (cancelled) return;\n swRef.current = worker;\n worker.postMessage({ type: 'subscribe', runId });\n setConnectionStatus('connecting');\n }\n\n // Listen for messages from whatever SW controls this page\n navigator.serviceWorker.addEventListener('message', onMessage);\n\n // Re-subscribe when SW controller changes (e.g., after SW update via skipWaiting)\n function handleControllerChange() {\n if (cancelled) return;\n const newController = navigator.serviceWorker.controller;\n if (newController) {\n swRef.current = newController;\n newController.postMessage({ type: 'subscribe', runId });\n setConnectionStatus('connecting');\n }\n }\n navigator.serviceWorker.addEventListener('controllerchange', handleControllerChange);\n\n navigator.serviceWorker\n .register(SW_PATH, { scope: '/' })\n .then((registration) => {\n if (cancelled) return;\n\n // Use the active worker, or wait for it to activate\n const sw = registration.active ?? registration.installing ?? registration.waiting;\n if (!sw) {\n // No worker at all — fall back to direct EventSource\n fallbackCleanupRef.current = connectDirectEventSource(\n runId,\n setEvents,\n setLastEvent,\n setConnectionStatus\n );\n return;\n }\n\n if (sw.state === 'activated') {\n subscribeToWorker(sw);\n } else {\n const onStateChange = () => {\n if (sw.state === 'activated') {\n sw.removeEventListener('statechange', onStateChange);\n subscribeToWorker(sw);\n }\n };\n sw.addEventListener('statechange', onStateChange);\n }\n })\n .catch(() => {\n // SW registration failed — fall back to direct EventSource\n if (!cancelled) {\n fallbackCleanupRef.current = connectDirectEventSource(\n runId,\n setEvents,\n setLastEvent,\n setConnectionStatus\n );\n }\n });\n\n return () => {\n cancelled = true;\n navigator.serviceWorker.removeEventListener('message', onMessage);\n navigator.serviceWorker.removeEventListener('controllerchange', handleControllerChange);\n swRef.current?.postMessage({ type: 'unsubscribe' });\n swRef.current = null;\n fallbackCleanupRef.current?.();\n };\n }, [runId, onMessage]);\n\n return { events, lastEvent, connectionStatus };\n}\n\n// --- EventSource fallback (identical to the previous implementation) ---\n\nconst BASE_BACKOFF_MS = 1000;\nconst MAX_BACKOFF_MS = 30_000;\nconst STABLE_CONNECTION_MS = 5_000;\n\nfunction connectDirectEventSource(\n runId: string | undefined,\n setEvents: React.Dispatch<React.SetStateAction<NotificationEvent[]>>,\n setLastEvent: React.Dispatch<React.SetStateAction<NotificationEvent | null>>,\n setConnectionStatus: React.Dispatch<React.SetStateAction<ConnectionStatus>>\n): () => void {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n if (typeof EventSource === 'undefined') return () => {};\n\n let es: EventSource | null = null;\n let stopped = false;\n let backoff = BASE_BACKOFF_MS;\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n let stableTimer: ReturnType<typeof setTimeout> | null = null;\n\n function connect() {\n if (stopped) return;\n\n const url = runId\n ? `/api/agent-events?runId=${encodeURIComponent(runId)}`\n : '/api/agent-events';\n\n es = new EventSource(url);\n setConnectionStatus('connecting');\n\n es.onopen = () => {\n setConnectionStatus('connected');\n stableTimer = setTimeout(() => {\n stableTimer = null;\n backoff = BASE_BACKOFF_MS;\n }, STABLE_CONNECTION_MS);\n };\n\n es.onerror = () => {\n es?.close();\n es = null;\n setConnectionStatus('disconnected');\n\n if (stableTimer !== null) {\n clearTimeout(stableTimer);\n stableTimer = null;\n }\n\n const delay = backoff;\n backoff = Math.min(delay * 2, MAX_BACKOFF_MS);\n\n reconnectTimer = setTimeout(() => {\n reconnectTimer = null;\n connect();\n }, delay);\n };\n\n es.addEventListener('notification', ((event: MessageEvent) => {\n const parsed: NotificationEvent = JSON.parse(event.data);\n setEvents((prev) => {\n const next = [...prev, parsed];\n return next.length > MAX_EVENTS ? next.slice(-PRUNE_KEEP) : next;\n });\n setLastEvent(parsed);\n }) as EventListener);\n }\n\n connect();\n\n return () => {\n stopped = true;\n if (reconnectTimer !== null) {\n clearTimeout(reconnectTimer);\n reconnectTimer = null;\n }\n if (stableTimer !== null) {\n clearTimeout(stableTimer);\n stableTimer = null;\n }\n if (es) {\n es.close();\n es = null;\n }\n };\n}\n","function clamp(value: number, [min, max]: [number, number]): number {\n return Math.min(max, Math.max(min, value));\n}\n\nexport { clamp };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z',\n key: '18887p',\n },\n ],\n];\n\n/**\n * @component @name MessageSquare\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/message-square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageSquare = createLucideIcon('message-square', __iconNode);\n\nexport default MessageSquare;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z',\n key: 'w46dr5',\n },\n ],\n];\n\n/**\n * @component @name Puzzle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUuMzkgNC4zOWExIDEgMCAwIDAgMS42OC0uNDc0IDIuNSAyLjUgMCAxIDEgMy4wMTQgMy4wMTUgMSAxIDAgMCAwLS40NzQgMS42OGwxLjY4MyAxLjY4MmEyLjQxNCAyLjQxNCAwIDAgMSAwIDMuNDE0TDE5LjYxIDE1LjM5YTEgMSAwIDAgMS0xLjY4LS40NzQgMi41IDIuNSAwIDEgMC0zLjAxNCAzLjAxNSAxIDEgMCAwIDEgLjQ3NCAxLjY4bC0xLjY4MyAxLjY4MmEyLjQxNCAyLjQxNCAwIDAgMS0zLjQxNCAwTDguNjEgMTkuNjFhMSAxIDAgMCAwLTEuNjguNDc0IDIuNSAyLjUgMCAxIDEtMy4wMTQtMy4wMTUgMSAxIDAgMCAwIC40NzQtMS42OGwtMS42ODMtMS42ODJhMi40MTQgMi40MTQgMCAwIDEgMC0zLjQxNEw0LjM5IDguNjFhMSAxIDAgMCAxIDEuNjguNDc0IDIuNSAyLjUgMCAxIDAgMy4wMTQtMy4wMTUgMSAxIDAgMCAxLS40NzQtMS42OGwxLjY4My0xLjY4MmEyLjQxNCAyLjQxNCAwIDAgMSAzLjQxNCAweiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/puzzle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Puzzle = createLucideIcon('puzzle', __iconNode);\n\nexport default Puzzle;\n","/* __next_internal_action_entry_do_not_use__ [{\"006c9cb87fda568ceabf189d04e819f29c32e5b91b\":\"pickFolder\"},\"src/presentation/web/app/actions/pick-folder.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"006c9cb87fda568ceabf189d04e819f29c32e5b91b\",callServer,void 0,findSourceMapURL,\"pickFolder\");export{$$RSC_SERVER_ACTION_0 as pickFolder};","import { pickFolder as pickFolderAction } from '@/app/actions/pick-folder';\n\n/**\n * Opens a native OS folder picker dialog via server action.\n * Returns the selected absolute path, or null if the user cancelled.\n */\nexport async function pickFolder(): Promise<string | null> {\n const result = await pickFolderAction();\n\n if (result.error) {\n throw new Error(result.error);\n }\n\n return result.path;\n}\n","'use client';\n\nimport { createContext, useContext, useState, useMemo, type ReactNode } from 'react';\nimport type { FeatureNodeState } from '@/components/common/feature-node/feature-node-state-config';\nimport type { FeatureStatus } from '@/components/common/feature-status-config';\n\n// Re-export the FeatureItem type so consumers can import from one place.\n// This will gain `featureId` in a later phase.\nexport interface SidebarFeatureItem {\n name: string;\n status: FeatureStatus;\n featureId: string;\n startedAt?: number;\n duration?: string;\n agentType?: string;\n modelId?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Pure mapping: FeatureNodeState (6-state) → FeatureStatus (5-state) | null\n// ---------------------------------------------------------------------------\n\nconst stateMapping: Record<FeatureNodeState, FeatureStatus | null> = {\n 'action-required': 'action-needed',\n running: 'in-progress',\n done: 'done',\n blocked: 'blocked',\n error: 'error',\n creating: null,\n deleting: null,\n};\n\n/**\n * Maps a canvas FeatureNodeState to the sidebar's 5-state FeatureStatus.\n * Returns `null` for `creating` (optimistic UI) — these should be excluded from the sidebar.\n */\nexport function mapNodeStateToSidebarStatus(state: FeatureNodeState): FeatureStatus | null {\n return stateMapping[state];\n}\n\n// ---------------------------------------------------------------------------\n// SidebarFeaturesContext\n// ---------------------------------------------------------------------------\n\ninterface SidebarFeaturesContextValue {\n features: SidebarFeatureItem[];\n setFeatures: (features: SidebarFeatureItem[]) => void;\n}\n\nconst SidebarFeaturesContext = createContext<SidebarFeaturesContextValue | null>(null);\n\ninterface SidebarFeaturesProviderProps {\n children: ReactNode;\n}\n\nexport function SidebarFeaturesProvider({ children }: SidebarFeaturesProviderProps) {\n const [features, setFeatures] = useState<SidebarFeatureItem[]>([]);\n\n const value = useMemo<SidebarFeaturesContextValue>(() => ({ features, setFeatures }), [features]);\n\n return (\n <SidebarFeaturesContext.Provider value={value}>{children}</SidebarFeaturesContext.Provider>\n );\n}\n\nexport function useSidebarFeaturesContext(): SidebarFeaturesContextValue {\n const ctx = useContext(SidebarFeaturesContext);\n if (!ctx) {\n throw new Error('useSidebarFeaturesContext must be used within a <SidebarFeaturesProvider>');\n }\n return ctx;\n}\n"],"names":["module","exports","require","vendored","HooksClientContext","ServerInsertedHtml","process","env","NEXT_RUNTIME","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","ReactJsxRuntime","React","ReactDOM","ReactServerDOMTurbopackClient","AppRouterContext"],"mappings":"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AA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CAEJ,qDCXkM,IAAA,EAAA,EAAA,CAAA,CAAA,OAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,cCMhb,eAAe,IACpB,IAAM,EAAS,MAAM,IAErB,GAAI,EAAO,KAAK,CACd,CADgB,KACV,AAAI,MAAM,EAAO,KAAK,EAG9B,OAAO,EAAO,IAAI,AACpB,wECZA,EAAA,EAAA,CAAA,CAAA,OAoBA,IAAM,EAA+D,CACnE,kBAAmB,gBACnB,QAAS,cACT,KAAM,OACN,QAAS,UACT,MAAO,QACP,SAAU,KACV,SAAU,IACZ,EAMO,SAAS,EAA4B,CAAuB,EACjE,OAAO,CAAY,CAAC,EAAM,AAC5B,CAWA,IAAM,EAAyB,CAAA,EAAA,EAAA,aAAA,AAAa,EAAqC,MAM1E,SAAS,EAAwB,UAAE,CAAQ,CAAgC,EAChF,GAAM,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAuB,EAAE,EAE3D,EAAQ,CAAA,EAAA,EAAA,OAAA,AAAO,EAA8B,IAAM,CAAC,UAAE,cAAU,EAAY,CAAC,CAAG,CAAC,EAAS,EAEhG,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAuB,QAAQ,CAAA,CAAC,MAAO,WAAQ,GAEpD,CAEO,SAAS,IACd,IAAM,EAAM,CAAA,EAAA,EAAA,UAAA,AAAU,EAAC,GACvB,GAAI,CAAC,EACH,GADQ,GACF,AAAI,MAAM,6EAElB,OAAO,CACT","ignoreList":[0,1,2,3,4,5,6,7,10,11,14,18,19]}
@@ -1,4 +1,4 @@
1
- module.exports=[66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},94691,29918,33841,46646,68670,85321,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"40e74bce6be2c8c08ab32bac9c38b5c7bf1c597c56",null),a.s(["getDeploymentLogs",()=>e],94691);var f=a.i(2157);let g=()=>void 0;function h(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):g,debug:b?(...b)=>console.debug(a,...b):g,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var i=a.i(66680),j=a.i(50227),k=a.i(32278);function l(a,b){let c=(0,i.createHash)("sha256").update(a).digest("hex").slice(0,16),d=b.replace(/\//g,"-");return(0,j.join)((0,k.getShepHomeDir)(),"repos",c,"wt",d)}a.s(["computeWorktreePath",()=>l],29918);var m=a.i(81719);let n=h("[deployFeature]");async function o(a){if(n.info(`called — featureId="${a}"`),!a?.trim())return n.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return n.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};n.info(`feature found — repositoryPath="${d.repositoryPath}", branch="${d.branch}"`);let e=l(d.repositoryPath,d.branch);if(n.info(`computed worktreePath="${e}"`),!(0,f.existsSync)(e))return n.warn(`worktree path does not exist on disk: "${e}"`),{success:!1,error:`Worktree path does not exist: ${e}`};return n.info("worktree path exists, calling deploymentService.start()"),(0,c.resolve)("IDeploymentService").start(a,e),n.info("start() returned successfully — state=Booting"),{success:!0,state:m.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return n.error(`error: ${a}`,b),{success:!1,error:a}}}(0,d.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"400c82a35abeef5efe6fcc53ee18fdc6d593f9a284",null),a.s(["deployFeature",()=>o],33841);let p=h("[deployRepository]");async function q(a){if(p.info(`called — repositoryPath="${a}"`),!a?.startsWith("/"))return p.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,f.existsSync)(a))return p.warn(`directory does not exist: "${a}"`),{success:!1,error:`Directory does not exist: ${a}`};return p.info("directory exists, calling deploymentService.start()"),(0,c.resolve)("IDeploymentService").start(a,a),p.info("start() returned successfully — state=Booting"),{success:!0,state:m.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return p.error(`error: ${a}`,b),{success:!1,error:a}}}async function r(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,c.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function s(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getStatus(a):null}(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40350574cbb46962093996037e5a84e1455d515033",null),a.s(["deployRepository",()=>q],46646),(0,d.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"407bfb36cf8f9fadfb6d78e936fedcb1b09eb6f0f4",null),a.s(["stopDeployment",()=>r],68670),(0,d.ensureServerEntryExports)([s]),(0,b.registerServerReference)(s,"407c233697de2c082762d5159f769caed3c15598c9",null),a.s(["getDeploymentStatus",()=>s],85321)},96380,a=>{"use strict";function b(a){let b=globalThis.__shepContainer;if(!b)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return b.resolve(a)}a.s(["resolve",()=>b])},81719,a=>{"use strict";var b,c,d,e,f,g=((b={}).Todo="Todo",b.WIP="Work in Progress",b.Done="Done",b.Review="Review",b),h=((c={}).Started="Started",c.Analyze="Analyze",c.Requirements="Requirements",c.Research="Research",c.Planning="Planning",c.Implementation="Implementation",c.Review="Review",c.Maintain="Maintain",c.Blocked="Blocked",c.Deleting="Deleting",c),i=((d={}).Pending="Pending",d.Success="Success",d.Failure="Failure",d),j=((e={}).Booting="Booting",e.Ready="Ready",e.Stopped="Stopped",e),k=((f={}).pending="pending",f.running="running",f.completed="completed",f.failed="failed",f.interrupted="interrupted",f.cancelled="cancelled",f.waitingApproval="waiting_approval",f);a.s(["AgentRunStatus",()=>k,"CiStatus",()=>i,"DeploymentState",()=>j,"SdlcLifecycle",()=>h,"TaskState",()=>g])},92658,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(28478)},12581,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},12513,a=>{"use strict";var b=a.i(92658),c=a.i(74533);let d={platform:process.platform,exec:(a,b)=>(0,c.execSync)(a,b)},e={darwin:"osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'",linux:'zenity --file-selection --directory --title="Select a repository folder" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\""};class f{deps;constructor(a={}){this.deps={...d,...a}}getCommand(){return e[this.deps.platform]??null}pickFolder(){let a=this.getCommand();if(!a)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let b=this.deps.exec(a,{encoding:"utf-8",timeout:6e4}).trim();return b.length>0?b:null}catch(a){var b;if("object"==typeof(b=a)&&null!==b&&"status"in b&&1===a.status)return null;throw a}}}async function g(){let a=new f;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,a.i(12581).ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"0004805c5fe588c64c791cede95178f4db386c8b66",null),a.s(["pickFolder",()=>g],12513)},2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},12714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},32278,a=>{"use strict";a.i(12714);var b=a.i(60526),c=a.i(50227);function d(){return process.env.SHEP_HOME??(0,c.join)((0,b.homedir)(),".shep")}a.i(2157),a.s(["getShepHomeDir",()=>d])}];
1
+ module.exports=[66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},94691,29918,33841,46646,68670,85321,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"40b745e4d76fc3802398620e5ddb74ad8a4526e703",null),a.s(["getDeploymentLogs",()=>e],94691);var f=a.i(2157);let g=()=>void 0;function h(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):g,debug:b?(...b)=>console.debug(a,...b):g,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var i=a.i(66680),j=a.i(50227),k=a.i(32278);function l(a,b){let c=(0,i.createHash)("sha256").update(a).digest("hex").slice(0,16),d=b.replace(/\//g,"-");return(0,j.join)((0,k.getShepHomeDir)(),"repos",c,"wt",d)}a.s(["computeWorktreePath",()=>l],29918);var m=a.i(81719);let n=h("[deployFeature]");async function o(a){if(n.info(`called — featureId="${a}"`),!a?.trim())return n.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return n.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};n.info(`feature found — repositoryPath="${d.repositoryPath}", branch="${d.branch}"`);let e=l(d.repositoryPath,d.branch);if(n.info(`computed worktreePath="${e}"`),!(0,f.existsSync)(e))return n.warn(`worktree path does not exist on disk: "${e}"`),{success:!1,error:`Worktree path does not exist: ${e}`};return n.info("worktree path exists, calling deploymentService.start()"),(0,c.resolve)("IDeploymentService").start(a,e),n.info("start() returned successfully — state=Booting"),{success:!0,state:m.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return n.error(`error: ${a}`,b),{success:!1,error:a}}}(0,d.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"40d9d5865a7a51f3824554c9ddad984308bc726781",null),a.s(["deployFeature",()=>o],33841);let p=h("[deployRepository]");async function q(a){if(p.info(`called — repositoryPath="${a}"`),!a?.startsWith("/"))return p.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,f.existsSync)(a))return p.warn(`directory does not exist: "${a}"`),{success:!1,error:`Directory does not exist: ${a}`};return p.info("directory exists, calling deploymentService.start()"),(0,c.resolve)("IDeploymentService").start(a,a),p.info("start() returned successfully — state=Booting"),{success:!0,state:m.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return p.error(`error: ${a}`,b),{success:!1,error:a}}}async function r(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,c.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function s(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getStatus(a):null}(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40d4c33644f5f7ce1caab41719e292371d82aad8d0",null),a.s(["deployRepository",()=>q],46646),(0,d.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"404316ffbb06b1b3dce7bcba47c9bc2fa8124b7109",null),a.s(["stopDeployment",()=>r],68670),(0,d.ensureServerEntryExports)([s]),(0,b.registerServerReference)(s,"4096d4d468876505a764040fe88c0d199de9ae3150",null),a.s(["getDeploymentStatus",()=>s],85321)},96380,a=>{"use strict";function b(a){let b=globalThis.__shepContainer;if(!b)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return b.resolve(a)}a.s(["resolve",()=>b])},81719,a=>{"use strict";var b,c,d,e,f,g=((b={}).Todo="Todo",b.WIP="Work in Progress",b.Done="Done",b.Review="Review",b),h=((c={}).Started="Started",c.Analyze="Analyze",c.Requirements="Requirements",c.Research="Research",c.Planning="Planning",c.Implementation="Implementation",c.Review="Review",c.Maintain="Maintain",c.Blocked="Blocked",c.Deleting="Deleting",c),i=((d={}).Pending="Pending",d.Success="Success",d.Failure="Failure",d),j=((e={}).Booting="Booting",e.Ready="Ready",e.Stopped="Stopped",e),k=((f={}).pending="pending",f.running="running",f.completed="completed",f.failed="failed",f.interrupted="interrupted",f.cancelled="cancelled",f.waitingApproval="waiting_approval",f);a.s(["AgentRunStatus",()=>k,"CiStatus",()=>i,"DeploymentState",()=>j,"SdlcLifecycle",()=>h,"TaskState",()=>g])},92658,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(28478)},12581,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},12513,a=>{"use strict";var b=a.i(92658),c=a.i(74533);let d={platform:process.platform,exec:(a,b)=>(0,c.execSync)(a,b)},e={darwin:"osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'",linux:'zenity --file-selection --directory --title="Select a repository folder" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\""};class f{deps;constructor(a={}){this.deps={...d,...a}}getCommand(){return e[this.deps.platform]??null}pickFolder(){let a=this.getCommand();if(!a)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let b=this.deps.exec(a,{encoding:"utf-8",timeout:6e4}).trim();return b.length>0?b:null}catch(a){var b;if("object"==typeof(b=a)&&null!==b&&"status"in b&&1===a.status)return null;throw a}}}async function g(){let a=new f;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,a.i(12581).ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"006c9cb87fda568ceabf189d04e819f29c32e5b91b",null),a.s(["pickFolder",()=>g],12513)},2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},12714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},32278,a=>{"use strict";a.i(12714);var b=a.i(60526),c=a.i(50227);function d(){return process.env.SHEP_HOME??(0,c.join)((0,b.homedir)(),".shep")}a.i(2157),a.s(["getShepHomeDir",()=>d])}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__89e8a5cc._.js.map