@shepai/cli 1.165.0 → 1.166.0-pr513.7e8c227

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 (415) hide show
  1. package/apis/json-schema/Feature.yaml +17 -5
  2. package/apis/json-schema/FeatureMode.yaml +8 -0
  3. package/apis/json-schema/SdlcLifecycle.yaml +1 -0
  4. package/apis/json-schema/StageTimeouts.yaml +7 -2
  5. package/apis/json-schema/WorkflowConfig.yaml +10 -5
  6. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +2 -2
  7. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +4 -3
  9. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  10. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +2 -2
  11. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +2 -2
  12. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +1 -1
  13. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +3 -2
  14. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +2 -2
  15. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  16. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +18 -7
  17. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +3 -2
  18. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  19. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -1
  20. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +13 -0
  21. package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.d.ts +40 -0
  22. package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.d.ts.map +1 -0
  23. package/dist/packages/core/src/application/use-cases/features/promote/promote-exploration.use-case.js +125 -0
  24. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -2
  25. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  26. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +5 -3
  27. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  28. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +2 -1
  29. package/dist/packages/core/src/domain/generated/output.d.ts +28 -6
  30. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  31. package/dist/packages/core/src/domain/generated/output.js +7 -0
  32. package/dist/packages/core/src/domain/lifecycle-gates.d.ts +21 -6
  33. package/dist/packages/core/src/domain/lifecycle-gates.d.ts.map +1 -1
  34. package/dist/packages/core/src/domain/lifecycle-gates.js +25 -6
  35. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/di/container.js +5 -0
  37. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +3 -1
  38. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +10 -4
  40. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +3 -1
  41. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +10 -2
  43. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.d.ts +19 -0
  44. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.d.ts.map +1 -0
  45. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/051-replace-fast-with-mode.js +46 -0
  46. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-stage-timeout-fast-implement-ms.d.ts +15 -0
  47. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-stage-timeout-fast-implement-ms.d.ts.map +1 -0
  48. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-stage-timeout-fast-implement-ms.js +22 -0
  49. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.d.ts +17 -0
  50. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.d.ts.map +1 -0
  51. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.js +37 -0
  52. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.d.ts +12 -0
  53. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.d.ts.map +1 -0
  54. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.js +17 -0
  55. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -1
  56. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +5 -3
  57. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -3
  58. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.d.ts +362 -0
  59. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.d.ts.map +1 -0
  60. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.js +72 -0
  61. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +20 -0
  62. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  63. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +68 -0
  64. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  65. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +2 -2
  66. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  67. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -3
  68. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +2 -2
  69. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  70. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +19 -8
  71. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.d.ts.map +1 -1
  72. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.js +1 -0
  73. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.d.ts +18 -0
  74. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.d.ts.map +1 -0
  75. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/apply-feedback.node.js +52 -0
  76. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  77. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +3 -2
  78. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.d.ts +24 -0
  79. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.d.ts.map +1 -0
  80. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/apply-feedback.prompt.js +38 -0
  81. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.d.ts +31 -0
  82. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.d.ts.map +1 -0
  83. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/prototype-generate.prompt.js +240 -0
  84. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.d.ts +21 -0
  85. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.d.ts.map +1 -0
  86. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prototype-generate.node.js +134 -0
  87. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +4 -0
  88. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  89. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +17 -0
  90. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -1
  91. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  92. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +7 -4
  93. package/dist/src/presentation/cli/commands/feat/feedback.command.d.ts +12 -0
  94. package/dist/src/presentation/cli/commands/feat/feedback.command.d.ts.map +1 -0
  95. package/dist/src/presentation/cli/commands/feat/feedback.command.js +64 -0
  96. package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
  97. package/dist/src/presentation/cli/commands/feat/index.js +5 -1
  98. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  99. package/dist/src/presentation/cli/commands/feat/new.command.js +18 -5
  100. package/dist/src/presentation/cli/commands/feat/promote.command.d.ts +13 -0
  101. package/dist/src/presentation/cli/commands/feat/promote.command.d.ts.map +1 -0
  102. package/dist/src/presentation/cli/commands/feat/promote.command.js +41 -0
  103. package/dist/src/presentation/web/app/actions/create-feature.d.ts +3 -2
  104. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  105. package/dist/src/presentation/web/app/actions/create-feature.js +3 -3
  106. package/dist/src/presentation/web/app/actions/discard-exploration.d.ts +9 -0
  107. package/dist/src/presentation/web/app/actions/discard-exploration.d.ts.map +1 -0
  108. package/dist/src/presentation/web/app/actions/discard-exploration.js +29 -0
  109. package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts +2 -1
  110. package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts.map +1 -1
  111. package/dist/src/presentation/web/app/actions/get-workflow-defaults.js +2 -1
  112. package/dist/src/presentation/web/app/actions/promote-exploration.d.ts +11 -0
  113. package/dist/src/presentation/web/app/actions/promote-exploration.d.ts.map +1 -0
  114. package/dist/src/presentation/web/app/actions/promote-exploration.js +21 -0
  115. package/dist/src/presentation/web/app/actions/submit-exploration-feedback.d.ts +12 -0
  116. package/dist/src/presentation/web/app/actions/submit-exploration-feedback.d.ts.map +1 -0
  117. package/dist/src/presentation/web/app/actions/submit-exploration-feedback.js +40 -0
  118. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  119. package/dist/src/presentation/web/app/api/agent-events/route.js +1 -0
  120. package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
  121. package/dist/src/presentation/web/app/build-feature-node-data.js +4 -2
  122. package/dist/src/presentation/web/app/build-graph-nodes.js +4 -2
  123. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +1 -1
  124. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -1
  125. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +3 -0
  126. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  127. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +65 -1
  128. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +3 -2
  129. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  130. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +15 -11
  131. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  132. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +2 -1
  133. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.d.ts +8 -0
  134. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.d.ts.map +1 -0
  135. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.js +33 -0
  136. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.d.ts +10 -0
  137. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.d.ts.map +1 -0
  138. package/dist/src/presentation/web/components/common/feature-create-drawer/mode-selector.stories.js +33 -0
  139. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +6 -1
  140. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  141. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +16 -4
  142. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.d.ts +11 -0
  143. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.d.ts.map +1 -0
  144. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.js +34 -0
  145. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.d.ts +16 -0
  146. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.d.ts.map +1 -0
  147. package/dist/src/presentation/web/components/common/feature-drawer-tabs/prototype-tab.stories.js +70 -0
  148. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
  149. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +2 -0
  150. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +6 -2
  151. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  152. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +12 -0
  153. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  154. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +7 -2
  155. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  156. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +14 -6
  157. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  158. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  159. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts.map +1 -1
  160. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.js +11 -0
  161. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts.map +1 -1
  162. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +5 -3
  163. package/dist/src/presentation/web/components/ui/toggle-group.d.ts +10 -0
  164. package/dist/src/presentation/web/components/ui/toggle-group.d.ts.map +1 -0
  165. package/dist/src/presentation/web/components/ui/toggle-group.js +22 -0
  166. package/dist/src/presentation/web/components/ui/toggle.d.ts +10 -0
  167. package/dist/src/presentation/web/components/ui/toggle.d.ts.map +1 -0
  168. package/dist/src/presentation/web/components/ui/toggle.js +26 -0
  169. package/dist/translations/ar/cli.json +24 -0
  170. package/dist/translations/ar/web.json +8 -2
  171. package/dist/translations/de/cli.json +24 -0
  172. package/dist/translations/de/web.json +8 -2
  173. package/dist/translations/en/cli.json +24 -0
  174. package/dist/translations/en/web.json +8 -2
  175. package/dist/translations/es/cli.json +24 -0
  176. package/dist/translations/es/web.json +8 -2
  177. package/dist/translations/fr/cli.json +24 -0
  178. package/dist/translations/fr/web.json +8 -2
  179. package/dist/translations/he/cli.json +24 -0
  180. package/dist/translations/he/web.json +8 -2
  181. package/dist/translations/pt/cli.json +24 -0
  182. package/dist/translations/pt/web.json +8 -2
  183. package/dist/translations/ru/cli.json +24 -0
  184. package/dist/translations/ru/web.json +8 -2
  185. package/dist/tsconfig.build.tsbuildinfo +1 -1
  186. package/package.json +1 -1
  187. package/web/.next/BUILD_ID +1 -1
  188. package/web/.next/build-manifest.json +2 -2
  189. package/web/.next/fallback-build-manifest.json +2 -2
  190. package/web/.next/prerender-manifest.json +3 -3
  191. package/web/.next/required-server-files.js +3 -3
  192. package/web/.next/required-server-files.json +3 -3
  193. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  194. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  195. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  196. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  197. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  198. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  199. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  200. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  201. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  202. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +119 -74
  203. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -1
  204. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  205. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  206. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +119 -74
  207. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -1
  208. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  209. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  210. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  211. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  212. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  213. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  214. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  215. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  216. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  217. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  218. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  219. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  220. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  221. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  222. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +119 -74
  223. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -1
  224. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  225. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  226. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +119 -74
  227. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -1
  228. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  229. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  230. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  231. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  232. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  233. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  234. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  235. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  236. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  237. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  238. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  239. package/web/.next/server/app/_global-error.html +2 -2
  240. package/web/.next/server/app/_global-error.rsc +1 -1
  241. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  242. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  243. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  244. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  245. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  246. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  247. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  248. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  249. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  250. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  251. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  252. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  253. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  254. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  255. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  256. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  257. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  258. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  259. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  260. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  261. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  262. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  263. package/web/.next/server/app/version/page.js.nft.json +1 -1
  264. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  265. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  266. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  267. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +1 -1
  268. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  269. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  270. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
  271. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  272. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  273. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  274. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  275. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  276. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +3 -3
  277. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  278. package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js +2 -2
  279. package/web/.next/server/chunks/ssr/[root-of-the-server]__1abe77bb._.js.map +1 -1
  280. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  281. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  282. package/web/.next/server/chunks/ssr/[root-of-the-server]__2d0c3840._.js +1 -1
  283. package/web/.next/server/chunks/ssr/[root-of-the-server]__2d0c3840._.js.map +1 -1
  284. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  285. package/web/.next/server/chunks/ssr/[root-of-the-server]__4ed9b909._.js +1 -1
  286. package/web/.next/server/chunks/ssr/[root-of-the-server]__58a5b819._.js +4 -0
  287. package/web/.next/server/chunks/ssr/[root-of-the-server]__58a5b819._.js.map +1 -0
  288. package/web/.next/server/chunks/ssr/[root-of-the-server]__67a193c8._.js +4 -0
  289. package/web/.next/server/chunks/ssr/[root-of-the-server]__67a193c8._.js.map +1 -0
  290. package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
  291. package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
  292. package/web/.next/server/chunks/ssr/[root-of-the-server]__754fb18e._.js +4 -0
  293. package/web/.next/server/chunks/ssr/[root-of-the-server]__754fb18e._.js.map +1 -0
  294. package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js +2 -2
  295. package/web/.next/server/chunks/ssr/[root-of-the-server]__7562afc6._.js.map +1 -1
  296. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +1 -1
  297. package/web/.next/server/chunks/ssr/[root-of-the-server]__96ba046b._.js +4 -0
  298. package/web/.next/server/chunks/ssr/[root-of-the-server]__96ba046b._.js.map +1 -0
  299. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  300. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  301. package/web/.next/server/chunks/ssr/[root-of-the-server]__c1262d08._.js +1 -1
  302. package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
  303. package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/[root-of-the-server]__dffa13c5._.js +1 -1
  305. package/web/.next/server/chunks/ssr/[root-of-the-server]__dffa13c5._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
  307. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  309. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/_0727935d._.js +1 -1
  311. package/web/.next/server/chunks/ssr/_0727935d._.js.map +1 -1
  312. package/web/.next/server/chunks/ssr/_0dc06d07._.js +1 -1
  313. package/web/.next/server/chunks/ssr/_0dc06d07._.js.map +1 -1
  314. package/web/.next/server/chunks/ssr/_12c98a3d._.js +3 -0
  315. package/web/.next/server/chunks/ssr/_12c98a3d._.js.map +1 -0
  316. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  317. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  318. package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
  319. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
  320. package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
  321. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
  322. package/web/.next/server/chunks/ssr/_5119a3df._.js +1 -1
  323. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -1
  324. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  325. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  326. package/web/.next/server/chunks/ssr/{_44591fa7._.js → _5e0c43c0._.js} +2 -2
  327. package/web/.next/server/chunks/ssr/_5e0c43c0._.js.map +1 -0
  328. package/web/.next/server/chunks/ssr/_5eb460b1._.js +3 -0
  329. package/web/.next/server/chunks/ssr/_5eb460b1._.js.map +1 -0
  330. package/web/.next/server/chunks/ssr/_997b560b._.js +3 -0
  331. package/web/.next/server/chunks/ssr/_997b560b._.js.map +1 -0
  332. package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
  333. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
  334. package/web/.next/server/chunks/ssr/{_616a8ac1._.js → _a8f53ee2._.js} +2 -2
  335. package/web/.next/server/chunks/ssr/_a8f53ee2._.js.map +1 -0
  336. package/web/.next/server/chunks/ssr/_acc5e43e._.js +9 -0
  337. package/web/.next/server/chunks/ssr/_acc5e43e._.js.map +1 -0
  338. package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
  339. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
  340. package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
  341. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
  342. package/web/.next/server/chunks/ssr/{_d582e961._.js → _cc456d44._.js} +2 -2
  343. package/web/.next/server/chunks/ssr/{_d582e961._.js.map → _cc456d44._.js.map} +1 -1
  344. package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
  345. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
  346. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
  347. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
  348. package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
  349. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
  350. package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
  351. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
  352. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  353. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  354. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  355. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  356. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +3 -0
  357. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js.map +1 -0
  358. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  359. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  360. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  361. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  362. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  363. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  364. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  365. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  366. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
  367. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
  368. package/web/.next/server/pages/500.html +2 -2
  369. package/web/.next/server/server-reference-manifest.js +1 -1
  370. package/web/.next/server/server-reference-manifest.json +303 -195
  371. package/web/.next/static/chunks/{90fbdf461b7ec652.js → 03d92643ee2190a4.js} +1 -1
  372. package/web/.next/static/chunks/{cad3cca5183ead26.js → 0811164ad80e0ca5.js} +1 -1
  373. package/web/.next/static/chunks/{2b3740e29ed9b3de.js → 0f6208eca3d7d895.js} +2 -2
  374. package/web/.next/static/chunks/{9461ce4baa99276f.js → 14838064627a5dcb.js} +1 -1
  375. package/web/.next/static/chunks/150c00c30ece763b.js +1 -0
  376. package/web/.next/static/chunks/246321074153cf07.js +5 -0
  377. package/web/.next/static/chunks/{ccdd1bc568f11f61.js → 2a641dc89a852e0c.js} +1 -1
  378. package/web/.next/static/chunks/{d5366257d6b9f855.js → 2a9af061f4fbe7f5.js} +1 -1
  379. package/web/.next/static/chunks/2ceebcc839ee0d4b.js +1 -0
  380. package/web/.next/static/chunks/3425ca88c85dddb9.js +1 -0
  381. package/web/.next/static/chunks/{5c6428d4679cd574.js → 453a86648b40099a.js} +1 -1
  382. package/web/.next/static/chunks/84ecdec18d323210.css +1 -0
  383. package/web/.next/static/chunks/85c9f8d4601354cd.js +1 -0
  384. package/web/.next/static/chunks/{65440524d7ee7d13.js → 884fceb3e6a67215.js} +1 -1
  385. package/web/.next/static/chunks/{61e13c3bd0f3cd25.js → 95ecd55bfbbc87aa.js} +3 -3
  386. package/web/.next/static/chunks/{bec9239427893a91.js → c1103035e0d56769.js} +1 -1
  387. package/web/.next/static/chunks/{21f9eacf5581b713.js → d5656afdef3b2ee5.js} +1 -1
  388. package/web/.next/static/chunks/e83613a2d0198a6a.js +1 -0
  389. package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js +0 -4
  390. package/web/.next/server/chunks/ssr/[root-of-the-server]__563e4faf._.js.map +0 -1
  391. package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js +0 -4
  392. package/web/.next/server/chunks/ssr/[root-of-the-server]__821a11c1._.js.map +0 -1
  393. package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js +0 -4
  394. package/web/.next/server/chunks/ssr/[root-of-the-server]__98740ee4._.js.map +0 -1
  395. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js +0 -4
  396. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba9f9e11._.js.map +0 -1
  397. package/web/.next/server/chunks/ssr/_44591fa7._.js.map +0 -1
  398. package/web/.next/server/chunks/ssr/_4d49a312._.js +0 -3
  399. package/web/.next/server/chunks/ssr/_4d49a312._.js.map +0 -1
  400. package/web/.next/server/chunks/ssr/_506a3bc3._.js +0 -9
  401. package/web/.next/server/chunks/ssr/_506a3bc3._.js.map +0 -1
  402. package/web/.next/server/chunks/ssr/_616a8ac1._.js.map +0 -1
  403. package/web/.next/server/chunks/ssr/_9215e9ec._.js +0 -3
  404. package/web/.next/server/chunks/ssr/_9215e9ec._.js.map +0 -1
  405. package/web/.next/server/chunks/ssr/node_modules__pnpm_1300ae39._.js +0 -3
  406. package/web/.next/server/chunks/ssr/node_modules__pnpm_1300ae39._.js.map +0 -1
  407. package/web/.next/static/chunks/1a3b885d3f886bcb.js +0 -1
  408. package/web/.next/static/chunks/1e6609edc3367244.css +0 -1
  409. package/web/.next/static/chunks/28ae5046faef6cec.js +0 -1
  410. package/web/.next/static/chunks/558d87d09cd1cc45.js +0 -1
  411. package/web/.next/static/chunks/c96dff98886884ee.js +0 -5
  412. package/web/.next/static/chunks/e4be686cb3bd28f0.js +0 -1
  413. /package/web/.next/static/{rkwlBjHfpnafQpJdBxN27 → i5nbrQ-16hfoxXQF80u89}/_buildManifest.js +0 -0
  414. /package/web/.next/static/{rkwlBjHfpnafQpJdBxN27 → i5nbrQ-16hfoxXQF80u89}/_clientMiddlewareManifest.json +0 -0
  415. /package/web/.next/static/{rkwlBjHfpnafQpJdBxN27 → i5nbrQ-16hfoxXQF80u89}/_ssgManifest.js +0 -0
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Migration 052: Replace boolean default_fast_mode column with TEXT default_mode column
3
+ * on the settings table.
4
+ *
5
+ * Migrates the settings.default_fast_mode INTEGER column (0/1 boolean) to a TEXT
6
+ * default_mode column that stores FeatureMode enum values:
7
+ * - default_fast_mode = 1 → default_mode = 'Fast'
8
+ * - default_fast_mode = 0 → default_mode = 'Regular'
9
+ *
10
+ * Default for new rows: default_mode = 'Fast' (preserves backward compatibility).
11
+ * Guards against duplicate column using PRAGMA table_info.
12
+ */
13
+ import type { MigrationParams } from 'umzug';
14
+ import type Database from 'better-sqlite3';
15
+ export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
16
+ export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
17
+ //# sourceMappingURL=052-replace-default-fast-mode-with-default-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"052-replace-default-fast-mode-with-default-mode.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/052-replace-default-fast-mode-with-default-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Migration 052: Replace boolean default_fast_mode column with TEXT default_mode column
3
+ * on the settings table.
4
+ *
5
+ * Migrates the settings.default_fast_mode INTEGER column (0/1 boolean) to a TEXT
6
+ * default_mode column that stores FeatureMode enum values:
7
+ * - default_fast_mode = 1 → default_mode = 'Fast'
8
+ * - default_fast_mode = 0 → default_mode = 'Regular'
9
+ *
10
+ * Default for new rows: default_mode = 'Fast' (preserves backward compatibility).
11
+ * Guards against duplicate column using PRAGMA table_info.
12
+ */
13
+ export async function up({ context: db }) {
14
+ const columns = db.pragma('table_info(settings)');
15
+ const names = new Set(columns.map((c) => c.name));
16
+ // Step 1: Add new TEXT default_mode column with default 'Fast'
17
+ if (!names.has('default_mode')) {
18
+ db.exec("ALTER TABLE settings ADD COLUMN default_mode TEXT NOT NULL DEFAULT 'Fast'");
19
+ }
20
+ // Step 2: Migrate data from default_fast_mode → default_mode
21
+ if (names.has('default_fast_mode')) {
22
+ db.exec(`
23
+ UPDATE settings
24
+ SET default_mode = CASE
25
+ WHEN default_fast_mode = 1 THEN 'Fast'
26
+ ELSE 'Regular'
27
+ END
28
+ `);
29
+ }
30
+ // Step 3: Drop old default_fast_mode column
31
+ if (names.has('default_fast_mode')) {
32
+ db.exec('ALTER TABLE settings DROP COLUMN default_fast_mode');
33
+ }
34
+ }
35
+ export async function down({ context: db }) {
36
+ void db;
37
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Migration 053: Add exploration_max_iterations column to the settings table.
3
+ *
4
+ * Adds a nullable INTEGER column for the maximum number of feedback iterations
5
+ * in exploration mode. When NULL, the default of 10 is applied at the application layer.
6
+ * Guards against duplicate column using PRAGMA table_info.
7
+ */
8
+ import type { MigrationParams } from 'umzug';
9
+ import type Database from 'better-sqlite3';
10
+ export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
11
+ export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
12
+ //# sourceMappingURL=053-add-exploration-max-iterations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"053-add-exploration-max-iterations.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-exploration-max-iterations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Migration 053: Add exploration_max_iterations column to the settings table.
3
+ *
4
+ * Adds a nullable INTEGER column for the maximum number of feedback iterations
5
+ * in exploration mode. When NULL, the default of 10 is applied at the application layer.
6
+ * Guards against duplicate column using PRAGMA table_info.
7
+ */
8
+ export async function up({ context: db }) {
9
+ const columns = db.pragma('table_info(settings)');
10
+ const names = new Set(columns.map((c) => c.name));
11
+ if (!names.has('exploration_max_iterations')) {
12
+ db.exec('ALTER TABLE settings ADD COLUMN exploration_max_iterations INTEGER');
13
+ }
14
+ }
15
+ export async function down({ context: db }) {
16
+ void db;
17
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-feature.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-feature.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,6EAA6E,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAOhE;;;GAGG;AACH,qBACa,uBAAwB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW7C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAcvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAazE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAa7E,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8BtD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK5C"}
1
+ {"version":3,"file":"sqlite-feature.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-feature.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,6EAA6E,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAOhE;;;GAGG;AACH,qBACa,uBAAwB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW7C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAcvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAazE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAa7E,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8BtD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK5C"}
@@ -32,7 +32,7 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
32
32
  id, name, slug, description, user_query, repository_path, branch,
33
33
  lifecycle, messages, plan, related_artifacts,
34
34
  agent_run_id, spec_path,
35
- fast,
35
+ mode, iteration_count, max_iterations,
36
36
  push, open_pr, fork_and_pr, commit_specs,
37
37
  ci_watch_enabled, enable_evidence, commit_evidence,
38
38
  auto_merge, allow_prd, allow_plan, allow_merge,
@@ -46,7 +46,7 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
46
46
  @id, @name, @slug, @description, @user_query, @repository_path, @branch,
47
47
  @lifecycle, @messages, @plan, @related_artifacts,
48
48
  @agent_run_id, @spec_path,
49
- @fast,
49
+ @mode, @iteration_count, @max_iterations,
50
50
  @push, @open_pr, @fork_and_pr, @commit_specs,
51
51
  @ci_watch_enabled, @enable_evidence, @commit_evidence,
52
52
  @auto_merge, @allow_prd, @allow_plan, @allow_merge,
@@ -138,7 +138,9 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
138
138
  related_artifacts = @related_artifacts,
139
139
  agent_run_id = @agent_run_id,
140
140
  spec_path = @spec_path,
141
- fast = @fast,
141
+ mode = @mode,
142
+ iteration_count = @iteration_count,
143
+ max_iterations = @max_iterations,
142
144
  push = @push,
143
145
  open_pr = @open_pr,
144
146
  fork_and_pr = @fork_and_pr,
@@ -67,7 +67,7 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
67
67
  feature_flag_skills, feature_flag_env_deploy, feature_flag_debug, feature_flag_github_import, feature_flag_adopt_branch, feature_flag_git_rebase_sync,
68
68
  feature_flag_react_file_manager,
69
69
  workflow_enable_evidence, workflow_commit_evidence,
70
- hide_ci_status, default_fast_mode,
70
+ hide_ci_status, default_mode,
71
71
  interactive_agent_enabled, interactive_agent_auto_timeout_minutes,
72
72
  interactive_agent_max_concurrent_sessions,
73
73
  auto_archive_delay_minutes
@@ -96,7 +96,7 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
96
96
  @feature_flag_skills, @feature_flag_env_deploy, @feature_flag_debug, @feature_flag_github_import, @feature_flag_adopt_branch, @feature_flag_git_rebase_sync,
97
97
  @feature_flag_react_file_manager,
98
98
  @workflow_enable_evidence, @workflow_commit_evidence,
99
- @hide_ci_status, @default_fast_mode,
99
+ @hide_ci_status, @default_mode,
100
100
  @interactive_agent_enabled, @interactive_agent_auto_timeout_minutes,
101
101
  @interactive_agent_max_concurrent_sessions,
102
102
  @auto_archive_delay_minutes
@@ -198,7 +198,7 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
198
198
  workflow_enable_evidence = @workflow_enable_evidence,
199
199
  workflow_commit_evidence = @workflow_commit_evidence,
200
200
  hide_ci_status = @hide_ci_status,
201
- default_fast_mode = @default_fast_mode,
201
+ default_mode = @default_mode,
202
202
  interactive_agent_enabled = @interactive_agent_enabled,
203
203
  interactive_agent_auto_timeout_minutes = @interactive_agent_auto_timeout_minutes,
204
204
  interactive_agent_max_concurrent_sessions = @interactive_agent_max_concurrent_sessions,
@@ -0,0 +1,362 @@
1
+ /**
2
+ * Exploration Agent Graph Factory
3
+ *
4
+ * Creates a LangGraph StateGraph for exploration/prototyping mode with
5
+ * the topology:
6
+ * START → prototype-generate → (interrupt for feedback)
7
+ * → apply-feedback → prototype-generate (loop)
8
+ * → END (on promote or discard)
9
+ *
10
+ * The graph uses the same FeatureAgentAnnotation state shape as the
11
+ * full and fast graphs, enabling checkpointing, resume, and identical
12
+ * worker lifecycle handling.
13
+ *
14
+ * Unlike the full SDLC graph which uses executeNode() with approval gates,
15
+ * the exploration graph uses custom node functions with shared utilities
16
+ * (retryExecute, createNodeLogger). The feedback loop is driven by
17
+ * LangGraph interrupt/resume — the same mechanism used for approval gates.
18
+ */
19
+ import { type BaseCheckpointSaver } from '@langchain/langgraph';
20
+ import type { IAgentExecutor } from '../../../../application/ports/output/agents/agent-executor.interface.js';
21
+ import { type FeatureAgentState } from './state.js';
22
+ export { FeatureAgentAnnotation, type FeatureAgentState } from './state.js';
23
+ /**
24
+ * Dependencies needed to build the exploration agent graph.
25
+ * Intentionally minimal — exploration mode does not use merge nodes.
26
+ */
27
+ export interface ExplorationAgentGraphDeps {
28
+ executor: IAgentExecutor;
29
+ }
30
+ /**
31
+ * Routing function that determines the next node after prototype-generate
32
+ * resumes from interrupt.
33
+ *
34
+ * The resume payload (set via Command({update})) controls the flow:
35
+ * - _approvalAction === 'rejected' → apply-feedback (iterate with feedback)
36
+ * - _approvalAction === 'approved' or any other → END (promote or discard)
37
+ *
38
+ * The 'rejected' action maps to the iterate flow because the existing
39
+ * worker resume logic already sets _approvalAction='rejected' and
40
+ * _rejectionFeedback=<text> for rejection payloads. For exploration,
41
+ * "rejected" means "iterate with feedback" rather than "rejected for merge".
42
+ */
43
+ export declare function routeAfterPrototypeGenerate(state: FeatureAgentState): string;
44
+ /**
45
+ * Factory function that creates and compiles the exploration-mode agent graph.
46
+ *
47
+ * The graph defines a feedback loop:
48
+ * START → prototype-generate → (interrupt) → route:
49
+ * - iterate: → apply-feedback → prototype-generate (loop)
50
+ * - promote/discard: → END
51
+ *
52
+ * @param depsOrExecutor - Graph dependencies or a legacy executor
53
+ * @param checkpointer - Optional checkpoint saver for state persistence
54
+ * @returns A compiled LangGraph ready to be invoked
55
+ */
56
+ export declare function createExplorationAgentGraph(depsOrExecutor: ExplorationAgentGraphDeps | IAgentExecutor, checkpointer?: BaseCheckpointSaver): import("@langchain/langgraph").CompiledStateGraph<{
57
+ featureId: string;
58
+ repositoryPath: string;
59
+ specDir: string;
60
+ worktreePath: string;
61
+ currentNode: string;
62
+ error: string | null;
63
+ approvalGates: import("../../../../domain/index.js").ApprovalGates | undefined;
64
+ model: string | undefined;
65
+ messages: string[];
66
+ validationRetries: number;
67
+ lastValidationTarget: string;
68
+ lastValidationErrors: string[];
69
+ _approvalAction: string | null;
70
+ _rejectionFeedback: string | null;
71
+ _needsReexecution: boolean;
72
+ prUrl: string | null;
73
+ prNumber: number | null;
74
+ commitHash: string | null;
75
+ ciStatus: string | null;
76
+ push: boolean;
77
+ openPr: boolean;
78
+ forkAndPr: boolean;
79
+ commitSpecs: boolean;
80
+ ciWatchEnabled: boolean;
81
+ enableEvidence: boolean;
82
+ commitEvidence: boolean;
83
+ evidence: import("../../../../domain/index.js").Evidence[];
84
+ evidenceRetries: number;
85
+ resumeReason: string | undefined;
86
+ ciFixAttempts: number;
87
+ ciFixHistory: import("../../../../domain/index.js").CiFixRecord[];
88
+ ciFixStatus: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted";
89
+ iterationCount: number;
90
+ maxIterations: number;
91
+ feedbackHistory: string[];
92
+ explorationStatus: "generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined;
93
+ }, {
94
+ featureId?: string | undefined;
95
+ repositoryPath?: string | undefined;
96
+ specDir?: string | undefined;
97
+ worktreePath?: string | undefined;
98
+ currentNode?: string | undefined;
99
+ error?: string | null | undefined;
100
+ approvalGates?: import("../../../../domain/index.js").ApprovalGates | undefined;
101
+ model?: string | undefined;
102
+ messages?: string[] | undefined;
103
+ validationRetries?: number | undefined;
104
+ lastValidationTarget?: string | undefined;
105
+ lastValidationErrors?: string[] | undefined;
106
+ _approvalAction?: string | null | undefined;
107
+ _rejectionFeedback?: string | null | undefined;
108
+ _needsReexecution?: boolean | undefined;
109
+ prUrl?: string | null | undefined;
110
+ prNumber?: number | null | undefined;
111
+ commitHash?: string | null | undefined;
112
+ ciStatus?: string | null | undefined;
113
+ push?: boolean | undefined;
114
+ openPr?: boolean | undefined;
115
+ forkAndPr?: boolean | undefined;
116
+ commitSpecs?: boolean | undefined;
117
+ ciWatchEnabled?: boolean | undefined;
118
+ enableEvidence?: boolean | undefined;
119
+ commitEvidence?: boolean | undefined;
120
+ evidence?: import("../../../../domain/index.js").Evidence[] | undefined;
121
+ evidenceRetries?: number | undefined;
122
+ resumeReason?: string | undefined;
123
+ ciFixAttempts?: number | undefined;
124
+ ciFixHistory?: import("../../../../domain/index.js").CiFixRecord[] | undefined;
125
+ ciFixStatus?: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted" | undefined;
126
+ iterationCount?: number | undefined;
127
+ maxIterations?: number | undefined;
128
+ feedbackHistory?: string[] | undefined;
129
+ explorationStatus?: "generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined;
130
+ }, "__start__" | "prototype-generate" | "apply-feedback", {
131
+ featureId: {
132
+ (): import("@langchain/langgraph").LastValue<string>;
133
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
134
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
135
+ };
136
+ repositoryPath: {
137
+ (): import("@langchain/langgraph").LastValue<string>;
138
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
139
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
140
+ };
141
+ specDir: {
142
+ (): import("@langchain/langgraph").LastValue<string>;
143
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
144
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
145
+ };
146
+ worktreePath: {
147
+ (): import("@langchain/langgraph").LastValue<string>;
148
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
149
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
150
+ };
151
+ currentNode: {
152
+ (): import("@langchain/langgraph").LastValue<string>;
153
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
154
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
155
+ };
156
+ error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
157
+ approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
158
+ model: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
159
+ messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
160
+ validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
161
+ lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
162
+ lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
163
+ _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
164
+ _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
165
+ _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
166
+ prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
167
+ prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
168
+ commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
169
+ ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
170
+ push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
171
+ openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
172
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
173
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
174
+ ciWatchEnabled: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
175
+ enableEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
176
+ commitEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
177
+ evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
178
+ evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
179
+ resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
180
+ ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
181
+ ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
182
+ ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
183
+ iterationCount: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
184
+ maxIterations: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
185
+ feedbackHistory: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
186
+ explorationStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined, "generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined>;
187
+ }, {
188
+ featureId: {
189
+ (): import("@langchain/langgraph").LastValue<string>;
190
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
191
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
192
+ };
193
+ repositoryPath: {
194
+ (): import("@langchain/langgraph").LastValue<string>;
195
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
196
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
197
+ };
198
+ specDir: {
199
+ (): import("@langchain/langgraph").LastValue<string>;
200
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
201
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
202
+ };
203
+ worktreePath: {
204
+ (): import("@langchain/langgraph").LastValue<string>;
205
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
206
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
207
+ };
208
+ currentNode: {
209
+ (): import("@langchain/langgraph").LastValue<string>;
210
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
211
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
212
+ };
213
+ error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
214
+ approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
215
+ model: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
216
+ messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
217
+ validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
218
+ lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
219
+ lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
220
+ _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
221
+ _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
222
+ _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
223
+ prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
224
+ prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
225
+ commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
226
+ ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
227
+ push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
228
+ openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
229
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
230
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
231
+ ciWatchEnabled: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
232
+ enableEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
233
+ commitEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
234
+ evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
235
+ evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
236
+ resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
237
+ ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
238
+ ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
239
+ ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
240
+ iterationCount: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
241
+ maxIterations: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
242
+ feedbackHistory: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
243
+ explorationStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined, "generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined>;
244
+ }, import("@langchain/langgraph").StateDefinition, {
245
+ "prototype-generate": Partial<import("@langchain/langgraph").StateType<{
246
+ featureId: {
247
+ (): import("@langchain/langgraph").LastValue<string>;
248
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
249
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
250
+ };
251
+ repositoryPath: {
252
+ (): import("@langchain/langgraph").LastValue<string>;
253
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
254
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
255
+ };
256
+ specDir: {
257
+ (): import("@langchain/langgraph").LastValue<string>;
258
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
259
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
260
+ };
261
+ worktreePath: {
262
+ (): import("@langchain/langgraph").LastValue<string>;
263
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
264
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
265
+ };
266
+ currentNode: {
267
+ (): import("@langchain/langgraph").LastValue<string>;
268
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
269
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
270
+ };
271
+ error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
272
+ approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
273
+ model: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
274
+ messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
275
+ validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
276
+ lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
277
+ lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
278
+ _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
279
+ _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
280
+ _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
281
+ prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
282
+ prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
283
+ commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
284
+ ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
285
+ push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
286
+ openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
287
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
288
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
289
+ ciWatchEnabled: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
290
+ enableEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
291
+ commitEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
292
+ evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
293
+ evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
294
+ resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
295
+ ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
296
+ ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
297
+ ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
298
+ iterationCount: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
299
+ maxIterations: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
300
+ feedbackHistory: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
301
+ explorationStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined, "generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined>;
302
+ }>>;
303
+ "apply-feedback": Partial<import("@langchain/langgraph").StateType<{
304
+ featureId: {
305
+ (): import("@langchain/langgraph").LastValue<string>;
306
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
307
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
308
+ };
309
+ repositoryPath: {
310
+ (): import("@langchain/langgraph").LastValue<string>;
311
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
312
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
313
+ };
314
+ specDir: {
315
+ (): import("@langchain/langgraph").LastValue<string>;
316
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
317
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
318
+ };
319
+ worktreePath: {
320
+ (): import("@langchain/langgraph").LastValue<string>;
321
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
322
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
323
+ };
324
+ currentNode: {
325
+ (): import("@langchain/langgraph").LastValue<string>;
326
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
327
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
328
+ };
329
+ error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
330
+ approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
331
+ model: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
332
+ messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
333
+ validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
334
+ lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
335
+ lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
336
+ _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
337
+ _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
338
+ _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
339
+ prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
340
+ prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
341
+ commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
342
+ ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
343
+ push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
344
+ openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
345
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
346
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
347
+ ciWatchEnabled: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
348
+ enableEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
349
+ commitEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
350
+ evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
351
+ evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
352
+ resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
353
+ ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
354
+ ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
355
+ ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
356
+ iterationCount: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
357
+ maxIterations: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
358
+ feedbackHistory: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
359
+ explorationStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined, "generating" | "waiting-feedback" | "applying-feedback" | "promoting" | "discarding" | undefined>;
360
+ }>>;
361
+ }, unknown, unknown>;
362
+ //# sourceMappingURL=exploration-agent-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exploration-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/exploration-agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAK5E,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAO5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,yBAAyB,GAAG,cAAc,EAC1D,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAqBnC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Exploration Agent Graph Factory
3
+ *
4
+ * Creates a LangGraph StateGraph for exploration/prototyping mode with
5
+ * the topology:
6
+ * START → prototype-generate → (interrupt for feedback)
7
+ * → apply-feedback → prototype-generate (loop)
8
+ * → END (on promote or discard)
9
+ *
10
+ * The graph uses the same FeatureAgentAnnotation state shape as the
11
+ * full and fast graphs, enabling checkpointing, resume, and identical
12
+ * worker lifecycle handling.
13
+ *
14
+ * Unlike the full SDLC graph which uses executeNode() with approval gates,
15
+ * the exploration graph uses custom node functions with shared utilities
16
+ * (retryExecute, createNodeLogger). The feedback loop is driven by
17
+ * LangGraph interrupt/resume — the same mechanism used for approval gates.
18
+ */
19
+ import { StateGraph, START } from '@langchain/langgraph';
20
+ import { FeatureAgentAnnotation } from './state.js';
21
+ import { createPrototypeGenerateNode } from './nodes/prototype-generate.node.js';
22
+ import { createApplyFeedbackNode } from './nodes/apply-feedback.node.js';
23
+ // Re-export for consumers
24
+ export { FeatureAgentAnnotation } from './state.js';
25
+ /**
26
+ * Routing function that determines the next node after prototype-generate
27
+ * resumes from interrupt.
28
+ *
29
+ * The resume payload (set via Command({update})) controls the flow:
30
+ * - _approvalAction === 'rejected' → apply-feedback (iterate with feedback)
31
+ * - _approvalAction === 'approved' or any other → END (promote or discard)
32
+ *
33
+ * The 'rejected' action maps to the iterate flow because the existing
34
+ * worker resume logic already sets _approvalAction='rejected' and
35
+ * _rejectionFeedback=<text> for rejection payloads. For exploration,
36
+ * "rejected" means "iterate with feedback" rather than "rejected for merge".
37
+ */
38
+ export function routeAfterPrototypeGenerate(state) {
39
+ // If the user provided feedback (rejection = iterate in exploration context)
40
+ if (state._approvalAction === 'rejected') {
41
+ return 'apply-feedback';
42
+ }
43
+ // Otherwise: approved = promote/discard = exit the loop
44
+ return '__end__';
45
+ }
46
+ /**
47
+ * Factory function that creates and compiles the exploration-mode agent graph.
48
+ *
49
+ * The graph defines a feedback loop:
50
+ * START → prototype-generate → (interrupt) → route:
51
+ * - iterate: → apply-feedback → prototype-generate (loop)
52
+ * - promote/discard: → END
53
+ *
54
+ * @param depsOrExecutor - Graph dependencies or a legacy executor
55
+ * @param checkpointer - Optional checkpoint saver for state persistence
56
+ * @returns A compiled LangGraph ready to be invoked
57
+ */
58
+ export function createExplorationAgentGraph(depsOrExecutor, checkpointer) {
59
+ // Support legacy signature: createExplorationAgentGraph(executor, checkpointer)
60
+ const deps = 'execute' in depsOrExecutor ? { executor: depsOrExecutor } : depsOrExecutor;
61
+ const { executor } = deps;
62
+ const graph = new StateGraph(FeatureAgentAnnotation)
63
+ .addNode('prototype-generate', createPrototypeGenerateNode(executor))
64
+ .addNode('apply-feedback', createApplyFeedbackNode());
65
+ // START → prototype-generate
66
+ graph.addEdge(START, 'prototype-generate');
67
+ // prototype-generate → conditional routing (after resume from interrupt)
68
+ graph.addConditionalEdges('prototype-generate', routeAfterPrototypeGenerate);
69
+ // apply-feedback → prototype-generate (loop back)
70
+ graph.addEdge('apply-feedback', 'prototype-generate');
71
+ return graph.compile({ checkpointer });
72
+ }