@shepai/cli 1.14.1 → 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 (283) hide show
  1. package/README.md +191 -101
  2. package/dist/eslint.config.mjs +2 -0
  3. package/dist/src/application/ports/output/external-issue-fetcher.interface.d.ts +69 -0
  4. package/dist/src/application/ports/output/external-issue-fetcher.interface.d.ts.map +1 -0
  5. package/dist/src/application/ports/output/external-issue-fetcher.interface.js +46 -0
  6. package/dist/src/application/ports/output/feature-agent-process.interface.d.ts +44 -0
  7. package/dist/src/application/ports/output/feature-agent-process.interface.d.ts.map +1 -0
  8. package/dist/src/application/ports/output/feature-agent-process.interface.js +12 -0
  9. package/dist/src/application/ports/output/feature-repository.interface.d.ts +76 -0
  10. package/dist/src/application/ports/output/feature-repository.interface.d.ts.map +1 -0
  11. package/dist/src/application/ports/output/feature-repository.interface.js +11 -0
  12. package/dist/src/application/ports/output/index.d.ts +3 -0
  13. package/dist/src/application/ports/output/index.d.ts.map +1 -1
  14. package/dist/src/application/ports/output/index.js +1 -1
  15. package/dist/src/application/ports/output/spec-initializer.interface.d.ts +33 -0
  16. package/dist/src/application/ports/output/spec-initializer.interface.d.ts.map +1 -0
  17. package/dist/src/application/ports/output/spec-initializer.interface.js +8 -0
  18. package/dist/src/application/ports/output/worktree-service.interface.d.ts +83 -0
  19. package/dist/src/application/ports/output/worktree-service.interface.d.ts.map +1 -0
  20. package/dist/src/application/ports/output/worktree-service.interface.js +30 -0
  21. package/dist/src/application/use-cases/agents/approve-agent-run.use-case.d.ts +22 -0
  22. package/dist/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -0
  23. package/dist/src/application/use-cases/agents/approve-agent-run.use-case.js +67 -0
  24. package/dist/src/application/use-cases/agents/delete-agent-run.use-case.d.ts +16 -0
  25. package/dist/src/application/use-cases/agents/delete-agent-run.use-case.d.ts.map +1 -0
  26. package/dist/src/application/use-cases/agents/delete-agent-run.use-case.js +46 -0
  27. package/dist/src/application/use-cases/agents/get-agent-run.use-case.d.ts +22 -0
  28. package/dist/src/application/use-cases/agents/get-agent-run.use-case.d.ts.map +1 -0
  29. package/dist/src/application/use-cases/agents/get-agent-run.use-case.js +42 -0
  30. package/dist/src/application/use-cases/agents/list-agent-runs.use-case.d.ts +21 -0
  31. package/dist/src/application/use-cases/agents/list-agent-runs.use-case.d.ts.map +1 -0
  32. package/dist/src/application/use-cases/agents/list-agent-runs.use-case.js +54 -0
  33. package/dist/src/application/use-cases/agents/reject-agent-run.use-case.d.ts +16 -0
  34. package/dist/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -0
  35. package/dist/src/application/use-cases/agents/reject-agent-run.use-case.js +52 -0
  36. package/dist/src/application/use-cases/agents/show-agent-run.use-case.d.ts +24 -0
  37. package/dist/src/application/use-cases/agents/show-agent-run.use-case.d.ts.map +1 -0
  38. package/dist/src/application/use-cases/agents/show-agent-run.use-case.js +52 -0
  39. package/dist/src/application/use-cases/agents/stop-agent-run.use-case.d.ts +15 -0
  40. package/dist/src/application/use-cases/agents/stop-agent-run.use-case.d.ts.map +1 -0
  41. package/dist/src/application/use-cases/agents/stop-agent-run.use-case.js +86 -0
  42. package/dist/src/application/use-cases/features/create-feature.use-case.d.ts +43 -0
  43. package/dist/src/application/use-cases/features/create-feature.use-case.d.ts.map +1 -0
  44. package/dist/src/application/use-cases/features/create-feature.use-case.js +166 -0
  45. package/dist/src/application/use-cases/features/delete-feature.use-case.d.ts +27 -0
  46. package/dist/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -0
  47. package/dist/src/application/use-cases/features/delete-feature.use-case.js +83 -0
  48. package/dist/src/application/use-cases/features/list-features.use-case.d.ts +17 -0
  49. package/dist/src/application/use-cases/features/list-features.use-case.d.ts.map +1 -0
  50. package/dist/src/application/use-cases/features/list-features.use-case.js +37 -0
  51. package/dist/src/application/use-cases/features/resume-feature.use-case.d.ts +24 -0
  52. package/dist/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -0
  53. package/dist/src/application/use-cases/features/resume-feature.use-case.js +100 -0
  54. package/dist/src/application/use-cases/features/show-feature.use-case.d.ts +17 -0
  55. package/dist/src/application/use-cases/features/show-feature.use-case.d.ts.map +1 -0
  56. package/dist/src/application/use-cases/features/show-feature.use-case.js +43 -0
  57. package/dist/src/domain/generated/output.d.ts +26 -1
  58. package/dist/src/domain/generated/output.d.ts.map +1 -1
  59. package/dist/src/domain/generated/output.js +1 -0
  60. package/dist/src/infrastructure/di/container.d.ts.map +1 -1
  61. package/dist/src/infrastructure/di/container.js +64 -14
  62. package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.d.ts +4 -0
  63. package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.d.ts.map +1 -1
  64. package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.js +8 -0
  65. package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +50 -0
  66. package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -0
  67. package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +62 -0
  68. package/dist/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  69. package/dist/src/infrastructure/persistence/sqlite/migrations.js +49 -0
  70. package/dist/src/infrastructure/repositories/agent-run.repository.d.ts.map +1 -1
  71. package/dist/src/infrastructure/repositories/agent-run.repository.js +30 -8
  72. package/dist/src/infrastructure/repositories/sqlite-feature.repository.d.ts +25 -0
  73. package/dist/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -0
  74. package/dist/src/infrastructure/repositories/sqlite-feature.repository.js +113 -0
  75. package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/analyze-repository-graph.d.ts +0 -22
  76. package/dist/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts.map +1 -0
  77. package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/analyze-repository-graph.js +4 -11
  78. package/dist/src/infrastructure/services/agents/analyze-repo/prompts/analyze-repository.prompt.d.ts.map +1 -0
  79. package/dist/src/infrastructure/services/agents/{agent-executor-factory.service.d.ts → common/agent-executor-factory.service.d.ts} +3 -3
  80. package/dist/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -0
  81. package/dist/src/infrastructure/services/agents/{agent-registry.service.d.ts → common/agent-registry.service.d.ts} +1 -1
  82. package/dist/src/infrastructure/services/agents/common/agent-registry.service.d.ts.map +1 -0
  83. package/dist/src/infrastructure/services/agents/{agent-registry.service.js → common/agent-registry.service.js} +7 -1
  84. package/dist/src/infrastructure/services/agents/{agent-runner.service.d.ts → common/agent-runner.service.d.ts} +5 -5
  85. package/dist/src/infrastructure/services/agents/common/agent-runner.service.d.ts.map +1 -0
  86. package/dist/src/infrastructure/services/agents/{agent-runner.service.js → common/agent-runner.service.js} +4 -4
  87. package/dist/src/infrastructure/services/agents/{agent-validator.service.d.ts → common/agent-validator.service.d.ts} +2 -2
  88. package/dist/src/infrastructure/services/agents/common/agent-validator.service.d.ts.map +1 -0
  89. package/dist/src/infrastructure/services/agents/{langgraph → common}/checkpointer.d.ts +1 -0
  90. package/dist/src/infrastructure/services/agents/common/checkpointer.d.ts.map +1 -0
  91. package/dist/src/infrastructure/services/agents/{langgraph → common}/checkpointer.js +6 -0
  92. package/dist/src/infrastructure/services/agents/{executors → common/executors}/claude-code-executor.service.d.ts +9 -2
  93. package/dist/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -0
  94. package/dist/src/infrastructure/services/agents/{executors → common/executors}/claude-code-executor.service.js +103 -6
  95. package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts +15 -0
  96. package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts.map +1 -0
  97. package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.js +16 -0
  98. package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.d.ts +17 -0
  99. package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.d.ts.map +1 -0
  100. package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.js +49 -0
  101. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +244 -0
  102. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -0
  103. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +36 -0
  104. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +20 -0
  105. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -0
  106. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +90 -0
  107. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +31 -0
  108. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -0
  109. package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +236 -0
  110. package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.d.ts +19 -0
  111. package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.d.ts.map +1 -0
  112. package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.js +38 -0
  113. package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.d.ts +7 -0
  114. package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.d.ts.map +1 -0
  115. package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.js +9 -0
  116. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts +11 -0
  117. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -0
  118. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +23 -0
  119. package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +40 -0
  120. package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -0
  121. package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +114 -0
  122. package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.d.ts +7 -0
  123. package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.d.ts.map +1 -0
  124. package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.js +9 -0
  125. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.d.ts +9 -0
  126. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.d.ts.map +1 -0
  127. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.js +94 -0
  128. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts +8 -0
  129. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts.map +1 -0
  130. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +18 -0
  131. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.d.ts +11 -0
  132. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.d.ts.map +1 -0
  133. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.js +170 -0
  134. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts +10 -0
  135. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts.map +1 -0
  136. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.js +116 -0
  137. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.d.ts +10 -0
  138. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.d.ts.map +1 -0
  139. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.js +121 -0
  140. package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.d.ts +7 -0
  141. package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.d.ts.map +1 -0
  142. package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.js +9 -0
  143. package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.d.ts +7 -0
  144. package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.d.ts.map +1 -0
  145. package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.js +9 -0
  146. package/dist/src/infrastructure/services/agents/feature-agent/state.d.ts +39 -0
  147. package/dist/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -0
  148. package/dist/src/infrastructure/services/agents/feature-agent/state.js +27 -0
  149. package/dist/src/infrastructure/services/external/github-issue.service.d.ts +19 -0
  150. package/dist/src/infrastructure/services/external/github-issue.service.d.ts.map +1 -0
  151. package/dist/src/infrastructure/services/external/github-issue.service.js +59 -0
  152. package/dist/src/infrastructure/services/external/jira-ticket.service.d.ts +23 -0
  153. package/dist/src/infrastructure/services/external/jira-ticket.service.d.ts.map +1 -0
  154. package/dist/src/infrastructure/services/external/jira-ticket.service.js +57 -0
  155. package/dist/src/infrastructure/services/git/worktree.service.d.ts +28 -0
  156. package/dist/src/infrastructure/services/git/worktree.service.d.ts.map +1 -0
  157. package/dist/src/infrastructure/services/git/worktree.service.js +112 -0
  158. package/dist/src/infrastructure/services/spec/spec-initializer.service.d.ts +17 -0
  159. package/dist/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -0
  160. package/dist/src/infrastructure/services/spec/spec-initializer.service.js +281 -0
  161. package/dist/src/presentation/cli/commands/agent/approve.command.d.ts +11 -0
  162. package/dist/src/presentation/cli/commands/agent/approve.command.d.ts.map +1 -0
  163. package/dist/src/presentation/cli/commands/agent/approve.command.js +42 -0
  164. package/dist/src/presentation/cli/commands/agent/delete.command.d.ts +11 -0
  165. package/dist/src/presentation/cli/commands/agent/delete.command.d.ts.map +1 -0
  166. package/dist/src/presentation/cli/commands/agent/delete.command.js +49 -0
  167. package/dist/src/presentation/cli/commands/agent/index.d.ts +21 -0
  168. package/dist/src/presentation/cli/commands/agent/index.d.ts.map +1 -0
  169. package/dist/src/presentation/cli/commands/agent/index.js +38 -0
  170. package/dist/src/presentation/cli/commands/agent/logs.command.d.ts +13 -0
  171. package/dist/src/presentation/cli/commands/agent/logs.command.d.ts.map +1 -0
  172. package/dist/src/presentation/cli/commands/agent/logs.command.js +163 -0
  173. package/dist/src/presentation/cli/commands/agent/ls.command.d.ts +12 -0
  174. package/dist/src/presentation/cli/commands/agent/ls.command.d.ts.map +1 -0
  175. package/dist/src/presentation/cli/commands/agent/ls.command.js +111 -0
  176. package/dist/src/presentation/cli/commands/agent/reject.command.d.ts +11 -0
  177. package/dist/src/presentation/cli/commands/agent/reject.command.d.ts.map +1 -0
  178. package/dist/src/presentation/cli/commands/agent/reject.command.js +43 -0
  179. package/dist/src/presentation/cli/commands/agent/resolve-run.d.ts +10 -0
  180. package/dist/src/presentation/cli/commands/agent/resolve-run.d.ts.map +1 -0
  181. package/dist/src/presentation/cli/commands/agent/resolve-run.js +27 -0
  182. package/dist/src/presentation/cli/commands/agent/show.command.d.ts +12 -0
  183. package/dist/src/presentation/cli/commands/agent/show.command.d.ts.map +1 -0
  184. package/dist/src/presentation/cli/commands/agent/show.command.js +202 -0
  185. package/dist/src/presentation/cli/commands/agent/stop.command.d.ts +11 -0
  186. package/dist/src/presentation/cli/commands/agent/stop.command.d.ts.map +1 -0
  187. package/dist/src/presentation/cli/commands/agent/stop.command.js +42 -0
  188. package/dist/src/presentation/cli/commands/feat/del.command.d.ts +17 -0
  189. package/dist/src/presentation/cli/commands/feat/del.command.d.ts.map +1 -0
  190. package/dist/src/presentation/cli/commands/feat/del.command.js +55 -0
  191. package/dist/src/presentation/cli/commands/feat/index.d.ts +17 -0
  192. package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -0
  193. package/dist/src/presentation/cli/commands/feat/index.js +29 -0
  194. package/dist/src/presentation/cli/commands/feat/ls.command.d.ts +15 -0
  195. package/dist/src/presentation/cli/commands/feat/ls.command.d.ts.map +1 -0
  196. package/dist/src/presentation/cli/commands/feat/ls.command.js +112 -0
  197. package/dist/src/presentation/cli/commands/feat/new.command.d.ts +17 -0
  198. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -0
  199. package/dist/src/presentation/cli/commands/feat/new.command.js +64 -0
  200. package/dist/src/presentation/cli/commands/feat/resume.command.d.ts +11 -0
  201. package/dist/src/presentation/cli/commands/feat/resume.command.d.ts.map +1 -0
  202. package/dist/src/presentation/cli/commands/feat/resume.command.js +33 -0
  203. package/dist/src/presentation/cli/commands/feat/show.command.d.ts +11 -0
  204. package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -0
  205. package/dist/src/presentation/cli/commands/feat/show.command.js +128 -0
  206. package/dist/src/presentation/cli/index.d.ts +8 -4
  207. package/dist/src/presentation/cli/index.d.ts.map +1 -1
  208. package/dist/src/presentation/cli/index.js +12 -4
  209. package/dist/src/presentation/cli/ui/detail-view.d.ts +43 -0
  210. package/dist/src/presentation/cli/ui/detail-view.d.ts.map +1 -0
  211. package/dist/src/presentation/cli/ui/detail-view.js +57 -0
  212. package/dist/src/presentation/cli/ui/index.d.ts +2 -0
  213. package/dist/src/presentation/cli/ui/index.d.ts.map +1 -1
  214. package/dist/src/presentation/cli/ui/index.js +2 -0
  215. package/dist/src/presentation/cli/ui/list-view.d.ts +34 -0
  216. package/dist/src/presentation/cli/ui/list-view.d.ts.map +1 -0
  217. package/dist/src/presentation/cli/ui/list-view.js +65 -0
  218. package/dist/src/presentation/cli/ui/symbols.d.ts +5 -1
  219. package/dist/src/presentation/cli/ui/symbols.d.ts.map +1 -1
  220. package/dist/src/presentation/cli/ui/symbols.js +4 -0
  221. package/dist/tsconfig.build.tsbuildinfo +1 -1
  222. package/package.json +2 -1
  223. package/web/.next/BUILD_ID +1 -1
  224. package/web/.next/build-manifest.json +2 -2
  225. package/web/.next/cache/.previewinfo +1 -1
  226. package/web/.next/cache/.rscinfo +1 -1
  227. package/web/.next/cache/config.json +3 -3
  228. package/web/.next/fallback-build-manifest.json +2 -2
  229. package/web/.next/prerender-manifest.json +3 -3
  230. package/web/.next/required-server-files.js +1 -1
  231. package/web/.next/required-server-files.json +1 -1
  232. package/web/.next/server/app/_global-error.html +2 -2
  233. package/web/.next/server/app/_global-error.rsc +1 -1
  234. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  235. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  236. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  237. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  238. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  239. package/web/.next/server/app/_not-found.html +2 -2
  240. package/web/.next/server/app/_not-found.rsc +1 -1
  241. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  242. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  243. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  244. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  245. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  246. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  247. package/web/.next/server/app/index.html +2 -2
  248. package/web/.next/server/app/index.rsc +1 -1
  249. package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  250. package/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
  251. package/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  252. package/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
  253. package/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  254. package/web/.next/server/app/version.html +2 -2
  255. package/web/.next/server/app/version.rsc +1 -1
  256. package/web/.next/server/app/version.segments/_full.segment.rsc +1 -1
  257. package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
  258. package/web/.next/server/app/version.segments/_index.segment.rsc +1 -1
  259. package/web/.next/server/app/version.segments/_tree.segment.rsc +1 -1
  260. package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +1 -1
  261. package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
  262. package/web/.next/server/chunks/ssr/_19be0743._.js +1 -1
  263. package/web/.next/server/pages/404.html +2 -2
  264. package/web/.next/server/pages/500.html +2 -2
  265. package/web/.next/server/server-reference-manifest.js +1 -1
  266. package/web/.next/server/server-reference-manifest.json +1 -1
  267. package/web/.next/trace +1 -1
  268. package/web/.next/trace-build +1 -1
  269. package/dist/src/infrastructure/services/agents/agent-executor-factory.service.d.ts.map +0 -1
  270. package/dist/src/infrastructure/services/agents/agent-registry.service.d.ts.map +0 -1
  271. package/dist/src/infrastructure/services/agents/agent-runner.service.d.ts.map +0 -1
  272. package/dist/src/infrastructure/services/agents/agent-validator.service.d.ts.map +0 -1
  273. package/dist/src/infrastructure/services/agents/executors/claude-code-executor.service.d.ts.map +0 -1
  274. package/dist/src/infrastructure/services/agents/langgraph/analyze-repository-graph.d.ts.map +0 -1
  275. package/dist/src/infrastructure/services/agents/langgraph/checkpointer.d.ts.map +0 -1
  276. package/dist/src/infrastructure/services/agents/langgraph/prompts/analyze-repository.prompt.d.ts.map +0 -1
  277. /package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/prompts/analyze-repository.prompt.d.ts +0 -0
  278. /package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/prompts/analyze-repository.prompt.js +0 -0
  279. /package/dist/src/infrastructure/services/agents/{agent-executor-factory.service.js → common/agent-executor-factory.service.js} +0 -0
  280. /package/dist/src/infrastructure/services/agents/{agent-validator.service.js → common/agent-validator.service.js} +0 -0
  281. /package/web/.next/static/{ozzHAkZyxX7nXyxpqufBs → XV-wYY85Xk9ANCuQDQ6_H}/_buildManifest.js +0 -0
  282. /package/web/.next/static/{ozzHAkZyxX7nXyxpqufBs → XV-wYY85Xk9ANCuQDQ6_H}/_clientMiddlewareManifest.json +0 -0
  283. /package/web/.next/static/{ozzHAkZyxX7nXyxpqufBs → XV-wYY85Xk9ANCuQDQ6_H}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  <div align="center">
2
2
 
3
- # 🐑 Shep AI
3
+ # Shep AI
4
4
 
5
- ### Autonomous AI Native SDLC Platform
5
+ ### Multi-Session SDLC Control Center for AI Coding Agents
6
6
 
7
- _Automate the entire development cycle from idea to deploy_
7
+ _Manage Claude Code, Cursor CLI, or any coding agent across the full development lifecycle from requirements to deploy — with parallel sessions, instant context switching, and human-in-the-loop control_
8
8
 
9
9
  [![CI](https://github.com/shep-ai/cli/actions/workflows/ci.yml/badge.svg)](https://github.com/shep-ai/cli/actions/workflows/ci.yml)
10
10
  [![npm version](https://img.shields.io/npm/v/@shepai/cli.svg?color=cb3837&logo=npm)](https://www.npmjs.com/package/@shepai/cli)
@@ -17,104 +17,210 @@ _Automate the entire development cycle from idea to deploy_
17
17
 
18
18
  <br />
19
19
 
20
- [Getting Started](#quick-start)
21
- [Documentation](#documentation) •
22
- [Contributing](#contributing)
23
- [License](#license)
20
+ [Features](#features) · [Quick Start](#quick-start) · [CLI Reference](#cli) · [Architecture](#architecture) · [Contributing](#contributing)
21
+
22
+ <br />
23
+
24
+ <img src="docs/poc/imgs/00-control-center-hero.png" alt="Shep AI Control Center — manage all features across repos from a single canvas" width="100%" />
25
+
26
+ <br />
24
27
 
25
28
  </div>
26
29
 
27
30
  ---
28
31
 
29
- Shep is an intelligent CLI tool that transforms how you build software. Point it at any repository, and it will analyze your codebase, gather requirements through conversational AI, break down features into actionable tasks, generate comprehensive documentation, and execute implementation autonomously.
30
-
31
- ## Installation
32
+ Running AI agents is easy. **Managing many of them through a full SDLC is the hard part.** Shep gives you a control center that handles the entire lifecycle — requirements gathering, planning, implementation, QA, and deployment — across multiple agent sessions running in parallel. See what each agent is doing, jump into any session's web preview, code editor, or terminal, approve plans when agents need your input, and let them keep working while you move on. Plug in Claude Code, Cursor CLI, Gemini CLI, or any coding agent. Each feature gets its own isolated worktree and dev environment. You manage the lifecycle, agents do the work.
32
33
 
33
34
  ```bash
34
- pnpm add -g @shepai/cli
35
+ npm i -g @shepai/cli
36
+ cd your-repo/
37
+ shep feat new "Implement SSO with SAML 2.0"
38
+ # Agent starts working in a dedicated worktree.
39
+ # Open the control center to watch progress, intervene, or switch context.
40
+ shep ui
35
41
  ```
36
42
 
37
- Or with npm:
43
+ ---
38
44
 
39
- ```bash
40
- npm install -g @shepai/cli
41
- ```
45
+ ## Features
42
46
 
43
- ## Quick Start
47
+ <table>
48
+ <tr>
49
+ <td width="55%"><img src="docs/poc/imgs/01-features-control-center-overview.png" alt="Feature properties with attachments and metadata" /></td>
50
+ <td width="45%">
44
51
 
45
- ```bash
46
- cd ~/repos/your-project
47
- shep
48
- ```
52
+ ### Feature Properties & Attachments
49
53
 
50
- Or explicitly initialize:
54
+ - **Rich feature detail panel** with name, description, and metadata
55
+ - **File attachments** — requirements PDFs, mockup images, API specs linked directly to features
56
+ - **Team & metadata** tracking for ownership and collaboration
57
+ - **Dependency mapping** between features across repos
58
+ - **Iterative refinement** — update properties as requirements evolve through the lifecycle
51
59
 
52
- ```bash
53
- shep --init
54
- ```
60
+ </td>
61
+ </tr>
55
62
 
56
- This launches a TUI wizard to:
63
+ <tr>
64
+ <td width="55%"><img src="docs/poc/imgs/02-feature-card-action-toolbar.png" alt="Feature card with action toolbar" /></td>
65
+ <td width="45%">
57
66
 
58
- 1. Configure Claude Code authentication (setup token or use existing session)
59
- 2. Start repository analysis
60
- 3. Open the web UI at `http://localhost:4050/`
67
+ ### Feature Cards with Quick Actions
61
68
 
62
- ## How It Works
69
+ - **One-click dev server** launch directly from any card
70
+ - **Action toolbar** — GitHub, web preview, terminal, code editor at your fingertips
71
+ - **Live progress** tracking with percentage and lifecycle stage badge
72
+ - **Unique IDs** for instant cross-referencing across CLI and UI
63
73
 
64
- ### Repository Analysis
74
+ </td>
75
+ </tr>
65
76
 
66
- When you run `shep`, it performs comprehensive multi-perspective analysis of your codebase:
77
+ <tr>
78
+ <td width="55%"><img src="docs/poc/imgs/03-requirements-discovery-validation.png" alt="Requirements discovery questionnaire" /></td>
79
+ <td width="45%">
67
80
 
68
- - Architecture patterns and structure
69
- - Technology stack detection
70
- - Code conventions and style
71
- - Dependency mapping
72
- - Testing patterns
73
- - Documentation coverage
81
+ ### AI-Guided Requirements Discovery
74
82
 
75
- Analysis results are persisted in `~/.shep/repos/<encoded-repo-path>/docs/` for instant access on subsequent runs.
83
+ - **Smart questionnaires** that surface the right questions for your feature
84
+ - **Categorized inputs** — business, technical, and UX problem classification
85
+ - **Priority tiers** (P1–P3) with clear impact descriptions
86
+ - **Domain tagging** to scope the affected areas of your codebase
87
+ - **Human breakpoint** — agent pauses here until you finalize
76
88
 
77
- ### Feature Lifecycle
89
+ </td>
90
+ </tr>
78
91
 
79
- Every feature follows the SDLC lifecycle:
92
+ <tr>
93
+ <td width="55%"><img src="docs/poc/imgs/04-technical-implementation-plan-review.png" alt="Technical plan review with architecture decisions" /></td>
94
+ <td width="45%">
80
95
 
81
- ```
82
- Requirements → Plan → Implementation → Test → Deploy → Maintenance
83
- ```
96
+ ### Technical Plan Review
84
97
 
85
- #### 1. Requirements Phase
98
+ - **AI-generated implementation plans** with full architecture rationale
99
+ - **Technical decision cards** — see the chosen approach and alternatives side-by-side
100
+ - **Architecture pattern selection** (microservices, monolith, serverless) with trade-off analysis
101
+ - **Approve & continue** or send back for revision — you control the direction
86
102
 
87
- Interactive chat-based gathering powered by repository context. The AI proposes relevant options based on your codebase analysis, ensuring no open questions remain.
103
+ </td>
104
+ </tr>
88
105
 
89
- #### 2. Plan Phase
106
+ <tr>
107
+ <td width="55%"><img src="docs/poc/imgs/05-plan-review-tasks-and-artifacts.png" alt="Task breakdown and generated artifacts" /></td>
108
+ <td width="45%">
90
109
 
91
- Automatic breakdown into:
110
+ ### Tasks & Generated Artifacts
92
111
 
93
- - **Tasks** - High-level work items with dependencies
94
- - **Action Items** - Granular steps within tasks
95
- - **Artifacts** - Generated documentation (PRDs, RFCs, Design Docs, Tech Plans)
112
+ - **Auto-generated documents** plan.md, tasks.md, data_model.md created from your approved spec
113
+ - **Task breakdown** with dependency tracking and status badges
114
+ - **Artifact browser** inspect any generated document directly in the panel
115
+ - **Draft indicator** — nothing ships until you explicitly approve
96
116
 
97
- #### 3. Implementation Phase
117
+ </td>
118
+ </tr>
98
119
 
99
- Autonomous code generation using LangGraph agents, executing tasks according to the dependency graph.
120
+ <tr>
121
+ <td width="55%"><img src="docs/poc/imgs/06-qa-check-review.png" alt="QA checklist with all checks passing" /></td>
122
+ <td width="45%">
100
123
 
101
- #### 4. Test → Deploy → Maintenance
124
+ ### Quality Assurance Gate
102
125
 
103
- Continuous lifecycle management with AI assistance at every stage.
126
+ - **Automated QA checklist** functional, performance, compatibility, accessibility
127
+ - **Performance benchmarks** — API response time p95 thresholds
128
+ - **WCAG 2.5** accessibility compliance verification
129
+ - **One-click Pass QA** when all checks are green
104
130
 
105
- ## Spec-Driven Development
131
+ </td>
132
+ </tr>
106
133
 
107
- All contributions follow our spec-driven workflow:
134
+ <tr>
135
+ <td width="55%"><img src="docs/poc/imgs/07-dev-environment-web-preview.png" alt="Integrated web preview in dev environment" /></td>
136
+ <td width="45%">
108
137
 
109
- ```
110
- /shep-kit:new-feature → /shep-kit:research → /shep-kit:plan → implement
138
+ ### Integrated Dev Environment — Web Preview
139
+
140
+ - **Live localhost preview** embedded in the control center
141
+ - **Isolated ports** — each feature runs its own dev server
142
+ - **Server status** indicator with start/stop controls
143
+ - **Open in Browser** for full-screen testing
144
+ - **PR context** — branch, worktree path, and PR link always visible
145
+
146
+ </td>
147
+ </tr>
148
+
149
+ <tr>
150
+ <td width="55%"><img src="docs/poc/imgs/08-dev-environment-vscode-tab.png" alt="Embedded VS Code editor in dev environment" /></td>
151
+ <td width="45%">
152
+
153
+ ### Integrated Dev Environment — Code Editor
154
+
155
+ - **Embedded VS Code** with full editor capabilities
156
+ - **Git worktree isolation** — each feature in its own directory, no branch conflicts
157
+ - **File explorer** with project structure at a glance
158
+ - **PR badge** with commits ahead/behind and changed file count
159
+ - **Zero context-switch** — edit code without leaving the control center
160
+
161
+ </td>
162
+ </tr>
163
+
164
+ <tr>
165
+ <td width="55%"><img src="docs/poc/imgs/09-dev-environment-terminal-tab.png" alt="Terminal tab showing running dev server" /></td>
166
+ <td width="45%">
167
+
168
+ ### Integrated Dev Environment — Terminal
169
+
170
+ - **Full terminal access** inside the feature workspace
171
+ - **Build output, test results, agent logs** in one place
172
+ - **Pre-configured** in the feature's worktree directory
173
+ - **Dev server output** — see Next.js/Vite/Express startup and compile times
174
+ - **Three-tab workflow** — preview, code, and terminal without leaving the UI
175
+
176
+ </td>
177
+ </tr>
178
+ </table>
179
+
180
+ ---
181
+
182
+ ## Quick Start
183
+
184
+ ```bash
185
+ # Install
186
+ npm i -g @shepai/cli
187
+
188
+ # Start the background service
189
+ shep start
190
+ # ➜ Local: http://localhost:5173/
191
+ # Shep service is running in background, have fun!
192
+
193
+ # Navigate to any repo
194
+ cd ~/repos/your-project
195
+
196
+ # Create your first feature
197
+ shep feat new "Add user authentication with OAuth 2.0"
198
+
199
+ # Open the control center
200
+ shep ui
111
201
  ```
112
202
 
113
- Every feature begins with a specification in `specs/NNN-feature-name/` before any implementation code is written. See [Spec-Driven Workflow](./docs/development/spec-driven-workflow.md) for details.
203
+ ## CLI
204
+
205
+ ```
206
+ shep start Start background service
207
+ shep feat new <description> Create a new feature
208
+ shep feat new --interactive Interactive mode with human checkpoints
209
+ shep feat new --allow-all Full autonomous mode
210
+ shep feat ls List features across repos
211
+ shep feat show <id> Show feature details
212
+ shep feat preview <id> Preview feature dev environment
213
+ shep ui Open the web control center
214
+ shep settings show Display current configuration
215
+ shep settings agent Configure AI coding agent
216
+ shep mem add <text> --global|--repo Add agent memory
217
+ shep mem ls List memories
218
+ shep version Version info
219
+ ```
114
220
 
115
221
  ## Architecture
116
222
 
117
- Shep follows **Clean Architecture** principles:
223
+ Clean Architecture with four layers. Dependencies point inward — domain has zero external deps.
118
224
 
119
225
  ```mermaid
120
226
  flowchart TB
@@ -132,15 +238,20 @@ flowchart TB
132
238
  style I fill:#ede9fe,stroke:#8b5cf6,color:#4c1d95
133
239
  ```
134
240
 
135
- ### Data Persistence
241
+ ### Feature Lifecycle
242
+
243
+ Every feature progresses through a structured SDLC pipeline:
136
244
 
137
- Uses **Repository Pattern** with SQLite:
245
+ ```
246
+ Requirements → Research → Review PRD → Planning → Review Plan → Implementation → QA → Approval → Live
247
+ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
248
+ Agent Agent Human Agent Human Agent Human Human
249
+ breakpoint breakpoint check gate
250
+ ```
138
251
 
139
- - Database location: `~/.shep/repos/<encoded-repo-path>/data`
140
- - Interface-driven design for testability
141
- - Supports future backend swaps
252
+ Breakpoints are configurable. In `--allow-all` mode, the agent handles everything autonomously.
142
253
 
143
- ## Tech Stack
254
+ ### Tech Stack
144
255
 
145
256
  | Component | Technology |
146
257
  | --------------- | --------------------------------------------------------------------------------------- |
@@ -157,22 +268,17 @@ Uses **Repository Pattern** with SQLite:
157
268
  | Embeddings | [Transformers.js](https://huggingface.co/docs/transformers.js) (local, multiple models) |
158
269
  | Testing | Vitest (unit/integration) + Playwright (e2e) |
159
270
  | Methodology | TDD (Red-Green-Refactor) |
160
- | Security | Trivy, Gitleaks, Semgrep, Hadolint (CI gates) |
161
-
162
- ## Security
163
-
164
- Automated security scanning runs on every push and PR:
165
271
 
166
- | Scanner | Purpose |
167
- | ------------ | ------------------------------------------ |
168
- | **Trivy** | Dependency & container vulnerability scans |
169
- | **Gitleaks** | Secret detection in git history |
170
- | **Semgrep** | SAST for TypeScript/JavaScript |
171
- | **Hadolint** | Dockerfile best practices |
272
+ ### Data Model
172
273
 
173
- Security gates **block releases** on main—all scanners must pass before npm publish and Docker push.
274
+ ```
275
+ Repository ──┬── Feature ──┬── Plan ──┬── Task ──── ActionItem
276
+ │ │ └── Artifact
277
+ │ └── Requirement ── Research
278
+ └── Analysis docs (cached)
279
+ ```
174
280
 
175
- See [CI/CD Documentation](./docs/development/cicd.md) for details.
281
+ All data lives locally in `~/.shep/`. Per-repo SQLite databases. No cloud dependency.
176
282
 
177
283
  ## Documentation
178
284
 
@@ -191,28 +297,12 @@ See [CI/CD Documentation](./docs/development/cicd.md) for details.
191
297
 
192
298
  ## Contributing
193
299
 
194
- We welcome contributions! See [CONTRIBUTING.md](./CONTRIBUTING.md) for human contributors and [CONTRIBUTING-AGENTS.md](./CONTRIBUTING-AGENTS.md) for AI agents.
195
-
196
- ## License
300
+ We welcome contributions from humans and AI agents alike.
197
301
 
198
- MIT License - see [LICENSE](./LICENSE) for details.
302
+ - **Humans**: See [CONTRIBUTING.md](./CONTRIBUTING.md)
303
+ - **AI Agents**: See [CONTRIBUTING-AGENTS.md](./CONTRIBUTING-AGENTS.md)
304
+ - **Spec-driven workflow**: All features start with `/shep-kit:new-feature` — see [Spec-Driven Workflow](./docs/development/spec-driven-workflow.md)
199
305
 
200
- ---
201
-
202
- ## Maintaining This Document
203
-
204
- **When to update:**
205
-
206
- - New major features or commands
207
- - Architecture changes
208
- - Tech stack updates
209
- - New documentation sections
210
-
211
- **Style guide:**
212
-
213
- - Keep Quick Start minimal (3-5 steps max)
214
- - Update badges when versions change
215
- - Ensure all internal links work
216
- - Test code examples
306
+ ## License
217
307
 
218
- **Related docs:** [CONTRIBUTING.md](./CONTRIBUTING.md), [docs/guides/getting-started.md](./docs/guides/getting-started.md)
308
+ MIT see [LICENSE](./LICENSE).
@@ -41,6 +41,8 @@ export default tseslint.config(
41
41
  // Test outputs
42
42
  'test-results/**',
43
43
  'playwright-report/**',
44
+ // POC TypeScript files (not part of main tsconfig)
45
+ 'docs/poc/**/*.ts',
44
46
  // Config files that don't need linting
45
47
  '*.config.js',
46
48
  '*.config.mjs',
@@ -0,0 +1,69 @@
1
+ /**
2
+ * External Issue Fetcher Port Interface
3
+ *
4
+ * Output port for fetching issues/tickets from external systems (GitHub, Jira).
5
+ * Returns a normalized ExternalIssue that can be appended to feature context.
6
+ *
7
+ * Following Clean Architecture:
8
+ * - Application layer depends on this interface
9
+ * - Infrastructure layer provides concrete implementations
10
+ */
11
+ /**
12
+ * Normalized issue representation from any external source.
13
+ */
14
+ export interface ExternalIssue {
15
+ title: string;
16
+ description: string;
17
+ labels: string[];
18
+ url: string;
19
+ source: 'github' | 'jira';
20
+ }
21
+ /**
22
+ * Service interface for fetching issues from external systems.
23
+ */
24
+ export interface IExternalIssueFetcher {
25
+ /**
26
+ * Fetch a GitHub issue by reference.
27
+ * Supports formats: owner/repo#123 or #123 (uses current repo).
28
+ *
29
+ * @param ref - GitHub issue reference (e.g., "owner/repo#42" or "#42")
30
+ * @returns Normalized external issue
31
+ * @throws IssueNotFoundError if issue doesn't exist
32
+ * @throws IssueServiceUnavailableError if gh CLI is not installed
33
+ */
34
+ fetchGitHubIssue(ref: string): Promise<ExternalIssue>;
35
+ /**
36
+ * Fetch a Jira ticket by key.
37
+ *
38
+ * @param key - Jira ticket key (e.g., "PROJ-123")
39
+ * @returns Normalized external issue
40
+ * @throws IssueNotFoundError if ticket doesn't exist
41
+ * @throws IssueAuthenticationError if credentials are invalid
42
+ */
43
+ fetchJiraTicket(key: string): Promise<ExternalIssue>;
44
+ }
45
+ /**
46
+ * Base error for issue fetcher failures.
47
+ */
48
+ export declare class IssueFetcherError extends Error {
49
+ constructor(message: string);
50
+ }
51
+ /**
52
+ * Thrown when the requested issue/ticket is not found.
53
+ */
54
+ export declare class IssueNotFoundError extends IssueFetcherError {
55
+ constructor(message: string);
56
+ }
57
+ /**
58
+ * Thrown when authentication to the external service fails.
59
+ */
60
+ export declare class IssueAuthenticationError extends IssueFetcherError {
61
+ constructor(message: string);
62
+ }
63
+ /**
64
+ * Thrown when the external service is unavailable (e.g., gh CLI not installed).
65
+ */
66
+ export declare class IssueServiceUnavailableError extends IssueFetcherError {
67
+ constructor(message: string);
68
+ }
69
+ //# sourceMappingURL=external-issue-fetcher.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-issue-fetcher.interface.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/external-issue-fetcher.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEtD;;;;;;;OAOG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;gBACjD,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,iBAAiB;gBACrD,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * External Issue Fetcher Port Interface
3
+ *
4
+ * Output port for fetching issues/tickets from external systems (GitHub, Jira).
5
+ * Returns a normalized ExternalIssue that can be appended to feature context.
6
+ *
7
+ * Following Clean Architecture:
8
+ * - Application layer depends on this interface
9
+ * - Infrastructure layer provides concrete implementations
10
+ */
11
+ /**
12
+ * Base error for issue fetcher failures.
13
+ */
14
+ export class IssueFetcherError extends Error {
15
+ constructor(message) {
16
+ super(message);
17
+ this.name = 'IssueFetcherError';
18
+ }
19
+ }
20
+ /**
21
+ * Thrown when the requested issue/ticket is not found.
22
+ */
23
+ export class IssueNotFoundError extends IssueFetcherError {
24
+ constructor(message) {
25
+ super(message);
26
+ this.name = 'IssueNotFoundError';
27
+ }
28
+ }
29
+ /**
30
+ * Thrown when authentication to the external service fails.
31
+ */
32
+ export class IssueAuthenticationError extends IssueFetcherError {
33
+ constructor(message) {
34
+ super(message);
35
+ this.name = 'IssueAuthenticationError';
36
+ }
37
+ }
38
+ /**
39
+ * Thrown when the external service is unavailable (e.g., gh CLI not installed).
40
+ */
41
+ export class IssueServiceUnavailableError extends IssueFetcherError {
42
+ constructor(message) {
43
+ super(message);
44
+ this.name = 'IssueServiceUnavailableError';
45
+ }
46
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Feature Agent Process Service Interface
3
+ *
4
+ * Output port for managing feature agent background processes.
5
+ * Implementations handle forking worker processes, checking liveness,
6
+ * and marking crashed processes.
7
+ *
8
+ * Following Clean Architecture:
9
+ * - Application layer depends on this interface
10
+ * - Infrastructure layer provides concrete implementation
11
+ */
12
+ /**
13
+ * Service interface for feature agent background process management.
14
+ */
15
+ export interface IFeatureAgentProcessService {
16
+ /**
17
+ * Spawn a background worker process for a feature agent run.
18
+ *
19
+ * @param featureId - The feature ID to process
20
+ * @param runId - The agent run ID for tracking
21
+ * @param repoPath - Repository path for context
22
+ * @param specDir - Spec directory path
23
+ * @returns The PID of the spawned process
24
+ */
25
+ spawn(featureId: string, runId: string, repoPath: string, specDir: string, worktreePath?: string, options?: {
26
+ approvalMode?: string;
27
+ resume?: boolean;
28
+ }): number;
29
+ /**
30
+ * Check if a process is still alive.
31
+ *
32
+ * @param pid - The process ID to check
33
+ * @returns True if the process is running
34
+ */
35
+ isAlive(pid: number): boolean;
36
+ /**
37
+ * Check if the process for an agent run is alive.
38
+ * If the process is dead, mark the run as interrupted.
39
+ *
40
+ * @param runId - The agent run ID to check
41
+ */
42
+ checkAndMarkCrashed(runId: string): Promise<void>;
43
+ }
44
+ //# sourceMappingURL=feature-agent-process.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-agent-process.interface.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/feature-agent-process.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;OAQG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GACpD,MAAM,CAAC;IAEV;;;;;OAKG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Feature Agent Process Service Interface
3
+ *
4
+ * Output port for managing feature agent background processes.
5
+ * Implementations handle forking worker processes, checking liveness,
6
+ * and marking crashed processes.
7
+ *
8
+ * Following Clean Architecture:
9
+ * - Application layer depends on this interface
10
+ * - Infrastructure layer provides concrete implementation
11
+ */
12
+ export {};
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Feature Repository Interface
3
+ *
4
+ * Output port for Feature persistence operations.
5
+ * Implementations handle database-specific logic (SQLite, etc.).
6
+ *
7
+ * Following Clean Architecture:
8
+ * - Domain and Application layers depend on this interface
9
+ * - Infrastructure layer provides concrete implementations
10
+ */
11
+ import type { Feature, SdlcLifecycle } from '../../../domain/generated/output.js';
12
+ /**
13
+ * Filters for listing features.
14
+ */
15
+ export interface FeatureListFilters {
16
+ repositoryPath?: string;
17
+ lifecycle?: SdlcLifecycle;
18
+ }
19
+ /**
20
+ * Repository interface for Feature entity persistence.
21
+ *
22
+ * Implementations must:
23
+ * - Handle database connection management
24
+ * - Provide thread-safe operations
25
+ * - Support query by slug + repositoryPath for uniqueness
26
+ */
27
+ export interface IFeatureRepository {
28
+ /**
29
+ * Create a new feature record.
30
+ *
31
+ * @param feature - The feature to persist
32
+ */
33
+ create(feature: Feature): Promise<void>;
34
+ /**
35
+ * Find a feature by its unique ID.
36
+ *
37
+ * @param id - The feature ID
38
+ * @returns The feature or null if not found
39
+ */
40
+ findById(id: string): Promise<Feature | null>;
41
+ /**
42
+ * Find a feature by an ID prefix (e.g. first 8 chars from `feat ls`).
43
+ *
44
+ * @param prefix - A prefix of the feature UUID
45
+ * @returns The feature if exactly one match, null if none, throws if ambiguous
46
+ */
47
+ findByIdPrefix(prefix: string): Promise<Feature | null>;
48
+ /**
49
+ * Find a feature by its slug within a repository.
50
+ *
51
+ * @param slug - The URL-friendly feature identifier
52
+ * @param repositoryPath - The repository path to scope the search
53
+ * @returns The feature or null if not found
54
+ */
55
+ findBySlug(slug: string, repositoryPath: string): Promise<Feature | null>;
56
+ /**
57
+ * List features with optional filters.
58
+ *
59
+ * @param filters - Optional filters for repositoryPath and lifecycle
60
+ * @returns Array of matching features
61
+ */
62
+ list(filters?: FeatureListFilters): Promise<Feature[]>;
63
+ /**
64
+ * Update an existing feature.
65
+ *
66
+ * @param feature - The feature with updated fields
67
+ */
68
+ update(feature: Feature): Promise<void>;
69
+ /**
70
+ * Delete a feature by ID.
71
+ *
72
+ * @param id - The feature ID to delete
73
+ */
74
+ delete(id: string): Promise<void>;
75
+ }
76
+ //# sourceMappingURL=feature-repository.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/feature-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAExD;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE1E;;;;;OAKG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEvD;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Feature Repository Interface
3
+ *
4
+ * Output port for Feature persistence operations.
5
+ * Implementations handle database-specific logic (SQLite, etc.).
6
+ *
7
+ * Following Clean Architecture:
8
+ * - Domain and Application layers depend on this interface
9
+ * - Infrastructure layer provides concrete implementations
10
+ */
11
+ export {};
@@ -13,4 +13,7 @@ export type { IAgentExecutorFactory } from './agent-executor-factory.interface.j
13
13
  export type { IAgentRunner, AgentRunOptions } from './agent-runner.interface.js';
14
14
  export type { IAgentRegistry, AgentDefinitionWithFactory } from './agent-registry.interface.js';
15
15
  export type { IAgentRunRepository } from './agent-run-repository.interface.js';
16
+ export type { IWorktreeService, WorktreeInfo } from './worktree-service.interface.js';
17
+ export { WorktreeError, WorktreeErrorCode } from './worktree-service.interface.js';
18
+ export type { IFeatureAgentProcessService } from './feature-agent-process.interface.js';
16
19
  //# sourceMappingURL=index.d.ts.map