edsger 0.50.0 → 0.52.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 (470) hide show
  1. package/.claude/settings.local.json +23 -3
  2. package/.env.local +12 -0
  3. package/README.md +25 -25
  4. package/dist/api/chat.d.ts +7 -7
  5. package/dist/api/chat.js +13 -13
  6. package/dist/api/cross-product.d.ts +10 -10
  7. package/dist/api/cross-product.js +30 -30
  8. package/dist/api/github.d.ts +5 -5
  9. package/dist/api/github.js +10 -10
  10. package/dist/api/intelligence.d.ts +3 -3
  11. package/dist/api/issues/approval-checker.d.ts +20 -0
  12. package/dist/api/{features → issues}/approval-checker.js +16 -16
  13. package/dist/api/issues/get-issue.d.ts +5 -0
  14. package/dist/api/issues/get-issue.js +21 -0
  15. package/dist/api/issues/index.d.ts +8 -0
  16. package/dist/api/issues/index.js +10 -0
  17. package/dist/api/issues/issue-utils.d.ts +23 -0
  18. package/dist/api/issues/issue-utils.js +80 -0
  19. package/dist/api/issues/status-updater.d.ts +41 -0
  20. package/dist/api/{features → issues}/status-updater.js +23 -23
  21. package/dist/api/{features → issues}/test-cases.d.ts +7 -7
  22. package/dist/api/{features → issues}/test-cases.js +12 -12
  23. package/dist/api/issues/update-issue.d.ts +20 -0
  24. package/dist/api/{features/update-feature.js → issues/update-issue.js} +22 -22
  25. package/dist/api/{features → issues}/user-stories.d.ts +5 -5
  26. package/dist/api/{features → issues}/user-stories.js +8 -8
  27. package/dist/api/products.d.ts +1 -1
  28. package/dist/api/tasks.d.ts +1 -1
  29. package/dist/api/test-reports.d.ts +2 -2
  30. package/dist/api/test-reports.js +4 -4
  31. package/dist/auth/login.js +1 -1
  32. package/dist/commands/agent-workflow/chat-worker.d.ts +7 -7
  33. package/dist/commands/agent-workflow/chat-worker.js +50 -50
  34. package/dist/commands/agent-workflow/index.d.ts +2 -2
  35. package/dist/commands/agent-workflow/index.js +3 -3
  36. package/dist/commands/agent-workflow/{feature-worker.d.ts → issue-worker.d.ts} +4 -4
  37. package/dist/commands/agent-workflow/{feature-worker.js → issue-worker.js} +12 -12
  38. package/dist/commands/agent-workflow/processor.d.ts +9 -9
  39. package/dist/commands/agent-workflow/processor.js +90 -90
  40. package/dist/commands/build/index.js +2 -2
  41. package/dist/commands/find-bugs/index.d.ts +11 -0
  42. package/dist/commands/find-bugs/index.js +39 -0
  43. package/dist/commands/find-features/index.d.ts +14 -0
  44. package/dist/commands/find-features/index.js +42 -0
  45. package/dist/commands/find-smells/index.d.ts +21 -0
  46. package/dist/commands/find-smells/index.js +65 -0
  47. package/dist/commands/init/prompts.js +1 -1
  48. package/dist/commands/init/templates.d.ts +1 -1
  49. package/dist/commands/init/templates.js +4 -4
  50. package/dist/commands/workflow/config/phase-configs.js +17 -17
  51. package/dist/commands/workflow/core/index.d.ts +1 -1
  52. package/dist/commands/workflow/core/index.js +2 -2
  53. package/dist/commands/workflow/core/issue-filter.d.ts +16 -0
  54. package/dist/commands/workflow/core/issue-filter.js +47 -0
  55. package/dist/commands/workflow/core/state-manager.d.ts +10 -10
  56. package/dist/commands/workflow/core/state-manager.js +10 -10
  57. package/dist/commands/workflow/core/workflow-logger.d.ts +9 -9
  58. package/dist/commands/workflow/core/workflow-logger.js +21 -21
  59. package/dist/commands/workflow/executors/phase-executor.d.ts +2 -2
  60. package/dist/commands/workflow/executors/phase-executor.js +32 -32
  61. package/dist/commands/workflow/issue-coordinator.d.ts +18 -0
  62. package/dist/commands/workflow/{feature-coordinator.js → issue-coordinator.js} +29 -29
  63. package/dist/commands/workflow/phase-orchestrator.d.ts +2 -2
  64. package/dist/commands/workflow/phase-orchestrator.js +82 -82
  65. package/dist/commands/workflow/processor.d.ts +7 -7
  66. package/dist/commands/workflow/processor.js +44 -44
  67. package/dist/config/{feature-status.d.ts → issue-status.d.ts} +14 -14
  68. package/dist/config/{feature-status.js → issue-status.js} +14 -14
  69. package/dist/errors/index.d.ts +6 -6
  70. package/dist/errors/index.js +11 -11
  71. package/dist/index.js +90 -1
  72. package/dist/phases/app-store-generation/context.js +6 -6
  73. package/dist/phases/app-store-generation/index.js +2 -2
  74. package/dist/phases/app-store-generation/prompts.js +2 -2
  75. package/dist/phases/autonomous/index.d.ts +3 -3
  76. package/dist/phases/autonomous/index.js +37 -37
  77. package/dist/phases/autonomous/prompts.d.ts +2 -2
  78. package/dist/phases/autonomous/prompts.js +4 -4
  79. package/dist/phases/branch-planning/context.d.ts +3 -3
  80. package/dist/phases/branch-planning/context.js +12 -12
  81. package/dist/phases/branch-planning/index.d.ts +3 -3
  82. package/dist/phases/branch-planning/index.js +32 -32
  83. package/dist/phases/branch-planning/outcome.d.ts +5 -5
  84. package/dist/phases/branch-planning/outcome.js +12 -12
  85. package/dist/phases/branch-planning/prompts.d.ts +3 -3
  86. package/dist/phases/branch-planning/prompts.js +13 -13
  87. package/dist/phases/bug-fixing/analyzer.d.ts +2 -2
  88. package/dist/phases/bug-fixing/analyzer.js +13 -13
  89. package/dist/phases/bug-fixing/context-fetcher.d.ts +3 -3
  90. package/dist/phases/bug-fixing/context-fetcher.js +18 -18
  91. package/dist/phases/bug-fixing/mcp-server.js +17 -18
  92. package/dist/phases/chat-processor/context.d.ts +5 -5
  93. package/dist/phases/chat-processor/context.js +17 -17
  94. package/dist/phases/chat-processor/index.d.ts +4 -4
  95. package/dist/phases/chat-processor/index.js +17 -17
  96. package/dist/phases/chat-processor/product-context.d.ts +3 -3
  97. package/dist/phases/chat-processor/product-context.js +16 -16
  98. package/dist/phases/chat-processor/product-prompts.d.ts +1 -1
  99. package/dist/phases/chat-processor/product-prompts.js +10 -10
  100. package/dist/phases/chat-processor/product-tools.d.ts +2 -2
  101. package/dist/phases/chat-processor/product-tools.js +33 -33
  102. package/dist/phases/chat-processor/prompts.d.ts +3 -3
  103. package/dist/phases/chat-processor/prompts.js +22 -22
  104. package/dist/phases/chat-processor/tools.js +46 -46
  105. package/dist/phases/code-implementation/branch-pr-creator.d.ts +3 -3
  106. package/dist/phases/code-implementation/branch-pr-creator.js +5 -5
  107. package/dist/phases/code-implementation/context.d.ts +3 -3
  108. package/dist/phases/code-implementation/context.js +18 -18
  109. package/dist/phases/code-implementation/index.d.ts +4 -4
  110. package/dist/phases/code-implementation/index.js +88 -88
  111. package/dist/phases/code-implementation/outcome.d.ts +3 -3
  112. package/dist/phases/code-implementation/outcome.js +6 -6
  113. package/dist/phases/code-implementation/prompts.d.ts +1 -1
  114. package/dist/phases/code-implementation/prompts.js +6 -6
  115. package/dist/phases/code-implementation-verification/agent.d.ts +3 -3
  116. package/dist/phases/code-implementation-verification/agent.js +5 -5
  117. package/dist/phases/code-implementation-verification/index.d.ts +3 -3
  118. package/dist/phases/code-implementation-verification/index.js +11 -11
  119. package/dist/phases/code-implementation-verification/prompts.d.ts +3 -3
  120. package/dist/phases/code-implementation-verification/prompts.js +7 -7
  121. package/dist/phases/code-refine/context.d.ts +8 -8
  122. package/dist/phases/code-refine/context.js +29 -29
  123. package/dist/phases/code-refine/index.d.ts +2 -2
  124. package/dist/phases/code-refine/index.js +20 -20
  125. package/dist/phases/code-refine/prompts.d.ts +1 -1
  126. package/dist/phases/code-refine/prompts.js +3 -3
  127. package/dist/phases/code-refine/refine-iteration.d.ts +1 -1
  128. package/dist/phases/code-refine/refine-iteration.js +4 -4
  129. package/dist/phases/code-refine/retry-handler.js +2 -2
  130. package/dist/phases/code-refine-verification/index.js +10 -10
  131. package/dist/phases/code-refine-verification/types.d.ts +2 -2
  132. package/dist/phases/code-review/context.d.ts +8 -8
  133. package/dist/phases/code-review/context.js +25 -25
  134. package/dist/phases/code-review/diff-utils.d.ts +1 -1
  135. package/dist/phases/code-review/diff-utils.js +1 -1
  136. package/dist/phases/code-review/index.d.ts +2 -2
  137. package/dist/phases/code-review/index.js +26 -26
  138. package/dist/phases/code-testing/analyzer.d.ts +2 -2
  139. package/dist/phases/code-testing/analyzer.js +18 -18
  140. package/dist/phases/code-testing/context-fetcher.d.ts +3 -3
  141. package/dist/phases/code-testing/context-fetcher.js +16 -16
  142. package/dist/phases/code-testing/prompts.d.ts +1 -1
  143. package/dist/phases/code-testing/prompts.js +5 -5
  144. package/dist/phases/find-bugs/index.d.ts +30 -0
  145. package/dist/phases/find-bugs/index.js +216 -0
  146. package/dist/phases/find-bugs/prompts.d.ts +22 -0
  147. package/dist/phases/find-bugs/prompts.js +101 -0
  148. package/dist/phases/find-bugs/state.d.ts +19 -0
  149. package/dist/phases/find-bugs/state.js +13 -0
  150. package/dist/phases/find-bugs/types.d.ts +21 -0
  151. package/dist/phases/find-bugs/types.js +16 -0
  152. package/dist/phases/find-features/index.d.ts +40 -0
  153. package/dist/phases/find-features/index.js +279 -0
  154. package/dist/phases/find-features/prompts.d.ts +43 -0
  155. package/dist/phases/find-features/prompts.js +138 -0
  156. package/dist/phases/find-features/state.d.ts +25 -0
  157. package/dist/phases/find-features/state.js +22 -0
  158. package/dist/phases/find-features/types.d.ts +27 -0
  159. package/dist/phases/find-features/types.js +16 -0
  160. package/dist/phases/find-shared/git.d.ts +24 -0
  161. package/dist/phases/find-shared/git.js +60 -0
  162. package/dist/phases/find-shared/mcp.d.ts +33 -0
  163. package/dist/phases/find-shared/mcp.js +69 -0
  164. package/dist/phases/find-shared/scan-state.d.ts +33 -0
  165. package/dist/phases/find-shared/scan-state.js +112 -0
  166. package/dist/phases/find-smells/index.d.ts +47 -0
  167. package/dist/phases/find-smells/index.js +278 -0
  168. package/dist/phases/find-smells/prompts.d.ts +30 -0
  169. package/dist/phases/find-smells/prompts.js +129 -0
  170. package/dist/phases/find-smells/state.d.ts +21 -0
  171. package/dist/phases/find-smells/state.js +17 -0
  172. package/dist/phases/find-smells/types.d.ts +51 -0
  173. package/dist/phases/find-smells/types.js +64 -0
  174. package/dist/phases/functional-testing/analyzer.d.ts +2 -2
  175. package/dist/phases/functional-testing/analyzer.js +40 -40
  176. package/dist/phases/functional-testing/context-fetcher.d.ts +3 -3
  177. package/dist/phases/functional-testing/context-fetcher.js +16 -16
  178. package/dist/phases/functional-testing/http-fallback.d.ts +2 -2
  179. package/dist/phases/functional-testing/http-fallback.js +9 -9
  180. package/dist/phases/functional-testing/mcp-server.js +23 -24
  181. package/dist/phases/functional-testing/prompts.d.ts +1 -1
  182. package/dist/phases/functional-testing/prompts.js +4 -4
  183. package/dist/phases/functional-testing/test-report-creator.d.ts +2 -2
  184. package/dist/phases/functional-testing/test-report-creator.js +10 -10
  185. package/dist/phases/functional-testing/test-retry-handler.js +3 -3
  186. package/dist/phases/growth-analysis/context.js +6 -6
  187. package/dist/phases/growth-analysis/index.js +2 -2
  188. package/dist/phases/growth-analysis/prompts.js +2 -2
  189. package/dist/phases/intelligence-analysis/context.js +7 -7
  190. package/dist/phases/intelligence-analysis/index.js +3 -3
  191. package/dist/phases/{feature-analysis → issue-analysis}/agent.js +1 -1
  192. package/dist/phases/issue-analysis/context.d.ts +24 -0
  193. package/dist/phases/{feature-analysis → issue-analysis}/context.js +30 -30
  194. package/dist/phases/issue-analysis/index.d.ts +8 -0
  195. package/dist/phases/{feature-analysis → issue-analysis}/index.js +29 -29
  196. package/dist/phases/issue-analysis/outcome.d.ts +40 -0
  197. package/dist/phases/{feature-analysis → issue-analysis}/outcome.js +17 -17
  198. package/dist/phases/{feature-analysis → issue-analysis}/prompts.d.ts +3 -3
  199. package/dist/phases/{feature-analysis → issue-analysis}/prompts.js +12 -12
  200. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/agent.d.ts +2 -2
  201. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/agent.js +1 -1
  202. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/index.d.ts +5 -5
  203. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/index.js +9 -9
  204. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/prompts.d.ts +2 -2
  205. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/prompts.js +7 -7
  206. package/dist/phases/output-contracts.js +37 -37
  207. package/dist/phases/pr-execution/context.d.ts +3 -3
  208. package/dist/phases/pr-execution/context.js +14 -14
  209. package/dist/phases/pr-execution/index.d.ts +2 -2
  210. package/dist/phases/pr-execution/index.js +22 -22
  211. package/dist/phases/pr-execution/outcome.d.ts +4 -4
  212. package/dist/phases/pr-execution/outcome.js +6 -6
  213. package/dist/phases/pr-execution/prompts.d.ts +4 -4
  214. package/dist/phases/pr-execution/prompts.js +6 -6
  215. package/dist/phases/pr-resolve/checklist-learner.js +2 -2
  216. package/dist/phases/pr-review/index.d.ts +1 -1
  217. package/dist/phases/pr-review/index.js +1 -1
  218. package/dist/phases/pr-review/prompts.d.ts +1 -1
  219. package/dist/phases/pr-review/prompts.js +1 -1
  220. package/dist/phases/pr-shared/context.d.ts +3 -3
  221. package/dist/phases/pr-shared/context.js +3 -3
  222. package/dist/phases/pr-splitting/context.d.ts +3 -3
  223. package/dist/phases/pr-splitting/context.js +16 -16
  224. package/dist/phases/pr-splitting/index.d.ts +4 -4
  225. package/dist/phases/pr-splitting/index.js +29 -29
  226. package/dist/phases/pr-splitting/outcome.d.ts +3 -3
  227. package/dist/phases/pr-splitting/outcome.js +7 -7
  228. package/dist/phases/pr-splitting/prompts.d.ts +3 -3
  229. package/dist/phases/pr-splitting/prompts.js +11 -11
  230. package/dist/phases/pull-request/creator.d.ts +4 -4
  231. package/dist/phases/pull-request/creator.js +25 -25
  232. package/dist/phases/pull-request/handler.d.ts +3 -3
  233. package/dist/phases/pull-request/handler.js +16 -16
  234. package/dist/phases/release-sync/index.js +2 -2
  235. package/dist/phases/run-sheet/agent.js +1 -2
  236. package/dist/phases/run-sheet/index.js +3 -3
  237. package/dist/phases/smoke-test/index.js +2 -2
  238. package/dist/phases/technical-design/context.d.ts +3 -3
  239. package/dist/phases/technical-design/context.js +11 -11
  240. package/dist/phases/technical-design/index.d.ts +2 -2
  241. package/dist/phases/technical-design/index.js +27 -27
  242. package/dist/phases/technical-design/outcome.d.ts +4 -4
  243. package/dist/phases/technical-design/outcome.js +6 -6
  244. package/dist/phases/technical-design/prompts.d.ts +2 -2
  245. package/dist/phases/technical-design/prompts.js +10 -10
  246. package/dist/phases/technical-design-verification/agent.d.ts +3 -3
  247. package/dist/phases/technical-design-verification/agent.js +4 -4
  248. package/dist/phases/technical-design-verification/index.d.ts +4 -4
  249. package/dist/phases/technical-design-verification/index.js +12 -12
  250. package/dist/phases/technical-design-verification/prompts.d.ts +3 -3
  251. package/dist/phases/technical-design-verification/prompts.js +6 -6
  252. package/dist/phases/test-cases-analysis/context.d.ts +5 -5
  253. package/dist/phases/test-cases-analysis/context.js +18 -18
  254. package/dist/phases/test-cases-analysis/formatters.js +7 -7
  255. package/dist/phases/test-cases-analysis/index.d.ts +1 -1
  256. package/dist/phases/test-cases-analysis/index.js +21 -21
  257. package/dist/phases/test-cases-analysis/outcome.d.ts +7 -7
  258. package/dist/phases/test-cases-analysis/outcome.js +13 -13
  259. package/dist/phases/test-cases-analysis/prompts.d.ts +3 -3
  260. package/dist/phases/test-cases-analysis/prompts.js +6 -6
  261. package/dist/phases/user-stories-analysis/context.d.ts +5 -5
  262. package/dist/phases/user-stories-analysis/context.js +18 -18
  263. package/dist/phases/user-stories-analysis/formatters.js +7 -7
  264. package/dist/phases/user-stories-analysis/index.d.ts +1 -1
  265. package/dist/phases/user-stories-analysis/index.js +21 -21
  266. package/dist/phases/user-stories-analysis/outcome.d.ts +7 -7
  267. package/dist/phases/user-stories-analysis/outcome.js +13 -13
  268. package/dist/phases/user-stories-analysis/prompts.d.ts +3 -3
  269. package/dist/phases/user-stories-analysis/prompts.js +10 -10
  270. package/dist/services/audit-logs.d.ts +10 -10
  271. package/dist/services/audit-logs.js +12 -12
  272. package/dist/services/branches.d.ts +6 -6
  273. package/dist/services/branches.js +16 -16
  274. package/dist/services/checklist.d.ts +3 -3
  275. package/dist/services/checklist.js +11 -11
  276. package/dist/services/coaching/coaching-agent.js +2 -2
  277. package/dist/services/coaching/coaching-loop.d.ts +1 -1
  278. package/dist/services/coaching/coaching-loop.js +2 -2
  279. package/dist/services/coaching/phase-coaching.d.ts +2 -2
  280. package/dist/services/coaching/phase-coaching.js +3 -3
  281. package/dist/services/coaching/self-rating.js +1 -1
  282. package/dist/services/feedbacks.d.ts +4 -4
  283. package/dist/services/feedbacks.js +8 -8
  284. package/dist/services/phase-hooks/bindings-fetcher.d.ts +4 -4
  285. package/dist/services/phase-hooks/bindings-fetcher.js +8 -8
  286. package/dist/services/phase-hooks/hook-executor.js +1 -1
  287. package/dist/services/phase-hooks/hook-logging.d.ts +2 -2
  288. package/dist/services/phase-hooks/hook-logging.js +4 -4
  289. package/dist/services/phase-hooks/hook-runner.d.ts +1 -1
  290. package/dist/services/phase-hooks/hook-runner.js +4 -4
  291. package/dist/services/phase-hooks/types.d.ts +3 -3
  292. package/dist/services/phase-ratings.d.ts +7 -7
  293. package/dist/services/phase-ratings.js +8 -8
  294. package/dist/services/pull-requests.d.ts +4 -4
  295. package/dist/services/pull-requests.js +11 -11
  296. package/dist/services/skill-resolver.d.ts +1 -1
  297. package/dist/services/skill-resolver.js +1 -1
  298. package/dist/skills/phase/app-store-generation/SKILL.md +9 -9
  299. package/dist/skills/phase/autonomous/SKILL.md +2 -2
  300. package/dist/skills/phase/branch-planning/SKILL.md +12 -12
  301. package/dist/skills/phase/bug-fixing/SKILL.md +1 -1
  302. package/dist/skills/phase/code-implementation/SKILL.md +6 -6
  303. package/dist/skills/phase/code-implementation-verification/SKILL.md +3 -3
  304. package/dist/skills/phase/code-testing/SKILL.md +5 -5
  305. package/dist/skills/phase/functional-testing/SKILL.md +3 -3
  306. package/dist/skills/phase/growth-analysis/SKILL.md +8 -8
  307. package/dist/skills/phase/incremental-sync/SKILL.md +6 -6
  308. package/dist/skills/phase/intelligence-analysis/SKILL.md +7 -7
  309. package/dist/skills/phase/{feature-analysis → issue-analysis}/SKILL.md +8 -8
  310. package/dist/skills/phase/pr-execution/SKILL.md +7 -7
  311. package/dist/skills/phase/pr-splitting/SKILL.md +14 -14
  312. package/dist/skills/phase/smoke-test/SKILL.md +1 -1
  313. package/dist/skills/phase/technical-design/SKILL.md +5 -5
  314. package/dist/skills/phase/test-cases-analysis/SKILL.md +4 -4
  315. package/dist/skills/phase/user-stories-analysis/SKILL.md +13 -13
  316. package/dist/system/session-manager.d.ts +3 -3
  317. package/dist/system/session-manager.js +3 -3
  318. package/dist/system/sleep-notification.js +2 -2
  319. package/dist/system/sleep-prevention.js +1 -1
  320. package/dist/types/index.d.ts +21 -21
  321. package/dist/types/{features.d.ts → issues.d.ts} +3 -3
  322. package/dist/types/pipeline.d.ts +4 -4
  323. package/dist/updater/auto-updater.d.ts +2 -2
  324. package/dist/updater/auto-updater.js +3 -3
  325. package/dist/utils/conflict-resolver.d.ts +1 -1
  326. package/dist/utils/conflict-resolver.js +5 -5
  327. package/dist/utils/formatters.d.ts +4 -4
  328. package/dist/utils/formatters.js +29 -29
  329. package/dist/utils/git-branch-manager-async.d.ts +6 -6
  330. package/dist/utils/git-branch-manager-async.js +41 -41
  331. package/dist/utils/git-branch-manager.d.ts +11 -11
  332. package/dist/utils/git-branch-manager.js +42 -42
  333. package/dist/utils/image-downloader.d.ts +4 -4
  334. package/dist/utils/image-downloader.js +17 -17
  335. package/dist/utils/pipeline-logger.d.ts +1 -1
  336. package/dist/utils/pipeline-logger.js +5 -5
  337. package/dist/workspace/workspace-manager.d.ts +17 -17
  338. package/dist/workspace/workspace-manager.js +21 -21
  339. package/package.json +1 -1
  340. package/vitest.config.ts +4 -0
  341. package/dist/api/__tests__/app-store.test.d.ts +0 -7
  342. package/dist/api/__tests__/app-store.test.js +0 -60
  343. package/dist/api/__tests__/intelligence.test.d.ts +0 -11
  344. package/dist/api/__tests__/intelligence.test.js +0 -315
  345. package/dist/api/features/__tests__/feature-utils.test.d.ts +0 -4
  346. package/dist/api/features/__tests__/feature-utils.test.js +0 -370
  347. package/dist/api/features/__tests__/status-updater.test.d.ts +0 -4
  348. package/dist/api/features/__tests__/status-updater.test.js +0 -88
  349. package/dist/api/features/approval-checker.d.ts +0 -20
  350. package/dist/api/features/feature-utils.d.ts +0 -23
  351. package/dist/api/features/feature-utils.js +0 -80
  352. package/dist/api/features/get-feature.d.ts +0 -5
  353. package/dist/api/features/get-feature.js +0 -21
  354. package/dist/api/features/index.d.ts +0 -8
  355. package/dist/api/features/index.js +0 -10
  356. package/dist/api/features/status-updater.d.ts +0 -41
  357. package/dist/api/features/update-feature.d.ts +0 -20
  358. package/dist/commands/build/__tests__/build.test.d.ts +0 -5
  359. package/dist/commands/build/__tests__/build.test.js +0 -206
  360. package/dist/commands/build/__tests__/detect-project.test.d.ts +0 -6
  361. package/dist/commands/build/__tests__/detect-project.test.js +0 -160
  362. package/dist/commands/build/__tests__/run-build.test.d.ts +0 -6
  363. package/dist/commands/build/__tests__/run-build.test.js +0 -433
  364. package/dist/commands/intelligence/__tests__/command.test.d.ts +0 -4
  365. package/dist/commands/intelligence/__tests__/command.test.js +0 -48
  366. package/dist/commands/workflow/core/__tests__/feature-filter.test.d.ts +0 -5
  367. package/dist/commands/workflow/core/__tests__/feature-filter.test.js +0 -316
  368. package/dist/commands/workflow/core/__tests__/pipeline-evaluator.test.d.ts +0 -4
  369. package/dist/commands/workflow/core/__tests__/pipeline-evaluator.test.js +0 -397
  370. package/dist/commands/workflow/core/__tests__/state-manager.test.d.ts +0 -4
  371. package/dist/commands/workflow/core/__tests__/state-manager.test.js +0 -384
  372. package/dist/commands/workflow/core/feature-filter.d.ts +0 -16
  373. package/dist/commands/workflow/core/feature-filter.js +0 -47
  374. package/dist/commands/workflow/feature-coordinator.d.ts +0 -18
  375. package/dist/config/__tests__/config.test.d.ts +0 -4
  376. package/dist/config/__tests__/config.test.js +0 -286
  377. package/dist/config/__tests__/feature-status.test.d.ts +0 -4
  378. package/dist/config/__tests__/feature-status.test.js +0 -111
  379. package/dist/errors/__tests__/index.test.d.ts +0 -4
  380. package/dist/errors/__tests__/index.test.js +0 -349
  381. package/dist/phases/app-store-generation/__tests__/agent.test.d.ts +0 -5
  382. package/dist/phases/app-store-generation/__tests__/agent.test.js +0 -142
  383. package/dist/phases/app-store-generation/__tests__/context.test.d.ts +0 -4
  384. package/dist/phases/app-store-generation/__tests__/context.test.js +0 -284
  385. package/dist/phases/app-store-generation/__tests__/prompts.test.d.ts +0 -4
  386. package/dist/phases/app-store-generation/__tests__/prompts.test.js +0 -122
  387. package/dist/phases/app-store-generation/__tests__/screenshot-composer.test.d.ts +0 -5
  388. package/dist/phases/app-store-generation/__tests__/screenshot-composer.test.js +0 -826
  389. package/dist/phases/code-review/__tests__/diff-utils.test.js +0 -101
  390. package/dist/phases/feature-analysis/context.d.ts +0 -24
  391. package/dist/phases/feature-analysis/index.d.ts +0 -8
  392. package/dist/phases/feature-analysis/outcome.d.ts +0 -40
  393. package/dist/phases/intelligence-analysis/__tests__/context.test.d.ts +0 -4
  394. package/dist/phases/intelligence-analysis/__tests__/context.test.js +0 -192
  395. package/dist/phases/intelligence-analysis/__tests__/matching.test.d.ts +0 -13
  396. package/dist/phases/intelligence-analysis/__tests__/matching.test.js +0 -154
  397. package/dist/phases/intelligence-analysis/__tests__/orchestration.test.d.ts +0 -5
  398. package/dist/phases/intelligence-analysis/__tests__/orchestration.test.js +0 -378
  399. package/dist/phases/intelligence-analysis/__tests__/prompts.test.d.ts +0 -4
  400. package/dist/phases/intelligence-analysis/__tests__/prompts.test.js +0 -33
  401. package/dist/phases/pr-execution/__tests__/file-assigner.test.d.ts +0 -1
  402. package/dist/phases/pr-execution/__tests__/file-assigner.test.js +0 -303
  403. package/dist/phases/pr-resolve/__tests__/checklist-learner.test.d.ts +0 -1
  404. package/dist/phases/pr-resolve/__tests__/checklist-learner.test.js +0 -157
  405. package/dist/phases/pr-resolve/__tests__/prompts.test.d.ts +0 -1
  406. package/dist/phases/pr-resolve/__tests__/prompts.test.js +0 -116
  407. package/dist/phases/pr-resolve/__tests__/resolve-mapping.test.d.ts +0 -1
  408. package/dist/phases/pr-resolve/__tests__/resolve-mapping.test.js +0 -138
  409. package/dist/phases/pr-resolve/__tests__/types.test.d.ts +0 -1
  410. package/dist/phases/pr-resolve/__tests__/types.test.js +0 -43
  411. package/dist/phases/pr-resolve/__tests__/workspace.test.d.ts +0 -1
  412. package/dist/phases/pr-resolve/__tests__/workspace.test.js +0 -111
  413. package/dist/phases/pr-review/__tests__/prompts.test.d.ts +0 -1
  414. package/dist/phases/pr-review/__tests__/prompts.test.js +0 -49
  415. package/dist/phases/pr-review/__tests__/review-comments.test.d.ts +0 -1
  416. package/dist/phases/pr-review/__tests__/review-comments.test.js +0 -110
  417. package/dist/phases/pr-shared/__tests__/agent-utils.test.d.ts +0 -1
  418. package/dist/phases/pr-shared/__tests__/agent-utils.test.js +0 -91
  419. package/dist/phases/pr-shared/__tests__/context.test.d.ts +0 -1
  420. package/dist/phases/pr-shared/__tests__/context.test.js +0 -94
  421. package/dist/phases/pr-splitting/__tests__/import-dep-validator.test.d.ts +0 -1
  422. package/dist/phases/pr-splitting/__tests__/import-dep-validator.test.js +0 -331
  423. package/dist/phases/run-sheet/render.d.ts +0 -60
  424. package/dist/phases/run-sheet/render.js +0 -297
  425. package/dist/phases/smoke-test/__tests__/agent.test.d.ts +0 -4
  426. package/dist/phases/smoke-test/__tests__/agent.test.js +0 -84
  427. package/dist/phases/smoke-test/__tests__/github.test.d.ts +0 -9
  428. package/dist/phases/smoke-test/__tests__/github.test.js +0 -120
  429. package/dist/phases/smoke-test/__tests__/snapshot.test.d.ts +0 -8
  430. package/dist/phases/smoke-test/__tests__/snapshot.test.js +0 -93
  431. package/dist/phases/smoke-test/github.d.ts +0 -54
  432. package/dist/phases/smoke-test/github.js +0 -101
  433. package/dist/phases/smoke-test/snapshot.d.ts +0 -27
  434. package/dist/phases/smoke-test/snapshot.js +0 -157
  435. package/dist/services/coaching/__tests__/coaching-agent.test.d.ts +0 -1
  436. package/dist/services/coaching/__tests__/coaching-agent.test.js +0 -74
  437. package/dist/services/coaching/__tests__/coaching-loop.test.d.ts +0 -1
  438. package/dist/services/coaching/__tests__/coaching-loop.test.js +0 -59
  439. package/dist/services/coaching/__tests__/self-rating.test.d.ts +0 -1
  440. package/dist/services/coaching/__tests__/self-rating.test.js +0 -188
  441. package/dist/services/lifecycle-agent/__tests__/phase-criteria.test.d.ts +0 -4
  442. package/dist/services/lifecycle-agent/__tests__/phase-criteria.test.js +0 -133
  443. package/dist/services/lifecycle-agent/__tests__/transition-rules.test.d.ts +0 -4
  444. package/dist/services/lifecycle-agent/__tests__/transition-rules.test.js +0 -336
  445. package/dist/services/lifecycle-agent/index.d.ts +0 -24
  446. package/dist/services/lifecycle-agent/index.js +0 -25
  447. package/dist/services/lifecycle-agent/phase-criteria.d.ts +0 -57
  448. package/dist/services/lifecycle-agent/phase-criteria.js +0 -335
  449. package/dist/services/lifecycle-agent/transition-rules.d.ts +0 -60
  450. package/dist/services/lifecycle-agent/transition-rules.js +0 -184
  451. package/dist/services/lifecycle-agent/types.d.ts +0 -190
  452. package/dist/services/lifecycle-agent/types.js +0 -12
  453. package/dist/services/phase-hooks/__tests__/bindings-fetcher.test.d.ts +0 -1
  454. package/dist/services/phase-hooks/__tests__/bindings-fetcher.test.js +0 -122
  455. package/dist/services/phase-hooks/__tests__/hook-executor.test.d.ts +0 -1
  456. package/dist/services/phase-hooks/__tests__/hook-executor.test.js +0 -321
  457. package/dist/services/phase-hooks/__tests__/hook-runner.test.d.ts +0 -1
  458. package/dist/services/phase-hooks/__tests__/hook-runner.test.js +0 -261
  459. package/dist/services/phase-hooks/__tests__/plugin-loader.test.d.ts +0 -1
  460. package/dist/services/phase-hooks/__tests__/plugin-loader.test.js +0 -158
  461. package/dist/services/video/__tests__/video-pipeline.test.d.ts +0 -6
  462. package/dist/services/video/__tests__/video-pipeline.test.js +0 -249
  463. package/dist/types/features.js +0 -1
  464. package/dist/workspace/__tests__/workspace-manager.test.d.ts +0 -7
  465. package/dist/workspace/__tests__/workspace-manager.test.js +0 -52
  466. /package/dist/api/{features → issues}/batch-operations.d.ts +0 -0
  467. /package/dist/api/{features → issues}/batch-operations.js +0 -0
  468. /package/dist/phases/{feature-analysis → issue-analysis}/agent.d.ts +0 -0
  469. /package/dist/skills/phase/{feature-analysis-verification → issue-analysis-verification}/SKILL.md +0 -0
  470. /package/dist/{phases/code-review/__tests__/diff-utils.test.d.ts → types/issues.js} +0 -0
@@ -1,26 +1,26 @@
1
1
  /**
2
- * Feature Coordinator - High-level workflow orchestration
2
+ * Issue Coordinator - High-level workflow orchestration
3
3
  *
4
4
  * Responsibilities:
5
- * - Fetch feature configuration from API
5
+ * - Fetch issue configuration from API
6
6
  * - Execute phases based on workflow field (pending phases in order)
7
- * - Coordinate feature-level workflow initialization
7
+ * - Coordinate issue-level workflow initialization
8
8
  * - Handle phase execution results and stop on failure/blocked
9
9
  *
10
- * This is the entry point for feature workflow execution
10
+ * This is the entry point for issue workflow execution
11
11
  */
12
- import { getFeature } from '../../api/features/get-feature.js';
13
- import { markWorkflowPhaseCompleted } from '../../api/features/update-feature.js';
12
+ import { getIssue } from '../../api/issues/get-issue.js';
13
+ import { markWorkflowPhaseCompleted } from '../../api/issues/update-issue.js';
14
14
  import { cacheBindings, clearBindingsCache, fetchHookBindings, } from '../../services/phase-hooks/index.js';
15
15
  import { logError, logInfo, logWarning } from '../../utils/logger.js';
16
16
  import { logPhaseResult } from '../../utils/pipeline-logger.js';
17
- import { runAutonomousPhase, runBranchPlanningPhase, runCodeImplementationPhase, runCodeRefinePhase, runCodeReviewPhase, runFeatureAnalysisPhase, runFunctionalTestingPhase, runPRExecutionPhase, runPRSplittingPhase, runTechnicalDesignPhase, runTestCasesAnalysisPhase, runUserStoriesAnalysisPhase, } from './executors/phase-executor.js';
17
+ import { runAutonomousPhase, runBranchPlanningPhase, runCodeImplementationPhase, runCodeRefinePhase, runCodeReviewPhase, runFunctionalTestingPhase, runIssueAnalysisPhase, runPRExecutionPhase, runPRSplittingPhase, runTechnicalDesignPhase, runTestCasesAnalysisPhase, runUserStoriesAnalysisPhase, } from './executors/phase-executor.js';
18
18
  /**
19
19
  * Map workflow phase names (underscore format) to phase runner functions
20
20
  * Note: code_refine includes built-in verification loop (similar to technical_design)
21
21
  */
22
22
  const PHASE_RUNNERS = {
23
- feature_analysis: runFeatureAnalysisPhase,
23
+ issue_analysis: runIssueAnalysisPhase,
24
24
  user_stories_analysis: runUserStoriesAnalysisPhase,
25
25
  test_cases_analysis: runTestCasesAnalysisPhase,
26
26
  technical_design: runTechnicalDesignPhase,
@@ -47,14 +47,14 @@ function getPendingPhases(workflow) {
47
47
  * Returns the result and marks workflow phase as completed if successful
48
48
  */
49
49
  async function executePhase(phaseName, options, config) {
50
- const { featureId, verbose } = options;
50
+ const { issueId, verbose } = options;
51
51
  // Normalize phase name: kebab-case → snake_case (e.g., code-implementation → code_implementation)
52
52
  const normalizedName = phaseName.replace(/-/g, '_');
53
53
  const phaseRunner = PHASE_RUNNERS[normalizedName];
54
54
  if (!phaseRunner) {
55
55
  logWarning(`Unknown workflow phase: ${phaseName}, skipping`);
56
56
  return {
57
- featureId,
57
+ issueId,
58
58
  phase: phaseName,
59
59
  status: 'error',
60
60
  message: `Unknown workflow phase: ${phaseName}`,
@@ -69,28 +69,28 @@ async function executePhase(phaseName, options, config) {
69
69
  logPhaseResult(result, verbose);
70
70
  // Mark workflow phase as completed if successful
71
71
  if (result.status === 'success') {
72
- await markWorkflowPhaseCompleted(featureId, normalizedName, verbose);
72
+ await markWorkflowPhaseCompleted(issueId, normalizedName, verbose);
73
73
  }
74
74
  return result;
75
75
  }
76
76
  /**
77
- * Run workflow for a feature based on its workflow field
77
+ * Run workflow for an issue based on its workflow field
78
78
  * Executes all pending phases in order, stopping on failure or blocked
79
79
  */
80
- export async function runFeatureWorkflow(options, config) {
81
- const { featureId, verbose } = options;
80
+ export async function runIssueWorkflow(options, config) {
81
+ const { issueId, verbose } = options;
82
82
  try {
83
- // 1. Get feature details to check workflow
83
+ // 1. Get issue details to check workflow
84
84
  if (verbose) {
85
- logInfo(`🔍 Fetching feature configuration for: ${featureId}`);
85
+ logInfo(`🔍 Fetching issue configuration for: ${issueId}`);
86
86
  }
87
- const feature = await getFeature(featureId, verbose);
88
- // Fetch and cache hook bindings for this feature's product
87
+ const issue = await getIssue(issueId, verbose);
88
+ // Fetch and cache hook bindings for this issue's product
89
89
  try {
90
- const bindings = await fetchHookBindings(feature.product_id, verbose);
91
- cacheBindings(featureId, feature.product_id, bindings);
90
+ const bindings = await fetchHookBindings(issue.product_id, verbose);
91
+ cacheBindings(issueId, issue.product_id, bindings);
92
92
  if (verbose && bindings.length > 0) {
93
- logInfo(`🪝 Loaded ${bindings.length} phase hook binding(s) for product ${feature.product_id}`);
93
+ logInfo(`🪝 Loaded ${bindings.length} phase hook binding(s) for product ${issue.product_id}`);
94
94
  }
95
95
  }
96
96
  catch (hookError) {
@@ -99,18 +99,18 @@ export async function runFeatureWorkflow(options, config) {
99
99
  }
100
100
  // Debug log workflow data
101
101
  if (verbose) {
102
- logInfo(`🔍 Feature data from API:`);
103
- logInfo(` - workflow: ${JSON.stringify(feature.workflow, null, 2)}`);
102
+ logInfo(`🔍 Issue data from API:`);
103
+ logInfo(` - workflow: ${JSON.stringify(issue.workflow, null, 2)}`);
104
104
  }
105
105
  // 2. Get all pending phases from workflow
106
- const pendingPhases = getPendingPhases(feature.workflow);
106
+ const pendingPhases = getPendingPhases(issue.workflow);
107
107
  if (pendingPhases.length === 0) {
108
108
  if (verbose) {
109
109
  logInfo('No pending phases in workflow, nothing to execute');
110
110
  }
111
111
  return [
112
112
  {
113
- featureId,
113
+ issueId,
114
114
  phase: 'workflow-initialization',
115
115
  status: 'success',
116
116
  message: 'No pending phases in workflow, nothing to execute',
@@ -137,7 +137,7 @@ export async function runFeatureWorkflow(options, config) {
137
137
  // so we no longer need to create it here after code_implementation succeeds.
138
138
  }
139
139
  // Clean up hook bindings cache
140
- clearBindingsCache(featureId);
140
+ clearBindingsCache(issueId);
141
141
  if (verbose) {
142
142
  const successCount = results.filter((r) => r.status === 'success').length;
143
143
  logInfo(`\n✅ Workflow execution completed: ${successCount}/${results.length} phases succeeded`);
@@ -145,13 +145,13 @@ export async function runFeatureWorkflow(options, config) {
145
145
  return results;
146
146
  }
147
147
  catch (error) {
148
- clearBindingsCache(featureId);
148
+ clearBindingsCache(issueId);
149
149
  const errorMessage = error instanceof Error ? error.message : String(error);
150
- logError(`Failed to run feature workflow: ${errorMessage}`);
150
+ logError(`Failed to run issue workflow: ${errorMessage}`);
151
151
  // Return error result
152
152
  return [
153
153
  {
154
- featureId,
154
+ issueId,
155
155
  phase: 'workflow-initialization',
156
156
  status: 'error',
157
157
  message: `Workflow initialization failed: ${errorMessage}`,
@@ -8,7 +8,7 @@
8
8
  * - Manage phase result collection and status updates
9
9
  *
10
10
  * Complete phase flow:
11
- * feature-analysis → technical-design → code-implementation →
11
+ * issue-analysis → technical-design → code-implementation →
12
12
  * functional-testing → code-review → code-refine → code-refine-verification
13
13
  *
14
14
  * Uses functional programming principles for composability
@@ -21,6 +21,6 @@ import { type ExecutionMode, type PipelinePhaseOptions, type PipelineResult } fr
21
21
  */
22
22
  export declare const runPipelineByMode: (options: PipelinePhaseOptions, config: EdsgerConfig, executionMode: ExecutionMode) => Promise<readonly PipelineResult[]>;
23
23
  /**
24
- * Run complete pipeline for a feature using functional composition (legacy)
24
+ * Run complete pipeline for an issue using functional composition (legacy)
25
25
  */
26
26
  export declare const runCompletePipeline: (options: PipelinePhaseOptions, config: EdsgerConfig) => () => Promise<readonly PipelineResult[]>;
@@ -9,18 +9,18 @@
9
9
  * - Manage phase result collection and status updates
10
10
  *
11
11
  * Complete phase flow:
12
- * feature-analysis → technical-design → code-implementation →
12
+ * issue-analysis → technical-design → code-implementation →
13
13
  * functional-testing → code-review → code-refine → code-refine-verification
14
14
  *
15
15
  * Uses functional programming principles for composability
16
16
  */
17
- import { markWorkflowPhaseCompleted, updateFeatureStatusForPhase, } from '../../api/features/index.js';
17
+ import { markWorkflowPhaseCompleted, updateIssueStatusForPhase, } from '../../api/issues/index.js';
18
18
  import { handleCodeRefineWithRetry } from '../../phases/code-refine/retry-handler.js';
19
19
  import { handleTestFailuresWithRetry } from '../../phases/functional-testing/test-retry-handler.js';
20
20
  import { handlePullRequestCreation } from '../../phases/pull-request/handler.js';
21
21
  import { logInfo } from '../../utils/logger.js';
22
22
  import { logPhaseResult, logPipelineComplete, logPipelineStart, shouldContinuePipeline, } from '../../utils/pipeline-logger.js';
23
- import { runCodeImplementationPhase, runCodeReviewPhase, runCodeTestingPhase, runFeatureAnalysisPhase, runFunctionalTestingPhase, runPRExecutionPhase, runPRSplittingPhase, runTechnicalDesignPhase, runTestCasesAnalysisPhase, runUserStoriesAnalysisPhase, } from './executors/phase-executor.js';
23
+ import { runCodeImplementationPhase, runCodeReviewPhase, runCodeTestingPhase, runFunctionalTestingPhase, runIssueAnalysisPhase, runPRExecutionPhase, runPRSplittingPhase, runTechnicalDesignPhase, runTestCasesAnalysisPhase, runUserStoriesAnalysisPhase, } from './executors/phase-executor.js';
24
24
  /**
25
25
  * Helper to log phase result and mark workflow phase as completed if successful
26
26
  */
@@ -28,7 +28,7 @@ const logAndMarkPhaseCompleted = async (result, verbose) => {
28
28
  const logged = logPhaseResult(result, verbose);
29
29
  // Mark workflow phase as completed if phase succeeded
30
30
  if (result.status === 'success') {
31
- await markWorkflowPhaseCompleted(result.featureId, result.phase, verbose);
31
+ await markWorkflowPhaseCompleted(result.issueId, result.phase, verbose);
32
32
  }
33
33
  return logged;
34
34
  };
@@ -38,28 +38,28 @@ const logAndMarkPhaseCompleted = async (result, verbose) => {
38
38
  */
39
39
  // eslint-disable-next-line complexity
40
40
  export const runPipelineByMode = async (options, config, executionMode) => {
41
- const { featureId, verbose } = options;
41
+ const { issueId, verbose } = options;
42
42
  if (verbose) {
43
- logInfo(`🚀 Starting pipeline with mode: ${executionMode} for feature: ${featureId}`);
43
+ logInfo(`🚀 Starting pipeline with mode: ${executionMode} for issue: ${issueId}`);
44
44
  logInfo(`📋 Execution mode details:`);
45
45
  logInfo(` - Mode value: "${executionMode}"`);
46
46
  logInfo(` - Mode type: ${typeof executionMode}`);
47
- logInfo(` - Mode === 'only_feature_analysis': ${executionMode === 'only_feature_analysis'}`);
47
+ logInfo(` - Mode === 'only_issue_analysis': ${executionMode === 'only_issue_analysis'}`);
48
48
  }
49
49
  switch (executionMode) {
50
50
  // Complete pipeline
51
51
  case 'full_pipeline':
52
- case 'from_feature_analysis':
52
+ case 'from_issue_analysis':
53
53
  if (verbose) {
54
- logInfo(` ➡️ Matched: full_pipeline or from_feature_analysis - running complete pipeline`);
54
+ logInfo(` ➡️ Matched: full_pipeline or from_issue_analysis - running complete pipeline`);
55
55
  }
56
- return await runFromFeatureAnalysis(options, config);
57
- // Feature Analysis (legacy - generates both user stories and test cases)
58
- case 'only_feature_analysis':
56
+ return await runFromIssueAnalysis(options, config);
57
+ // Issue Analysis (legacy - generates both user stories and test cases)
58
+ case 'only_issue_analysis':
59
59
  if (verbose) {
60
- logInfo(` ➡️ Matched: only_feature_analysis - running analysis only`);
60
+ logInfo(` ➡️ Matched: only_issue_analysis - running analysis only`);
61
61
  }
62
- return await runOnlyFeatureAnalysis(options, config);
62
+ return await runOnlyIssueAnalysis(options, config);
63
63
  // User Stories Analysis
64
64
  case 'only_user_stories_analysis':
65
65
  return await runOnlyUserStoriesAnalysis(options, config);
@@ -113,37 +113,37 @@ export const runPipelineByMode = async (options, config, executionMode) => {
113
113
  }
114
114
  };
115
115
  /**
116
- * Run complete pipeline for a feature using functional composition (legacy)
116
+ * Run complete pipeline for an issue using functional composition (legacy)
117
117
  */
118
118
  export const runCompletePipeline = (options, config) => {
119
119
  return async () => {
120
- return await runFromFeatureAnalysis(options, config);
120
+ return await runFromIssueAnalysis(options, config);
121
121
  };
122
122
  };
123
123
  // Helper functions for different execution patterns
124
124
  /**
125
- * Finalize pipeline execution by updating feature status to ready_for_review if all phases succeeded
125
+ * Finalize pipeline execution by updating issue status to ready_for_review if all phases succeeded
126
126
  */
127
127
  const finalizePipelineExecution = async (options, results, verbose) => {
128
128
  // Check if all phases succeeded
129
129
  const allSucceeded = results.every((result) => result.status === 'success');
130
130
  if (allSucceeded && results.length > 0) {
131
131
  // Update status to ready_for_review
132
- await updateFeatureStatusForPhase(options.featureId, 'ready-for-review', verbose);
132
+ await updateIssueStatusForPhase(options.issueId, 'ready-for-review', verbose);
133
133
  if (verbose) {
134
- logInfo('✅ Pipeline execution completed - feature is ready for review');
134
+ logInfo('✅ Pipeline execution completed - issue is ready for review');
135
135
  }
136
136
  }
137
137
  return logPipelineComplete(results, verbose);
138
138
  };
139
139
  /**
140
- * Run only feature analysis phase
140
+ * Run only issue analysis phase
141
141
  */
142
- const runOnlyFeatureAnalysis = async (options, config) => {
143
- const { featureId, verbose } = options;
144
- logPipelineStart(featureId, verbose);
142
+ const runOnlyIssueAnalysis = async (options, config) => {
143
+ const { issueId, verbose } = options;
144
+ logPipelineStart(issueId, verbose);
145
145
  const results = [];
146
- const analysisResult = await runFeatureAnalysisPhase(options, config);
146
+ const analysisResult = await runIssueAnalysisPhase(options, config);
147
147
  results.push(await logAndMarkPhaseCompleted(analysisResult, verbose));
148
148
  return finalizePipelineExecution(options, results, verbose);
149
149
  };
@@ -151,8 +151,8 @@ const runOnlyFeatureAnalysis = async (options, config) => {
151
151
  * Run only user stories analysis phase
152
152
  */
153
153
  const runOnlyUserStoriesAnalysis = async (options, config) => {
154
- const { featureId, verbose } = options;
155
- logPipelineStart(featureId, verbose);
154
+ const { issueId, verbose } = options;
155
+ logPipelineStart(issueId, verbose);
156
156
  const results = [];
157
157
  const analysisResult = await runUserStoriesAnalysisPhase(options, config);
158
158
  results.push(await logAndMarkPhaseCompleted(analysisResult, verbose));
@@ -162,8 +162,8 @@ const runOnlyUserStoriesAnalysis = async (options, config) => {
162
162
  * Run only test cases analysis phase
163
163
  */
164
164
  const runOnlyTestCasesAnalysis = async (options, config) => {
165
- const { featureId, verbose } = options;
166
- logPipelineStart(featureId, verbose);
165
+ const { issueId, verbose } = options;
166
+ logPipelineStart(issueId, verbose);
167
167
  const results = [];
168
168
  const analysisResult = await runTestCasesAnalysisPhase(options, config);
169
169
  results.push(await logAndMarkPhaseCompleted(analysisResult, verbose));
@@ -174,8 +174,8 @@ const runOnlyTestCasesAnalysis = async (options, config) => {
174
174
  * Flow: user-stories-analysis → test-cases-analysis → technical-design → code-implementation → ...
175
175
  */
176
176
  const runFromUserStoriesAnalysis = async (options, config) => {
177
- const { featureId, verbose } = options;
178
- logPipelineStart(featureId, verbose);
177
+ const { issueId, verbose } = options;
178
+ logPipelineStart(issueId, verbose);
179
179
  const results = [];
180
180
  // 1. User Stories Analysis
181
181
  const userStoriesResult = await runUserStoriesAnalysisPhase(options, config);
@@ -209,10 +209,10 @@ const runFromUserStoriesAnalysis = async (options, config) => {
209
209
  verbose,
210
210
  });
211
211
  const finalStatus = testingResult.status === 'success' ? 'testing_passed' : 'testing_failed';
212
- await updateFeatureStatusForPhase(featureId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
212
+ await updateIssueStatusForPhase(issueId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
213
213
  if (testingResult.status === 'success') {
214
214
  const prCreated = await handlePullRequestCreation({
215
- featureId,
215
+ issueId,
216
216
  results,
217
217
  testingResult,
218
218
  verbose,
@@ -231,8 +231,8 @@ const runFromUserStoriesAnalysis = async (options, config) => {
231
231
  * Flow: test-cases-analysis → technical-design → code-implementation → ...
232
232
  */
233
233
  const runFromTestCasesAnalysis = async (options, config) => {
234
- const { featureId, verbose } = options;
235
- logPipelineStart(featureId, verbose);
234
+ const { issueId, verbose } = options;
235
+ logPipelineStart(issueId, verbose);
236
236
  const results = [];
237
237
  // 1. Test Cases Analysis
238
238
  const testCasesResult = await runTestCasesAnalysisPhase(options, config);
@@ -260,10 +260,10 @@ const runFromTestCasesAnalysis = async (options, config) => {
260
260
  verbose,
261
261
  });
262
262
  const finalStatus = testingResult.status === 'success' ? 'testing_passed' : 'testing_failed';
263
- await updateFeatureStatusForPhase(featureId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
263
+ await updateIssueStatusForPhase(issueId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
264
264
  if (testingResult.status === 'success') {
265
265
  const prCreated = await handlePullRequestCreation({
266
- featureId,
266
+ issueId,
267
267
  results,
268
268
  testingResult,
269
269
  verbose,
@@ -281,8 +281,8 @@ const runFromTestCasesAnalysis = async (options, config) => {
281
281
  * Run only technical design phase
282
282
  */
283
283
  const runOnlyTechnicalDesign = async (options, config) => {
284
- const { featureId, verbose } = options;
285
- logPipelineStart(featureId, verbose);
284
+ const { issueId, verbose } = options;
285
+ logPipelineStart(issueId, verbose);
286
286
  const results = [];
287
287
  const designResult = await runTechnicalDesignPhase(options, config);
288
288
  results.push(await logAndMarkPhaseCompleted(designResult, verbose));
@@ -293,8 +293,8 @@ const runOnlyTechnicalDesign = async (options, config) => {
293
293
  * After successful implementation, creates a pull request so the code can be reviewed
294
294
  */
295
295
  const runOnlyCodeImplementation = async (options, config) => {
296
- const { featureId, verbose } = options;
297
- logPipelineStart(featureId, verbose);
296
+ const { issueId, verbose } = options;
297
+ logPipelineStart(issueId, verbose);
298
298
  const results = [];
299
299
  const implementationResult = await runCodeImplementationPhase(options, config);
300
300
  results.push(await logAndMarkPhaseCompleted(implementationResult, verbose));
@@ -304,14 +304,14 @@ const runOnlyCodeImplementation = async (options, config) => {
304
304
  logInfo('\n📝 Creating pull request for implemented code...');
305
305
  }
306
306
  const prCreated = await handlePullRequestCreation({
307
- featureId,
307
+ issueId,
308
308
  results,
309
309
  // No testingResult - functional testing was skipped
310
310
  verbose,
311
311
  });
312
312
  // Add PR creation result to results array
313
313
  const prResult = {
314
- featureId,
314
+ issueId,
315
315
  phase: 'pull-request',
316
316
  status: prCreated ? 'success' : 'error',
317
317
  message: prCreated
@@ -327,8 +327,8 @@ const runOnlyCodeImplementation = async (options, config) => {
327
327
  * Run only PR splitting phase
328
328
  */
329
329
  const runOnlyPRSplitting = async (options, config) => {
330
- const { featureId, verbose } = options;
331
- logPipelineStart(featureId, verbose);
330
+ const { issueId, verbose } = options;
331
+ logPipelineStart(issueId, verbose);
332
332
  const results = [];
333
333
  const prSplittingResult = await runPRSplittingPhase(options, config);
334
334
  results.push(await logAndMarkPhaseCompleted(prSplittingResult, verbose));
@@ -339,8 +339,8 @@ const runOnlyPRSplitting = async (options, config) => {
339
339
  * Flow: pr-splitting → (human review) → pr-execution → testing → ...
340
340
  */
341
341
  const runFromPRSplitting = async (options, config) => {
342
- const { featureId, verbose } = options;
343
- logPipelineStart(featureId, verbose);
342
+ const { issueId, verbose } = options;
343
+ logPipelineStart(issueId, verbose);
344
344
  const results = [];
345
345
  // 1. PR Splitting (planning only)
346
346
  const prSplittingResult = await runPRSplittingPhase(options, config);
@@ -362,10 +362,10 @@ const runFromPRSplitting = async (options, config) => {
362
362
  verbose,
363
363
  });
364
364
  const finalStatus = testingResult.status === 'success' ? 'testing_passed' : 'testing_failed';
365
- await updateFeatureStatusForPhase(featureId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
365
+ await updateIssueStatusForPhase(issueId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
366
366
  if (testingResult.status === 'success') {
367
367
  const prCreated = await handlePullRequestCreation({
368
- featureId,
368
+ issueId,
369
369
  results,
370
370
  testingResult,
371
371
  verbose,
@@ -383,8 +383,8 @@ const runFromPRSplitting = async (options, config) => {
383
383
  * Run only PR execution phase
384
384
  */
385
385
  const runOnlyPRExecution = async (options, config) => {
386
- const { featureId, verbose } = options;
387
- logPipelineStart(featureId, verbose);
386
+ const { issueId, verbose } = options;
387
+ logPipelineStart(issueId, verbose);
388
388
  const results = [];
389
389
  const prExecutionResult = await runPRExecutionPhase(options, config);
390
390
  results.push(await logAndMarkPhaseCompleted(prExecutionResult, verbose));
@@ -395,8 +395,8 @@ const runOnlyPRExecution = async (options, config) => {
395
395
  * Flow: pr-execution → testing → code-review → code-refine
396
396
  */
397
397
  const runFromPRExecution = async (options, config) => {
398
- const { featureId, verbose } = options;
399
- logPipelineStart(featureId, verbose);
398
+ const { issueId, verbose } = options;
399
+ logPipelineStart(issueId, verbose);
400
400
  const results = [];
401
401
  // 1. PR Execution
402
402
  const prExecutionResult = await runPRExecutionPhase(options, config);
@@ -412,10 +412,10 @@ const runFromPRExecution = async (options, config) => {
412
412
  verbose,
413
413
  });
414
414
  const finalStatus = testingResult.status === 'success' ? 'testing_passed' : 'testing_failed';
415
- await updateFeatureStatusForPhase(featureId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
415
+ await updateIssueStatusForPhase(issueId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
416
416
  if (testingResult.status === 'success') {
417
417
  const prCreated = await handlePullRequestCreation({
418
- featureId,
418
+ issueId,
419
419
  results,
420
420
  testingResult,
421
421
  verbose,
@@ -433,22 +433,22 @@ const runFromPRExecution = async (options, config) => {
433
433
  * Run only functional testing phase
434
434
  */
435
435
  const runOnlyFunctionalTesting = async (options, config) => {
436
- const { featureId, verbose } = options;
437
- logPipelineStart(featureId, verbose);
436
+ const { issueId, verbose } = options;
437
+ logPipelineStart(issueId, verbose);
438
438
  const results = [];
439
439
  const testingResult = await runFunctionalTestingPhase(options, config);
440
440
  results.push(await logAndMarkPhaseCompleted(testingResult, verbose));
441
441
  return finalizePipelineExecution(options, results, verbose);
442
442
  };
443
443
  /**
444
- * Run from feature analysis to end
444
+ * Run from issue analysis to end
445
445
  */
446
- const runFromFeatureAnalysis = async (options, config) => {
447
- const { featureId, verbose } = options;
448
- logPipelineStart(featureId, verbose);
446
+ const runFromIssueAnalysis = async (options, config) => {
447
+ const { issueId, verbose } = options;
448
+ logPipelineStart(issueId, verbose);
449
449
  const results = [];
450
- // 1. Feature Analysis
451
- const analysisResult = await runFeatureAnalysisPhase(options, config);
450
+ // 1. Issue Analysis
451
+ const analysisResult = await runIssueAnalysisPhase(options, config);
452
452
  results.push(await logAndMarkPhaseCompleted(analysisResult, verbose));
453
453
  if (!shouldContinuePipeline(results)) {
454
454
  return finalizePipelineExecution(options, results, verbose);
@@ -474,11 +474,11 @@ const runFromFeatureAnalysis = async (options, config) => {
474
474
  });
475
475
  // Update final status based on functional testing result
476
476
  const finalStatus = testingResult.status === 'success' ? 'testing_passed' : 'testing_failed';
477
- await updateFeatureStatusForPhase(featureId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
477
+ await updateIssueStatusForPhase(issueId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
478
478
  // Create pull request if tests passed
479
479
  if (testingResult.status === 'success') {
480
480
  const prCreated = await handlePullRequestCreation({
481
- featureId,
481
+ issueId,
482
482
  results,
483
483
  testingResult,
484
484
  verbose,
@@ -497,8 +497,8 @@ const runFromFeatureAnalysis = async (options, config) => {
497
497
  * Run from technical design to end
498
498
  */
499
499
  const runFromTechnicalDesign = async (options, config) => {
500
- const { featureId, verbose } = options;
501
- logPipelineStart(featureId, verbose);
500
+ const { issueId, verbose } = options;
501
+ logPipelineStart(issueId, verbose);
502
502
  const results = [];
503
503
  // 1. Technical Design
504
504
  const designResult = await runTechnicalDesignPhase(options, config);
@@ -521,11 +521,11 @@ const runFromTechnicalDesign = async (options, config) => {
521
521
  });
522
522
  // Update final status based on functional testing result
523
523
  const finalStatus = testingResult.status === 'success' ? 'testing_passed' : 'testing_failed';
524
- await updateFeatureStatusForPhase(featureId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
524
+ await updateIssueStatusForPhase(issueId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
525
525
  // Create pull request if tests passed
526
526
  if (testingResult.status === 'success') {
527
527
  const prCreated = await handlePullRequestCreation({
528
- featureId,
528
+ issueId,
529
529
  results,
530
530
  testingResult,
531
531
  verbose,
@@ -544,8 +544,8 @@ const runFromTechnicalDesign = async (options, config) => {
544
544
  * Run from code implementation to end
545
545
  */
546
546
  const runFromCodeImplementation = async (options, config) => {
547
- const { featureId, verbose } = options;
548
- logPipelineStart(featureId, verbose);
547
+ const { issueId, verbose } = options;
548
+ logPipelineStart(issueId, verbose);
549
549
  const results = [];
550
550
  // 1. Code Implementation
551
551
  const implementationResult = await runCodeImplementationPhase(options, config);
@@ -562,11 +562,11 @@ const runFromCodeImplementation = async (options, config) => {
562
562
  });
563
563
  // Update final status based on functional testing result
564
564
  const finalStatus = testingResult.status === 'success' ? 'testing_passed' : 'testing_failed';
565
- await updateFeatureStatusForPhase(featureId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
565
+ await updateIssueStatusForPhase(issueId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
566
566
  // Create pull request if tests passed
567
567
  if (testingResult.status === 'success') {
568
568
  const prCreated = await handlePullRequestCreation({
569
- featureId,
569
+ issueId,
570
570
  results,
571
571
  testingResult,
572
572
  verbose,
@@ -585,8 +585,8 @@ const runFromCodeImplementation = async (options, config) => {
585
585
  * Run from functional testing to end
586
586
  */
587
587
  const runFromFunctionalTesting = async (options, config) => {
588
- const { featureId, verbose } = options;
589
- logPipelineStart(featureId, verbose);
588
+ const { issueId, verbose } = options;
589
+ logPipelineStart(issueId, verbose);
590
590
  const results = [];
591
591
  // 1. Functional Testing with retry loop for bug fixes
592
592
  const testingResult = await handleTestFailuresWithRetry({
@@ -597,11 +597,11 @@ const runFromFunctionalTesting = async (options, config) => {
597
597
  });
598
598
  // Update final status based on functional testing result
599
599
  const finalStatus = testingResult.status === 'success' ? 'testing_passed' : 'testing_failed';
600
- await updateFeatureStatusForPhase(featureId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
600
+ await updateIssueStatusForPhase(issueId, finalStatus === 'testing_passed' ? 'testing-passed' : 'testing-failed', verbose);
601
601
  // Create pull request if tests passed
602
602
  if (testingResult.status === 'success') {
603
603
  const prCreated = await handlePullRequestCreation({
604
- featureId,
604
+ issueId,
605
605
  results,
606
606
  testingResult,
607
607
  verbose,
@@ -621,8 +621,8 @@ const runFromFunctionalTesting = async (options, config) => {
621
621
  * Includes automatic retry loop for verification failures
622
622
  */
623
623
  const runOnlyCodeRefine = async (options, config) => {
624
- const { featureId, verbose } = options;
625
- logPipelineStart(featureId, verbose);
624
+ const { issueId, verbose } = options;
625
+ logPipelineStart(issueId, verbose);
626
626
  const results = [];
627
627
  // Code Refine with automatic retry for verification failures
628
628
  await handleCodeRefineWithRetry({
@@ -637,8 +637,8 @@ const runOnlyCodeRefine = async (options, config) => {
637
637
  * Run only code review phase (review PR and create review comments)
638
638
  */
639
639
  const runOnlyCodeReview = async (options, config) => {
640
- const { featureId, verbose } = options;
641
- logPipelineStart(featureId, verbose);
640
+ const { issueId, verbose } = options;
641
+ logPipelineStart(issueId, verbose);
642
642
  const results = [];
643
643
  // Code Review - analyze PR and create review comments
644
644
  const reviewResult = await runCodeReviewPhase(options, config);
@@ -649,8 +649,8 @@ const runOnlyCodeReview = async (options, config) => {
649
649
  * Run from code review to end (code-review → code-refine → code-refine-verification)
650
650
  */
651
651
  const runFromCodeReview = async (options, config) => {
652
- const { featureId, verbose } = options;
653
- logPipelineStart(featureId, verbose);
652
+ const { issueId, verbose } = options;
653
+ logPipelineStart(issueId, verbose);
654
654
  const results = [];
655
655
  // 1. Code Review - analyze PR and create review comments
656
656
  const reviewResult = await runCodeReviewPhase(options, config);
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Main workflow processor for continuous feature development
3
- * Monitors for ready_for_ai features and processes them through the complete pipeline
2
+ * Main workflow processor for continuous issue development
3
+ * Monitors for ready_for_ai issues and processes them through the complete pipeline
4
4
  * Uses functional programming principles
5
5
  */
6
6
  import { type EdsgerConfig } from '../../types/index.js';
@@ -20,7 +20,7 @@ export declare class WorkflowProcessor {
20
20
  private readonly options;
21
21
  private readonly config;
22
22
  private isRunning;
23
- private processedFeatures;
23
+ private processedIssues;
24
24
  private pollTimer?;
25
25
  constructor(options: WorkflowOptions, config: EdsgerConfig);
26
26
  /**
@@ -32,14 +32,14 @@ export declare class WorkflowProcessor {
32
32
  */
33
33
  stop(): void;
34
34
  /**
35
- * Process the next available feature using atomic claim mechanism
35
+ * Process the next available issue using atomic claim mechanism
36
36
  * Uses database-level locking to prevent race conditions between workers
37
37
  */
38
- private processNextFeature;
38
+ private processNextIssue;
39
39
  /**
40
- * Process a single feature through the complete pipeline using functional composition
40
+ * Process a single issue through the complete pipeline using functional composition
41
41
  */
42
- private processFeature;
42
+ private processIssue;
43
43
  /**
44
44
  * Get current processing statistics using pure function
45
45
  */