@shepai/cli 1.14.2 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/README.md +191 -101
  2. package/dist/src/application/ports/output/external-issue-fetcher.interface.d.ts +69 -0
  3. package/dist/src/application/ports/output/external-issue-fetcher.interface.d.ts.map +1 -0
  4. package/dist/src/application/ports/output/external-issue-fetcher.interface.js +46 -0
  5. package/dist/src/application/ports/output/feature-agent-process.interface.d.ts +44 -0
  6. package/dist/src/application/ports/output/feature-agent-process.interface.d.ts.map +1 -0
  7. package/dist/src/application/ports/output/feature-agent-process.interface.js +12 -0
  8. package/dist/src/application/ports/output/feature-repository.interface.d.ts +76 -0
  9. package/dist/src/application/ports/output/feature-repository.interface.d.ts.map +1 -0
  10. package/dist/src/application/ports/output/feature-repository.interface.js +11 -0
  11. package/dist/src/application/ports/output/index.d.ts +3 -0
  12. package/dist/src/application/ports/output/index.d.ts.map +1 -1
  13. package/dist/src/application/ports/output/index.js +1 -1
  14. package/dist/src/application/ports/output/spec-initializer.interface.d.ts +33 -0
  15. package/dist/src/application/ports/output/spec-initializer.interface.d.ts.map +1 -0
  16. package/dist/src/application/ports/output/spec-initializer.interface.js +8 -0
  17. package/dist/src/application/ports/output/worktree-service.interface.d.ts +83 -0
  18. package/dist/src/application/ports/output/worktree-service.interface.d.ts.map +1 -0
  19. package/dist/src/application/ports/output/worktree-service.interface.js +30 -0
  20. package/dist/src/application/use-cases/agents/approve-agent-run.use-case.d.ts +22 -0
  21. package/dist/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -0
  22. package/dist/src/application/use-cases/agents/approve-agent-run.use-case.js +67 -0
  23. package/dist/src/application/use-cases/agents/delete-agent-run.use-case.d.ts +16 -0
  24. package/dist/src/application/use-cases/agents/delete-agent-run.use-case.d.ts.map +1 -0
  25. package/dist/src/application/use-cases/agents/delete-agent-run.use-case.js +46 -0
  26. package/dist/src/application/use-cases/agents/get-agent-run.use-case.d.ts +22 -0
  27. package/dist/src/application/use-cases/agents/get-agent-run.use-case.d.ts.map +1 -0
  28. package/dist/src/application/use-cases/agents/get-agent-run.use-case.js +42 -0
  29. package/dist/src/application/use-cases/agents/list-agent-runs.use-case.d.ts +21 -0
  30. package/dist/src/application/use-cases/agents/list-agent-runs.use-case.d.ts.map +1 -0
  31. package/dist/src/application/use-cases/agents/list-agent-runs.use-case.js +54 -0
  32. package/dist/src/application/use-cases/agents/reject-agent-run.use-case.d.ts +16 -0
  33. package/dist/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -0
  34. package/dist/src/application/use-cases/agents/reject-agent-run.use-case.js +52 -0
  35. package/dist/src/application/use-cases/agents/show-agent-run.use-case.d.ts +24 -0
  36. package/dist/src/application/use-cases/agents/show-agent-run.use-case.d.ts.map +1 -0
  37. package/dist/src/application/use-cases/agents/show-agent-run.use-case.js +52 -0
  38. package/dist/src/application/use-cases/agents/stop-agent-run.use-case.d.ts +15 -0
  39. package/dist/src/application/use-cases/agents/stop-agent-run.use-case.d.ts.map +1 -0
  40. package/dist/src/application/use-cases/agents/stop-agent-run.use-case.js +86 -0
  41. package/dist/src/application/use-cases/features/create-feature.use-case.d.ts +43 -0
  42. package/dist/src/application/use-cases/features/create-feature.use-case.d.ts.map +1 -0
  43. package/dist/src/application/use-cases/features/create-feature.use-case.js +166 -0
  44. package/dist/src/application/use-cases/features/delete-feature.use-case.d.ts +27 -0
  45. package/dist/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -0
  46. package/dist/src/application/use-cases/features/delete-feature.use-case.js +83 -0
  47. package/dist/src/application/use-cases/features/list-features.use-case.d.ts +17 -0
  48. package/dist/src/application/use-cases/features/list-features.use-case.d.ts.map +1 -0
  49. package/dist/src/application/use-cases/features/list-features.use-case.js +37 -0
  50. package/dist/src/application/use-cases/features/resume-feature.use-case.d.ts +24 -0
  51. package/dist/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -0
  52. package/dist/src/application/use-cases/features/resume-feature.use-case.js +100 -0
  53. package/dist/src/application/use-cases/features/show-feature.use-case.d.ts +17 -0
  54. package/dist/src/application/use-cases/features/show-feature.use-case.d.ts.map +1 -0
  55. package/dist/src/application/use-cases/features/show-feature.use-case.js +43 -0
  56. package/dist/src/domain/generated/output.d.ts +26 -1
  57. package/dist/src/domain/generated/output.d.ts.map +1 -1
  58. package/dist/src/domain/generated/output.js +1 -0
  59. package/dist/src/infrastructure/di/container.d.ts.map +1 -1
  60. package/dist/src/infrastructure/di/container.js +64 -14
  61. package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.d.ts +4 -0
  62. package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.d.ts.map +1 -1
  63. package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.js +8 -0
  64. package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +50 -0
  65. package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -0
  66. package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +62 -0
  67. package/dist/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  68. package/dist/src/infrastructure/persistence/sqlite/migrations.js +49 -0
  69. package/dist/src/infrastructure/repositories/agent-run.repository.d.ts.map +1 -1
  70. package/dist/src/infrastructure/repositories/agent-run.repository.js +30 -8
  71. package/dist/src/infrastructure/repositories/sqlite-feature.repository.d.ts +25 -0
  72. package/dist/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -0
  73. package/dist/src/infrastructure/repositories/sqlite-feature.repository.js +113 -0
  74. package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/analyze-repository-graph.d.ts +0 -22
  75. package/dist/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts.map +1 -0
  76. package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/analyze-repository-graph.js +4 -11
  77. package/dist/src/infrastructure/services/agents/analyze-repo/prompts/analyze-repository.prompt.d.ts.map +1 -0
  78. package/dist/src/infrastructure/services/agents/{agent-executor-factory.service.d.ts → common/agent-executor-factory.service.d.ts} +3 -3
  79. package/dist/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -0
  80. package/dist/src/infrastructure/services/agents/{agent-registry.service.d.ts → common/agent-registry.service.d.ts} +1 -1
  81. package/dist/src/infrastructure/services/agents/common/agent-registry.service.d.ts.map +1 -0
  82. package/dist/src/infrastructure/services/agents/{agent-registry.service.js → common/agent-registry.service.js} +7 -1
  83. package/dist/src/infrastructure/services/agents/{agent-runner.service.d.ts → common/agent-runner.service.d.ts} +5 -5
  84. package/dist/src/infrastructure/services/agents/common/agent-runner.service.d.ts.map +1 -0
  85. package/dist/src/infrastructure/services/agents/{agent-runner.service.js → common/agent-runner.service.js} +4 -4
  86. package/dist/src/infrastructure/services/agents/{agent-validator.service.d.ts → common/agent-validator.service.d.ts} +2 -2
  87. package/dist/src/infrastructure/services/agents/common/agent-validator.service.d.ts.map +1 -0
  88. package/dist/src/infrastructure/services/agents/{langgraph → common}/checkpointer.d.ts +1 -0
  89. package/dist/src/infrastructure/services/agents/common/checkpointer.d.ts.map +1 -0
  90. package/dist/src/infrastructure/services/agents/{langgraph → common}/checkpointer.js +6 -0
  91. package/dist/src/infrastructure/services/agents/{executors → common/executors}/claude-code-executor.service.d.ts +9 -2
  92. package/dist/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -0
  93. package/dist/src/infrastructure/services/agents/{executors → common/executors}/claude-code-executor.service.js +103 -6
  94. package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts +15 -0
  95. package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts.map +1 -0
  96. package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.js +16 -0
  97. package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.d.ts +17 -0
  98. package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.d.ts.map +1 -0
  99. package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.js +49 -0
  100. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +244 -0
  101. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -0
  102. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +36 -0
  103. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +20 -0
  104. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -0
  105. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +90 -0
  106. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +31 -0
  107. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -0
  108. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +236 -0
  109. package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.d.ts +19 -0
  110. package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.d.ts.map +1 -0
  111. package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.js +38 -0
  112. package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.d.ts +7 -0
  113. package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.d.ts.map +1 -0
  114. package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.js +9 -0
  115. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts +11 -0
  116. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -0
  117. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +23 -0
  118. package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +40 -0
  119. package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -0
  120. package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +114 -0
  121. package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.d.ts +7 -0
  122. package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.d.ts.map +1 -0
  123. package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.js +9 -0
  124. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.d.ts +9 -0
  125. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.d.ts.map +1 -0
  126. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.js +94 -0
  127. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts +8 -0
  128. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts.map +1 -0
  129. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +18 -0
  130. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.d.ts +11 -0
  131. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.d.ts.map +1 -0
  132. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.js +170 -0
  133. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts +10 -0
  134. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts.map +1 -0
  135. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.js +116 -0
  136. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.d.ts +10 -0
  137. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.d.ts.map +1 -0
  138. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.js +121 -0
  139. package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.d.ts +7 -0
  140. package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.d.ts.map +1 -0
  141. package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.js +9 -0
  142. package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.d.ts +7 -0
  143. package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.d.ts.map +1 -0
  144. package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.js +9 -0
  145. package/dist/src/infrastructure/services/agents/feature-agent/state.d.ts +39 -0
  146. package/dist/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -0
  147. package/dist/src/infrastructure/services/agents/feature-agent/state.js +27 -0
  148. package/dist/src/infrastructure/services/external/github-issue.service.d.ts +19 -0
  149. package/dist/src/infrastructure/services/external/github-issue.service.d.ts.map +1 -0
  150. package/dist/src/infrastructure/services/external/github-issue.service.js +59 -0
  151. package/dist/src/infrastructure/services/external/jira-ticket.service.d.ts +23 -0
  152. package/dist/src/infrastructure/services/external/jira-ticket.service.d.ts.map +1 -0
  153. package/dist/src/infrastructure/services/external/jira-ticket.service.js +57 -0
  154. package/dist/src/infrastructure/services/git/worktree.service.d.ts +28 -0
  155. package/dist/src/infrastructure/services/git/worktree.service.d.ts.map +1 -0
  156. package/dist/src/infrastructure/services/git/worktree.service.js +112 -0
  157. package/dist/src/infrastructure/services/spec/spec-initializer.service.d.ts +17 -0
  158. package/dist/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -0
  159. package/dist/src/infrastructure/services/spec/spec-initializer.service.js +281 -0
  160. package/dist/src/presentation/cli/commands/agent/approve.command.d.ts +11 -0
  161. package/dist/src/presentation/cli/commands/agent/approve.command.d.ts.map +1 -0
  162. package/dist/src/presentation/cli/commands/agent/approve.command.js +42 -0
  163. package/dist/src/presentation/cli/commands/agent/delete.command.d.ts +11 -0
  164. package/dist/src/presentation/cli/commands/agent/delete.command.d.ts.map +1 -0
  165. package/dist/src/presentation/cli/commands/agent/delete.command.js +49 -0
  166. package/dist/src/presentation/cli/commands/agent/index.d.ts +21 -0
  167. package/dist/src/presentation/cli/commands/agent/index.d.ts.map +1 -0
  168. package/dist/src/presentation/cli/commands/agent/index.js +38 -0
  169. package/dist/src/presentation/cli/commands/agent/logs.command.d.ts +13 -0
  170. package/dist/src/presentation/cli/commands/agent/logs.command.d.ts.map +1 -0
  171. package/dist/src/presentation/cli/commands/agent/logs.command.js +163 -0
  172. package/dist/src/presentation/cli/commands/agent/ls.command.d.ts +12 -0
  173. package/dist/src/presentation/cli/commands/agent/ls.command.d.ts.map +1 -0
  174. package/dist/src/presentation/cli/commands/agent/ls.command.js +111 -0
  175. package/dist/src/presentation/cli/commands/agent/reject.command.d.ts +11 -0
  176. package/dist/src/presentation/cli/commands/agent/reject.command.d.ts.map +1 -0
  177. package/dist/src/presentation/cli/commands/agent/reject.command.js +43 -0
  178. package/dist/src/presentation/cli/commands/agent/resolve-run.d.ts +10 -0
  179. package/dist/src/presentation/cli/commands/agent/resolve-run.d.ts.map +1 -0
  180. package/dist/src/presentation/cli/commands/agent/resolve-run.js +27 -0
  181. package/dist/src/presentation/cli/commands/agent/show.command.d.ts +12 -0
  182. package/dist/src/presentation/cli/commands/agent/show.command.d.ts.map +1 -0
  183. package/dist/src/presentation/cli/commands/agent/show.command.js +202 -0
  184. package/dist/src/presentation/cli/commands/agent/stop.command.d.ts +11 -0
  185. package/dist/src/presentation/cli/commands/agent/stop.command.d.ts.map +1 -0
  186. package/dist/src/presentation/cli/commands/agent/stop.command.js +42 -0
  187. package/dist/src/presentation/cli/commands/feat/del.command.d.ts +17 -0
  188. package/dist/src/presentation/cli/commands/feat/del.command.d.ts.map +1 -0
  189. package/dist/src/presentation/cli/commands/feat/del.command.js +55 -0
  190. package/dist/src/presentation/cli/commands/feat/index.d.ts +17 -0
  191. package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -0
  192. package/dist/src/presentation/cli/commands/feat/index.js +29 -0
  193. package/dist/src/presentation/cli/commands/feat/ls.command.d.ts +15 -0
  194. package/dist/src/presentation/cli/commands/feat/ls.command.d.ts.map +1 -0
  195. package/dist/src/presentation/cli/commands/feat/ls.command.js +112 -0
  196. package/dist/src/presentation/cli/commands/feat/new.command.d.ts +17 -0
  197. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -0
  198. package/dist/src/presentation/cli/commands/feat/new.command.js +64 -0
  199. package/dist/src/presentation/cli/commands/feat/resume.command.d.ts +11 -0
  200. package/dist/src/presentation/cli/commands/feat/resume.command.d.ts.map +1 -0
  201. package/dist/src/presentation/cli/commands/feat/resume.command.js +33 -0
  202. package/dist/src/presentation/cli/commands/feat/show.command.d.ts +11 -0
  203. package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -0
  204. package/dist/src/presentation/cli/commands/feat/show.command.js +128 -0
  205. package/dist/src/presentation/cli/index.d.ts +8 -4
  206. package/dist/src/presentation/cli/index.d.ts.map +1 -1
  207. package/dist/src/presentation/cli/index.js +12 -4
  208. package/dist/src/presentation/cli/ui/detail-view.d.ts +43 -0
  209. package/dist/src/presentation/cli/ui/detail-view.d.ts.map +1 -0
  210. package/dist/src/presentation/cli/ui/detail-view.js +57 -0
  211. package/dist/src/presentation/cli/ui/index.d.ts +2 -0
  212. package/dist/src/presentation/cli/ui/index.d.ts.map +1 -1
  213. package/dist/src/presentation/cli/ui/index.js +2 -0
  214. package/dist/src/presentation/cli/ui/list-view.d.ts +34 -0
  215. package/dist/src/presentation/cli/ui/list-view.d.ts.map +1 -0
  216. package/dist/src/presentation/cli/ui/list-view.js +65 -0
  217. package/dist/src/presentation/cli/ui/symbols.d.ts +5 -1
  218. package/dist/src/presentation/cli/ui/symbols.d.ts.map +1 -1
  219. package/dist/src/presentation/cli/ui/symbols.js +4 -0
  220. package/dist/tsconfig.build.tsbuildinfo +1 -1
  221. package/package.json +2 -1
  222. package/web/.next/BUILD_ID +1 -1
  223. package/web/.next/build-manifest.json +2 -2
  224. package/web/.next/cache/.previewinfo +1 -1
  225. package/web/.next/cache/.rscinfo +1 -1
  226. package/web/.next/cache/config.json +3 -3
  227. package/web/.next/fallback-build-manifest.json +2 -2
  228. package/web/.next/prerender-manifest.json +3 -3
  229. package/web/.next/required-server-files.js +1 -1
  230. package/web/.next/required-server-files.json +1 -1
  231. package/web/.next/server/app/_global-error.html +2 -2
  232. package/web/.next/server/app/_global-error.rsc +1 -1
  233. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  234. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  235. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  236. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  237. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  238. package/web/.next/server/app/_not-found.html +2 -2
  239. package/web/.next/server/app/_not-found.rsc +1 -1
  240. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  241. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  242. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  243. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  244. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  245. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  246. package/web/.next/server/app/index.html +2 -2
  247. package/web/.next/server/app/index.rsc +1 -1
  248. package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  249. package/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
  250. package/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  251. package/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
  252. package/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  253. package/web/.next/server/app/version.html +2 -2
  254. package/web/.next/server/app/version.rsc +1 -1
  255. package/web/.next/server/app/version.segments/_full.segment.rsc +1 -1
  256. package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
  257. package/web/.next/server/app/version.segments/_index.segment.rsc +1 -1
  258. package/web/.next/server/app/version.segments/_tree.segment.rsc +1 -1
  259. package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +1 -1
  260. package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
  261. package/web/.next/server/chunks/ssr/_19be0743._.js +1 -1
  262. package/web/.next/server/pages/404.html +2 -2
  263. package/web/.next/server/pages/500.html +2 -2
  264. package/web/.next/server/server-reference-manifest.js +1 -1
  265. package/web/.next/server/server-reference-manifest.json +1 -1
  266. package/web/.next/trace +1 -1
  267. package/web/.next/trace-build +1 -1
  268. package/dist/src/infrastructure/services/agents/agent-executor-factory.service.d.ts.map +0 -1
  269. package/dist/src/infrastructure/services/agents/agent-registry.service.d.ts.map +0 -1
  270. package/dist/src/infrastructure/services/agents/agent-runner.service.d.ts.map +0 -1
  271. package/dist/src/infrastructure/services/agents/agent-validator.service.d.ts.map +0 -1
  272. package/dist/src/infrastructure/services/agents/executors/claude-code-executor.service.d.ts.map +0 -1
  273. package/dist/src/infrastructure/services/agents/langgraph/analyze-repository-graph.d.ts.map +0 -1
  274. package/dist/src/infrastructure/services/agents/langgraph/checkpointer.d.ts.map +0 -1
  275. package/dist/src/infrastructure/services/agents/langgraph/prompts/analyze-repository.prompt.d.ts.map +0 -1
  276. /package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/prompts/analyze-repository.prompt.d.ts +0 -0
  277. /package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/prompts/analyze-repository.prompt.js +0 -0
  278. /package/dist/src/infrastructure/services/agents/{agent-executor-factory.service.js → common/agent-executor-factory.service.js} +0 -0
  279. /package/dist/src/infrastructure/services/agents/{agent-validator.service.js → common/agent-validator.service.js} +0 -0
  280. /package/web/.next/static/{rCkFI74-eja9LrkBfHFpp → XV-wYY85Xk9ANCuQDQ6_H}/_buildManifest.js +0 -0
  281. /package/web/.next/static/{rCkFI74-eja9LrkBfHFpp → XV-wYY85Xk9ANCuQDQ6_H}/_clientMiddlewareManifest.json +0 -0
  282. /package/web/.next/static/{rCkFI74-eja9LrkBfHFpp → XV-wYY85Xk9ANCuQDQ6_H}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implement.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Implement Phase Prompt — PLACEHOLDER
3
+ *
4
+ * The implement phase is not yet wired up. This returns a programming joke
5
+ * to clearly signal it's a placeholder while keeping the graph pipeline intact.
6
+ */
7
+ const JOKES = [
8
+ 'Why do programmers prefer dark mode? Because light attracts bugs.',
9
+ 'A SQL query walks into a bar, walks up to two tables and asks... "Can I JOIN you?"',
10
+ "There are only 10 types of people: those who understand binary, and those who don't.",
11
+ "Why was the JavaScript developer sad? Because he didn't Node how to Express himself.",
12
+ "What's a programmer's favorite hangout place? Foo Bar.",
13
+ 'To understand recursion, you must first understand recursion.',
14
+ "!false — it's funny because it's true.",
15
+ ];
16
+ export function getImplementPlaceholderJoke() {
17
+ return JOKES[Math.floor(Math.random() * JOKES.length)];
18
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Plan Phase Prompt
3
+ *
4
+ * Instructs the agent to create an implementation plan (plan.yaml) and
5
+ * a task breakdown (tasks.yaml) from the spec and research.
6
+ * The plan covers architecture decisions and rationale.
7
+ * The tasks cover concrete TDD work items.
8
+ */
9
+ import type { FeatureAgentState } from '../../state.js';
10
+ export declare function buildPlanPrompt(state: FeatureAgentState): string;
11
+ //# sourceMappingURL=plan.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAiKhE"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Plan Phase Prompt
3
+ *
4
+ * Instructs the agent to create an implementation plan (plan.yaml) and
5
+ * a task breakdown (tasks.yaml) from the spec and research.
6
+ * The plan covers architecture decisions and rationale.
7
+ * The tasks cover concrete TDD work items.
8
+ */
9
+ import { readSpecFile } from '../node-helpers.js';
10
+ export function buildPlanPrompt(state) {
11
+ const specContent = readSpecFile(state.specDir, 'spec.yaml');
12
+ const researchContent = readSpecFile(state.specDir, 'research.yaml');
13
+ return `You are a software architect performing the PLANNING phase of feature development.
14
+
15
+ ## Your Task
16
+
17
+ 1. Read the feature spec (with requirements) and research findings
18
+ 2. Create a high-level implementation plan with architecture decisions, phases, and rationale
19
+ 3. Break the work into ordered tasks with TDD cycles (RED-GREEN-REFACTOR)
20
+ 4. Write the plan to plan.yaml AND the task breakdown to tasks.yaml
21
+ 5. plan.yaml covers strategy and architecture — tasks.yaml covers the concrete work items (no duplication)
22
+
23
+ ## Feature Spec
24
+
25
+ ${specContent}
26
+
27
+ ## Research Findings
28
+
29
+ ${researchContent}
30
+
31
+ ## What to Produce
32
+
33
+ ### Implementation Plan (plan.yaml) — Strategy & Architecture Only
34
+ - Architecture overview and how the feature fits the existing codebase
35
+ - Key design decisions with rationale (reference research where applicable)
36
+ - Implementation phases — high-level names and descriptions (NO individual task lists)
37
+ - Files to create and files to modify
38
+ - Risk mitigation strategies
39
+ - Do NOT include task breakdowns — those belong exclusively in tasks.yaml
40
+
41
+ ### Task Breakdown (tasks.yaml)
42
+ - Concrete, ordered tasks that implement the plan
43
+ - Each task with TDD cycle: what test to write first (RED), minimal implementation (GREEN), cleanup (REFACTOR)
44
+ - Dependencies between tasks
45
+ - Acceptance criteria for each task
46
+ - Effort estimates
47
+
48
+ ## Output Instructions
49
+
50
+ You MUST write TWO files:
51
+
52
+ ### File 1: ${state.specDir}/plan.yaml
53
+
54
+ name: (feature name)
55
+ summary: >
56
+ (Summary of the implementation approach and key decisions)
57
+
58
+ relatedFeatures: []
59
+ technologies:
60
+ - (technologies needed)
61
+ relatedLinks: []
62
+
63
+ phases:
64
+ - id: phase-1
65
+ name: '(Phase Name — e.g., "Foundation & Domain Setup")'
66
+ description: '(What this phase accomplishes and why it comes first)'
67
+ parallel: false
68
+ - id: phase-2
69
+ name: '(Next Phase)'
70
+ description: '(What this phase accomplishes)'
71
+ parallel: false
72
+
73
+ filesToCreate:
74
+ - (path/to/new/file.ts)
75
+
76
+ filesToModify:
77
+ - (path/to/existing/file.ts)
78
+
79
+ openQuestions: []
80
+
81
+ content: |
82
+ ## Architecture Overview
83
+
84
+ (How the implementation fits the existing architecture.
85
+ Reference specific patterns from the codebase.)
86
+
87
+ ## Key Design Decisions
88
+
89
+ (For each decision, explain what was chosen, what alternatives were considered,
90
+ and why this approach is best. Reference research findings.)
91
+
92
+ ## Implementation Strategy
93
+
94
+ (High-level approach: phase ordering rationale, what comes first and why)
95
+
96
+ ## Risk Mitigation
97
+
98
+ | Risk | Mitigation |
99
+ | ---- | ---------- |
100
+ | (risk) | (how to handle it) |
101
+
102
+ ### File 2: ${state.specDir}/tasks.yaml
103
+
104
+ name: (feature name)
105
+ summary: >
106
+ (Summary: N tasks across M phases)
107
+
108
+ relatedFeatures: []
109
+ technologies: []
110
+ relatedLinks: []
111
+
112
+ tasks:
113
+ - id: task-1
114
+ phaseId: phase-1
115
+ title: '(Task Title)'
116
+ description: '(What this task accomplishes and why)'
117
+ state: Todo
118
+ dependencies: []
119
+ acceptanceCriteria:
120
+ - '(Specific, testable criterion)'
121
+ - '(Another criterion)'
122
+ tdd:
123
+ red:
124
+ - '(Write test that asserts X behavior)'
125
+ green:
126
+ - '(Implement minimal code to pass the test)'
127
+ refactor:
128
+ - '(Clean up: extract helpers, improve naming, etc.)'
129
+ estimatedEffort: '(time estimate, e.g., 1h, 30min)'
130
+
131
+ - id: task-2
132
+ phaseId: phase-1
133
+ title: '(Next Task)'
134
+ description: '...'
135
+ state: Todo
136
+ dependencies:
137
+ - task-1
138
+ acceptanceCriteria:
139
+ - '...'
140
+ tdd:
141
+ red:
142
+ - '...'
143
+ green:
144
+ - '...'
145
+ refactor:
146
+ - '...'
147
+ estimatedEffort: '...'
148
+
149
+ totalEstimate: '(total estimated hours)'
150
+ openQuestions: []
151
+
152
+ content: |
153
+ ## Summary
154
+
155
+ (Brief narrative: what gets built, in what order, and why.
156
+ Do NOT list individual tasks — the structured tasks array above is the source of truth.
157
+ Instead, summarize the overall flow: "First we set up X, then wire Y, finally integrate Z.")
158
+
159
+ ## Constraints
160
+
161
+ - Write to BOTH ${state.specDir}/plan.yaml AND ${state.specDir}/tasks.yaml
162
+ - Every code task MUST have TDD cycles (red/green/refactor) — non-code tasks (installs, docs) can set tdd: null
163
+ - Tasks must be ordered by dependency — no task should depend on a later task
164
+ - Each phase should group logically related tasks
165
+ - Prefer small, focused tasks over large monolithic ones
166
+ - Follow existing codebase conventions for file placement and naming
167
+ - Do NOT create any other files
168
+ - Do NOT modify any source code
169
+ - Do NOT start implementing — planning only`;
170
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Requirements Phase Prompt
3
+ *
4
+ * Instructs the agent to build comprehensive requirements from the analysis,
5
+ * including product questions with AI-recommended default answers.
6
+ * Writes back to spec.yaml with full requirements.
7
+ */
8
+ import type { FeatureAgentState } from '../../state.js';
9
+ export declare function buildRequirementsPrompt(state: FeatureAgentState): string;
10
+ //# sourceMappingURL=requirements.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirements.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA4GxE"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Requirements Phase Prompt
3
+ *
4
+ * Instructs the agent to build comprehensive requirements from the analysis,
5
+ * including product questions with AI-recommended default answers.
6
+ * Writes back to spec.yaml with full requirements.
7
+ */
8
+ import { readSpecFile } from '../node-helpers.js';
9
+ export function buildRequirementsPrompt(state) {
10
+ const specContent = readSpecFile(state.specDir, 'spec.yaml');
11
+ return `You are a product analyst performing the REQUIREMENTS phase of feature development.
12
+
13
+ ## Your Task
14
+
15
+ 1. Read the current spec with codebase analysis below
16
+ 2. Build a complete set of functional and non-functional requirements
17
+ 3. Define clear, measurable success criteria
18
+ 4. Identify product decisions that need input — for EACH one, provide your AI-recommended default answer with rationale
19
+ 5. Update the spec YAML file with the full requirements
20
+
21
+ ## Current Spec (with analysis)
22
+
23
+ ${specContent}
24
+
25
+ ## What to Produce
26
+
27
+ ### Requirements
28
+ - **Functional requirements (FR-N)**: what the system must DO
29
+ - **Non-functional requirements (NFR-N)**: performance, security, UX, maintainability constraints
30
+ - **Success criteria**: measurable checkboxes that define "done"
31
+
32
+ ### Product Questions with AI Defaults
33
+ For every ambiguous product decision, create an openQuestion entry with:
34
+ - A clear question
35
+ - resolved: true (your recommendation is the default)
36
+ - Your recommended answer with reasoning
37
+
38
+ The user can later review and override these defaults. This is the AI-recommended path — not the only option.
39
+
40
+ ## Output Instructions
41
+
42
+ Update the file at: ${state.specDir}/spec.yaml
43
+
44
+ Write the COMPLETE file. Preserve name/number/branch/technologies from analysis and update:
45
+
46
+ name: (keep)
47
+ number: (keep)
48
+ branch: (keep)
49
+ oneLiner: (keep or refine)
50
+ summary: >
51
+ (keep or refine based on requirements)
52
+ phase: Requirements
53
+ sizeEstimate: (keep or update if scope changed)
54
+
55
+ relatedFeatures: (keep)
56
+
57
+ technologies:
58
+ - (keep from analysis, add any new ones identified)
59
+
60
+ relatedLinks: (keep)
61
+
62
+ openQuestions:
63
+ - question: 'Should X use approach A or B?'
64
+ resolved: true
65
+ answer: 'Recommend A because [rationale]. Alternative: B if [condition].'
66
+ - question: 'What level of Y is needed?'
67
+ resolved: true
68
+ answer: 'Recommend Z level because [rationale].'
69
+
70
+ content: |
71
+ ## Problem Statement
72
+
73
+ (refined from analysis)
74
+
75
+ ## Success Criteria
76
+
77
+ - [ ] (measurable criterion 1)
78
+ - [ ] (measurable criterion 2)
79
+ - [ ] (etc.)
80
+
81
+ ## Functional Requirements
82
+
83
+ - **FR-1**: (requirement description)
84
+ - **FR-2**: (requirement description)
85
+
86
+ ## Non-Functional Requirements
87
+
88
+ - **NFR-1**: (performance/security/UX requirement)
89
+ - **NFR-2**: (etc.)
90
+
91
+ ## Product Questions & AI Recommendations
92
+
93
+ | # | Question | AI Recommendation | Rationale |
94
+ | - | -------- | ----------------- | --------- |
95
+ | 1 | (question) | (recommended answer) | (why) |
96
+
97
+ ## Affected Areas
98
+
99
+ (keep from analysis)
100
+
101
+ ## Dependencies
102
+
103
+ (keep from analysis, add any new ones)
104
+
105
+ ## Size Estimate
106
+
107
+ (keep or update with requirements-informed reasoning)
108
+
109
+ ## Constraints
110
+
111
+ - Write ONLY to ${state.specDir}/spec.yaml
112
+ - Every open question MUST have an AI-recommended default answer (resolved: true)
113
+ - Requirements must be specific and testable, not vague
114
+ - Do NOT create any other files
115
+ - Do NOT modify any source code`;
116
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Research Phase Prompt
3
+ *
4
+ * Instructs the agent to research technical implementation details,
5
+ * evaluate libraries, and document architecture decisions with rationale.
6
+ * Writes to research.yaml.
7
+ */
8
+ import type { FeatureAgentState } from '../../state.js';
9
+ export declare function buildResearchPrompt(state: FeatureAgentState): string;
10
+ //# sourceMappingURL=research.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAiHpE"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Research Phase Prompt
3
+ *
4
+ * Instructs the agent to research technical implementation details,
5
+ * evaluate libraries, and document architecture decisions with rationale.
6
+ * Writes to research.yaml.
7
+ */
8
+ import { readSpecFile } from '../node-helpers.js';
9
+ export function buildResearchPrompt(state) {
10
+ const specContent = readSpecFile(state.specDir, 'spec.yaml');
11
+ const existingResearch = readSpecFile(state.specDir, 'research.yaml');
12
+ return `You are a technical architect performing the RESEARCH phase of feature development.
13
+
14
+ ## Your Task
15
+
16
+ 1. Read the feature spec with requirements below
17
+ 2. Research how to implement this feature technically
18
+ 3. For each technical decision, evaluate multiple options and choose one with clear rationale
19
+ 4. Evaluate libraries needed — document what to use, what to reject, and why
20
+ 5. Identify security and performance implications
21
+ 6. Write your complete research to the research YAML file
22
+
23
+ ## Feature Spec (with requirements)
24
+
25
+ ${specContent}
26
+
27
+ ${existingResearch ? `## Existing Research (update/expand this)\n\n${existingResearch}` : ''}
28
+
29
+ ## What to Research
30
+
31
+ - **Architecture decisions**: how this fits into the existing codebase architecture
32
+ - **Technology choices**: which libraries/tools/patterns to use (and which to reject)
33
+ - **Data model changes**: any schema or model updates needed
34
+ - **API design**: endpoints, contracts, interfaces
35
+ - **Security implications**: authentication, authorization, data safety
36
+ - **Performance considerations**: caching, optimization, scalability
37
+ - **Integration points**: how this connects to existing systems
38
+
39
+ ## Output Instructions
40
+
41
+ Write your research to: ${state.specDir}/research.yaml
42
+
43
+ Use this YAML structure:
44
+
45
+ name: (feature name from spec)
46
+ summary: >
47
+ (2-3 sentence summary of research findings and key decisions)
48
+
49
+ relatedFeatures: []
50
+
51
+ technologies:
52
+ - (list all technologies evaluated or needed)
53
+
54
+ relatedLinks:
55
+ - (relevant documentation URLs discovered during research)
56
+
57
+ decisions:
58
+ - title: '(Decision Title — e.g., "Database Schema Design")'
59
+ chosen: '(The chosen approach)'
60
+ rejected:
61
+ - '(Alternative 1 that was considered and why not)'
62
+ - '(Alternative 2 that was considered and why not)'
63
+ rationale: >
64
+ (Detailed reasoning for why the chosen approach is best.
65
+ Reference the codebase's existing patterns where relevant.)
66
+
67
+ - title: '(Next Decision)'
68
+ chosen: '...'
69
+ rejected:
70
+ - '...'
71
+ rationale: >
72
+ ...
73
+
74
+ openQuestions:
75
+ - question: '(Any technical question that arose)'
76
+ resolved: true
77
+ answer: '(Resolution with technical reasoning)'
78
+
79
+ content: |
80
+ ## Technology Decisions
81
+
82
+ ### 1. (Decision Title)
83
+
84
+ **Chosen:** (approach)
85
+
86
+ **Rejected:**
87
+ - (alternative 1) — (why rejected)
88
+ - (alternative 2) — (why rejected)
89
+
90
+ **Rationale:** (detailed reasoning)
91
+
92
+ ### 2. (Next Decision)
93
+ ...
94
+
95
+ ## Library Analysis
96
+
97
+ | Library | Purpose | Decision | Reasoning |
98
+ | ------- | ------- | -------- | --------- |
99
+ | (lib) | (purpose) | Use/Reject | (why) |
100
+
101
+ ## Security Considerations
102
+
103
+ (security implications and mitigations)
104
+
105
+ ## Performance Implications
106
+
107
+ (performance considerations and optimizations)
108
+
109
+ ## Architecture Notes
110
+
111
+ (how this fits into the existing codebase architecture)
112
+
113
+ ## Constraints
114
+
115
+ - Write ONLY to ${state.specDir}/research.yaml
116
+ - Every decision MUST have at least one rejected alternative with reasoning
117
+ - Every decision MUST have clear rationale referencing the codebase where applicable
118
+ - Prefer solutions that follow existing codebase patterns and conventions
119
+ - Do NOT create any other files
120
+ - Do NOT modify any source code`;
121
+ }
@@ -0,0 +1,7 @@
1
+ import type { IAgentExecutor } from '../../../../../application/ports/output/agent-executor.interface.js';
2
+ /**
3
+ * Creates the requirements node that builds comprehensive requirements
4
+ * with product questions and AI-recommended defaults, writing to spec.yaml.
5
+ */
6
+ export declare function createRequirementsNode(executor: IAgentExecutor): (state: import("../state.js").FeatureAgentState) => Promise<Partial<import("../state.js").FeatureAgentState>>;
7
+ //# sourceMappingURL=requirements.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirements.node.d.ts","sourceRoot":"","sources":["../../../../../../../src/infrastructure/services/agents/feature-agent/nodes/requirements.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAI7F;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,iHAE9D"}
@@ -0,0 +1,9 @@
1
+ import { executeNode } from './node-helpers.js';
2
+ import { buildRequirementsPrompt } from './prompts/requirements.prompt.js';
3
+ /**
4
+ * Creates the requirements node that builds comprehensive requirements
5
+ * with product questions and AI-recommended defaults, writing to spec.yaml.
6
+ */
7
+ export function createRequirementsNode(executor) {
8
+ return executeNode('requirements', executor, buildRequirementsPrompt);
9
+ }
@@ -0,0 +1,7 @@
1
+ import type { IAgentExecutor } from '../../../../../application/ports/output/agent-executor.interface.js';
2
+ /**
3
+ * Creates the research node that evaluates technical approaches,
4
+ * libraries, and architecture decisions, writing to research.yaml.
5
+ */
6
+ export declare function createResearchNode(executor: IAgentExecutor): (state: import("../state.js").FeatureAgentState) => Promise<Partial<import("../state.js").FeatureAgentState>>;
7
+ //# sourceMappingURL=research.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research.node.d.ts","sourceRoot":"","sources":["../../../../../../../src/infrastructure/services/agents/feature-agent/nodes/research.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAI7F;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,iHAE1D"}
@@ -0,0 +1,9 @@
1
+ import { executeNode } from './node-helpers.js';
2
+ import { buildResearchPrompt } from './prompts/research.prompt.js';
3
+ /**
4
+ * Creates the research node that evaluates technical approaches,
5
+ * libraries, and architecture decisions, writing to research.yaml.
6
+ */
7
+ export function createResearchNode(executor) {
8
+ return executeNode('research', executor, buildResearchPrompt);
9
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * State annotation for the feature-agent graph.
3
+ *
4
+ * Uses LangGraph's Annotation API to define state channels.
5
+ * The `messages` channel uses a reducer to accumulate messages
6
+ * from all nodes as the graph executes.
7
+ */
8
+ export declare const FeatureAgentAnnotation: import("@langchain/langgraph").AnnotationRoot<{
9
+ featureId: {
10
+ (): import("@langchain/langgraph").LastValue<string>;
11
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
12
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
13
+ };
14
+ repositoryPath: {
15
+ (): import("@langchain/langgraph").LastValue<string>;
16
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
17
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
18
+ };
19
+ specDir: {
20
+ (): import("@langchain/langgraph").LastValue<string>;
21
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
22
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
23
+ };
24
+ worktreePath: {
25
+ (): import("@langchain/langgraph").LastValue<string>;
26
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
27
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
28
+ };
29
+ currentNode: {
30
+ (): import("@langchain/langgraph").LastValue<string>;
31
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
32
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
33
+ };
34
+ error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
35
+ approvalMode: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
36
+ messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
37
+ }>;
38
+ export type FeatureAgentState = typeof FeatureAgentAnnotation.State;
39
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../../src/infrastructure/services/agents/feature-agent/state.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBjC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,sBAAsB,CAAC,KAAK,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Annotation } from '@langchain/langgraph';
2
+ /**
3
+ * State annotation for the feature-agent graph.
4
+ *
5
+ * Uses LangGraph's Annotation API to define state channels.
6
+ * The `messages` channel uses a reducer to accumulate messages
7
+ * from all nodes as the graph executes.
8
+ */
9
+ export const FeatureAgentAnnotation = Annotation.Root({
10
+ featureId: (Annotation),
11
+ repositoryPath: (Annotation),
12
+ specDir: (Annotation),
13
+ worktreePath: (Annotation),
14
+ currentNode: (Annotation),
15
+ error: Annotation({
16
+ reducer: (prev, next) => (next !== undefined ? next : prev),
17
+ default: () => null,
18
+ }),
19
+ approvalMode: Annotation({
20
+ reducer: (prev, next) => next ?? prev,
21
+ default: () => undefined,
22
+ }),
23
+ messages: Annotation({
24
+ reducer: (prev, next) => [...prev, ...next],
25
+ default: () => [],
26
+ }),
27
+ });
@@ -0,0 +1,19 @@
1
+ /**
2
+ * GitHub Issue Fetcher Service
3
+ *
4
+ * Fetches GitHub issues using the gh CLI subprocess.
5
+ * Supports owner/repo#number and #number (current repo) formats.
6
+ */
7
+ import type { IExternalIssueFetcher, ExternalIssue } from '../../../application/ports/output/external-issue-fetcher.interface.js';
8
+ type ExecFileFn = (cmd: string, args: string[], options?: object) => Promise<{
9
+ stdout: string;
10
+ stderr?: string;
11
+ }>;
12
+ export declare class GitHubIssueFetcher implements Pick<IExternalIssueFetcher, 'fetchGitHubIssue'> {
13
+ private readonly execFile;
14
+ constructor(execFile: ExecFileFn);
15
+ fetchGitHubIssue(ref: string): Promise<ExternalIssue>;
16
+ private parseRef;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=github-issue.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-issue.service.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/services/external/github-issue.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACd,MAAM,gEAAgE,CAAC;AAMxE,KAAK,UAAU,GAAG,CAChB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAElD,qBAAa,kBAAmB,YAAW,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,UAAU;IAE3C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAyC3D,OAAO,CAAC,QAAQ;CAoBjB"}