@shepai/cli 1.75.0-pr237.5e7fa4f → 1.76.0-pr238.49844a7

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 (242) hide show
  1. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +0 -1
  2. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +1 -4
  4. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +2 -5
  7. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +0 -2
  8. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +0 -1
  10. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  11. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +0 -3
  12. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +0 -1
  13. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +1 -10
  15. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.js +0 -1
  17. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -1
  18. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +3 -8
  20. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  21. package/dist/src/presentation/cli/commands/feat/new.command.js +0 -2
  22. package/dist/src/presentation/web/app/actions/create-feature.d.ts +0 -2
  23. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  24. package/dist/src/presentation/web/app/actions/create-feature.js +1 -3
  25. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +0 -2
  26. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -5
  28. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +0 -18
  29. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  30. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +0 -49
  31. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  32. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +9 -30
  33. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -4
  34. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  35. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -4
  36. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +4 -4
  37. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  38. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +14 -6
  39. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +2 -3
  40. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  41. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +8 -81
  42. package/dist/src/presentation/web/hooks/use-graph-state.d.ts +0 -2
  43. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
  44. package/dist/src/presentation/web/hooks/use-graph-state.js +0 -4
  45. package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts +7 -11
  46. package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts.map +1 -1
  47. package/dist/src/presentation/web/hooks/use-viewport-persistence.js +59 -12
  48. package/dist/tsconfig.build.tsbuildinfo +1 -1
  49. package/package.json +1 -1
  50. package/web/.next/BUILD_ID +1 -1
  51. package/web/.next/build-manifest.json +2 -2
  52. package/web/.next/cache/.previewinfo +1 -1
  53. package/web/.next/cache/.rscinfo +1 -1
  54. package/web/.next/cache/.tsbuildinfo +1 -1
  55. package/web/.next/cache/config.json +3 -3
  56. package/web/.next/fallback-build-manifest.json +2 -2
  57. package/web/.next/prerender-manifest.json +3 -3
  58. package/web/.next/required-server-files.js +1 -1
  59. package/web/.next/required-server-files.json +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  61. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  62. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  64. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  67. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  70. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  73. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  76. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  79. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/_global-error.html +2 -2
  82. package/web/.next/server/app/_global-error.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  85. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  86. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  87. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  88. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  89. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  91. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  92. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  93. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  95. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  97. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  98. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  99. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  100. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  101. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  102. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  103. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  105. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  106. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
  107. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  108. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +1 -1
  109. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  119. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  121. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  123. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  125. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/{_70427cc3._.js → _e091d951._.js} +3 -3
  127. package/web/.next/server/chunks/ssr/{_70427cc3._.js.map → _e091d951._.js.map} +1 -1
  128. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  129. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  131. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  133. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  135. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  137. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  139. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  140. package/web/.next/server/pages/500.html +2 -2
  141. package/web/.next/server/server-reference-manifest.js +1 -1
  142. package/web/.next/server/server-reference-manifest.json +22 -22
  143. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  144. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  145. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  146. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  147. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  148. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  149. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  150. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  151. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  152. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  153. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  154. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  155. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  156. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  157. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  158. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  159. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  160. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  162. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  163. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  164. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  165. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  166. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  167. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  168. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  169. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  170. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  171. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  172. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  173. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  174. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  175. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  176. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  177. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  178. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  179. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  180. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  181. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  182. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  183. 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
  184. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  185. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  186. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  187. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  188. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  189. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  190. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  191. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  192. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  193. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  194. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  195. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  196. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  197. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  198. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  199. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_70427cc3._.js → _e091d951._.js} +3 -3
  200. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  201. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  202. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  203. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  204. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  205. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  206. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  207. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  208. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +22 -22
  209. package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +1 -6
  210. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +0 -57
  211. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +0 -21
  212. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +20 -35
  213. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +3 -7
  214. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +8 -93
  215. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +30 -10
  216. package/web/.next/standalone/src/presentation/web/hooks/use-graph-state.ts +0 -7
  217. package/web/.next/standalone/src/presentation/web/hooks/use-viewport-persistence.ts +68 -17
  218. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  219. package/web/.next/static/chunks/{bafdd9797848cd20.js → 067dc08b689d8955.js} +3 -3
  220. package/web/.next/static/chunks/{a88681644bdb457b.js → 1e7380ea9e3c019e.js} +1 -1
  221. package/web/.next/static/chunks/{ed9bf11850c038ad.js → 3d88e23beec6608e.js} +1 -1
  222. package/web/.next/static/chunks/{9de39ba6f1d109ce.js → 5d28ad531ad6b65c.js} +1 -1
  223. package/web/.next/static/chunks/{9fd70802deb2e4b6.js → 65b5bd3861131047.js} +1 -1
  224. package/web/.next/static/chunks/{31a91284309556ca.js → 71d33d172eb1f602.js} +1 -1
  225. package/web/.next/static/chunks/8305a3f93197e23a.js +1 -0
  226. package/web/.next/static/chunks/{224919f6f72a4a90.js → 8fe874fd92309313.js} +1 -1
  227. package/web/.next/static/chunks/{ab7bce7118a0f933.js → eb2dc4b01d975cef.js} +1 -1
  228. package/web/.next/trace +1 -1
  229. package/web/.next/trace-build +1 -1
  230. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +0 -220
  231. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +0 -1
  232. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.js +0 -66
  233. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts +0 -21
  234. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +0 -1
  235. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +0 -60
  236. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts +0 -25
  237. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +0 -1
  238. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +0 -176
  239. package/web/.next/static/chunks/9b07281f9fa372ca.js +0 -1
  240. /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → IVTB-1bqXTCz0djYEeD2G}/_buildManifest.js +0 -0
  241. /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → IVTB-1bqXTCz0djYEeD2G}/_clientMiddlewareManifest.json +0 -0
  242. /package/web/.next/static/{Z3nGW8HgUl_Ajpr-2arJQ → IVTB-1bqXTCz0djYEeD2G}/_ssgManifest.js +0 -0
@@ -1,220 +0,0 @@
1
- /**
2
- * Fast Feature Agent Graph Factory
3
- *
4
- * Creates a LangGraph StateGraph with only 2 nodes: fast-implement → merge.
5
- * This is the fast-mode alternative to createFeatureAgentGraph() which has
6
- * 15+ nodes. The merge node and its CI watch/fix loop are reused via
7
- * composition from the full graph's createMergeNode().
8
- *
9
- * Uses the same FeatureAgentAnnotation state shape as the full graph,
10
- * enabling checkpointing, resume, and identical worker lifecycle handling.
11
- */
12
- import { type BaseCheckpointSaver } from '@langchain/langgraph';
13
- import type { IAgentExecutor } from '../../../../application/ports/output/agents/agent-executor.interface.js';
14
- import { type MergeNodeDeps } from './nodes/merge/merge.node.js';
15
- export { FeatureAgentAnnotation, type FeatureAgentState } from './state.js';
16
- /**
17
- * Dependencies needed to build the fast feature agent graph.
18
- * Same shape as FeatureAgentGraphDeps for consistency.
19
- */
20
- export interface FastFeatureAgentGraphDeps {
21
- executor: IAgentExecutor;
22
- mergeNodeDeps?: Omit<MergeNodeDeps, 'executor'>;
23
- }
24
- /**
25
- * Factory function that creates and compiles the fast-mode feature agent graph.
26
- *
27
- * The graph defines a minimal workflow:
28
- * START → fast-implement → merge → conditional(reexecute or END)
29
- *
30
- * When merge is rejected, routeReexecution routes back to fast-implement
31
- * for a fresh implementation pass.
32
- *
33
- * @param depsOrExecutor - Graph dependencies or a legacy executor
34
- * @param checkpointer - Optional checkpoint saver for state persistence
35
- * @returns A compiled LangGraph ready to be invoked
36
- */
37
- export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureAgentGraphDeps | IAgentExecutor, checkpointer?: BaseCheckpointSaver): import("@langchain/langgraph").CompiledStateGraph<{
38
- featureId: string;
39
- repositoryPath: string;
40
- specDir: string;
41
- worktreePath: string;
42
- currentNode: string;
43
- error: string | null;
44
- approvalGates: import("../../../../domain/index.js").ApprovalGates | undefined;
45
- messages: string[];
46
- validationRetries: number;
47
- lastValidationTarget: string;
48
- lastValidationErrors: string[];
49
- _approvalAction: string | null;
50
- _rejectionFeedback: string | null;
51
- _needsReexecution: boolean;
52
- prUrl: string | null;
53
- prNumber: number | null;
54
- commitHash: string | null;
55
- ciStatus: string | null;
56
- push: boolean;
57
- openPr: boolean;
58
- ciFixAttempts: number;
59
- ciFixHistory: import("../../../../domain/index.js").CiFixRecord[];
60
- ciFixStatus: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted";
61
- }, {
62
- featureId?: string | undefined;
63
- repositoryPath?: string | undefined;
64
- specDir?: string | undefined;
65
- worktreePath?: string | undefined;
66
- currentNode?: string | undefined;
67
- error?: string | null | undefined;
68
- approvalGates?: import("../../../../domain/index.js").ApprovalGates | undefined;
69
- messages?: string[] | undefined;
70
- validationRetries?: number | undefined;
71
- lastValidationTarget?: string | undefined;
72
- lastValidationErrors?: string[] | undefined;
73
- _approvalAction?: string | null | undefined;
74
- _rejectionFeedback?: string | null | undefined;
75
- _needsReexecution?: boolean | undefined;
76
- prUrl?: string | null | undefined;
77
- prNumber?: number | null | undefined;
78
- commitHash?: string | null | undefined;
79
- ciStatus?: string | null | undefined;
80
- push?: boolean | undefined;
81
- openPr?: boolean | undefined;
82
- ciFixAttempts?: number | undefined;
83
- ciFixHistory?: import("../../../../domain/index.js").CiFixRecord[] | undefined;
84
- ciFixStatus?: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted" | undefined;
85
- }, "__start__" | "fast-implement", {
86
- featureId: {
87
- (): import("@langchain/langgraph").LastValue<string>;
88
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
89
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
90
- };
91
- repositoryPath: {
92
- (): import("@langchain/langgraph").LastValue<string>;
93
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
94
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
95
- };
96
- specDir: {
97
- (): import("@langchain/langgraph").LastValue<string>;
98
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
99
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
100
- };
101
- worktreePath: {
102
- (): import("@langchain/langgraph").LastValue<string>;
103
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
104
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
105
- };
106
- currentNode: {
107
- (): import("@langchain/langgraph").LastValue<string>;
108
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
109
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
110
- };
111
- error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
112
- approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
113
- messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
114
- validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
115
- lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
116
- lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
117
- _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
118
- _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
119
- _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
120
- prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
121
- prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
122
- commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
123
- ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
124
- push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
125
- openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
126
- ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
127
- ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
128
- ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
129
- }, {
130
- featureId: {
131
- (): import("@langchain/langgraph").LastValue<string>;
132
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
133
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
134
- };
135
- repositoryPath: {
136
- (): import("@langchain/langgraph").LastValue<string>;
137
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
138
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
139
- };
140
- specDir: {
141
- (): import("@langchain/langgraph").LastValue<string>;
142
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
143
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
144
- };
145
- worktreePath: {
146
- (): import("@langchain/langgraph").LastValue<string>;
147
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
148
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
149
- };
150
- currentNode: {
151
- (): import("@langchain/langgraph").LastValue<string>;
152
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
153
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
154
- };
155
- error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
156
- approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
157
- messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
158
- validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
159
- lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
160
- lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
161
- _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
162
- _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
163
- _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
164
- prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
165
- prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
166
- commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
167
- ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
168
- push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
169
- openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
170
- ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
171
- ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
172
- ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
173
- }, import("@langchain/langgraph").StateDefinition, {
174
- "fast-implement": Partial<import("@langchain/langgraph").StateType<{
175
- featureId: {
176
- (): import("@langchain/langgraph").LastValue<string>;
177
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
178
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
179
- };
180
- repositoryPath: {
181
- (): import("@langchain/langgraph").LastValue<string>;
182
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
183
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
184
- };
185
- specDir: {
186
- (): import("@langchain/langgraph").LastValue<string>;
187
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
188
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
189
- };
190
- worktreePath: {
191
- (): import("@langchain/langgraph").LastValue<string>;
192
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
193
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
194
- };
195
- currentNode: {
196
- (): import("@langchain/langgraph").LastValue<string>;
197
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
198
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
199
- };
200
- error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
201
- approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
202
- messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
203
- validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
204
- lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
205
- lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
206
- _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
207
- _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
208
- _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
209
- prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
210
- prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
211
- commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
212
- ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
213
- push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
214
- openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
215
- ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
216
- ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
217
- ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
218
- }>>;
219
- }, unknown, unknown>;
220
- //# sourceMappingURL=fast-feature-agent-graph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fast-feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAGpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,yBAAyB,GAAG,cAAc,EAC1D,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6BnC"}
@@ -1,66 +0,0 @@
1
- /**
2
- * Fast Feature Agent Graph Factory
3
- *
4
- * Creates a LangGraph StateGraph with only 2 nodes: fast-implement → merge.
5
- * This is the fast-mode alternative to createFeatureAgentGraph() which has
6
- * 15+ nodes. The merge node and its CI watch/fix loop are reused via
7
- * composition from the full graph's createMergeNode().
8
- *
9
- * Uses the same FeatureAgentAnnotation state shape as the full graph,
10
- * enabling checkpointing, resume, and identical worker lifecycle handling.
11
- */
12
- import { StateGraph, START, END } from '@langchain/langgraph';
13
- import { FeatureAgentAnnotation } from './state.js';
14
- import { createFastImplementNode } from './nodes/fast-implement.node.js';
15
- import { createMergeNode } from './nodes/merge/merge.node.js';
16
- // Re-export for consumers
17
- export { FeatureAgentAnnotation } from './state.js';
18
- /**
19
- * Conditional edge: route back to fast-implement on merge rejection,
20
- * otherwise proceed to END.
21
- *
22
- * Mirrors the routeReexecution() pattern from feature-agent-graph.ts.
23
- */
24
- function routeReexecution(selfNode, nextNode) {
25
- return (state) => {
26
- if (state._needsReexecution)
27
- return selfNode;
28
- return nextNode;
29
- };
30
- }
31
- /**
32
- * Factory function that creates and compiles the fast-mode feature agent graph.
33
- *
34
- * The graph defines a minimal workflow:
35
- * START → fast-implement → merge → conditional(reexecute or END)
36
- *
37
- * When merge is rejected, routeReexecution routes back to fast-implement
38
- * for a fresh implementation pass.
39
- *
40
- * @param depsOrExecutor - Graph dependencies or a legacy executor
41
- * @param checkpointer - Optional checkpoint saver for state persistence
42
- * @returns A compiled LangGraph ready to be invoked
43
- */
44
- export function createFastFeatureAgentGraph(depsOrExecutor, checkpointer) {
45
- // Support legacy signature: createFastFeatureAgentGraph(executor, checkpointer)
46
- const deps = 'execute' in depsOrExecutor ? { executor: depsOrExecutor } : depsOrExecutor;
47
- const { executor } = deps;
48
- const graph = new StateGraph(FeatureAgentAnnotation).addNode('fast-implement', createFastImplementNode(executor));
49
- // Wire merge node when deps are provided
50
- if (deps.mergeNodeDeps) {
51
- const mergeNodeDeps = {
52
- executor,
53
- ...deps.mergeNodeDeps,
54
- };
55
- graph
56
- .addNode('merge', createMergeNode(mergeNodeDeps))
57
- .addEdge(START, 'fast-implement')
58
- .addEdge('fast-implement', 'merge')
59
- .addConditionalEdges('merge', routeReexecution('fast-implement', END));
60
- }
61
- else {
62
- // Without merge deps, fast-implement goes directly to END
63
- graph.addEdge(START, 'fast-implement').addEdge('fast-implement', END);
64
- }
65
- return graph.compile({ checkpointer });
66
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * Fast-Implement Node
3
- *
4
- * Single-pass implementation node for fast mode. Builds a prompt from
5
- * the user's query plus lightweight codebase context, calls the executor
6
- * once, and returns. Does NOT handle commit/push/PR — that's the merge
7
- * node's job.
8
- *
9
- * Follows the same factory pattern as other nodes: takes executor
10
- * dependency, returns async (state) => Partial<FeatureAgentState>.
11
- */
12
- import type { IAgentExecutor } from '../../../../../application/ports/output/agents/agent-executor.interface.js';
13
- import type { FeatureAgentState } from '../state.js';
14
- /**
15
- * Factory that creates the fast-implement node function.
16
- *
17
- * @param executor - The agent executor to use for implementation
18
- * @returns A LangGraph node function
19
- */
20
- export declare function createFastImplementNode(executor: IAgentExecutor): (state: FeatureAgentState) => Promise<Partial<FeatureAgentState>>;
21
- //# sourceMappingURL=fast-implement.node.d.ts.map
@@ -1 +0,0 @@
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;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAwC7E"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Fast-Implement Node
3
- *
4
- * Single-pass implementation node for fast mode. Builds a prompt from
5
- * the user's query plus lightweight codebase context, calls the executor
6
- * once, and returns. Does NOT handle commit/push/PR — that's the merge
7
- * node's job.
8
- *
9
- * Follows the same factory pattern as other nodes: takes executor
10
- * dependency, returns async (state) => Partial<FeatureAgentState>.
11
- */
12
- import { isGraphBubbleUp } from '@langchain/langgraph';
13
- import { createNodeLogger, buildExecutorOptions, retryExecute } from './node-helpers.js';
14
- import { reportNodeStart } from '../heartbeat.js';
15
- import { recordPhaseStart, recordPhaseEnd } from '../phase-timing-context.js';
16
- import { updateNodeLifecycle } from '../lifecycle-context.js';
17
- import { buildFastImplementPrompt } from './prompts/fast-implement.prompt.js';
18
- /**
19
- * Factory that creates the fast-implement node function.
20
- *
21
- * @param executor - The agent executor to use for implementation
22
- * @returns A LangGraph node function
23
- */
24
- export function createFastImplementNode(executor) {
25
- const log = createNodeLogger('fast-implement');
26
- return async (state) => {
27
- log.info('Starting fast implementation');
28
- reportNodeStart('fast-implement');
29
- await updateNodeLifecycle('fast-implement');
30
- const startTime = Date.now();
31
- const timingId = await recordPhaseStart('fast-implement');
32
- try {
33
- const prompt = buildFastImplementPrompt(state);
34
- const options = buildExecutorOptions(state);
35
- log.info(`Executing agent at cwd=${options.cwd}`);
36
- log.info(`Prompt length: ${prompt.length} chars`);
37
- const result = await retryExecute(executor, prompt, options, { logger: log });
38
- const durationMs = Date.now() - startTime;
39
- const elapsed = (durationMs / 1000).toFixed(1);
40
- log.info(`Complete (${result.result.length} chars, ${elapsed}s)`);
41
- await recordPhaseEnd(timingId, durationMs);
42
- return {
43
- currentNode: 'fast-implement',
44
- messages: [`[fast-implement] Complete (${result.result.length} chars, ${elapsed}s)`],
45
- _needsReexecution: false,
46
- };
47
- }
48
- catch (err) {
49
- if (isGraphBubbleUp(err))
50
- throw err;
51
- const message = err instanceof Error ? err.message : String(err);
52
- const durationMs = Date.now() - startTime;
53
- const elapsed = (durationMs / 1000).toFixed(1);
54
- log.error(`${message} (after ${elapsed}s)`);
55
- await recordPhaseEnd(timingId, durationMs);
56
- // Throw so LangGraph does NOT checkpoint this node as "completed".
57
- throw new Error(`[fast-implement] ${message}`);
58
- }
59
- };
60
- }
@@ -1,25 +0,0 @@
1
- /**
2
- * Fast-Implement Prompt Builder
3
- *
4
- * Builds a single-pass implementation prompt for fast mode.
5
- * Combines the user's raw query with lightweight codebase context
6
- * (CLAUDE.md, package.json, shallow directory listing).
7
- *
8
- * The prompt instructs the executor to implement changes and run tests,
9
- * but NOT to commit, push, or create PRs (that's the merge node's job).
10
- */
11
- import type { FeatureAgentState } from '../../state.js';
12
- /**
13
- * Build the fast-implement prompt from user query + codebase context.
14
- *
15
- * The prompt includes:
16
- * 1. User's raw query (from spec.yaml userQuery field)
17
- * 2. CLAUDE.md content (if exists)
18
- * 3. package.json (if exists)
19
- * 4. Shallow directory listing (depth 1-2)
20
- *
21
- * Instructs the executor to implement, test, and validate — but NOT
22
- * commit/push/PR (that's the merge node's job).
23
- */
24
- export declare function buildFastImplementPrompt(state: FeatureAgentState): string;
25
- //# sourceMappingURL=fast-implement.prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fast-implement.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA+FxD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAiEzE"}
@@ -1,176 +0,0 @@
1
- /**
2
- * Fast-Implement Prompt Builder
3
- *
4
- * Builds a single-pass implementation prompt for fast mode.
5
- * Combines the user's raw query with lightweight codebase context
6
- * (CLAUDE.md, package.json, shallow directory listing).
7
- *
8
- * The prompt instructs the executor to implement changes and run tests,
9
- * but NOT to commit, push, or create PRs (that's the merge node's job).
10
- */
11
- import { readFileSync, readdirSync, statSync } from 'node:fs';
12
- import { join } from 'node:path';
13
- import yaml from 'js-yaml';
14
- import { readSpecFile } from '../node-helpers.js';
15
- /**
16
- * Read a file from the worktree, returning empty string if not found.
17
- */
18
- function readWorktreeFile(worktreePath, filename) {
19
- try {
20
- return readFileSync(join(worktreePath, filename), 'utf-8');
21
- }
22
- catch {
23
- return '';
24
- }
25
- }
26
- /**
27
- * Build a shallow directory listing (depth 1-2) of the worktree.
28
- * Returns a tree-style string. Skips common noise directories.
29
- */
30
- function buildDirectoryListing(worktreePath) {
31
- const SKIP_DIRS = new Set([
32
- 'node_modules',
33
- '.git',
34
- '.next',
35
- 'dist',
36
- 'build',
37
- 'coverage',
38
- '.turbo',
39
- '.cache',
40
- '.shep',
41
- ]);
42
- const lines = [];
43
- try {
44
- const topLevel = readdirSync(worktreePath);
45
- for (const entry of topLevel) {
46
- if (SKIP_DIRS.has(entry))
47
- continue;
48
- const fullPath = join(worktreePath, entry);
49
- let isDir = false;
50
- try {
51
- isDir = statSync(fullPath).isDirectory();
52
- }
53
- catch {
54
- continue;
55
- }
56
- if (isDir) {
57
- lines.push(`${entry}/`);
58
- try {
59
- const children = readdirSync(fullPath);
60
- for (const child of children) {
61
- if (SKIP_DIRS.has(child))
62
- continue;
63
- const childPath = join(fullPath, child);
64
- let childIsDir = false;
65
- try {
66
- childIsDir = statSync(childPath).isDirectory();
67
- }
68
- catch {
69
- continue;
70
- }
71
- lines.push(` ${child}${childIsDir ? '/' : ''}`);
72
- }
73
- }
74
- catch {
75
- // Cannot read subdirectory — skip
76
- }
77
- }
78
- else {
79
- lines.push(entry);
80
- }
81
- }
82
- }
83
- catch {
84
- return '(unable to list directory)';
85
- }
86
- return lines.join('\n');
87
- }
88
- /**
89
- * Extract the user query from spec.yaml's userQuery field.
90
- * Falls back to the raw YAML content if parsing fails.
91
- */
92
- function extractUserQuery(specDir) {
93
- const specContent = readSpecFile(specDir, 'spec.yaml');
94
- if (!specContent)
95
- return '';
96
- try {
97
- const data = yaml.load(specContent);
98
- const userQuery = data?.userQuery;
99
- if (typeof userQuery === 'string' && userQuery.trim()) {
100
- return userQuery.trim();
101
- }
102
- }
103
- catch {
104
- // Fall through to raw content
105
- }
106
- return specContent;
107
- }
108
- /**
109
- * Build the fast-implement prompt from user query + codebase context.
110
- *
111
- * The prompt includes:
112
- * 1. User's raw query (from spec.yaml userQuery field)
113
- * 2. CLAUDE.md content (if exists)
114
- * 3. package.json (if exists)
115
- * 4. Shallow directory listing (depth 1-2)
116
- *
117
- * Instructs the executor to implement, test, and validate — but NOT
118
- * commit/push/PR (that's the merge node's job).
119
- */
120
- export function buildFastImplementPrompt(state) {
121
- const cwd = state.worktreePath || state.repositoryPath;
122
- const userQuery = extractUserQuery(state.specDir);
123
- // Read optional context files
124
- const claudeMd = readWorktreeFile(cwd, 'CLAUDE.md');
125
- const packageJson = readWorktreeFile(cwd, 'package.json');
126
- const dirListing = buildDirectoryListing(cwd);
127
- // Build sections conditionally
128
- const sections = [];
129
- sections.push(`You are a senior software engineer implementing a change directly from a user request.
130
-
131
- ## User Request
132
-
133
- ${userQuery}
134
-
135
- ## Implementation Instructions
136
-
137
- 1. Implement the requested changes in the codebase
138
- 2. Write tests for your changes where appropriate
139
- 3. Run the test suite and fix any failures
140
- 4. Run the linter and fix any issues
141
- 5. Ensure the project builds successfully
142
- 6. Do NOT commit, push, or create a PR — just make the code changes
143
-
144
- ## Working Directory
145
-
146
- ${cwd}`);
147
- if (claudeMd) {
148
- sections.push(`## Project Guidelines (CLAUDE.md)
149
-
150
- ${claudeMd}`);
151
- }
152
- if (packageJson) {
153
- // Truncate large package.json to stay within prompt budget
154
- const truncated = packageJson.length > 3000 ? `${packageJson.slice(0, 3000)}\n...(truncated)` : packageJson;
155
- sections.push(`## Package Configuration (package.json)
156
-
157
- \`\`\`json
158
- ${truncated}
159
- \`\`\``);
160
- }
161
- if (dirListing && dirListing !== '(unable to list directory)') {
162
- sections.push(`## Project Structure
163
-
164
- \`\`\`
165
- ${dirListing}
166
- \`\`\``);
167
- }
168
- sections.push(`## Constraints
169
-
170
- - Implement ONLY what the user requested — nothing more
171
- - Follow existing codebase conventions and patterns
172
- - Do NOT commit, push, or create pull requests
173
- - Do NOT modify any spec YAML files
174
- - Keep changes focused and minimal`);
175
- return sections.join('\n\n');
176
- }