@shepai/cli 1.135.3-pr425.d3fbb75 → 1.135.3-pr443.1bf56b0

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 (240) hide show
  1. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts +0 -2
  2. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts.map +1 -1
  3. package/dist/src/presentation/web/app/actions/check-agent-auth.js +1 -8
  4. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
  5. package/dist/src/presentation/web/app/build-graph-nodes.js +9 -1
  6. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +0 -17
  7. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  8. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +0 -91
  9. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  10. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +64 -54
  11. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
  12. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +19 -85
  13. package/dist/src/presentation/web/components/common/merge-review/diff-view.d.ts +3 -0
  14. package/dist/src/presentation/web/components/common/merge-review/diff-view.d.ts.map +1 -1
  15. package/dist/src/presentation/web/components/common/merge-review/diff-view.js +100 -17
  16. package/dist/src/presentation/web/components/common/merge-review/diff-view.stories.d.ts +3 -1
  17. package/dist/src/presentation/web/components/common/merge-review/diff-view.stories.d.ts.map +1 -1
  18. package/dist/src/presentation/web/components/common/merge-review/diff-view.stories.js +31 -1
  19. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  20. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +4 -6
  21. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts.map +1 -1
  22. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +9 -35
  23. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.stories.d.ts +1 -17
  24. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.stories.d.ts.map +1 -1
  25. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.stories.js +1 -110
  26. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +1 -1
  28. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +0 -1
  29. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  30. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +10 -443
  31. package/dist/src/presentation/web/components/ui/file-tree.d.ts +39 -0
  32. package/dist/src/presentation/web/components/ui/file-tree.d.ts.map +1 -0
  33. package/dist/src/presentation/web/components/ui/file-tree.js +194 -0
  34. package/dist/src/presentation/web/components/ui/file-tree.stories.d.ts +14 -0
  35. package/dist/src/presentation/web/components/ui/file-tree.stories.d.ts.map +1 -0
  36. package/dist/src/presentation/web/components/ui/file-tree.stories.js +92 -0
  37. package/dist/src/presentation/web/lib/layout-with-dagre.js +1 -1
  38. package/dist/tsconfig.build.tsbuildinfo +1 -1
  39. package/package.json +1 -1
  40. package/web/.next/BUILD_ID +1 -1
  41. package/web/.next/build-manifest.json +2 -2
  42. package/web/.next/fallback-build-manifest.json +2 -2
  43. package/web/.next/prerender-manifest.json +3 -3
  44. package/web/.next/required-server-files.js +1 -1
  45. package/web/.next/required-server-files.json +1 -1
  46. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +48 -63
  47. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +3 -3
  48. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  49. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  50. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +48 -63
  51. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
  52. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +60 -75
  55. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +3 -3
  56. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +60 -75
  59. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
  60. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  61. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  62. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +44 -59
  63. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
  64. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +48 -63
  67. package/web/.next/server/app/(dashboard)/create/page.js +3 -3
  68. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  69. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +60 -75
  71. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +3 -3
  72. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  73. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +60 -75
  75. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
  76. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +44 -59
  79. package/web/.next/server/app/(dashboard)/page.js +3 -3
  80. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  81. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  82. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +44 -59
  83. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
  84. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  85. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/_global-error.html +2 -2
  87. package/web/.next/server/app/_global-error.rsc +1 -1
  88. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  89. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  90. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  91. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  92. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  93. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  94. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  95. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  97. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  98. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  99. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  100. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  101. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  103. package/web/.next/server/app/skills/page.js +1 -1
  104. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  105. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  107. package/web/.next/server/app/tools/page.js +1 -1
  108. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  109. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  111. package/web/.next/server/app/version/page.js.nft.json +1 -1
  112. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  114. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  115. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  116. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +3 -0
  117. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -0
  118. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  119. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +3 -0
  121. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -0
  122. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +3 -0
  123. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -0
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__1a3121ff._.js +3 -0
  125. package/web/.next/server/chunks/ssr/{[root-of-the-server]__d48c5b11._.js.map → [root-of-the-server]__1a3121ff._.js.map} +1 -1
  126. package/web/.next/server/chunks/ssr/{[root-of-the-server]__47ded061._.js → [root-of-the-server]__31bc28da._.js} +2 -2
  127. package/web/.next/server/chunks/ssr/{[root-of-the-server]__47ded061._.js.map → [root-of-the-server]__31bc28da._.js.map} +1 -1
  128. package/web/.next/server/chunks/ssr/{[root-of-the-server]__68ce373c._.js → [root-of-the-server]__32ecbed9._.js} +2 -2
  129. package/web/.next/server/chunks/ssr/{[root-of-the-server]__fdd058b2._.js.map → [root-of-the-server]__32ecbed9._.js.map} +1 -1
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/{[root-of-the-server]__718766da._.js → [root-of-the-server]__90ce4b6d._.js} +2 -2
  137. package/web/.next/server/chunks/ssr/{[root-of-the-server]__718766da._.js.map → [root-of-the-server]__90ce4b6d._.js.map} +1 -1
  138. package/web/.next/server/chunks/ssr/{[root-of-the-server]__fdd058b2._.js → [root-of-the-server]__90f9ae71._.js} +2 -2
  139. package/web/.next/server/chunks/ssr/{[root-of-the-server]__68ce373c._.js.map → [root-of-the-server]__90f9ae71._.js.map} +1 -1
  140. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a5f9c6e5._.js → [root-of-the-server]__96670392._.js} +3 -3
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__96670392._.js.map +1 -0
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__9c45d070._.js +3 -0
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__9c45d070._.js.map +1 -0
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  149. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/_67104d9e._.js +1 -1
  151. package/web/.next/server/chunks/ssr/_67104d9e._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  153. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/{_40c2d506._.js → _8c62a935._.js} +2 -2
  155. package/web/.next/server/chunks/ssr/_8c62a935._.js.map +1 -0
  156. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  157. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/_b6960ca0._.js +4 -0
  159. package/web/.next/server/chunks/ssr/_b6960ca0._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/_d0a5c8be._.js +3 -0
  161. package/web/.next/server/chunks/ssr/_d0a5c8be._.js.map +1 -0
  162. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  163. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  165. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  167. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/src_presentation_web_0111eafd._.js +3 -0
  169. package/web/.next/server/chunks/ssr/{src_presentation_web_8ac280c1._.js.map → src_presentation_web_0111eafd._.js.map} +1 -1
  170. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +5 -0
  171. package/web/.next/server/chunks/ssr/{src_presentation_web_e4df6dd7._.js.map → src_presentation_web_8e7fe0d1._.js.map} +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +3 -0
  173. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -0
  174. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  177. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +5 -0
  179. package/web/.next/server/chunks/ssr/{src_presentation_web_53666118._.js.map → src_presentation_web_b9023017._.js.map} +1 -1
  180. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  181. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  183. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  185. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_scroll-area_tsx_53ae5be7._.js +3 -0
  187. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_scroll-area_tsx_53ae5be7._.js.map +1 -0
  188. package/web/.next/server/pages/500.html +2 -2
  189. package/web/.next/server/server-reference-manifest.js +1 -1
  190. package/web/.next/server/server-reference-manifest.json +296 -374
  191. package/web/.next/static/chunks/260c376293ef313f.js +1 -0
  192. package/web/.next/static/chunks/2f5948883382134c.js +1 -0
  193. package/web/.next/static/chunks/{c80e7077c2e15d7a.js → 3cdbfd1816f1dae6.js} +1 -1
  194. package/web/.next/static/chunks/{a381d542a7ec04d9.js → 5d8698f0d17c425f.js} +2 -2
  195. package/web/.next/static/chunks/{b5545c62e743df83.js → 60cfec53f7bd64a7.js} +2 -2
  196. package/web/.next/static/chunks/66e554b3fb85d07b.js +1 -0
  197. package/web/.next/static/chunks/72c889d2d1d2c950.js +1 -0
  198. package/web/.next/static/chunks/7486226f7ac8be26.js +1 -0
  199. package/web/.next/static/chunks/{5240821573a037e3.js → 8bfc9acd71f1884f.js} +1 -1
  200. package/web/.next/static/chunks/9063a0bcaedece23.js +1 -0
  201. package/web/.next/static/chunks/{b4e468a0f9370e0f.js → 970d4d88a2e46223.js} +1 -1
  202. package/web/.next/static/chunks/a6b8b76506ed0486.js +1 -0
  203. package/web/.next/static/chunks/afbe5f1ead5cd56b.js +1 -0
  204. package/web/.next/static/chunks/{b966410b4e88dba6.js → c733b438f9c3dca2.js} +1 -1
  205. package/web/.next/static/chunks/{99351a301567a88e.js → ccbca8058fb94fd9.js} +1 -1
  206. package/web/.next/static/chunks/cea224868e7b317e.css +1 -0
  207. package/dist/src/presentation/web/app/actions/check-tool-status.d.ts +0 -14
  208. package/dist/src/presentation/web/app/actions/check-tool-status.d.ts.map +0 -1
  209. package/dist/src/presentation/web/app/actions/check-tool-status.js +0 -53
  210. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js +0 -3
  211. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js.map +0 -1
  212. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js +0 -3
  213. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js.map +0 -1
  214. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js +0 -3
  215. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js.map +0 -1
  216. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js +0 -3
  217. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +0 -1
  218. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +0 -1
  219. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +0 -3
  220. package/web/.next/server/chunks/ssr/_0ef7c505._.js +0 -3
  221. package/web/.next/server/chunks/ssr/_0ef7c505._.js.map +0 -1
  222. package/web/.next/server/chunks/ssr/_40c2d506._.js.map +0 -1
  223. package/web/.next/server/chunks/ssr/_e69a26ba._.js +0 -4
  224. package/web/.next/server/chunks/ssr/_e69a26ba._.js.map +0 -1
  225. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js +0 -5
  226. package/web/.next/server/chunks/ssr/src_presentation_web_8ac280c1._.js +0 -3
  227. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js +0 -3
  228. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js.map +0 -1
  229. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js +0 -5
  230. package/web/.next/static/chunks/3831dbe7ff6d5717.js +0 -1
  231. package/web/.next/static/chunks/688971d5bad5dc7c.js +0 -1
  232. package/web/.next/static/chunks/6df4c57bc78a94a7.js +0 -1
  233. package/web/.next/static/chunks/74a9d144a3e27ce2.js +0 -1
  234. package/web/.next/static/chunks/8e293101ac271df2.js +0 -1
  235. package/web/.next/static/chunks/92cd6f523639a6fa.css +0 -1
  236. package/web/.next/static/chunks/99630cd36967c04f.js +0 -1
  237. package/web/.next/static/chunks/d0dff217a94d4ee1.js +0 -1
  238. /package/web/.next/static/{49taRTn4m6kJfWu7WRS6O → dLwf5BeiVENzBHuUxtSGx}/_buildManifest.js +0 -0
  239. /package/web/.next/static/{49taRTn4m6kJfWu7WRS6O → dLwf5BeiVENzBHuUxtSGx}/_clientMiddlewareManifest.json +0 -0
  240. /package/web/.next/static/{49taRTn4m6kJfWu7WRS6O → dLwf5BeiVENzBHuUxtSGx}/_ssgManifest.js +0 -0
@@ -2,13 +2,13 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo } from 'react';
3
3
  import { expect, fn, waitFor } from '@storybook/test';
4
4
  import { ReactFlowProvider, ReactFlow, useNodesState } from '@xyflow/react';
5
- import { DeploymentState, PrStatus, CiStatus } from '../../../../../../packages/core/src/domain/generated/output.js';
5
+ import { DeploymentState } from '../../../../../../packages/core/src/domain/generated/output.js';
6
6
  import { FeatureNode } from './feature-node.js';
7
7
  const nodeTypes = { featureNode: FeatureNode };
8
8
  /** Renders a single FeatureNode as a proper React Flow node (with node wrapper + pointer events). */
9
9
  function FeatureNodeCanvas({ data, style = { width: 600, height: 400 }, }) {
10
10
  const nodes = useMemo(() => [{ id: 'node-1', type: 'featureNode', position: { x: 0, y: 0 }, data }], [data]);
11
- return (_jsx("div", { style: style, children: _jsx(ReactFlowProvider, { children: _jsx(ReactFlow, { nodes: nodes, nodeTypes: nodeTypes, nodesDraggable: false, nodesConnectable: false, panOnDrag: false, zoomOnScroll: false, proOptions: { hideAttribution: true }, fitView: true, className: "[&_.react-flow__pane]:!cursor-default" }) }) }));
11
+ return (_jsx("div", { style: style, children: _jsx(ReactFlowProvider, { children: _jsx(ReactFlow, { nodes: nodes, nodeTypes: nodeTypes, nodesDraggable: false, nodesConnectable: false, proOptions: { hideAttribution: true }, fitView: true }) }) }));
12
12
  }
13
13
  const meta = {
14
14
  title: 'Composed/FeatureNode',
@@ -19,17 +19,10 @@ const meta = {
19
19
  args: {
20
20
  name: 'Auth Module',
21
21
  description: 'Implement OAuth2 authentication flow',
22
- featureId: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
23
- lifecycle: 'implementation',
22
+ featureId: '#f1',
23
+ lifecycle: 'requirements',
24
24
  state: 'running',
25
25
  progress: 45,
26
- agentType: 'claude-code',
27
- modelId: 'claude-sonnet-4-6',
28
- repositoryPath: '/home/user/my-repo',
29
- repositoryName: 'my-repo',
30
- branch: 'feat/auth-module',
31
- hasAgentRun: true,
32
- hasPlan: true,
33
26
  },
34
27
  };
35
28
  export default meta;
@@ -39,92 +32,66 @@ export const Default = {
39
32
  const allStatesData = [
40
33
  {
41
34
  name: 'User Onboarding',
42
- description: 'Implement guided onboarding wizard with step-by-step tutorial',
35
+ description: 'Implement guided onboarding wizard',
43
36
  featureId: '',
44
37
  lifecycle: 'requirements',
45
38
  state: 'creating',
46
39
  progress: 0,
47
40
  repositoryPath: '/home/user/my-repo',
48
- repositoryName: 'my-repo',
49
41
  branch: '',
50
42
  },
51
43
  {
52
44
  name: 'Auth Module',
53
- description: 'Implement OAuth2 authentication flow with SSO support',
54
- featureId: '11111111-1111-1111-1111-111111111111',
45
+ description: 'Implement OAuth2 authentication flow',
46
+ featureId: '#f1',
55
47
  lifecycle: 'implementation',
56
48
  state: 'running',
57
49
  progress: 45,
58
50
  agentType: 'claude-code',
59
51
  modelId: 'claude-sonnet-4-6',
60
52
  repositoryPath: '/home/user/my-repo',
61
- repositoryName: 'my-repo',
62
53
  branch: 'feat/auth-module',
63
- worktreePath: '/home/user/.shep/repos/abc123/wt/feat-auth-module',
64
- hasAgentRun: true,
65
- hasPlan: true,
66
- deployment: { status: DeploymentState.Ready, url: 'http://localhost:3001' },
67
54
  },
68
55
  {
69
56
  name: 'API Rate Limiting',
70
- description: 'Implement sliding window rate limiting for public endpoints',
71
- featureId: '22222222-2222-2222-2222-222222222222',
57
+ description: 'Implement sliding window rate limiting for public...',
58
+ featureId: '#bi1',
72
59
  lifecycle: 'requirements',
73
60
  state: 'action-required',
74
61
  progress: 22,
75
62
  agentType: 'claude-code',
76
63
  modelId: 'claude-sonnet-4-6',
77
64
  repositoryPath: '/home/user/my-repo',
78
- repositoryName: 'my-repo',
79
65
  branch: 'feat/api-rate-limiting',
80
- worktreePath: '/home/user/.shep/repos/abc123/wt/feat-api-rate-limiting',
81
- hasAgentRun: true,
82
- hasPlan: true,
83
66
  },
84
67
  {
85
68
  name: 'Data Pipeline',
86
69
  description: 'ETL pipeline for analytics dashboard',
87
- featureId: '33333333-3333-3333-3333-333333333333',
70
+ featureId: '#bi2',
88
71
  lifecycle: 'implementation',
89
72
  state: 'action-required',
90
73
  progress: 40,
91
74
  agentType: 'cursor',
92
75
  modelId: 'claude-opus-4-6',
93
76
  repositoryPath: '/home/user/my-repo',
94
- repositoryName: 'my-repo',
95
77
  branch: 'feat/data-pipeline',
96
- worktreePath: '/home/user/.shep/repos/abc123/wt/feat-data-pipeline',
97
- hasAgentRun: true,
98
- hasPlan: true,
99
- deployment: { status: DeploymentState.Booting },
100
78
  },
101
79
  {
102
80
  name: 'Merge Review',
103
81
  description: 'PR ready for merge approval',
104
- featureId: '44444444-4444-4444-4444-444444444444',
82
+ featureId: '#bi3',
105
83
  lifecycle: 'review',
106
84
  state: 'action-required',
107
85
  progress: 90,
108
86
  agentType: 'gemini-cli',
109
87
  modelId: 'gemini-2.5-pro',
110
88
  repositoryPath: '/home/user/my-repo',
111
- repositoryName: 'my-repo',
112
89
  branch: 'feat/merge-review',
113
- worktreePath: '/home/user/.shep/repos/abc123/wt/feat-merge-review',
114
- hasAgentRun: true,
115
- hasPlan: true,
116
- pr: {
117
- url: 'https://github.com/user/my-repo/pull/87',
118
- number: 87,
119
- status: PrStatus.Open,
120
- ciStatus: CiStatus.Success,
121
- mergeable: true,
122
- },
123
90
  },
124
91
  {
125
92
  name: 'Payment Gateway',
126
93
  description: 'Stripe integration for subscriptions',
127
- featureId: '55555555-5555-5555-5555-555555555555',
94
+ featureId: '#f3',
128
95
  lifecycle: 'deploy',
129
96
  state: 'done',
130
97
  progress: 100,
@@ -132,24 +99,12 @@ const allStatesData = [
132
99
  agentType: 'claude-code',
133
100
  modelId: 'claude-sonnet-4-6',
134
101
  repositoryPath: '/home/user/my-repo',
135
- repositoryName: 'my-repo',
136
102
  branch: 'feat/payment-gateway',
137
- worktreePath: '/home/user/.shep/repos/abc123/wt/feat-payment-gateway',
138
- fastMode: true,
139
- hasAgentRun: true,
140
- hasPlan: true,
141
- pr: {
142
- url: 'https://github.com/user/my-repo/pull/85',
143
- number: 85,
144
- status: PrStatus.Merged,
145
- ciStatus: CiStatus.Success,
146
- },
147
- deployment: { status: DeploymentState.Ready, url: 'http://localhost:3002' },
148
103
  },
149
104
  {
150
105
  name: 'Search Index',
151
106
  description: 'Elasticsearch full-text search setup',
152
- featureId: '66666666-6666-6666-6666-666666666666',
107
+ featureId: '#f4',
153
108
  lifecycle: 'implementation',
154
109
  state: 'blocked',
155
110
  progress: 20,
@@ -157,61 +112,40 @@ const allStatesData = [
157
112
  agentType: 'claude-code',
158
113
  modelId: 'claude-opus-4-6',
159
114
  repositoryPath: '/home/user/my-repo',
160
- repositoryName: 'my-repo',
161
115
  branch: 'feat/search-index',
162
- worktreePath: '/home/user/.shep/repos/abc123/wt/feat-search-index',
163
- hasAgentRun: true,
164
- hasPlan: true,
165
116
  },
166
117
  {
167
118
  name: 'Email Service',
168
119
  description: 'Transactional email with SendGrid',
169
- featureId: '77777777-7777-7777-7777-777777777777',
120
+ featureId: '#f5',
170
121
  lifecycle: 'review',
171
122
  state: 'error',
172
123
  progress: 30,
173
- errorMessage: 'Build failed: Cannot find module @sendgrid/mail',
174
- agentType: 'aider',
175
- modelId: 'claude-sonnet-4-6',
124
+ errorMessage: 'Build failed: type mismatch',
125
+ agentType: 'dev',
126
+ modelId: 'gpt-8',
176
127
  repositoryPath: '/home/user/my-repo',
177
- repositoryName: 'my-repo',
178
128
  branch: 'feat/email-service',
179
- worktreePath: '/home/user/.shep/repos/abc123/wt/feat-email-service',
180
- hasAgentRun: true,
181
- hasPlan: true,
182
- pr: {
183
- url: 'https://github.com/user/my-repo/pull/86',
184
- number: 86,
185
- status: PrStatus.Open,
186
- ciStatus: CiStatus.Failure,
187
- },
188
- onRetry: fn(),
189
129
  },
190
130
  {
191
131
  name: 'Notification Service',
192
132
  description: 'Push notification integration',
193
- featureId: '88888888-8888-8888-8888-888888888888',
133
+ featureId: '#f7',
194
134
  lifecycle: 'pending',
195
135
  state: 'pending',
196
136
  progress: 0,
197
137
  repositoryPath: '/home/user/my-repo',
198
- repositoryName: 'my-repo',
199
138
  branch: 'feat/notification-service',
200
- onStart: fn(),
201
139
  },
202
140
  {
203
141
  name: 'Legacy API Cleanup',
204
142
  description: 'Remove deprecated REST endpoints',
205
- featureId: '99999999-9999-9999-9999-999999999999',
143
+ featureId: '#f6',
206
144
  lifecycle: 'implementation',
207
145
  state: 'deleting',
208
146
  progress: 0,
209
147
  repositoryPath: '/home/user/my-repo',
210
- repositoryName: 'my-repo',
211
148
  branch: 'feat/legacy-api-cleanup',
212
- worktreePath: '/home/user/.shep/repos/abc123/wt/feat-legacy-api-cleanup',
213
- agentType: 'claude-code',
214
- hasAgentRun: true,
215
149
  },
216
150
  ];
217
151
  export const AllStates = {
@@ -1,4 +1,7 @@
1
+ import { type TreeViewElement } from '../../ui/file-tree.js';
1
2
  import type { MergeReviewFileDiff } from './merge-review-config.js';
3
+ /** Build a tree structure from flat file paths. */
4
+ export declare function buildFileTree(fileDiffs: MergeReviewFileDiff[]): TreeViewElement[];
2
5
  export interface DiffViewProps {
3
6
  fileDiffs: MergeReviewFileDiff[];
4
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"diff-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/merge-review/diff-view.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,uBAAuB,CAAC;AA4GtF,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,aAAa,kDAmBpD"}
1
+ {"version":3,"file":"diff-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/merge-review/diff-view.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,uBAAuB,CAAC;AAStF,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,eAAe,EAAE,CAoCjF;AAgJD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,aAAa,kDAkEpD"}
@@ -1,30 +1,113 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { useState } from 'react';
4
- import { ChevronRight, FileText, FilePlus, FileMinus, FileEdit } from 'lucide-react';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useMemo, useCallback } from 'react';
4
+ import { FileText, FilePlus, FileMinus, FileEdit } from 'lucide-react';
5
5
  import { cn } from '../../../lib/utils.js';
6
+ import { Tree, Folder, File } from '../../ui/file-tree.js';
6
7
  const STATUS_CONFIG = {
7
- added: { icon: FilePlus, label: 'A', className: 'text-green-600' },
8
- modified: { icon: FileEdit, label: 'M', className: 'text-amber-600' },
9
- deleted: { icon: FileMinus, label: 'D', className: 'text-red-600' },
10
- renamed: { icon: FileEdit, label: 'R', className: 'text-blue-600' },
8
+ added: { icon: FilePlus, className: 'text-green-600' },
9
+ modified: { icon: FileEdit, className: 'text-amber-600' },
10
+ deleted: { icon: FileMinus, className: 'text-red-600' },
11
+ renamed: { icon: FileEdit, className: 'text-blue-600' },
11
12
  };
12
- function FileStatusIcon({ status }) {
13
- const config = STATUS_CONFIG[status];
14
- const Icon = config.icon;
15
- return _jsx(Icon, { className: cn('h-3.5 w-3.5 shrink-0', config.className) });
13
+ /** Build a tree structure from flat file paths. */
14
+ export function buildFileTree(fileDiffs) {
15
+ const root = [];
16
+ for (const diff of fileDiffs) {
17
+ const parts = diff.path.split('/');
18
+ let currentLevel = root;
19
+ for (let i = 0; i < parts.length; i++) {
20
+ const part = parts[i];
21
+ const isFile = i === parts.length - 1;
22
+ const pathSoFar = parts.slice(0, i + 1).join('/');
23
+ const existing = currentLevel.find((el) => el.name === part && el.type === (isFile ? 'file' : 'folder'));
24
+ if (existing) {
25
+ if (!isFile && existing.children) {
26
+ currentLevel = existing.children;
27
+ }
28
+ }
29
+ else {
30
+ const node = {
31
+ id: pathSoFar,
32
+ name: part,
33
+ type: isFile ? 'file' : 'folder',
34
+ ...(isFile ? {} : { children: [] }),
35
+ };
36
+ currentLevel.push(node);
37
+ if (!isFile && node.children) {
38
+ currentLevel = node.children;
39
+ }
40
+ }
41
+ }
42
+ }
43
+ return collapseSingleChildFolders(root);
44
+ }
45
+ /** Collapse folders that contain only one child folder (e.g. src/components → src/components). */
46
+ function collapseSingleChildFolders(elements) {
47
+ return elements.map((el) => {
48
+ if (el.type === 'folder' && el.children) {
49
+ const collapsed = collapseSingleChildFolders(el.children);
50
+ if (collapsed.length === 1 && collapsed[0].type === 'folder' && collapsed[0].children) {
51
+ return {
52
+ ...collapsed[0],
53
+ id: `${el.id}/${collapsed[0].name}`,
54
+ name: `${el.name}/${collapsed[0].name}`,
55
+ children: collapsed[0].children,
56
+ };
57
+ }
58
+ return { ...el, children: collapsed };
59
+ }
60
+ return el;
61
+ });
62
+ }
63
+ /** Collect all folder IDs for expanding the tree by default. */
64
+ function getAllFolderIds(elements) {
65
+ const ids = [];
66
+ for (const el of elements) {
67
+ if (el.type === 'folder') {
68
+ ids.push(el.id);
69
+ if (el.children) {
70
+ ids.push(...getAllFolderIds(el.children));
71
+ }
72
+ }
73
+ }
74
+ return ids;
16
75
  }
17
76
  function HunkView({ hunk }) {
18
77
  return (_jsxs("div", { className: "border-border border-t first:border-t-0", children: [_jsx("div", { className: "bg-muted/50 text-muted-foreground px-3 py-1 font-mono text-[10px]", children: hunk.header }), _jsx("div", { className: "font-mono text-[11px] leading-[18px]", children: hunk.lines.map((line) => (_jsxs("div", { className: cn('flex', line.type === 'added' && 'bg-green-50 dark:bg-green-950/30', line.type === 'removed' && 'bg-red-50 dark:bg-red-950/30'), children: [_jsx("span", { className: "text-muted-foreground w-10 shrink-0 px-1 text-right text-[10px] select-none", children: line.oldNumber ?? '' }), _jsx("span", { className: "text-muted-foreground w-10 shrink-0 px-1 text-right text-[10px] select-none", children: line.newNumber ?? '' }), _jsx("span", { className: cn('w-4 shrink-0 text-center select-none', line.type === 'added' && 'text-green-700 dark:text-green-400', line.type === 'removed' && 'text-red-700 dark:text-red-400'), children: line.type === 'added' ? '+' : line.type === 'removed' ? '-' : ' ' }), _jsx("span", { className: "min-w-0 flex-1 pr-2 break-all whitespace-pre-wrap", children: line.content })] }, `${line.type}-${line.oldNumber ?? ''}-${line.newNumber ?? ''}`))) })] }));
19
78
  }
20
- function FileDiffItem({ file }) {
21
- const [isOpen, setIsOpen] = useState(false);
22
- const fileName = file.path.split('/').pop() ?? file.path;
23
- const dirPath = file.path.includes('/') ? file.path.slice(0, file.path.lastIndexOf('/')) : '';
24
- return (_jsxs("div", { className: "border-border border-b last:border-b-0", children: [_jsxs("button", { type: "button", onClick: () => setIsOpen(!isOpen), className: "hover:bg-muted/50 flex w-full items-center gap-2 px-3 py-2 text-left", children: [_jsx(ChevronRight, { className: cn('text-muted-foreground h-3 w-3 shrink-0 transition-transform duration-150', isOpen && 'rotate-90') }), _jsx(FileStatusIcon, { status: file.status }), _jsx("span", { className: "text-foreground min-w-0 flex-1 truncate text-xs", children: dirPath ? (_jsxs(_Fragment, { children: [_jsxs("span", { className: "text-muted-foreground", children: [dirPath, "/"] }), fileName] })) : (fileName) }), file.oldPath ? (_jsxs("span", { className: "text-muted-foreground truncate text-[10px]", children: ["\u2190 ", file.oldPath.split('/').pop()] })) : null, _jsxs("span", { className: "shrink-0 text-[10px]", children: [file.additions > 0 ? _jsxs("span", { className: "text-green-600", children: ["+", file.additions] }) : null, file.additions > 0 && file.deletions > 0 ? ' ' : null, file.deletions > 0 ? _jsxs("span", { className: "text-red-600", children: ["-", file.deletions] }) : null] })] }), isOpen && file.hunks.length > 0 ? (_jsx("div", { className: "border-border overflow-x-auto border-t", children: file.hunks.map((hunk) => (_jsx(HunkView, { hunk: hunk }, hunk.header))) })) : null] }));
79
+ function DiffFileIcon({ status }) {
80
+ const config = STATUS_CONFIG[status];
81
+ const Icon = config.icon;
82
+ return _jsx(Icon, { className: cn('size-4 shrink-0', config.className) });
83
+ }
84
+ function DiffStats({ additions, deletions }) {
85
+ return (_jsxs("span", { className: "ml-auto shrink-0 text-[10px]", children: [additions > 0 ? _jsxs("span", { className: "text-green-600", children: ["+", additions] }) : null, additions > 0 && deletions > 0 ? ' ' : null, deletions > 0 ? _jsxs("span", { className: "text-red-600", children: ["-", deletions] }) : null] }));
86
+ }
87
+ function FileTreeNode({ element, diffMap, selectedFile, onSelectFile, }) {
88
+ if (element.type === 'folder' && element.children) {
89
+ return (_jsx(Folder, { value: element.id, element: element.name, isSelectable: false, children: element.children.map((child) => (_jsx(FileTreeNode, { element: child, diffMap: diffMap, selectedFile: selectedFile, onSelectFile: onSelectFile }, child.id))) }, element.id));
90
+ }
91
+ const diff = diffMap.get(element.id);
92
+ const status = diff?.status ?? 'modified';
93
+ return (_jsx(File, { value: element.id, fileIcon: _jsx(DiffFileIcon, { status: status }), isSelect: selectedFile === element.id, handleSelect: onSelectFile, className: "w-full", children: _jsxs("span", { className: "flex min-w-0 flex-1 items-center gap-1", children: [_jsx("span", { className: "truncate", children: element.name }), diff?.oldPath ? (_jsxs("span", { className: "text-muted-foreground truncate text-[10px]", children: ["\u2190 ", diff.oldPath.split('/').pop()] })) : null, diff ? _jsx(DiffStats, { additions: diff.additions, deletions: diff.deletions }) : null] }) }, element.id));
25
94
  }
26
95
  export function DiffView({ fileDiffs }) {
96
+ const [selectedFile, setSelectedFile] = useState(null);
97
+ const treeElements = useMemo(() => buildFileTree(fileDiffs), [fileDiffs]);
98
+ const allFolderIds = useMemo(() => getAllFolderIds(treeElements), [treeElements]);
99
+ const diffMap = useMemo(() => {
100
+ const map = new Map();
101
+ for (const diff of fileDiffs) {
102
+ map.set(diff.path, diff);
103
+ }
104
+ return map;
105
+ }, [fileDiffs]);
106
+ const handleSelectFile = useCallback((path) => {
107
+ setSelectedFile((prev) => (prev === path ? null : path));
108
+ }, []);
109
+ const selectedDiff = selectedFile ? diffMap.get(selectedFile) : null;
27
110
  if (fileDiffs.length === 0)
28
111
  return null;
29
- return (_jsxs("div", { className: "border-border rounded-lg border", children: [_jsx("div", { className: "px-4 py-3", children: _jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(FileText, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changed Files" }), _jsxs("span", { className: "text-muted-foreground text-[10px]", children: ["(", fileDiffs.length, ")"] })] }) }), _jsx("div", { className: "border-border border-t", children: fileDiffs.map((file) => (_jsx(FileDiffItem, { file: file }, `${file.status}-${file.path}`))) })] }));
112
+ return (_jsxs("div", { className: "border-border rounded-lg border", children: [_jsx("div", { className: "px-4 py-3", children: _jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(FileText, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changed Files" }), _jsxs("span", { className: "text-muted-foreground text-[10px]", children: ["(", fileDiffs.length, ")"] })] }) }), _jsxs("div", { className: "border-border border-t", children: [_jsx("div", { className: "py-2", children: _jsx(Tree, { elements: treeElements, initialExpandedItems: allFolderIds, indicator: true, sort: "none", className: "text-xs", children: treeElements.map((element) => (_jsx(FileTreeNode, { element: element, diffMap: diffMap, selectedFile: selectedFile, onSelectFile: handleSelectFile }, element.id))) }) }), selectedDiff && selectedDiff.hunks.length > 0 ? (_jsxs("div", { className: "border-border overflow-x-auto border-t", children: [_jsxs("div", { className: "bg-muted/30 flex items-center gap-2 px-3 py-1.5", children: [_jsx(DiffFileIcon, { status: selectedDiff.status }), _jsx("span", { className: "text-foreground font-mono text-xs", children: selectedDiff.path }), _jsx(DiffStats, { additions: selectedDiff.additions, deletions: selectedDiff.deletions })] }), selectedDiff.hunks.map((hunk) => (_jsx(HunkView, { hunk: hunk }, hunk.header)))] })) : null] })] }));
30
113
  }
@@ -3,7 +3,7 @@ import { DiffView } from './diff-view.js';
3
3
  declare const meta: Meta<typeof DiffView>;
4
4
  export default meta;
5
5
  type Story = StoryObj<typeof DiffView>;
6
- /** Default — multiple files with various change types. */
6
+ /** Default — multiple files with various change types shown in a file tree. */
7
7
  export declare const Default: Story;
8
8
  /** Single modified file. */
9
9
  export declare const SingleFile: Story;
@@ -15,4 +15,6 @@ export declare const OnlyDeletions: Story;
15
15
  export declare const RenamedFile: Story;
16
16
  /** Empty diff list — renders nothing. */
17
17
  export declare const EmptyDiffs: Story;
18
+ /** Root-level files without directory nesting. */
19
+ export declare const RootLevelFiles: Story;
18
20
  //# sourceMappingURL=diff-view.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-view.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/merge-review/diff-view.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA2HvC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,QAAQ,CAuB/B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEvC,0DAA0D;AAC1D,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,aAAa,EAAE,KAI3B,CAAC;AAEF,0BAA0B;AAC1B,eAAO,MAAM,aAAa,EAAE,KAI3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC"}
1
+ {"version":3,"file":"diff-view.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/merge-review/diff-view.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA2HvC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,QAAQ,CAuB/B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEvC,+EAA+E;AAC/E,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,aAAa,EAAE,KAI3B,CAAC;AAEF,0BAA0B;AAC1B,eAAO,MAAM,aAAa,EAAE,KAI3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,cAAc,EAAE,KA4B5B,CAAC"}
@@ -136,7 +136,7 @@ const meta = {
136
136
  ],
137
137
  };
138
138
  export default meta;
139
- /** Default — multiple files with various change types. */
139
+ /** Default — multiple files with various change types shown in a file tree. */
140
140
  export const Default = {
141
141
  args: {
142
142
  fileDiffs: sampleFiles,
@@ -172,3 +172,33 @@ export const EmptyDiffs = {
172
172
  fileDiffs: [],
173
173
  },
174
174
  };
175
+ /** Root-level files without directory nesting. */
176
+ export const RootLevelFiles = {
177
+ args: {
178
+ fileDiffs: [
179
+ {
180
+ path: 'package.json',
181
+ additions: 3,
182
+ deletions: 1,
183
+ status: 'modified',
184
+ hunks: [
185
+ {
186
+ header: '@@ -10,3 +10,5 @@',
187
+ lines: [
188
+ { type: 'context', content: ' "dependencies": {', oldNumber: 10, newNumber: 10 },
189
+ { type: 'added', content: ' "new-dep": "^1.0.0",', newNumber: 11 },
190
+ { type: 'context', content: ' }', oldNumber: 11, newNumber: 12 },
191
+ ],
192
+ },
193
+ ],
194
+ },
195
+ {
196
+ path: 'README.md',
197
+ additions: 10,
198
+ deletions: 0,
199
+ status: 'modified',
200
+ hunks: [],
201
+ },
202
+ ],
203
+ },
204
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"repository-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/repository-node.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAOnE,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,2CAqa5F"}
1
+ {"version":3,"file":"repository-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/repository-node/repository-node.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAOnE,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,2CA2Z5F"}
@@ -71,17 +71,15 @@ export function RepositoryNode({ data }) {
71
71
  e.stopPropagation();
72
72
  data.onClick?.();
73
73
  }
74
- }, className: "nodrag bg-card flex w-[26rem] cursor-pointer flex-col overflow-hidden rounded-xl border shadow-sm dark:bg-neutral-800/80", children: [_jsxs("div", { className: "flex items-center gap-3 px-4 py-3", children: [_jsx(Github, { className: "text-muted-foreground h-5 w-5 shrink-0" }), _jsx("span", { "data-testid": "repository-node-name", className: "min-w-0 truncate text-sm font-medium", children: data.name }), _jsxs("div", { className: cn('flex shrink-0 items-center gap-2', (data.repositoryPath ?? data.onAdd) && 'ml-auto'), onClick: (e) => e.stopPropagation(), children: [data.repositoryPath ? (_jsxs(_Fragment, { children: [_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "flex items-center", children: _jsx(ActionButton, { label: "Open in IDE", onClick: actions.openInIde, loading: actions.ideLoading, error: !!actions.ideError, icon: Code2, iconOnly: true, variant: "ghost", size: "icon-xs" }) }) }), _jsx(TooltipContent, { children: "Open in IDE" })] }) }), _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "flex items-center", children: _jsx(ActionButton, { label: "Open in Shell", onClick: actions.openInShell, loading: actions.shellLoading, error: !!actions.shellError, icon: Terminal, iconOnly: true, variant: "ghost", size: "icon-xs" }) }) }), _jsx(TooltipContent, { children: "Open in Shell" })] }) }), _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "flex items-center", children: _jsx(ActionButton, { label: "Open Folder", onClick: actions.openFolder, loading: actions.folderLoading, error: !!actions.folderError, icon: FolderOpen, iconOnly: true, variant: "ghost", size: "icon-xs" }) }) }), _jsx(TooltipContent, { children: "Open Folder" })] }) }), _jsx(FeatureSessionsDropdown, { repositoryPath: data.repositoryPath, onCreateFromSession: handleCreateFromSession })] })) : null, data.onAdd ? (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { "aria-label": "Add feature", "data-testid": "repository-node-add-button", onClick: (e) => {
74
+ }, className: "nodrag bg-card flex w-[26rem] cursor-pointer flex-col overflow-hidden rounded-xl border shadow-sm", children: [_jsxs("div", { className: "flex items-center gap-3 px-4 py-3", children: [_jsx(Github, { className: "text-muted-foreground h-5 w-5 shrink-0" }), _jsx("span", { "data-testid": "repository-node-name", className: "min-w-0 truncate text-sm font-medium", children: data.name }), _jsxs("div", { className: cn('flex shrink-0 items-center gap-2', (data.repositoryPath ?? data.onAdd) && 'ml-auto'), onClick: (e) => e.stopPropagation(), children: [data.repositoryPath ? (_jsxs(_Fragment, { children: [_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "flex items-center", children: _jsx(ActionButton, { label: "Open in IDE", onClick: actions.openInIde, loading: actions.ideLoading, error: !!actions.ideError, icon: Code2, iconOnly: true, variant: "ghost", size: "icon-xs" }) }) }), _jsx(TooltipContent, { children: "Open in IDE" })] }) }), _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "flex items-center", children: _jsx(ActionButton, { label: "Open in Shell", onClick: actions.openInShell, loading: actions.shellLoading, error: !!actions.shellError, icon: Terminal, iconOnly: true, variant: "ghost", size: "icon-xs" }) }) }), _jsx(TooltipContent, { children: "Open in Shell" })] }) }), _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "flex items-center", children: _jsx(ActionButton, { label: "Open Folder", onClick: actions.openFolder, loading: actions.folderLoading, error: !!actions.folderError, icon: FolderOpen, iconOnly: true, variant: "ghost", size: "icon-xs" }) }) }), _jsx(TooltipContent, { children: "Open Folder" })] }) }), _jsx(FeatureSessionsDropdown, { repositoryPath: data.repositoryPath, onCreateFromSession: handleCreateFromSession })] })) : null, data.onAdd ? (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { "aria-label": "Add feature", "data-testid": "repository-node-add-button", onClick: (e) => {
75
75
  e.stopPropagation();
76
76
  data.onAdd?.();
77
77
  }, className: cn('text-muted-foreground hover:bg-accent dark:hover:bg-accent/50 flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors hover:text-blue-500', data.pulseAdd &&
78
- 'animate-pulse-cta bg-blue-100 text-blue-500 dark:bg-blue-900/40'), children: _jsx(Plus, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Add feature" })] }) })) : null] })] }), data.branch ? (_jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-git-info", className: "text-muted-foreground border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-3 text-xs", children: [_jsxs("span", { className: "flex items-center gap-1 truncate", "data-testid": "repository-node-branch", children: [_jsx(GitBranch, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "truncate", children: data.branch })] }), data.behindCount != null && data.behindCount > 0 ? (_jsxs("span", { className: "flex shrink-0 items-center gap-1 whitespace-nowrap text-amber-500", "data-testid": "repository-node-behind", children: [_jsx(ArrowDown, { className: "h-3 w-3 shrink-0" }), data.behindCount, " behind"] })) : null] }) }), data.commitMessage ? (_jsx("div", { "data-testid": "repository-node-commit-info", className: "text-muted-foreground border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx(GitCommitHorizontal, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "min-w-0 truncate", "data-testid": "repository-node-commit-message", children: data.commitMessage }), data.committer ? (_jsxs("span", { className: "text-muted-foreground/70 ml-auto flex shrink-0 items-center gap-1", "data-testid": "repository-node-committer", children: [_jsx(User, { className: "h-3 w-3 shrink-0" }), _jsx("span", { children: data.committer })] })) : null] }) })) : null] })) : data.gitInfoStatus === 'not-a-repo' ? (
78
+ 'animate-pulse-cta bg-blue-100 text-blue-500 dark:bg-blue-900/40'), children: _jsx(Plus, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Add feature" })] }) })) : null] })] }), data.branch ? (_jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-git-info", className: "text-muted-foreground border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-3 text-xs", children: [_jsxs("span", { className: "flex items-center gap-1 truncate", "data-testid": "repository-node-branch", children: [_jsx(GitBranch, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "truncate", children: data.branch })] }), data.behindCount != null && data.behindCount > 0 ? (_jsxs("span", { className: "flex shrink-0 items-center gap-1 whitespace-nowrap text-amber-500", "data-testid": "repository-node-behind", children: [_jsx(ArrowDown, { className: "h-3 w-3 shrink-0" }), data.behindCount, " behind"] })) : null] }) }), data.commitMessage ? (_jsx("div", { "data-testid": "repository-node-commit-info", className: "text-muted-foreground border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx(GitCommitHorizontal, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "min-w-0 truncate", "data-testid": "repository-node-commit-message", children: data.commitMessage }), data.committer ? (_jsxs("span", { className: "text-muted-foreground/70 ml-auto flex shrink-0 items-center gap-1", "data-testid": "repository-node-committer", children: [_jsx(User, { className: "h-3 w-3 shrink-0" }), _jsx("span", { children: data.committer })] })) : null] }) })) : null] })) : data.gitInfoStatus === 'not-a-repo' ? (
79
79
  /* Not a git repo — two rows for consistency with loading/ready states */
80
- _jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-not-repo", className: "text-muted-foreground border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx(FolderOpen, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "min-w-0 truncate opacity-60", children: data.repositoryPath ?? 'Unknown path' })] }) }), _jsx("div", { className: "text-muted-foreground border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs opacity-40", children: [_jsx(GitBranch, { className: "h-3 w-3 shrink-0" }), _jsx("span", { children: "Not a git repository" })] }) })] })) : data.gitInfoStatus !== 'ready' ? (
80
+ _jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-not-repo", className: "text-muted-foreground border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx(FolderOpen, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "min-w-0 truncate opacity-60", children: data.repositoryPath ?? 'Unknown path' })] }) }), _jsx("div", { className: "text-muted-foreground border-t px-4 py-2", children: _jsxs("div", { className: "flex items-center gap-2 text-xs opacity-40", children: [_jsx(GitBranch, { className: "h-3 w-3 shrink-0" }), _jsx("span", { children: "Not a git repository" })] }) })] })) : data.gitInfoStatus !== 'ready' ? (
81
81
  /* Loading — show skeleton placeholders for both rows */
82
- _jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-git-loading", className: "border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex h-4 items-center gap-2 text-xs", children: [_jsx(GitBranch, { className: "text-muted-foreground h-3 w-3 shrink-0" }), _jsx("span", { className: "bg-muted h-3 w-20 animate-pulse rounded" })] }) }), _jsx("div", { className: "border-border/50 border-t px-4 py-2", children: _jsxs("div", { className: "flex h-4 items-center gap-2 text-xs", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3 w-3 shrink-0" }), _jsx("span", { className: "bg-muted h-3 w-36 animate-pulse rounded" })] }) })] })) : null, featureFlags.envDeploy && data.repositoryPath ? (_jsx("div", { "data-testid": "repository-node-dev-preview", className: "border-border/50 border-t px-4 py-2", onClick: (e) => e.stopPropagation(), children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [deployAction.deployError ? (_jsx("span", { className: "truncate text-xs text-red-500", children: deployAction.deployError })) : isDeploymentActive ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "mr-0.5 inline-block h-2 w-2 shrink-0 rounded-full bg-green-500" }), deployAction.url ? (_jsx("a", { href: deployAction.url, target: "_blank", rel: "noopener noreferrer", className: "truncate text-green-700 hover:underline dark:text-green-400", children: deployAction.url })) : (_jsx("span", { className: "text-muted-foreground", children: "Starting..." }))] })) : (_jsxs("span", { className: "text-muted-foreground", children: ["Run", _jsx("span", { className: "text-muted-foreground/50 ml-2 text-[10px]", children: "start local environment" })] })), _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: cn('ml-auto flex items-center', !isDeploymentActive &&
83
- !deployAction.deployError &&
84
- '[&_button]:text-green-600 [&_button]:hover:text-green-700 dark:[&_button]:text-green-400 dark:[&_button]:hover:text-green-300'), children: _jsx(ActionButton, { label: deployAction.deployError
82
+ _jsxs(_Fragment, { children: [_jsx("div", { "data-testid": "repository-node-git-loading", className: "border-t px-4 py-2", children: _jsxs("div", { className: "flex h-4 items-center gap-2 text-xs", children: [_jsx(GitBranch, { className: "text-muted-foreground h-3 w-3 shrink-0" }), _jsx("span", { className: "bg-muted h-3 w-20 animate-pulse rounded" })] }) }), _jsx("div", { className: "border-t px-4 py-2", children: _jsxs("div", { className: "flex h-4 items-center gap-2 text-xs", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3 w-3 shrink-0" }), _jsx("span", { className: "bg-muted h-3 w-36 animate-pulse rounded" })] }) })] })) : null, featureFlags.envDeploy && data.repositoryPath ? (_jsx("div", { "data-testid": "repository-node-dev-preview", className: "border-t px-4 py-2", onClick: (e) => e.stopPropagation(), children: _jsxs("div", { className: "flex items-center gap-2 text-xs", children: [deployAction.deployError ? (_jsx("span", { className: "truncate text-xs text-red-500", children: deployAction.deployError })) : isDeploymentActive ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "mr-0.5 inline-block h-2 w-2 shrink-0 rounded-full bg-green-500" }), deployAction.url ? (_jsx("a", { href: deployAction.url, target: "_blank", rel: "noopener noreferrer", className: "truncate text-green-700 hover:underline dark:text-green-400", children: deployAction.url })) : (_jsx("span", { className: "text-muted-foreground", children: "Starting..." }))] })) : (_jsxs("span", { className: "text-muted-foreground", children: ["Run", _jsx("span", { className: "text-muted-foreground/50 ml-2 text-[10px]", children: "start local environment" })] })), _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "ml-auto flex items-center", children: _jsx(ActionButton, { label: deployAction.deployError
85
83
  ? 'Retry'
86
84
  : isDeploymentActive
87
85
  ? 'Stop Dev Server'
@@ -1 +1 @@
1
- {"version":3,"file":"control-center-empty-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,uBAAuB,CAAC,EACtC,kBAAkB,EAClB,SAAS,GACV,EAAE,4BAA4B,kDAmM9B"}
1
+ {"version":3,"file":"control-center-empty-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx"],"names":[],"mappings":"AAsBA,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,uBAAuB,CAAC,EACtC,kBAAkB,EAClB,SAAS,GACV,EAAE,4BAA4B,kDAuL9B"}