@shepai/cli 1.135.2 → 1.135.3-pr425.d3fbb75

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 (227) hide show
  1. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
  2. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +2 -1
  3. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -1
  4. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +1 -23
  5. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +6 -1
  6. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +22 -2
  8. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts +2 -0
  9. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts.map +1 -1
  10. package/dist/src/presentation/web/app/actions/check-agent-auth.js +8 -1
  11. package/dist/src/presentation/web/app/actions/check-tool-status.d.ts +14 -0
  12. package/dist/src/presentation/web/app/actions/check-tool-status.d.ts.map +1 -0
  13. package/dist/src/presentation/web/app/actions/check-tool-status.js +53 -0
  14. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
  15. package/dist/src/presentation/web/app/build-graph-nodes.js +1 -9
  16. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +17 -0
  17. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  18. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +91 -0
  19. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  20. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +54 -64
  21. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
  22. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +85 -19
  23. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +6 -4
  25. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts.map +1 -1
  26. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +35 -9
  27. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.stories.d.ts +17 -1
  28. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.stories.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.stories.js +110 -1
  30. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +1 -1
  32. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +1 -0
  33. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  34. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +443 -10
  35. package/dist/src/presentation/web/lib/layout-with-dagre.js +1 -1
  36. package/dist/tsconfig.build.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/web/.next/BUILD_ID +1 -1
  39. package/web/.next/build-manifest.json +2 -2
  40. package/web/.next/fallback-build-manifest.json +2 -2
  41. package/web/.next/prerender-manifest.json +3 -3
  42. package/web/.next/required-server-files.js +3 -3
  43. package/web/.next/required-server-files.json +3 -3
  44. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +63 -48
  45. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +3 -3
  46. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +63 -48
  49. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
  50. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +75 -60
  53. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +3 -3
  54. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +75 -60
  57. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
  58. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +59 -44
  61. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
  62. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +63 -48
  65. package/web/.next/server/app/(dashboard)/create/page.js +3 -3
  66. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  67. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +75 -60
  69. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +3 -3
  70. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +75 -60
  73. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
  74. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +59 -44
  77. package/web/.next/server/app/(dashboard)/page.js +3 -3
  78. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  79. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +59 -44
  81. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
  82. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  83. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/_global-error.html +2 -2
  85. package/web/.next/server/app/_global-error.rsc +1 -1
  86. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  87. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  88. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  89. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  90. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  91. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  92. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  93. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  95. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  96. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  97. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  98. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  99. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  101. package/web/.next/server/app/skills/page.js +1 -1
  102. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  103. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  105. package/web/.next/server/app/tools/page.js +1 -1
  106. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  107. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  109. package/web/.next/server/app/version/page.js.nft.json +1 -1
  110. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  112. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  113. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  114. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js +3 -0
  115. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js.map +1 -0
  116. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  117. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js +3 -0
  119. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js.map +1 -0
  120. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js +3 -0
  121. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js.map +1 -0
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/{[root-of-the-server]__31bc28da._.js → [root-of-the-server]__47ded061._.js} +2 -2
  127. package/web/.next/server/chunks/ssr/{[root-of-the-server]__31bc28da._.js.map → [root-of-the-server]__47ded061._.js.map} +1 -1
  128. package/web/.next/server/chunks/ssr/{[root-of-the-server]__32ecbed9._.js → [root-of-the-server]__68ce373c._.js} +2 -2
  129. package/web/.next/server/chunks/ssr/{[root-of-the-server]__90f9ae71._.js.map → [root-of-the-server]__68ce373c._.js.map} +1 -1
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js +3 -0
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +1 -0
  132. package/web/.next/server/chunks/ssr/{[root-of-the-server]__90f9ae71._.js → [root-of-the-server]__718766da._.js} +2 -2
  133. package/web/.next/server/chunks/ssr/{[root-of-the-server]__90ce4b6d._.js.map → [root-of-the-server]__718766da._.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]__96670392._.js → [root-of-the-server]__a5f9c6e5._.js} +3 -3
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +1 -0
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +3 -0
  143. package/web/.next/server/chunks/ssr/{[root-of-the-server]__7894f27f._.js.map → [root-of-the-server]__d48c5b11._.js.map} +1 -1
  144. package/web/.next/server/chunks/ssr/{[root-of-the-server]__90ce4b6d._.js → [root-of-the-server]__fdd058b2._.js} +2 -2
  145. package/web/.next/server/chunks/ssr/{[root-of-the-server]__32ecbed9._.js.map → [root-of-the-server]__fdd058b2._.js.map} +1 -1
  146. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  147. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/_0ef7c505._.js +3 -0
  149. package/web/.next/server/chunks/ssr/_0ef7c505._.js.map +1 -0
  150. package/web/.next/server/chunks/ssr/{_69699ffe._.js → _40c2d506._.js} +2 -2
  151. package/web/.next/server/chunks/ssr/_40c2d506._.js.map +1 -0
  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/_a9f57758._.js +1 -1
  155. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  157. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/_e69a26ba._.js +4 -0
  159. package/web/.next/server/chunks/ssr/_e69a26ba._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  161. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  163. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js +5 -0
  165. package/web/.next/server/chunks/ssr/{src_presentation_web_b9023017._.js.map → src_presentation_web_53666118._.js.map} +1 -1
  166. package/web/.next/server/chunks/ssr/{src_presentation_web_731afe96._.js → src_presentation_web_8ac280c1._.js} +2 -2
  167. package/web/.next/server/chunks/ssr/{src_presentation_web_731afe96._.js.map → src_presentation_web_8ac280c1._.js.map} +1 -1
  168. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js +3 -0
  169. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  171. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  177. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  179. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js +5 -0
  181. package/web/.next/server/chunks/ssr/{src_presentation_web_8e7fe0d1._.js.map → src_presentation_web_e4df6dd7._.js.map} +1 -1
  182. package/web/.next/server/pages/500.html +2 -2
  183. package/web/.next/server/server-reference-manifest.js +1 -1
  184. package/web/.next/server/server-reference-manifest.json +374 -296
  185. package/web/.next/static/chunks/3831dbe7ff6d5717.js +1 -0
  186. package/web/.next/static/chunks/{d54a9af6cc2a0c58.js → 5240821573a037e3.js} +1 -1
  187. package/web/.next/static/chunks/{88a7aed01a628019.js → 6df4c57bc78a94a7.js} +1 -1
  188. package/web/.next/static/chunks/74a9d144a3e27ce2.js +1 -0
  189. package/web/.next/static/chunks/8e293101ac271df2.js +1 -0
  190. package/web/.next/static/chunks/92cd6f523639a6fa.css +1 -0
  191. package/web/.next/static/chunks/{567a5fd9bc141bde.js → 99351a301567a88e.js} +1 -1
  192. package/web/.next/static/chunks/99630cd36967c04f.js +1 -0
  193. package/web/.next/static/chunks/a381d542a7ec04d9.js +2 -0
  194. package/web/.next/static/chunks/{52bbd5a4f8ff74bd.js → b4e468a0f9370e0f.js} +1 -1
  195. package/web/.next/static/chunks/{321178bb6199a3e1.js → b5545c62e743df83.js} +2 -2
  196. package/web/.next/static/chunks/{d4fbedd39504661f.js → b966410b4e88dba6.js} +1 -1
  197. package/web/.next/static/chunks/{39302cb19904d221.js → c80e7077c2e15d7a.js} +1 -1
  198. package/web/.next/static/chunks/d0dff217a94d4ee1.js +1 -0
  199. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +0 -3
  200. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +0 -1
  201. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +0 -3
  202. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +0 -1
  203. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +0 -3
  204. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +0 -1
  205. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js +0 -3
  206. package/web/.next/server/chunks/ssr/[root-of-the-server]__96670392._.js.map +0 -1
  207. package/web/.next/server/chunks/ssr/[root-of-the-server]__9c45d070._.js +0 -3
  208. package/web/.next/server/chunks/ssr/[root-of-the-server]__9c45d070._.js.map +0 -1
  209. package/web/.next/server/chunks/ssr/_1f958cbc._.js +0 -3
  210. package/web/.next/server/chunks/ssr/_1f958cbc._.js.map +0 -1
  211. package/web/.next/server/chunks/ssr/_69699ffe._.js.map +0 -1
  212. package/web/.next/server/chunks/ssr/_b6960ca0._.js +0 -4
  213. package/web/.next/server/chunks/ssr/_b6960ca0._.js.map +0 -1
  214. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +0 -5
  215. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +0 -3
  216. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +0 -1
  217. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +0 -5
  218. package/web/.next/static/chunks/314b8314f77d6921.js +0 -1
  219. package/web/.next/static/chunks/3d1b728f59ca0ae6.js +0 -1
  220. package/web/.next/static/chunks/3e2d7d07926b05bf.css +0 -1
  221. package/web/.next/static/chunks/52d2796a174182a7.js +0 -1
  222. package/web/.next/static/chunks/6709ec190dbf8098.js +0 -1
  223. package/web/.next/static/chunks/9e13ad97d9c1c52a.js +0 -2
  224. package/web/.next/static/chunks/ddb9106ee55ddb62.js +0 -1
  225. /package/web/.next/static/{yv0Tq9-BtqVnENafaiFF6 → 49taRTn4m6kJfWu7WRS6O}/_buildManifest.js +0 -0
  226. /package/web/.next/static/{yv0Tq9-BtqVnENafaiFF6 → 49taRTn4m6kJfWu7WRS6O}/_clientMiddlewareManifest.json +0 -0
  227. /package/web/.next/static/{yv0Tq9-BtqVnENafaiFF6 → 49taRTn4m6kJfWu7WRS6O}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAoDrD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,IAG3C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAmJ7E"}
1
+ {"version":3,"file":"evidence.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqDrD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,IAG3C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAoJ7E"}
@@ -22,7 +22,7 @@
22
22
  */
23
23
  import yaml from 'js-yaml';
24
24
  import { isGraphBubbleUp } from '@langchain/langgraph';
25
- import { createNodeLogger, getCompletedPhases, markPhaseComplete, readSpecFile, retryExecute, buildExecutorOptions, } from './node-helpers.js';
25
+ import { createNodeLogger, getCompletedPhases, markPhaseComplete, readSpecFile, retryExecute, buildExecutorOptions, saveEvidenceManifest, } from './node-helpers.js';
26
26
  import { reportNodeStart } from '../heartbeat.js';
27
27
  import { recordPhaseStart, recordPhaseEnd } from '../phase-timing-context.js';
28
28
  import { updateNodeLifecycle } from '../lifecycle-context.js';
@@ -174,6 +174,7 @@ export function createEvidenceNode(executor) {
174
174
  throw new Error(`[evidence] ${message}`);
175
175
  }
176
176
  }
177
+ saveEvidenceManifest(state, allEvidence, log);
177
178
  markPhaseComplete(state.specDir, 'evidence', log);
178
179
  allMessages.unshift(`[evidence] Complete — ${allEvidence.length} evidence record(s) captured in ${attempt} attempt(s)`, ...(allEvidence.length === 0
179
180
  ? ['[evidence] Warning: no evidence records parsed from agent output']
@@ -1 +1 @@
1
- {"version":3,"file":"fast-implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgBrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CA0F7E"}
1
+ {"version":3,"file":"fast-implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAiBrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CA0F7E"}
@@ -10,10 +10,8 @@
10
10
  * dependency, returns async (state) => Partial<FeatureAgentState>.
11
11
  */
12
12
  import { execSync } from 'node:child_process';
13
- import { mkdirSync, writeFileSync } from 'node:fs';
14
- import { join, dirname } from 'node:path';
15
13
  import { isGraphBubbleUp } from '@langchain/langgraph';
16
- import { createNodeLogger, buildExecutorOptions, retryExecute, getCompletedPhases, markPhaseComplete, } from './node-helpers.js';
14
+ import { createNodeLogger, buildExecutorOptions, retryExecute, getCompletedPhases, markPhaseComplete, saveEvidenceManifest, } from './node-helpers.js';
17
15
  import { reportNodeStart } from '../heartbeat.js';
18
16
  import { recordPhaseStart, recordPhaseEnd } from '../phase-timing-context.js';
19
17
  import { updateNodeLifecycle } from '../lifecycle-context.js';
@@ -178,23 +176,3 @@ function hasNewCommits(cwd) {
178
176
  return false;
179
177
  }
180
178
  }
181
- /**
182
- * Save evidence manifest to the shep home evidence folder so the
183
- * merge review UI can read it without accessing graph state.
184
- */
185
- function saveEvidenceManifest(state, evidence, log) {
186
- if (evidence.length === 0)
187
- return;
188
- try {
189
- const cwd = state.worktreePath || state.repositoryPath;
190
- const repoHashDir = dirname(dirname(cwd));
191
- const evidenceDir = join(repoHashDir, 'evidence', state.featureId);
192
- mkdirSync(evidenceDir, { recursive: true });
193
- writeFileSync(join(evidenceDir, 'manifest.json'), JSON.stringify(evidence, null, 2), 'utf-8');
194
- log.info(`Saved evidence manifest to ${evidenceDir}/manifest.json`);
195
- }
196
- catch (err) {
197
- const msg = err instanceof Error ? err.message : String(err);
198
- log.error(`Failed to save evidence manifest: ${msg}`);
199
- }
200
- }
@@ -5,7 +5,7 @@
5
5
  * and error handling so every node follows the same patterns.
6
6
  */
7
7
  import type { IAgentExecutor, AgentExecutionOptions, AgentExecutionResult } from '../../../../../application/ports/output/agents/agent-executor.interface.js';
8
- import type { ApprovalGates } from '../../../../../domain/generated/output.js';
8
+ import type { ApprovalGates, Evidence } from '../../../../../domain/generated/output.js';
9
9
  import type { FeatureAgentState } from '../state.js';
10
10
  /**
11
11
  * Create a scoped logger that prefixes messages with the node name.
@@ -168,4 +168,9 @@ export declare function buildResumeContext(resumeReason: string | undefined): st
168
168
  * - Consistent state shape for success and failure
169
169
  */
170
170
  export declare function executeNode(nodeName: string, executor: IAgentExecutor, buildPrompt: (state: FeatureAgentState, log: NodeLogger) => string): (state: FeatureAgentState) => Promise<Partial<FeatureAgentState>>;
171
+ /**
172
+ * Save evidence manifest to the shep home evidence folder so the
173
+ * merge review UI can read it without accessing graph state.
174
+ */
175
+ export declare function saveEvidenceManifest(state: FeatureAgentState, evidence: Evidence[], log: ReturnType<typeof createNodeLogger>): void;
171
176
  //# sourceMappingURL=node-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,+DAA+D,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAUrD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAE7C,4DAA4D;gBAChD,IAAI;kBAGF,MAAM,GAAG,IAAI;mBAIZ,MAAM,GAAG,IAAI;EAK/B;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMtE;AAoBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iBAAiB,EACxB,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,EAC3D,QAAQ,CAAC,EAAE,MAAM,GAChB,qBAAqB,CAUvB;AAeD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQrD;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAQ3F;AAMD,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,mBAAmB,GAAG,eAAe,GAAG,SAAS,CAAC;AAMhG;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAKjE;AAED,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,qBAAqB,EAC9B,SAAS,CAAC,EAAE,YAAY,GACvB,OAAO,CAAC,oBAAoB,CAAC,CA6B/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAiB5F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOhG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAoB1F;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAa5F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,MAAM,CAiCT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAa3E;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,UAAU,KAAK,MAAM,GACjE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAqInE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,QAAQ,EAAE,EACpB,GAAG,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACvC,IAAI,CAaN"}
@@ -5,8 +5,8 @@
5
5
  * and error handling so every node follows the same patterns.
6
6
  */
7
7
  import yaml from 'js-yaml';
8
- import { readFileSync, writeFileSync, renameSync, unlinkSync } from 'node:fs';
9
- import { join } from 'node:path';
8
+ import { mkdirSync, readFileSync, writeFileSync, renameSync, unlinkSync } from 'node:fs';
9
+ import { join, dirname } from 'node:path';
10
10
  import { interrupt, isGraphBubbleUp } from '@langchain/langgraph';
11
11
  import { hasSettings, getSettings } from '../../../../services/settings.service.js';
12
12
  import { reportNodeStart } from '../heartbeat.js';
@@ -525,3 +525,23 @@ export function executeNode(nodeName, executor, buildPrompt) {
525
525
  }
526
526
  };
527
527
  }
528
+ /**
529
+ * Save evidence manifest to the shep home evidence folder so the
530
+ * merge review UI can read it without accessing graph state.
531
+ */
532
+ export function saveEvidenceManifest(state, evidence, log) {
533
+ if (evidence.length === 0)
534
+ return;
535
+ try {
536
+ const cwd = state.worktreePath || state.repositoryPath;
537
+ const repoHashDir = dirname(dirname(cwd));
538
+ const evidenceDir = join(repoHashDir, 'evidence', state.featureId);
539
+ mkdirSync(evidenceDir, { recursive: true });
540
+ writeFileSync(join(evidenceDir, 'manifest.json'), JSON.stringify(evidence, null, 2), 'utf-8');
541
+ log.info(`Saved evidence manifest to ${evidenceDir}/manifest.json`);
542
+ }
543
+ catch (err) {
544
+ const msg = err instanceof Error ? err.message : String(err);
545
+ log.error(`Failed to save evidence manifest: ${msg}`);
546
+ }
547
+ }
@@ -8,6 +8,8 @@ export interface AgentAuthStatus {
8
8
  label: string;
9
9
  /** CLI binary name (e.g. "claude", "gemini") */
10
10
  binaryName: string | null;
11
+ /** Shell command to install the tool (e.g. "npm install -g @anthropic-ai/claude-code") */
12
+ installCommand: string | null;
11
13
  /** Instructions to authenticate if not authenticated */
12
14
  authCommand: string | null;
13
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"check-agent-auth.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/check-agent-auth.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,wDAAwD;IACxD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA6FD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAiF/D"}
1
+ {"version":3,"file":"check-agent-auth.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/check-agent-auth.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0FAA0F;IAC1F,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA6FD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAwF/D"}
@@ -114,6 +114,7 @@ export async function checkAgentAuth() {
114
114
  authenticated: false,
115
115
  label: 'Unknown',
116
116
  binaryName: null,
117
+ installCommand: null,
117
118
  authCommand: null,
118
119
  };
119
120
  }
@@ -128,16 +129,19 @@ export async function checkAgentAuth() {
128
129
  authenticated: true,
129
130
  label,
130
131
  binaryName: null,
132
+ installCommand: null,
131
133
  authCommand: null,
132
134
  };
133
135
  }
134
- // Check if tool is installed
136
+ // Check if tool is installed (also grab install command from metadata)
135
137
  let installed = false;
138
+ let installCommand = null;
136
139
  try {
137
140
  const useCase = resolve('ListToolsUseCase');
138
141
  const tools = await useCase.execute();
139
142
  const tool = tools.find((t) => t.id === toolId);
140
143
  installed = tool?.status.status === 'available';
144
+ installCommand = tool?.installCommand ?? null;
141
145
  }
142
146
  catch {
143
147
  installed = false;
@@ -149,6 +153,7 @@ export async function checkAgentAuth() {
149
153
  authenticated: false,
150
154
  label,
151
155
  binaryName,
156
+ installCommand,
152
157
  authCommand: binaryName ? `Install ${label} first` : null,
153
158
  };
154
159
  }
@@ -161,6 +166,7 @@ export async function checkAgentAuth() {
161
166
  authenticated: false,
162
167
  label,
163
168
  binaryName,
169
+ installCommand,
164
170
  authCommand: binaryName,
165
171
  };
166
172
  }
@@ -175,6 +181,7 @@ export async function checkAgentAuth() {
175
181
  authenticated,
176
182
  label,
177
183
  binaryName,
184
+ installCommand,
178
185
  authCommand: authenticated ? null : binaryName,
179
186
  };
180
187
  }
@@ -0,0 +1,14 @@
1
+ export interface ToolStatusEntry {
2
+ installed: boolean;
3
+ version: string | null;
4
+ /** Platform-specific install command from tool JSON metadata */
5
+ installCommand: string | null;
6
+ /** Documentation/website URL */
7
+ installUrl: string | null;
8
+ }
9
+ export interface ToolStatusResult {
10
+ git: ToolStatusEntry;
11
+ gh: ToolStatusEntry;
12
+ }
13
+ export declare function checkToolStatus(): Promise<ToolStatusResult>;
14
+ //# sourceMappingURL=check-tool-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-tool-status.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/check-tool-status.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gEAAgE;IAChE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gCAAgC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,eAAe,CAAC;IACrB,EAAE,EAAE,eAAe,CAAC;CACrB;AAwBD,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA8BjE"}
@@ -0,0 +1,53 @@
1
+ 'use server';
2
+ import { execFile } from 'node:child_process';
3
+ import { IS_WINDOWS } from '../../../../../packages/core/src/infrastructure/platform.js';
4
+ import { resolve } from '../../lib/server-container.js';
5
+ function getVersion(command, args) {
6
+ return new Promise((resolve) => {
7
+ try {
8
+ const opts = IS_WINDOWS ? { timeout: 5000, windowsHide: true } : { timeout: 5000 };
9
+ execFile(command, args, opts, (error, stdout) => {
10
+ if (error) {
11
+ resolve({ installed: false, version: null });
12
+ return;
13
+ }
14
+ // Extract version number from output like "git version 2.43.0" or "gh version 2.40.1"
15
+ const match = stdout.match(/(\d+\.\d+(?:\.\d+)?)/);
16
+ resolve({ installed: true, version: match?.[1] ?? null });
17
+ });
18
+ }
19
+ catch {
20
+ resolve({ installed: false, version: null });
21
+ }
22
+ });
23
+ }
24
+ export async function checkToolStatus() {
25
+ // Run version checks and tool metadata lookup in parallel
26
+ const [gitVersion, ghVersion, tools] = await Promise.all([
27
+ getVersion('git', ['--version']),
28
+ getVersion('gh', ['--version']),
29
+ (async () => {
30
+ try {
31
+ const useCase = resolve('ListToolsUseCase');
32
+ return await useCase.execute();
33
+ }
34
+ catch {
35
+ return [];
36
+ }
37
+ })(),
38
+ ]);
39
+ const gitTool = tools.find((t) => t.id === 'git');
40
+ const ghTool = tools.find((t) => t.id === 'gh');
41
+ return {
42
+ git: {
43
+ ...gitVersion,
44
+ installCommand: gitTool?.installCommand ?? null,
45
+ installUrl: gitTool?.website ?? 'https://git-scm.com',
46
+ },
47
+ gh: {
48
+ ...ghVersion,
49
+ installCommand: ghTool?.installCommand ?? null,
50
+ installUrl: ghTool?.website ?? 'https://cli.github.com',
51
+ },
52
+ };
53
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAS1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAU1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,GAAG,CACf,MAAM,EACN;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CACzF,CAAC;IACF,0DAA0D;IAC1D,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC;CACjE;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,EAClC,OAAO,CAAC,EAAE,sBAAsB,GAC/B;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAoG5C"}
1
+ {"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAS1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,GAAG,CACf,MAAM,EACN;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CACzF,CAAC;IACF,0DAA0D;IAC1D,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC;CACjE;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,EAClC,OAAO,CAAC,EAAE,sBAAsB,GAC/B;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAoG5C"}
@@ -1,15 +1,7 @@
1
- import { createHash } from 'node:crypto';
2
- import path from 'node:path';
3
1
  import { AgentRunStatus } from '../../../../packages/core/src/domain/generated/output.js';
4
2
  import { deriveNodeState, deriveProgress, deriveLifecycle, } from '../components/common/feature-node/derive-feature-state.js';
5
3
  import { isProcessAlive } from '../../../../packages/core/src/infrastructure/services/process/is-process-alive.js';
6
- import { getShepHomeDir } from '../../../../packages/core/src/infrastructure/services/filesystem/shep-directory.service.js';
7
- /** Compute the worktree path for a feature, matching WorktreeService.getWorktreePath() */
8
- function computeWorktreePath(repoPath, branch) {
9
- const repoHash = createHash('sha256').update(repoPath).digest('hex').slice(0, 16);
10
- const slug = branch.replace(/\//g, '-');
11
- return path.join(getShepHomeDir(), 'repos', repoHash, 'wt', slug).replace(/\\/g, '/');
12
- }
4
+ import { computeWorktreePath } from '../../../../packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js';
13
5
  export function buildGraphNodes(repositories, featuresWithRuns, options) {
14
6
  // Normalize path separators so Windows backslash paths match forward-slash paths
15
7
  const normalizePath = (p) => p.replace(/\\/g, '/');
@@ -6,6 +6,23 @@ export type FeatureNodeState = 'creating' | 'running' | 'action-required' | 'don
6
6
  export type FeatureLifecyclePhase = 'pending' | 'requirements' | 'research' | 'implementation' | 'review' | 'deploy' | 'maintain';
7
7
  /** Human-readable display labels for lifecycle phases. */
8
8
  export declare const lifecycleDisplayLabels: Record<FeatureLifecyclePhase, string>;
9
+ /** Left border color for each lifecycle phase. */
10
+ export declare const lifecycleBorderColors: Record<FeatureLifecyclePhase, string>;
11
+ /** Accent bar background color for each lifecycle phase. */
12
+ export declare const lifecycleAccentColors: Record<FeatureLifecyclePhase, string>;
13
+ /** Phase badge: short letter, color classes, and user-friendly tooltip. */
14
+ export declare const lifecyclePhaseBadge: Record<FeatureLifecyclePhase, {
15
+ letter: string;
16
+ bg: string;
17
+ text: string;
18
+ dot: string;
19
+ tooltip: string;
20
+ description: string;
21
+ }>;
22
+ /** State-based left border overrides (takes precedence over lifecycle). */
23
+ export declare const stateBorderColors: Partial<Record<FeatureNodeState, string>>;
24
+ /** State-based accent bar overrides (takes precedence over lifecycle). */
25
+ export declare const stateAccentColors: Partial<Record<FeatureNodeState, string>>;
9
26
  /** Present-participle verbs for the running badge, keyed by lifecycle phase. */
10
27
  export declare const lifecycleRunningVerbs: Record<FeatureLifecyclePhase, string>;
11
28
  export interface FeatureNodeData {
@@ -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":"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"}
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":"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"}
@@ -9,6 +9,97 @@ export const lifecycleDisplayLabels = {
9
9
  deploy: 'DEPLOY & QA',
10
10
  maintain: 'COMPLETED',
11
11
  };
12
+ /** Left border color for each lifecycle phase. */
13
+ export const lifecycleBorderColors = {
14
+ pending: 'border-l-slate-400',
15
+ requirements: 'border-l-violet-500',
16
+ research: 'border-l-cyan-500',
17
+ implementation: 'border-l-blue-500',
18
+ review: 'border-l-amber-500',
19
+ deploy: 'border-l-emerald-500',
20
+ maintain: 'border-l-gray-400',
21
+ };
22
+ /** Accent bar background color for each lifecycle phase. */
23
+ export const lifecycleAccentColors = {
24
+ pending: 'bg-slate-400',
25
+ requirements: 'bg-violet-500',
26
+ research: 'bg-cyan-500',
27
+ implementation: 'bg-blue-500',
28
+ review: 'bg-amber-500',
29
+ deploy: 'bg-emerald-500',
30
+ maintain: 'bg-gray-400',
31
+ };
32
+ /** Phase badge: short letter, color classes, and user-friendly tooltip. */
33
+ export const lifecyclePhaseBadge = {
34
+ pending: {
35
+ letter: 'P',
36
+ bg: 'bg-stone-100 dark:bg-stone-800',
37
+ text: 'text-stone-500 dark:text-stone-400',
38
+ dot: 'bg-stone-400',
39
+ tooltip: 'Pending',
40
+ description: 'Waiting to start — the feature is queued and ready to go.',
41
+ },
42
+ requirements: {
43
+ letter: 'R',
44
+ bg: 'bg-fuchsia-100 dark:bg-fuchsia-900/40',
45
+ text: 'text-fuchsia-600 dark:text-fuchsia-300',
46
+ dot: 'bg-fuchsia-500',
47
+ tooltip: 'Requirements',
48
+ description: 'Gathering what to build — the AI is writing a product requirements document (PRD) based on your request.',
49
+ },
50
+ research: {
51
+ letter: 'D',
52
+ bg: 'bg-teal-100 dark:bg-teal-900/40',
53
+ text: 'text-teal-600 dark:text-teal-300',
54
+ dot: 'bg-teal-500',
55
+ tooltip: 'Research',
56
+ description: 'Exploring your codebase — the AI is analyzing existing code, patterns, and dependencies to plan the best approach.',
57
+ },
58
+ implementation: {
59
+ letter: 'I',
60
+ bg: 'bg-indigo-100 dark:bg-indigo-900/40',
61
+ text: 'text-indigo-600 dark:text-indigo-300',
62
+ dot: 'bg-indigo-500',
63
+ tooltip: 'Implementation',
64
+ description: 'Writing code — the AI is implementing the feature, writing tests, and making sure everything compiles.',
65
+ },
66
+ review: {
67
+ letter: 'M',
68
+ bg: 'bg-orange-100 dark:bg-orange-900/40',
69
+ text: 'text-orange-600 dark:text-orange-300',
70
+ dot: 'bg-orange-500',
71
+ tooltip: 'Merge Review',
72
+ description: 'Ready to merge — the code is complete. Review the changes and approve to merge into your repository.',
73
+ },
74
+ deploy: {
75
+ letter: 'Q',
76
+ bg: 'bg-lime-100 dark:bg-lime-900/40',
77
+ text: 'text-lime-600 dark:text-lime-300',
78
+ dot: 'bg-lime-500',
79
+ tooltip: 'Deploy & QA',
80
+ description: 'Deploying and testing — the feature is being deployed to a preview environment for quality checks.',
81
+ },
82
+ maintain: {
83
+ letter: '✓',
84
+ bg: 'bg-emerald-100 dark:bg-emerald-900/40',
85
+ text: 'text-emerald-500 dark:text-emerald-400',
86
+ dot: 'bg-emerald-500',
87
+ tooltip: 'Completed',
88
+ description: 'All done — the feature has been merged and delivered successfully.',
89
+ },
90
+ };
91
+ /** State-based left border overrides (takes precedence over lifecycle). */
92
+ export const stateBorderColors = {
93
+ blocked: 'border-l-gray-400',
94
+ error: 'border-l-red-500',
95
+ deleting: 'border-l-gray-300',
96
+ };
97
+ /** State-based accent bar overrides (takes precedence over lifecycle). */
98
+ export const stateAccentColors = {
99
+ blocked: 'bg-gray-400',
100
+ error: 'bg-red-500',
101
+ deleting: 'bg-gray-300',
102
+ };
12
103
  /** Present-participle verbs for the running badge, keyed by lifecycle phase. */
13
104
  export const lifecycleRunningVerbs = {
14
105
  pending: 'Waiting to start',
@@ -1 +1 @@
1
- {"version":3,"file":"feature-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/feature-node.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA6DnE,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,2CAqWA"}
1
+ {"version":3,"file":"feature-node.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-node/feature-node.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA4CnE,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,2CA6WA"}