@shepai/cli 1.25.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/packages/core/src/infrastructure/services/ide-launchers/antigravity.launcher.d.ts.map +1 -1
  2. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts +17 -0
  3. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts.map +1 -0
  4. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +24 -0
  5. package/dist/packages/core/src/infrastructure/services/ide-launchers/cursor.launcher.d.ts.map +1 -1
  6. package/dist/packages/core/src/infrastructure/services/ide-launchers/ide-launcher.interface.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/services/ide-launchers/ide-launcher.registry.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/services/ide-launchers/launch-ide.d.ts +30 -0
  9. package/dist/packages/core/src/infrastructure/services/ide-launchers/launch-ide.d.ts.map +1 -0
  10. package/dist/packages/core/src/infrastructure/services/ide-launchers/launch-ide.js +41 -0
  11. package/dist/packages/core/src/infrastructure/services/ide-launchers/vscode.launcher.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/services/ide-launchers/windsurf.launcher.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/services/ide-launchers/zed.launcher.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts +3 -1
  15. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/services/settings.service.js +27 -12
  17. package/dist/src/presentation/cli/commands/agent/show.command.d.ts.map +1 -1
  18. package/dist/src/presentation/cli/commands/agent/show.command.js +1 -8
  19. package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -1
  20. package/dist/src/presentation/cli/commands/feat/show.command.js +1 -8
  21. package/dist/src/presentation/cli/commands/ide-open.command.d.ts.map +1 -1
  22. package/dist/src/presentation/cli/commands/ide-open.command.js +11 -21
  23. package/dist/src/presentation/web/app/api/ide/open/route.d.ts +9 -0
  24. package/dist/src/presentation/web/app/api/ide/open/route.d.ts.map +1 -0
  25. package/dist/src/presentation/web/app/api/ide/open/route.js +29 -0
  26. package/dist/src/presentation/web/app/api/shell/open/route.d.ts +9 -0
  27. package/dist/src/presentation/web/app/api/shell/open/route.d.ts.map +1 -0
  28. package/dist/src/presentation/web/app/api/shell/open/route.js +51 -0
  29. package/dist/src/presentation/web/app/api/validate-toolbar-input.d.ts +17 -0
  30. package/dist/src/presentation/web/app/api/validate-toolbar-input.d.ts.map +1 -0
  31. package/dist/src/presentation/web/app/api/validate-toolbar-input.js +25 -0
  32. package/dist/src/presentation/web/app/page.d.ts.map +1 -1
  33. package/dist/src/presentation/web/app/page.js +2 -0
  34. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +11 -2
  36. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.d.ts +8 -0
  37. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.d.ts.map +1 -1
  38. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.js +31 -0
  39. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +14 -0
  40. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -0
  41. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +58 -0
  42. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +4 -0
  43. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  44. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
  45. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +18 -0
  46. package/dist/src/presentation/web/components/common/index.d.ts +1 -0
  47. package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
  48. package/dist/src/presentation/web/components/common/index.js +1 -0
  49. package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts.map +1 -1
  50. package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +16 -0
  51. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  52. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -0
  53. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  54. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +44 -0
  55. package/dist/tsconfig.build.tsbuildinfo +1 -1
  56. package/package.json +1 -1
  57. package/web/.next/BUILD_ID +1 -1
  58. package/web/.next/app-path-routes-manifest.json +2 -0
  59. package/web/.next/build-manifest.json +2 -2
  60. package/web/.next/cache/.previewinfo +1 -1
  61. package/web/.next/cache/.rscinfo +1 -1
  62. package/web/.next/cache/.tsbuildinfo +1 -1
  63. package/web/.next/cache/config.json +3 -3
  64. package/web/.next/fallback-build-manifest.json +2 -2
  65. package/web/.next/prerender-manifest.json +3 -3
  66. package/web/.next/required-server-files.js +1 -1
  67. package/web/.next/required-server-files.json +1 -1
  68. package/web/.next/routes-manifest.json +12 -0
  69. package/web/.next/server/app/_global-error/page.js +1 -1
  70. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  71. package/web/.next/server/app/_global-error.html +2 -2
  72. package/web/.next/server/app/_global-error.rsc +1 -1
  73. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  74. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  75. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  76. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  77. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  78. package/web/.next/server/app/_not-found/page.js +1 -1
  79. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  80. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/_not-found.html +2 -2
  82. package/web/.next/server/app/_not-found.rsc +2 -2
  83. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  84. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  85. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  86. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  87. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  88. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  89. package/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
  90. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  91. package/web/.next/server/app/api/dialog/pick-folder/route.js +1 -1
  92. package/web/.next/server/app/api/dialog/pick-folder/route.js.nft.json +1 -1
  93. package/web/.next/server/app/api/features/create/route.js +1 -1
  94. package/web/.next/server/app/api/features/create/route.js.nft.json +1 -1
  95. package/web/.next/server/app/api/ide/open/route/app-paths-manifest.json +3 -0
  96. package/web/.next/server/app/api/ide/open/route/build-manifest.json +11 -0
  97. package/web/.next/server/app/api/ide/open/route/server-reference-manifest.json +4 -0
  98. package/web/.next/server/app/api/ide/open/route.js +6 -0
  99. package/web/.next/server/app/api/ide/open/route.js.map +5 -0
  100. package/web/.next/server/app/api/ide/open/route.js.nft.json +1 -0
  101. package/web/.next/server/app/api/ide/open/route_client-reference-manifest.js +2 -0
  102. package/web/.next/server/app/api/shell/open/route/app-paths-manifest.json +3 -0
  103. package/web/.next/server/app/api/shell/open/route/build-manifest.json +11 -0
  104. package/web/.next/server/app/api/shell/open/route/server-reference-manifest.json +4 -0
  105. package/web/.next/server/app/api/shell/open/route.js +6 -0
  106. package/web/.next/server/app/api/shell/open/route.js.map +5 -0
  107. package/web/.next/server/app/api/shell/open/route.js.nft.json +1 -0
  108. package/web/.next/server/app/api/shell/open/route_client-reference-manifest.js +2 -0
  109. package/web/.next/server/app/page.js +1 -1
  110. package/web/.next/server/app/page.js.nft.json +1 -1
  111. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/version/page.js +1 -1
  113. package/web/.next/server/app/version/page.js.nft.json +1 -1
  114. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/version.html +2 -2
  116. package/web/.next/server/app/version.rsc +2 -2
  117. package/web/.next/server/app/version.segments/_full.segment.rsc +2 -2
  118. package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
  119. package/web/.next/server/app/version.segments/_index.segment.rsc +2 -2
  120. package/web/.next/server/app/version.segments/_tree.segment.rsc +2 -2
  121. package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +1 -1
  122. package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
  123. package/web/.next/server/app-paths-manifest.json +2 -0
  124. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_shell_open_route_actions_814dc5b6.js +3 -0
  125. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_shell_open_route_actions_814dc5b6.js.map +1 -0
  126. package/web/.next/server/chunks/{[root-of-the-server]__ec87d735._.js → [root-of-the-server]__1913013c._.js} +2 -2
  127. package/web/.next/server/chunks/[root-of-the-server]__56ac1509._.js +3 -0
  128. package/web/.next/server/chunks/[root-of-the-server]__56ac1509._.js.map +1 -0
  129. package/web/.next/server/chunks/[root-of-the-server]__602cce1b._.js +3 -0
  130. package/web/.next/server/chunks/[root-of-the-server]__602cce1b._.js.map +1 -0
  131. package/web/.next/server/chunks/{[root-of-the-server]__a6bf88cc._.js → [root-of-the-server]__bb4fc5b5._.js} +2 -2
  132. package/web/.next/server/chunks/{[root-of-the-server]__4e987cf3._.js → [root-of-the-server]__eaa478b7._.js} +2 -2
  133. package/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_ide_open_route_actions_9fe6e1cd.js +3 -0
  134. package/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_ide_open_route_actions_9fe6e1cd.js.map +1 -0
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__97377864._.js +3 -0
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__f12b60be._.js +1 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__f285e474._.js +3 -0
  138. package/web/.next/server/chunks/ssr/_09afa42a._.js +1 -1
  139. package/web/.next/server/chunks/ssr/_09afa42a._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
  141. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js.map +1 -1
  142. package/web/.next/server/pages/404.html +2 -2
  143. package/web/.next/server/pages/500.html +2 -2
  144. package/web/.next/server/server-reference-manifest.js +1 -1
  145. package/web/.next/server/server-reference-manifest.json +1 -1
  146. package/web/.next/static/chunks/86ff2b6444e06e88.css +2 -0
  147. package/web/.next/static/chunks/{1c236dcc303f3033.js → c2854b6c6d0ca1f3.js} +2 -2
  148. package/web/.next/trace +1 -1
  149. package/web/.next/trace-build +1 -1
  150. package/web/.next/types/link.d.ts +2 -0
  151. package/web/.next/types/routes.d.ts +3 -1
  152. package/web/.next/types/validator.ts +18 -0
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__757c7912._.js +0 -3
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__dbd220d2._.js +0 -3
  155. package/web/.next/static/chunks/74748b4d725c5c74.css +0 -2
  156. /package/web/.next/server/chunks/{[root-of-the-server]__ec87d735._.js.map → [root-of-the-server]__1913013c._.js.map} +0 -0
  157. /package/web/.next/server/chunks/{[root-of-the-server]__a6bf88cc._.js.map → [root-of-the-server]__bb4fc5b5._.js.map} +0 -0
  158. /package/web/.next/server/chunks/{[root-of-the-server]__4e987cf3._.js.map → [root-of-the-server]__eaa478b7._.js.map} +0 -0
  159. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__757c7912._.js.map → [root-of-the-server]__97377864._.js.map} +0 -0
  160. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__dbd220d2._.js.map → [root-of-the-server]__f285e474._.js.map} +0 -0
  161. /package/web/.next/static/{-dFLqLT3RMg1ueqbAhsJk → _6j6GS-S6zPiASj5tsxJ8}/_buildManifest.js +0 -0
  162. /package/web/.next/static/{-dFLqLT3RMg1ueqbAhsJk → _6j6GS-S6zPiASj5tsxJ8}/_clientMiddlewareManifest.json +0 -0
  163. /package/web/.next/static/{-dFLqLT3RMg1ueqbAhsJk → _6j6GS-S6zPiASj5tsxJ8}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"feature-drawer.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer/feature-drawer.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CAOpC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAoF5C,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAMF,wEAAwE;AACxE,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,SAAS,EAAE,KAmBvB,CAAC;AAuDF,0DAA0D;AAC1D,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAC;AA2CF,wDAAwD;AACxD,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC"}
1
+ {"version":3,"file":"feature-drawer.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer/feature-drawer.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CAOpC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAgG5C,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAMF,wEAAwE;AACxE,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,SAAS,EAAE,KAqBvB,CAAC;AAuDF,0DAA0D;AAC1D,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAC;AA6CF,wDAAwD;AACxD,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAMF,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,EAAE,KAO9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC"}
@@ -20,6 +20,8 @@ const baseData = {
20
20
  lifecycle: 'implementation',
21
21
  state: 'running',
22
22
  progress: 45,
23
+ repositoryPath: '/home/user/my-repo',
24
+ branch: 'feat/auth-module',
23
25
  };
24
26
  const runningData = {
25
27
  name: 'Auth Module',
@@ -29,6 +31,8 @@ const runningData = {
29
31
  state: 'running',
30
32
  progress: 45,
31
33
  agentName: 'Planner',
34
+ repositoryPath: '/home/user/my-repo',
35
+ branch: 'feat/auth-module',
32
36
  };
33
37
  const actionRequiredData = {
34
38
  name: 'API Rate Limiting',
@@ -37,6 +41,8 @@ const actionRequiredData = {
37
41
  lifecycle: 'requirements',
38
42
  state: 'action-required',
39
43
  progress: 22,
44
+ repositoryPath: '/home/user/my-repo',
45
+ branch: 'feat/api-rate-limiting',
40
46
  };
41
47
  const doneData = {
42
48
  name: 'Payment Gateway',
@@ -46,6 +52,8 @@ const doneData = {
46
52
  state: 'done',
47
53
  progress: 100,
48
54
  runtime: '1h 42m',
55
+ repositoryPath: '/home/user/my-repo',
56
+ branch: 'feat/payment-gateway',
49
57
  };
50
58
  const blockedData = {
51
59
  name: 'Search Index',
@@ -55,6 +63,8 @@ const blockedData = {
55
63
  state: 'blocked',
56
64
  progress: 20,
57
65
  blockedBy: 'Auth Module',
66
+ repositoryPath: '/home/user/my-repo',
67
+ branch: 'feat/search-index',
58
68
  };
59
69
  const errorData = {
60
70
  name: 'Email Service',
@@ -64,6 +74,8 @@ const errorData = {
64
74
  state: 'error',
65
75
  progress: 30,
66
76
  errorMessage: 'Build failed: type mismatch',
77
+ repositoryPath: '/home/user/my-repo',
78
+ branch: 'feat/email-service',
67
79
  };
68
80
  /* ---------------------------------------------------------------------------
69
81
  * Trigger wrapper — starts closed, click to open
@@ -110,6 +122,8 @@ export const AllFields = {
110
122
  runtime: '3h 15m',
111
123
  blockedBy: 'Database Migration',
112
124
  errorMessage: 'Token refresh failed: invalid_grant',
125
+ repositoryPath: '/home/user/enterprise-app',
126
+ branch: 'feat/enterprise-auth',
113
127
  }, label: "Open All Fields" })),
114
128
  };
115
129
  /* ---------------------------------------------------------------------------
@@ -156,6 +170,8 @@ function AllLifecyclesRender() {
156
170
  state: 'running',
157
171
  progress: 50,
158
172
  agentName: 'Agent',
173
+ repositoryPath: '/home/user/my-repo',
174
+ branch: 'feat/feature-name',
159
175
  });
160
176
  }, className: `rounded-md px-3 py-1.5 text-left text-sm ${phase === lifecycle
161
177
  ? 'bg-primary text-primary-foreground'
@@ -165,3 +181,18 @@ function AllLifecyclesRender() {
165
181
  export const AllLifecycles = {
166
182
  render: () => _jsx(AllLifecyclesRender, {}),
167
183
  };
184
+ /* ---------------------------------------------------------------------------
185
+ * Action button stories
186
+ * ------------------------------------------------------------------------- */
187
+ /** No repositoryPath — action buttons are hidden. */
188
+ export const NoRepositoryPath = {
189
+ render: () => (_jsx(DrawerTrigger, { data: { ...baseData, repositoryPath: '', branch: '' }, label: "Open Without Repo Path" })),
190
+ };
191
+ /**
192
+ * Action buttons visible — click "Open in IDE" or "Open in Shell" to see
193
+ * loading spinner (while API call is in flight) followed by error state
194
+ * (API routes are not available in Storybook).
195
+ */
196
+ export const WithActionButtons = {
197
+ render: () => _jsx(DrawerTrigger, { data: runningData, label: "Open With Actions" }),
198
+ };
@@ -0,0 +1,14 @@
1
+ export interface FeatureActionsInput {
2
+ repositoryPath: string;
3
+ branch: string;
4
+ }
5
+ export interface FeatureActionsState {
6
+ openInIde: () => Promise<void>;
7
+ openInShell: () => Promise<void>;
8
+ ideLoading: boolean;
9
+ shellLoading: boolean;
10
+ ideError: string | null;
11
+ shellError: string | null;
12
+ }
13
+ export declare function useFeatureActions(input: FeatureActionsInput | null): FeatureActionsState;
14
+ //# sourceMappingURL=use-feature-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-feature-actions.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer/use-feature-actions.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,mBAAmB,CA0ExF"}
@@ -0,0 +1,58 @@
1
+ 'use client';
2
+ import { useState, useCallback, useRef, useEffect } from 'react';
3
+ const ERROR_CLEAR_DELAY = 5000;
4
+ export function useFeatureActions(input) {
5
+ const [ideLoading, setIdeLoading] = useState(false);
6
+ const [shellLoading, setShellLoading] = useState(false);
7
+ const [ideError, setIdeError] = useState(null);
8
+ const [shellError, setShellError] = useState(null);
9
+ const ideTimerRef = useRef(null);
10
+ const shellTimerRef = useRef(null);
11
+ // Clear timers on unmount
12
+ useEffect(() => {
13
+ const ideTimer = ideTimerRef.current;
14
+ const shellTimer = shellTimerRef.current;
15
+ return () => {
16
+ if (ideTimer)
17
+ clearTimeout(ideTimer);
18
+ if (shellTimer)
19
+ clearTimeout(shellTimer);
20
+ };
21
+ }, []);
22
+ const performAction = useCallback(async (url, setLoading, setError, timerRef, isLoading) => {
23
+ if (!input || isLoading)
24
+ return;
25
+ // Clear any existing timer
26
+ if (timerRef.current)
27
+ clearTimeout(timerRef.current);
28
+ setLoading(true);
29
+ setError(null);
30
+ try {
31
+ const response = await fetch(url, {
32
+ method: 'POST',
33
+ headers: { 'Content-Type': 'application/json' },
34
+ body: JSON.stringify({
35
+ repositoryPath: input.repositoryPath,
36
+ branch: input.branch,
37
+ }),
38
+ });
39
+ if (!response.ok) {
40
+ const data = await response.json();
41
+ const errorMessage = data.error ?? 'An unexpected error occurred';
42
+ setError(errorMessage);
43
+ timerRef.current = setTimeout(() => setError(null), ERROR_CLEAR_DELAY);
44
+ }
45
+ }
46
+ catch (err) {
47
+ const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred';
48
+ setError(errorMessage);
49
+ timerRef.current = setTimeout(() => setError(null), ERROR_CLEAR_DELAY);
50
+ }
51
+ finally {
52
+ setLoading(false);
53
+ }
54
+ }, [input]);
55
+ const openInIde = useCallback(() => performAction('/api/ide/open', setIdeLoading, setIdeError, ideTimerRef, ideLoading), [performAction, ideLoading]);
56
+ const openInShell = useCallback(() => performAction('/api/shell/open', setShellLoading, setShellError, shellTimerRef, shellLoading), [performAction, shellLoading]);
57
+ return { openInIde, openInShell, ideLoading, shellLoading, ideError, shellError };
58
+ }
@@ -12,6 +12,10 @@ export interface FeatureNodeData {
12
12
  lifecycle: FeatureLifecyclePhase;
13
13
  state: FeatureNodeState;
14
14
  progress: number;
15
+ /** Absolute path to the repository on disk */
16
+ repositoryPath: string;
17
+ /** Git branch name for this feature */
18
+ branch: string;
15
19
  /** Human-readable runtime for done state (e.g. "2h 15m") */
16
20
  runtime?: string;
17
21
  /** Feature name this node is blocked by */
@@ -1 +1 @@
1
- {"version":3,"file":"feature-node-state-config.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/feature-node-state-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5F,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,UAAU,GACV,gBAAgB,GAChB,QAAQ,GACR,QAAQ,GACR,UAAU,CAAC;AAEf,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAOxE,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,qBAAqB,CAAC;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAmDnF,CAAC"}
1
+ {"version":3,"file":"feature-node-state-config.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/feature-node-state-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5F,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,UAAU,GACV,gBAAgB,GAChB,QAAQ,GACR,QAAQ,GACR,UAAU,CAAC;AAEf,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAOxE,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,qBAAqB,CAAC;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAmDnF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-node.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/feature-node.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,6BAA6B,CAAC;AAiCrC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,eAAe,CAe/B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAEvC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAiDF,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAWF,eAAO,MAAM,aAAa,EAAE,KAoB3B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAW7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAW9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAW9B,CAAC;AAuEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC"}
1
+ {"version":3,"file":"feature-node.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/feature-node.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,6BAA6B,CAAC;AAiCrC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,eAAe,CAe/B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAEvC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AA2DF,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAWF,eAAO,MAAM,aAAa,EAAE,KAsB3B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAW7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAW9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAW9B,CAAC;AA6EF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC"}
@@ -38,6 +38,8 @@ const allStatesData = [
38
38
  state: 'running',
39
39
  progress: 45,
40
40
  agentName: 'Planner',
41
+ repositoryPath: '/home/user/my-repo',
42
+ branch: 'feat/auth-module',
41
43
  },
42
44
  {
43
45
  name: 'API Rate Limiting',
@@ -46,6 +48,8 @@ const allStatesData = [
46
48
  lifecycle: 'requirements',
47
49
  state: 'action-required',
48
50
  progress: 22,
51
+ repositoryPath: '/home/user/my-repo',
52
+ branch: 'feat/api-rate-limiting',
49
53
  },
50
54
  {
51
55
  name: 'Payment Gateway',
@@ -55,6 +59,8 @@ const allStatesData = [
55
59
  state: 'done',
56
60
  progress: 100,
57
61
  runtime: '1h 42m',
62
+ repositoryPath: '/home/user/my-repo',
63
+ branch: 'feat/payment-gateway',
58
64
  },
59
65
  {
60
66
  name: 'Search Index',
@@ -64,6 +70,8 @@ const allStatesData = [
64
70
  state: 'blocked',
65
71
  progress: 20,
66
72
  blockedBy: 'Auth Module',
73
+ repositoryPath: '/home/user/my-repo',
74
+ branch: 'feat/search-index',
67
75
  },
68
76
  {
69
77
  name: 'Email Service',
@@ -73,6 +81,8 @@ const allStatesData = [
73
81
  state: 'error',
74
82
  progress: 30,
75
83
  errorMessage: 'Build failed: type mismatch',
84
+ repositoryPath: '/home/user/my-repo',
85
+ branch: 'feat/email-service',
76
86
  },
77
87
  ];
78
88
  export const AllStates = {
@@ -95,6 +105,8 @@ export const AllLifecycles = {
95
105
  state: 'running',
96
106
  progress: [10, 25, 50, 70, 90, 100][i],
97
107
  agentName: 'Researcher',
108
+ repositoryPath: '/home/user/my-repo',
109
+ branch: 'feat/feature-name',
98
110
  } }, lifecycle))) })),
99
111
  };
100
112
  export const WithAction = {
@@ -161,6 +173,8 @@ const interactiveInitialNodes = [
161
173
  state: 'running',
162
174
  progress: 45,
163
175
  agentName: 'Planner',
176
+ repositoryPath: '/home/user/my-repo',
177
+ branch: 'feat/auth-module',
164
178
  },
165
179
  },
166
180
  {
@@ -176,6 +190,8 @@ const interactiveInitialNodes = [
176
190
  state: 'done',
177
191
  progress: 100,
178
192
  runtime: '1h 42m',
193
+ repositoryPath: '/home/user/my-repo',
194
+ branch: 'feat/payment-gateway',
179
195
  },
180
196
  },
181
197
  {
@@ -191,6 +207,8 @@ const interactiveInitialNodes = [
191
207
  state: 'error',
192
208
  progress: 30,
193
209
  errorMessage: 'Build failed: type mismatch',
210
+ repositoryPath: '/home/user/my-repo',
211
+ branch: 'feat/email-service',
194
212
  },
195
213
  },
196
214
  ];
@@ -4,6 +4,7 @@ export { EmptyState, type EmptyStateProps } from './empty-state/index.js';
4
4
  export { FeatureCreateDrawer, type FeatureCreateDrawerProps, type CreateFeatureFormData, } from './feature-create-drawer/index.js';
5
5
  export { FeatureDrawer, type FeatureDrawerProps } from './feature-drawer/index.js';
6
6
  export { FeatureListItem, type FeatureListItemProps } from './feature-list-item/index.js';
7
+ export { useFeatureActions, type FeatureActionsInput, type FeatureActionsState, } from './feature-drawer/use-feature-actions.js';
7
8
  export { FeatureNode, featureNodeStateConfig, type FeatureNodeState, type FeatureLifecyclePhase, type FeatureNodeData, type FeatureNodeType, type FeatureNodeStateConfig, } from './feature-node/index.js';
8
9
  export { FeatureStatusBadges, type FeatureStatusBadgesProps } from './feature-status-badges/index.js';
9
10
  export { FeatureStatusGroup, type FeatureStatusGroupProps } from './feature-status-group/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -4,6 +4,7 @@ export { EmptyState } from './empty-state/index.js';
4
4
  export { FeatureCreateDrawer, } from './feature-create-drawer/index.js';
5
5
  export { FeatureDrawer } from './feature-drawer/index.js';
6
6
  export { FeatureListItem } from './feature-list-item/index.js';
7
+ export { useFeatureActions, } from './feature-drawer/use-feature-actions.js';
7
8
  export { FeatureNode, featureNodeStateConfig, } from './feature-node/index.js';
8
9
  export { FeatureStatusBadges } from './feature-status-badges/index.js';
9
10
  export { FeatureStatusGroup } from './feature-status-group/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"control-center.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CAcpC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA4DnC,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAQ1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAS7B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,EAAE,KAYzB,CAAC;AA8HF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC"}
1
+ {"version":3,"file":"control-center.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CAcpC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAkEnC,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAQ1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAS7B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,EAAE,KAYzB,CAAC;AAwIF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC"}
@@ -25,6 +25,8 @@ const featureNodes = [
25
25
  lifecycle: 'implementation',
26
26
  state: 'running',
27
27
  progress: 65,
28
+ repositoryPath: '/home/user/my-repo',
29
+ branch: 'feat/auth-module',
28
30
  },
29
31
  },
30
32
  {
@@ -38,6 +40,8 @@ const featureNodes = [
38
40
  lifecycle: 'research',
39
41
  state: 'action-required',
40
42
  progress: 20,
43
+ repositoryPath: '/home/user/my-repo',
44
+ branch: 'feat/user-dashboard',
41
45
  },
42
46
  },
43
47
  {
@@ -51,6 +55,8 @@ const featureNodes = [
51
55
  lifecycle: 'deploy',
52
56
  state: 'done',
53
57
  progress: 100,
58
+ repositoryPath: '/home/user/my-repo',
59
+ branch: 'feat/api-gateway',
54
60
  },
55
61
  },
56
62
  ];
@@ -148,6 +154,8 @@ const dagreFeatureNodes = [
148
154
  lifecycle: 'implementation',
149
155
  state: 'running',
150
156
  progress: 65,
157
+ repositoryPath: '/home/user/my-repo',
158
+ branch: 'feat/auth-module',
151
159
  },
152
160
  },
153
161
  {
@@ -161,6 +169,8 @@ const dagreFeatureNodes = [
161
169
  lifecycle: 'research',
162
170
  state: 'action-required',
163
171
  progress: 20,
172
+ repositoryPath: '/home/user/my-repo',
173
+ branch: 'feat/sso-integration',
164
174
  },
165
175
  },
166
176
  {
@@ -174,6 +184,8 @@ const dagreFeatureNodes = [
174
184
  lifecycle: 'requirements',
175
185
  state: 'running',
176
186
  progress: 10,
187
+ repositoryPath: '/home/user/my-repo',
188
+ branch: 'feat/user-dashboard',
177
189
  },
178
190
  },
179
191
  {
@@ -187,6 +199,8 @@ const dagreFeatureNodes = [
187
199
  lifecycle: 'deploy',
188
200
  state: 'done',
189
201
  progress: 100,
202
+ repositoryPath: '/home/user/my-repo',
203
+ branch: 'feat/api-gateway',
190
204
  },
191
205
  },
192
206
  {
@@ -201,6 +215,8 @@ const dagreFeatureNodes = [
201
215
  state: 'blocked',
202
216
  progress: 40,
203
217
  blockedBy: 'API Gateway',
218
+ repositoryPath: '/home/user/my-repo',
219
+ branch: 'feat/admin-panel',
204
220
  },
205
221
  },
206
222
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"use-control-center-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,yBAAyB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,yBAAyB,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjE,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAID,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CAmTpB"}
1
+ {"version":3,"file":"use-control-center-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,yBAAyB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,yBAAyB,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjE,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAID,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CAqTpB"}
@@ -72,6 +72,8 @@ export function useControlCenterState(initialNodes, initialEdges) {
72
72
  lifecycle: 'requirements',
73
73
  state: 'running',
74
74
  progress: 0,
75
+ repositoryPath: dataOverride?.repositoryPath ?? '',
76
+ branch: dataOverride?.branch ?? '',
75
77
  };
76
78
  setNodes((currentNodes) => {
77
79
  // Find siblings connected to the same parent
@@ -1 +1 @@
1
- {"version":3,"file":"features-canvas.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAcrC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAoJnC,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAK3B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAK5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC;AAwDF,eAAO,MAAM,mCAAmC,EAAE,KAOjD,CAAC;AAgCF,eAAO,MAAM,gCAAgC,EAAE,KAS9C,CAAC;AA0DF,eAAO,MAAM,gCAAgC,EAAE,KAW9C,CAAC;AAmDF,eAAO,MAAM,oBAAoB,EAAE,KAUlC,CAAC;AAmGF,eAAO,MAAM,oCAAoC,EAAE,KAOlD,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,KASvC,CAAC"}
1
+ {"version":3,"file":"features-canvas.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAcrC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAwKnC,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAK3B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAK5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC;AA4DF,eAAO,MAAM,mCAAmC,EAAE,KAOjD,CAAC;AAkCF,eAAO,MAAM,gCAAgC,EAAE,KAS9C,CAAC;AAgEF,eAAO,MAAM,gCAAgC,EAAE,KAW9C,CAAC;AAuDF,eAAO,MAAM,oBAAoB,EAAE,KAUlC,CAAC;AA2GF,eAAO,MAAM,oCAAoC,EAAE,KAOlD,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,KASvC,CAAC"}
@@ -24,6 +24,8 @@ const singleNode = {
24
24
  lifecycle: 'requirements',
25
25
  state: 'running',
26
26
  progress: 45,
27
+ repositoryPath: '/home/user/my-repo',
28
+ branch: 'feat/auth-module',
27
29
  },
28
30
  };
29
31
  const multipleNodes = [
@@ -38,6 +40,8 @@ const multipleNodes = [
38
40
  lifecycle: 'implementation',
39
41
  state: 'running',
40
42
  progress: 65,
43
+ repositoryPath: '/home/user/my-repo',
44
+ branch: 'feat/auth-module',
41
45
  },
42
46
  },
43
47
  {
@@ -51,6 +55,8 @@ const multipleNodes = [
51
55
  lifecycle: 'research',
52
56
  state: 'action-required',
53
57
  progress: 20,
58
+ repositoryPath: '/home/user/my-repo',
59
+ branch: 'feat/user-dashboard',
54
60
  },
55
61
  },
56
62
  {
@@ -64,6 +70,8 @@ const multipleNodes = [
64
70
  lifecycle: 'deploy',
65
71
  state: 'done',
66
72
  progress: 100,
73
+ repositoryPath: '/home/user/my-repo',
74
+ branch: 'feat/api-gateway',
67
75
  },
68
76
  },
69
77
  {
@@ -77,6 +85,8 @@ const multipleNodes = [
77
85
  lifecycle: 'review',
78
86
  state: 'blocked',
79
87
  progress: 40,
88
+ repositoryPath: '/home/user/my-repo',
89
+ branch: 'feat/payment-integration',
80
90
  },
81
91
  },
82
92
  {
@@ -90,6 +100,8 @@ const multipleNodes = [
90
100
  lifecycle: 'implementation',
91
101
  state: 'error',
92
102
  progress: 30,
103
+ repositoryPath: '/home/user/my-repo',
104
+ branch: 'feat/email-service',
93
105
  },
94
106
  },
95
107
  ];
@@ -105,6 +117,8 @@ const connectedNodes = [
105
117
  lifecycle: 'implementation',
106
118
  state: 'running',
107
119
  progress: 65,
120
+ repositoryPath: '/home/user/my-repo',
121
+ branch: 'feat/auth-module',
108
122
  },
109
123
  },
110
124
  {
@@ -119,6 +133,8 @@ const connectedNodes = [
119
133
  state: 'blocked',
120
134
  progress: 10,
121
135
  blockedBy: 'Auth Module',
136
+ repositoryPath: '/home/user/my-repo',
137
+ branch: 'feat/user-dashboard',
122
138
  },
123
139
  },
124
140
  {
@@ -132,6 +148,8 @@ const connectedNodes = [
132
148
  lifecycle: 'requirements',
133
149
  state: 'action-required',
134
150
  progress: 5,
151
+ repositoryPath: '/home/user/my-repo',
152
+ branch: 'feat/api-gateway',
135
153
  },
136
154
  },
137
155
  {
@@ -146,6 +164,8 @@ const connectedNodes = [
146
164
  state: 'blocked',
147
165
  progress: 0,
148
166
  blockedBy: 'User Dashboard',
167
+ repositoryPath: '/home/user/my-repo',
168
+ branch: 'feat/admin-panel',
149
169
  },
150
170
  },
151
171
  ];
@@ -220,6 +240,8 @@ const repoFeatureNodes = [
220
240
  lifecycle: 'implementation',
221
241
  state: 'running',
222
242
  progress: 65,
243
+ repositoryPath: '/home/user/my-repo',
244
+ branch: 'feat/auth-module',
223
245
  },
224
246
  },
225
247
  {
@@ -233,6 +255,8 @@ const repoFeatureNodes = [
233
255
  lifecycle: 'requirements',
234
256
  state: 'action-required',
235
257
  progress: 20,
258
+ repositoryPath: '/home/user/my-repo',
259
+ branch: 'feat/feature-flow-canvas',
236
260
  },
237
261
  },
238
262
  ];
@@ -274,6 +298,8 @@ const singleRepoSingleFeatureNodes = [
274
298
  lifecycle: 'implementation',
275
299
  state: 'running',
276
300
  progress: 65,
301
+ repositoryPath: '/home/user/my-repo',
302
+ branch: 'feat/auth-module',
277
303
  },
278
304
  },
279
305
  ];
@@ -312,6 +338,8 @@ const singleRepoMultiFeatNodes = [
312
338
  lifecycle: 'implementation',
313
339
  state: 'running',
314
340
  progress: 40,
341
+ repositoryPath: '/home/user/my-repo',
342
+ branch: 'feat/sso-integration',
315
343
  },
316
344
  },
317
345
  {
@@ -325,6 +353,8 @@ const singleRepoMultiFeatNodes = [
325
353
  lifecycle: 'requirements',
326
354
  state: 'action-required',
327
355
  progress: 10,
356
+ repositoryPath: '/home/user/my-repo',
357
+ branch: 'feat/auth-module',
328
358
  },
329
359
  },
330
360
  {
@@ -338,6 +368,8 @@ const singleRepoMultiFeatNodes = [
338
368
  lifecycle: 'research',
339
369
  state: 'running',
340
370
  progress: 25,
371
+ repositoryPath: '/home/user/my-repo',
372
+ branch: 'feat/api-gateway',
341
373
  },
342
374
  },
343
375
  ];
@@ -384,6 +416,8 @@ const multiRepoNodes = [
384
416
  lifecycle: 'implementation',
385
417
  state: 'running',
386
418
  progress: 65,
419
+ repositoryPath: '/home/user/my-repo',
420
+ branch: 'feat/auth-module',
387
421
  },
388
422
  },
389
423
  {
@@ -397,6 +431,8 @@ const multiRepoNodes = [
397
431
  lifecycle: 'requirements',
398
432
  state: 'action-required',
399
433
  progress: 15,
434
+ repositoryPath: '/home/user/my-repo',
435
+ branch: 'feat/dashboard-ui',
400
436
  },
401
437
  },
402
438
  ];
@@ -448,6 +484,8 @@ const mixedRepoFeatureNodesRaw = [
448
484
  lifecycle: 'implementation',
449
485
  state: 'running',
450
486
  progress: 65,
487
+ repositoryPath: '/home/user/my-repo',
488
+ branch: 'feat/auth-module',
451
489
  },
452
490
  },
453
491
  {
@@ -461,6 +499,8 @@ const mixedRepoFeatureNodesRaw = [
461
499
  lifecycle: 'research',
462
500
  state: 'action-required',
463
501
  progress: 20,
502
+ repositoryPath: '/home/user/my-repo',
503
+ branch: 'feat/sso-integration',
464
504
  },
465
505
  },
466
506
  {
@@ -474,6 +514,8 @@ const mixedRepoFeatureNodesRaw = [
474
514
  lifecycle: 'requirements',
475
515
  state: 'running',
476
516
  progress: 10,
517
+ repositoryPath: '/home/user/my-repo',
518
+ branch: 'feat/api-gateway',
477
519
  },
478
520
  },
479
521
  {
@@ -487,6 +529,8 @@ const mixedRepoFeatureNodesRaw = [
487
529
  lifecycle: 'deploy',
488
530
  state: 'done',
489
531
  progress: 100,
532
+ repositoryPath: '/home/user/my-repo',
533
+ branch: 'feat/admin-panel',
490
534
  },
491
535
  },
492
536
  ];