@shepai/cli 1.72.9-pr218.000ada0 → 1.72.9-pr219.08421ee

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 (180) hide show
  1. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  2. package/dist/src/presentation/web/app/api/agent-events/route.js +17 -1
  3. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  4. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +45 -1
  5. package/dist/tsconfig.build.tsbuildinfo +1 -1
  6. package/package.json +1 -1
  7. package/web/.next/BUILD_ID +1 -1
  8. package/web/.next/build-manifest.json +2 -2
  9. package/web/.next/cache/.previewinfo +1 -1
  10. package/web/.next/cache/.rscinfo +1 -1
  11. package/web/.next/cache/.tsbuildinfo +1 -1
  12. package/web/.next/cache/config.json +3 -3
  13. package/web/.next/fallback-build-manifest.json +2 -2
  14. package/web/.next/prerender-manifest.json +3 -3
  15. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +15 -15
  16. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  18. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +18 -18
  19. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +13 -13
  22. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +15 -15
  25. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  26. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +18 -18
  28. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  29. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  30. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +13 -13
  31. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +13 -13
  34. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/_global-error.html +2 -2
  37. package/web/.next/server/app/_global-error.rsc +1 -1
  38. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  39. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  40. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  41. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  42. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  43. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  44. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  46. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  47. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  48. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  50. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  52. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  53. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  54. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  55. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_3a02d8a5.js +1 -1
  56. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_3a02d8a5.js.map +1 -1
  57. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js +1 -1
  58. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js.map +1 -1
  59. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  60. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
  61. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  62. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
  63. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  64. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  65. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  66. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  67. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  68. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  69. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  70. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js +1 -1
  71. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js.map +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js +1 -1
  73. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js.map +1 -1
  74. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  75. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
  76. package/web/.next/server/chunks/ssr/{_6ef06ca9._.js → _4469c284._.js} +2 -2
  77. package/web/.next/server/chunks/ssr/{_6ef06ca9._.js.map → _4469c284._.js.map} +1 -1
  78. package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  79. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
  80. package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  81. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
  82. package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  83. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/src_presentation_web_0a49d9ee._.js +2 -2
  85. package/web/.next/server/chunks/ssr/src_presentation_web_0a49d9ee._.js.map +1 -1
  86. package/web/.next/server/chunks/ssr/src_presentation_web_5ea689db._.js +1 -1
  87. package/web/.next/server/chunks/ssr/src_presentation_web_5ea689db._.js.map +1 -1
  88. package/web/.next/server/chunks/ssr/src_presentation_web_7188a290._.js +1 -1
  89. package/web/.next/server/chunks/ssr/src_presentation_web_7188a290._.js.map +1 -1
  90. package/web/.next/server/chunks/ssr/src_presentation_web_79b0305a._.js +2 -2
  91. package/web/.next/server/chunks/ssr/src_presentation_web_79b0305a._.js.map +1 -1
  92. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js +1 -1
  93. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js.map +1 -1
  94. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  95. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  96. package/web/.next/server/pages/500.html +2 -2
  97. package/web/.next/server/server-reference-manifest.js +1 -1
  98. package/web/.next/server/server-reference-manifest.json +21 -21
  99. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  100. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  101. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  102. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +15 -15
  103. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  104. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  105. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +18 -18
  106. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  107. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  108. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +13 -13
  109. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  110. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  111. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +15 -15
  112. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  113. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  114. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +18 -18
  115. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  116. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  117. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +13 -13
  118. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  119. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  120. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +13 -13
  121. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  122. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  123. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  124. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  125. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  126. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  127. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  128. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  129. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  130. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  131. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  132. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  133. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  134. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  135. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  136. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  137. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  138. package/web/.next/standalone/src/presentation/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  139. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  140. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_3a02d8a5.js +1 -1
  141. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js +1 -1
  142. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  143. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  144. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  145. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  146. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  147. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  148. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js +1 -1
  149. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js +1 -1
  150. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  151. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_6ef06ca9._.js → _4469c284._.js} +2 -2
  152. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  153. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  154. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  155. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_0a49d9ee._.js +2 -2
  156. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5ea689db._.js +1 -1
  157. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_7188a290._.js +1 -1
  158. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_79b0305a._.js +2 -2
  159. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js +1 -1
  160. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  162. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  163. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +21 -21
  164. package/web/.next/standalone/src/presentation/web/app/api/agent-events/route.ts +19 -1
  165. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +57 -1
  166. package/web/.next/static/chunks/073b31d7a4974504.js +1 -0
  167. package/web/.next/static/chunks/{4a8df922364596f6.js → 0e588a3a4dd7d1c0.js} +1 -1
  168. package/web/.next/static/chunks/{1249c7c8745b972e.js → 1d281f045b623a45.js} +1 -1
  169. package/web/.next/static/chunks/{0eeb65b8300fb7cd.js → 2433994d844b7d39.js} +1 -1
  170. package/web/.next/static/chunks/{1c15ab8668ecf473.js → 3e041a9008bac888.js} +1 -1
  171. package/web/.next/static/chunks/{2cf89d17ee7717a6.js → 798624a651d68855.js} +1 -1
  172. package/web/.next/static/chunks/{b579fd590a79bf35.js → 977b9d2b9ef19f7d.js} +1 -1
  173. package/web/.next/static/chunks/{a676f15c03fa66b9.js → a18b0561724d11d4.js} +1 -1
  174. package/web/.next/static/chunks/{99381b9c479936d5.js → cd9099d3eae9dd04.js} +1 -1
  175. package/web/.next/trace +1 -1
  176. package/web/.next/trace-build +1 -1
  177. package/web/.next/static/chunks/981b8df9ad045742.js +0 -1
  178. /package/web/.next/static/{nnR12fAsrSagAfeV6xj6D → pzwrJGWI__eUhJsxxW2S-}/_buildManifest.js +0 -0
  179. /package/web/.next/static/{nnR12fAsrSagAfeV6xj6D → pzwrJGWI__eUhJsxxW2S-}/_clientMiddlewareManifest.json +0 -0
  180. /package/web/.next/static/{nnR12fAsrSagAfeV6xj6D → pzwrJGWI__eUhJsxxW2S-}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/app/api/agent-events/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,eAAO,MAAM,OAAO,kBAAkB,CAAC;AA+DvC,wBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAkM9C"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/app/api/agent-events/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,eAAO,MAAM,OAAO,kBAAkB,CAAC;AA+DvC,wBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAoN9C"}
@@ -115,7 +115,8 @@ export function GET(request) {
115
115
  continue;
116
116
  const prev = cache.get(feature.id);
117
117
  if (!prev) {
118
- // First time seeing this feature — seed cache, don't emit
118
+ // First time seeing this feature — seed cache and emit so
119
+ // clients discover features created outside the UI (e.g. CLI).
119
120
  const completedPhases = new Set();
120
121
  try {
121
122
  const timings = await phaseTimingRepo.findByRunId(run.id);
@@ -133,6 +134,21 @@ export function GET(request) {
133
134
  completedPhases,
134
135
  featureName: feature.name,
135
136
  });
137
+ // Emit initial state so the client learns about new features
138
+ const mapping = STATUS_TO_EVENT[run.status];
139
+ if (mapping) {
140
+ const phase = resultToPhase(run.result);
141
+ emitEvent({
142
+ eventType: mapping.eventType,
143
+ agentRunId: run.id,
144
+ featureId: feature.id,
145
+ featureName: feature.name,
146
+ ...(phase && { phaseName: phase }),
147
+ message: `Agent status: ${run.status}`,
148
+ severity: mapping.severity,
149
+ timestamp: new Date().toISOString(),
150
+ });
151
+ }
136
152
  continue;
137
153
  }
138
154
  // Check for status change
@@ -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,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAYjC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,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,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,iBAAiB,EAAE,CACjB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACvC,QAAQ,CAAC,EAAE,MAAM,KACd,MAAM,CAAC;CACb;AAID,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CAwlBpB"}
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,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAYjC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,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,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,iBAAiB,EAAE,CACjB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACvC,QAAQ,CAAC,EAAE,MAAM,KACd,MAAM,CAAC;CACb;AAID,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CAgpBpB"}
@@ -133,12 +133,31 @@ export function useControlCenterState(initialNodes, initialEdges) {
133
133
  // Uses `events` array (not `lastEvent`) so that React batching cannot silently
134
134
  // drop events when multiple SSE messages arrive in the same tick.
135
135
  const processedEventCountRef = useRef(0);
136
+ // Track known feature IDs so we can detect when SSE reports features not yet on the canvas.
137
+ // Initialised from initialNodes to avoid a race between first render and SSE arrival.
138
+ const knownFeatureIdsRef = useRef(new Set(initialNodes
139
+ .filter((n) => n.type === 'featureNode')
140
+ .map((n) => n.data.featureId)));
141
+ // Keep ref in sync as nodes change (new nodes added, temp nodes replaced, etc.)
142
+ useEffect(() => {
143
+ knownFeatureIdsRef.current = new Set(nodes
144
+ .filter((n) => n.type === 'featureNode')
145
+ .map((n) => n.data.featureId));
146
+ }, [nodes]);
147
+ // Guard against concurrent fetchGraphData calls triggered by unknown-feature detection
148
+ const fetchingGraphRef = useRef(false);
136
149
  useEffect(() => {
137
150
  if (events.length <= processedEventCountRef.current)
138
151
  return;
139
152
  const newEvents = events.slice(processedEventCountRef.current);
140
153
  processedEventCountRef.current = events.length;
154
+ let hasUnknownFeature = false;
141
155
  for (const event of newEvents) {
156
+ // If the feature isn't on the canvas yet, flag for a full graph refresh
157
+ if (!knownFeatureIdsRef.current.has(event.featureId)) {
158
+ hasUnknownFeature = true;
159
+ continue;
160
+ }
142
161
  const newState = mapEventTypeToState(event.eventType);
143
162
  const newLifecycle = mapPhaseNameToLifecycle(event.phaseName);
144
163
  // Targeted node update — only clone the matched node
@@ -158,7 +177,32 @@ export function useControlCenterState(initialNodes, initialEdges) {
158
177
  };
159
178
  }));
160
179
  }
161
- }, [events]);
180
+ // SSE reported features not on the canvas — fetch full graph data so new
181
+ // repository nodes, feature nodes, and edges all appear together.
182
+ if (hasUnknownFeature && !fetchingGraphRef.current) {
183
+ fetchingGraphRef.current = true;
184
+ fetchGraphData()
185
+ .then(({ nodes: serverNodes, edges: serverEdges }) => {
186
+ setNodes((currentNodes) => {
187
+ // Preserve positions of nodes already on the canvas
188
+ const currentById = new Map(currentNodes.map((n) => [n.id, n]));
189
+ const merged = serverNodes.map((serverNode) => {
190
+ const existing = currentById.get(serverNode.id);
191
+ return existing ? { ...serverNode, position: existing.position } : serverNode;
192
+ });
193
+ const layoutResult = layoutWithDagre(merged, serverEdges, CANVAS_LAYOUT_DEFAULTS);
194
+ setEdges(layoutResult.edges);
195
+ return layoutResult.nodes;
196
+ });
197
+ })
198
+ .catch(() => {
199
+ // Silently ignore — next SSE event or poll will retry
200
+ })
201
+ .finally(() => {
202
+ fetchingGraphRef.current = false;
203
+ });
204
+ }
205
+ }, [events, setEdges]);
162
206
  // Lightweight server-action polling fallback: fetches fresh graph data every 5s
163
207
  // when any feature is in an active state. This avoids full router.refresh() while
164
208
  // ensuring the UI stays in sync even if SSE events are missed.