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
@@ -3,16 +3,16 @@
3
3
  */
4
4
  import { getGitHubConfig } from '../../../api/github.js';
5
5
  import { runAutonomousDevelopment } from '../../../phases/autonomous/index.js';
6
- import { planFeatureBranches } from '../../../phases/branch-planning/index.js';
7
- import { implementFeatureCode } from '../../../phases/code-implementation/index.js';
6
+ import { planIssueBranches } from '../../../phases/branch-planning/index.js';
7
+ import { implementIssueCode } from '../../../phases/code-implementation/index.js';
8
8
  import { refineCodeFromPRFeedback } from '../../../phases/code-refine/index.js';
9
9
  import { verifyAndResolveComments } from '../../../phases/code-refine-verification/index.js';
10
10
  import { reviewPullRequest } from '../../../phases/code-review/index.js';
11
11
  import { writeCodeTests } from '../../../phases/code-testing/analyzer.js';
12
- import { analyseFeature } from '../../../phases/feature-analysis/index.js';
13
12
  import { runFunctionalTesting } from '../../../phases/functional-testing/analyzer.js';
14
- import { executeFeaturePRs } from '../../../phases/pr-execution/index.js';
15
- import { splitFeatureIntoPRs } from '../../../phases/pr-splitting/index.js';
13
+ import { analyseIssue } from '../../../phases/issue-analysis/index.js';
14
+ import { executeIssuePRs } from '../../../phases/pr-execution/index.js';
15
+ import { splitIssueIntoPRs } from '../../../phases/pr-splitting/index.js';
16
16
  import { generateTechnicalDesign } from '../../../phases/technical-design/index.js';
17
17
  import { analyseTestCases } from '../../../phases/test-cases-analysis/index.js';
18
18
  import { analyseUserStories } from '../../../phases/user-stories-analysis/index.js';
@@ -20,7 +20,7 @@ import { analyseUserStories } from '../../../phases/user-stories-analysis/index.
20
20
  * Wrapper for code-refine phase to inject GitHub token
21
21
  */
22
22
  const executeCodeRefine = async (options, config, checklistContext) => {
23
- const githubConfig = await getGitHubConfig(options.featureId, options.verbose);
23
+ const githubConfig = await getGitHubConfig(options.issueId, options.verbose);
24
24
  if (!githubConfig.configured || !githubConfig.token) {
25
25
  return {
26
26
  status: 'error',
@@ -29,7 +29,7 @@ const executeCodeRefine = async (options, config, checklistContext) => {
29
29
  };
30
30
  }
31
31
  return refineCodeFromPRFeedback({
32
- featureId: options.featureId,
32
+ issueId: options.issueId,
33
33
  githubToken: githubConfig.token,
34
34
  verbose: options.verbose,
35
35
  }, config, checklistContext);
@@ -38,7 +38,7 @@ const executeCodeRefine = async (options, config, checklistContext) => {
38
38
  * Wrapper for code-refine-verification phase to inject GitHub token
39
39
  */
40
40
  const executeCodeRefineVerification = async (options, config) => {
41
- const githubConfig = await getGitHubConfig(options.featureId, options.verbose);
41
+ const githubConfig = await getGitHubConfig(options.issueId, options.verbose);
42
42
  if (!githubConfig.configured || !githubConfig.token) {
43
43
  return {
44
44
  status: 'error',
@@ -47,7 +47,7 @@ const executeCodeRefineVerification = async (options, config) => {
47
47
  };
48
48
  }
49
49
  return verifyAndResolveComments({
50
- featureId: options.featureId,
50
+ issueId: options.issueId,
51
51
  githubToken: githubConfig.token,
52
52
  config, // Add config parameter for LLM analysis
53
53
  verbose: options.verbose,
@@ -57,7 +57,7 @@ const executeCodeRefineVerification = async (options, config) => {
57
57
  * Wrapper for code-review phase to inject GitHub token
58
58
  */
59
59
  const executeCodeReview = async (options, config, checklistContext) => {
60
- const githubConfig = await getGitHubConfig(options.featureId, options.verbose);
60
+ const githubConfig = await getGitHubConfig(options.issueId, options.verbose);
61
61
  if (!githubConfig.configured || !githubConfig.token) {
62
62
  return {
63
63
  status: 'error',
@@ -66,7 +66,7 @@ const executeCodeReview = async (options, config, checklistContext) => {
66
66
  };
67
67
  }
68
68
  return reviewPullRequest({
69
- featureId: options.featureId,
69
+ issueId: options.issueId,
70
70
  githubToken: githubConfig.token,
71
71
  verbose: options.verbose,
72
72
  }, config, checklistContext);
@@ -74,8 +74,8 @@ const executeCodeReview = async (options, config, checklistContext) => {
74
74
  // Pipeline phase configurations
75
75
  export const phaseConfigs = [
76
76
  {
77
- name: 'feature-analysis',
78
- execute: analyseFeature,
77
+ name: 'issue-analysis',
78
+ execute: analyseIssue,
79
79
  },
80
80
  {
81
81
  name: 'user-stories-analysis',
@@ -91,19 +91,19 @@ export const phaseConfigs = [
91
91
  },
92
92
  {
93
93
  name: 'branch-planning',
94
- execute: planFeatureBranches,
94
+ execute: planIssueBranches,
95
95
  },
96
96
  {
97
97
  name: 'code-implementation',
98
- execute: implementFeatureCode,
98
+ execute: implementIssueCode,
99
99
  },
100
100
  {
101
101
  name: 'pr-splitting',
102
- execute: splitFeatureIntoPRs,
102
+ execute: splitIssueIntoPRs,
103
103
  },
104
104
  {
105
105
  name: 'pr-execution',
106
- execute: executeFeaturePRs,
106
+ execute: executeIssuePRs,
107
107
  },
108
108
  {
109
109
  name: 'functional-testing',
@@ -3,6 +3,6 @@
3
3
  * Centralized exports for all core functionality
4
4
  */
5
5
  export * from './state-manager.js';
6
- export * from './feature-filter.js';
6
+ export * from './issue-filter.js';
7
7
  export * from './pipeline-evaluator.js';
8
8
  export * from './workflow-logger.js';
@@ -4,8 +4,8 @@
4
4
  */
5
5
  // State management
6
6
  export * from './state-manager.js';
7
- // Feature filtering
8
- export * from './feature-filter.js';
7
+ // Issue filtering
8
+ export * from './issue-filter.js';
9
9
  // Pipeline evaluation
10
10
  export * from './pipeline-evaluator.js';
11
11
  // Workflow logging
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Issue filtering utilities for workflow processor
3
+ * Pure functions for filtering and selecting issues for processing
4
+ */
5
+ import type { IssueInfo } from '../../../types/issues.js';
6
+ import type { IssueProcessingState } from './state-manager.js';
7
+ export declare const shouldProcessIssue: (maxRetries: number) => (issue: IssueInfo, states: Map<string, IssueProcessingState>) => boolean;
8
+ export declare const findNextIssue: (issues: readonly IssueInfo[], states: Map<string, IssueProcessingState>, maxRetries: number) => IssueInfo | undefined;
9
+ export declare const isIssueProcessing: (issueId: string, states: Map<string, IssueProcessingState>) => boolean;
10
+ export declare const isIssueCompleted: (issueId: string, states: Map<string, IssueProcessingState>) => boolean;
11
+ export declare const isIssueFailed: (issueId: string, states: Map<string, IssueProcessingState>) => boolean;
12
+ export declare const hasReachedMaxRetries: (issueId: string, states: Map<string, IssueProcessingState>, maxRetries: number) => boolean;
13
+ export declare const filterProcessingIssues: (issues: readonly IssueInfo[], states: Map<string, IssueProcessingState>) => IssueInfo[];
14
+ export declare const filterCompletedIssues: (issues: readonly IssueInfo[], states: Map<string, IssueProcessingState>) => IssueInfo[];
15
+ export declare const filterFailedIssues: (issues: readonly IssueInfo[], states: Map<string, IssueProcessingState>) => IssueInfo[];
16
+ export declare const filterAvailableIssues: (issues: readonly IssueInfo[], states: Map<string, IssueProcessingState>, maxRetries: number) => IssueInfo[];
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Issue filtering utilities for workflow processor
3
+ * Pure functions for filtering and selecting issues for processing
4
+ */
5
+ // Issue filtering functions (pure)
6
+ export const shouldProcessIssue = (maxRetries) => (issue, states) => {
7
+ const state = states.get(issue.id);
8
+ // If never processed, should process
9
+ if (!state) {
10
+ return true;
11
+ }
12
+ // If issue was updated after last processing attempt, should reprocess
13
+ // This handles cases where user manually changes status back to ready_for_ai
14
+ if (issue.updated_at) {
15
+ const issueUpdatedTime = new Date(issue.updated_at).getTime();
16
+ const lastAttemptTime = state.lastAttempt.getTime();
17
+ if (issueUpdatedTime > lastAttemptTime) {
18
+ // Issue has been updated since last processing, reprocess it
19
+ return true;
20
+ }
21
+ }
22
+ // If failed and haven't exceeded retry limit, should retry
23
+ return state.status === 'failed' && state.retryCount < maxRetries;
24
+ };
25
+ export const findNextIssue = (issues, states, maxRetries) => issues.find((issue) => shouldProcessIssue(maxRetries)(issue, states));
26
+ // Issue status checking functions (pure)
27
+ export const isIssueProcessing = (issueId, states) => {
28
+ const state = states.get(issueId);
29
+ return state?.status === 'processing';
30
+ };
31
+ export const isIssueCompleted = (issueId, states) => {
32
+ const state = states.get(issueId);
33
+ return state?.status === 'completed';
34
+ };
35
+ export const isIssueFailed = (issueId, states) => {
36
+ const state = states.get(issueId);
37
+ return state?.status === 'failed';
38
+ };
39
+ export const hasReachedMaxRetries = (issueId, states, maxRetries) => {
40
+ const state = states.get(issueId);
41
+ return state ? state.retryCount >= maxRetries : false;
42
+ };
43
+ // Issue collection filtering functions (pure)
44
+ export const filterProcessingIssues = (issues, states) => issues.filter((issue) => isIssueProcessing(issue.id, states));
45
+ export const filterCompletedIssues = (issues, states) => issues.filter((issue) => isIssueCompleted(issue.id, states));
46
+ export const filterFailedIssues = (issues, states) => issues.filter((issue) => isIssueFailed(issue.id, states));
47
+ export const filterAvailableIssues = (issues, states, maxRetries) => issues.filter((issue) => shouldProcessIssue(maxRetries)(issue, states));
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * State management utilities for workflow processor
3
- * Pure functions for handling feature processing states
3
+ * Pure functions for handling issue processing states
4
4
  */
5
- export interface FeatureProcessingState {
6
- readonly featureId: string;
5
+ export interface IssueProcessingState {
6
+ readonly issueId: string;
7
7
  readonly retryCount: number;
8
8
  readonly lastAttempt: Date;
9
9
  readonly status: 'processing' | 'completed' | 'failed';
10
- readonly featureUpdatedAt?: string;
10
+ readonly issueUpdatedAt?: string;
11
11
  }
12
12
  export interface WorkflowStats {
13
13
  readonly totalProcessed: number;
@@ -16,9 +16,9 @@ export interface WorkflowStats {
16
16
  readonly processing: number;
17
17
  readonly isRunning: boolean;
18
18
  }
19
- export declare const createInitialState: () => Map<string, FeatureProcessingState>;
20
- export declare const createProcessingState: (featureId: string, currentState?: FeatureProcessingState) => FeatureProcessingState;
21
- export declare const createCompletedState: (featureId: string, currentState?: FeatureProcessingState) => FeatureProcessingState;
22
- export declare const createFailedState: (featureId: string, currentState?: FeatureProcessingState) => FeatureProcessingState;
23
- export declare const updateFeatureState: (states: Map<string, FeatureProcessingState>, featureId: string, updateFn: (currentState?: FeatureProcessingState) => FeatureProcessingState) => Map<string, FeatureProcessingState>;
24
- export declare const calculateStats: (states: Map<string, FeatureProcessingState>, isRunning: boolean) => WorkflowStats;
19
+ export declare const createInitialState: () => Map<string, IssueProcessingState>;
20
+ export declare const createProcessingState: (issueId: string, currentState?: IssueProcessingState) => IssueProcessingState;
21
+ export declare const createCompletedState: (issueId: string, currentState?: IssueProcessingState) => IssueProcessingState;
22
+ export declare const createFailedState: (issueId: string, currentState?: IssueProcessingState) => IssueProcessingState;
23
+ export declare const updateIssueState: (states: Map<string, IssueProcessingState>, issueId: string, updateFn: (currentState?: IssueProcessingState) => IssueProcessingState) => Map<string, IssueProcessingState>;
24
+ export declare const calculateStats: (states: Map<string, IssueProcessingState>, isRunning: boolean) => WorkflowStats;
@@ -1,32 +1,32 @@
1
1
  /**
2
2
  * State management utilities for workflow processor
3
- * Pure functions for handling feature processing states
3
+ * Pure functions for handling issue processing states
4
4
  */
5
5
  // State creation functions (pure)
6
6
  export const createInitialState = () => new Map();
7
- export const createProcessingState = (featureId, currentState) => ({
8
- featureId,
7
+ export const createProcessingState = (issueId, currentState) => ({
8
+ issueId,
9
9
  retryCount: currentState ? currentState.retryCount + 1 : 1,
10
10
  lastAttempt: new Date(),
11
11
  status: 'processing',
12
12
  });
13
- export const createCompletedState = (featureId, currentState) => ({
14
- featureId,
13
+ export const createCompletedState = (issueId, currentState) => ({
14
+ issueId,
15
15
  retryCount: currentState ? currentState.retryCount : 1,
16
16
  lastAttempt: new Date(),
17
17
  status: 'completed',
18
18
  });
19
- export const createFailedState = (featureId, currentState) => ({
20
- featureId,
19
+ export const createFailedState = (issueId, currentState) => ({
20
+ issueId,
21
21
  retryCount: currentState ? currentState.retryCount : 1,
22
22
  lastAttempt: new Date(),
23
23
  status: 'failed',
24
24
  });
25
25
  // State update function (pure)
26
- export const updateFeatureState = (states, featureId, updateFn) => {
26
+ export const updateIssueState = (states, issueId, updateFn) => {
27
27
  const newStates = new Map(states);
28
- const currentState = newStates.get(featureId);
29
- newStates.set(featureId, updateFn(currentState));
28
+ const currentState = newStates.get(issueId);
29
+ newStates.set(issueId, updateFn(currentState));
30
30
  return newStates;
31
31
  };
32
32
  // Statistics calculation (pure)
@@ -2,22 +2,22 @@
2
2
  * Logging utilities for workflow processor
3
3
  * Centralized logging functions for workflow operations
4
4
  */
5
- import type { FeatureInfo } from '../../../types/features.js';
5
+ import type { IssueInfo } from '../../../types/issues.js';
6
6
  import type { PipelineResult } from '../../../types/pipeline.js';
7
- export declare const logProcessingStart: (feature: FeatureInfo, verbose?: boolean) => void;
8
- export declare const logRetryInfo: (featureName: string, retryCount: number, maxRetries: number) => void;
7
+ export declare const logProcessingStart: (issue: IssueInfo, verbose?: boolean) => void;
8
+ export declare const logRetryInfo: (issueName: string, retryCount: number, maxRetries: number) => void;
9
9
  export declare const logPipelineResults: (results: readonly PipelineResult[]) => void;
10
10
  export declare const logProcessorStart: (productId: string, pollInterval: number) => void;
11
11
  export declare const logProcessorReady: () => void;
12
12
  export declare const logProcessorStop: () => void;
13
- export declare const logFeatureSuccess: (featureName: string) => void;
14
- export declare const logFeatureFailed: (featureName: string) => void;
15
- export declare const logFeatureError: (featureName: string, error: unknown) => void;
16
- export declare const logNoFeaturesFound: () => void;
17
- export declare const logAllFeaturesProcessed: () => void;
13
+ export declare const logIssueSuccess: (issueName: string) => void;
14
+ export declare const logIssueFailed: (issueName: string) => void;
15
+ export declare const logIssueError: (issueName: string, error: unknown) => void;
16
+ export declare const logNoIssuesFound: () => void;
17
+ export declare const logAllIssuesProcessed: () => void;
18
18
  export declare const logSkippingProcessing: (processingCount: number) => void;
19
19
  export declare const logPollingError: (error: unknown) => void;
20
- export declare const logProcessNextFeatureError: (error: unknown) => void;
20
+ export declare const logProcessNextIssueError: (error: unknown) => void;
21
21
  export declare const logAutonomousIterationStart: (iteration: number, remainingHours: number) => void;
22
22
  export declare const logAutonomousIterationComplete: (iteration: number, summary: string, prUrl?: string) => void;
23
23
  export declare const logAutonomousPhaseComplete: (totalIterations: number, elapsedHours: number) => void;
@@ -3,19 +3,19 @@
3
3
  * Centralized logging functions for workflow operations
4
4
  */
5
5
  import { logError, logInfo, logRaw, logSuccess } from '../../../utils/logger.js';
6
- export const logProcessingStart = (feature, verbose) => {
7
- logInfo(`🎯 Processing feature: ${feature.name} (${feature.id})`);
6
+ export const logProcessingStart = (issue, verbose) => {
7
+ logInfo(`🎯 Processing issue: ${issue.name} (${issue.id})`);
8
8
  if (verbose) {
9
- logInfo(` Description: ${feature.description}`);
10
- logInfo(` Last updated: ${feature.updated_at}`);
9
+ logInfo(` Description: ${issue.description}`);
10
+ logInfo(` Last updated: ${issue.updated_at}`);
11
11
  }
12
12
  };
13
- export const logRetryInfo = (featureName, retryCount, maxRetries) => {
13
+ export const logRetryInfo = (issueName, retryCount, maxRetries) => {
14
14
  if (retryCount < maxRetries) {
15
- logInfo(`🔄 Will retry feature ${featureName} (attempt ${retryCount + 1}/${maxRetries})`);
15
+ logInfo(`🔄 Will retry issue ${issueName} (attempt ${retryCount + 1}/${maxRetries})`);
16
16
  }
17
17
  else {
18
- logError(`⛔ Max retries reached for feature ${featureName}, marking as permanently failed`);
18
+ logError(`⛔ Max retries reached for issue ${issueName}, marking as permanently failed`);
19
19
  }
20
20
  };
21
21
  export const logPipelineResults = (results) => {
@@ -34,34 +34,34 @@ export const logProcessorStart = (productId, pollInterval) => {
34
34
  logInfo(`🔄 Poll interval: ${pollInterval}ms`);
35
35
  };
36
36
  export const logProcessorReady = () => {
37
- logInfo('✅ Workflow processor started and monitoring for new features');
37
+ logInfo('✅ Workflow processor started and monitoring for new issues');
38
38
  };
39
39
  export const logProcessorStop = () => {
40
40
  logInfo('⏹️ Workflow processor stopped');
41
41
  };
42
- export const logFeatureSuccess = (featureName) => {
43
- logSuccess(`✅ Feature ${featureName} completed successfully!`);
42
+ export const logIssueSuccess = (issueName) => {
43
+ logSuccess(`✅ Issue ${issueName} completed successfully!`);
44
44
  };
45
- export const logFeatureFailed = (featureName) => {
46
- logError(`❌ Feature ${featureName} failed in pipeline`);
45
+ export const logIssueFailed = (issueName) => {
46
+ logError(`❌ Issue ${issueName} failed in pipeline`);
47
47
  };
48
- export const logFeatureError = (featureName, error) => {
49
- logError(`❌ Error processing feature ${featureName}: ${error instanceof Error ? error.message : String(error)}`);
48
+ export const logIssueError = (issueName, error) => {
49
+ logError(`❌ Error processing issue ${issueName}: ${error instanceof Error ? error.message : String(error)}`);
50
50
  };
51
- export const logNoFeaturesFound = () => {
52
- logInfo('🔍 No ready_for_ai features found, continuing to monitor...');
51
+ export const logNoIssuesFound = () => {
52
+ logInfo('🔍 No ready_for_ai issues found, continuing to monitor...');
53
53
  };
54
- export const logAllFeaturesProcessed = () => {
55
- logInfo('🔄 All current features are processed or being processed, continuing to monitor...');
54
+ export const logAllIssuesProcessed = () => {
55
+ logInfo('🔄 All current issues are processed or being processed, continuing to monitor...');
56
56
  };
57
57
  export const logSkippingProcessing = (processingCount) => {
58
- logInfo(`⏳ Skipping feature fetching as ${processingCount} feature(s) are currently being processed`);
58
+ logInfo(`⏳ Skipping issue fetching as ${processingCount} issue(s) are currently being processed`);
59
59
  };
60
60
  export const logPollingError = (error) => {
61
61
  logError(`Error in polling cycle: ${error instanceof Error ? error.message : String(error)}`);
62
62
  };
63
- export const logProcessNextFeatureError = (error) => {
64
- logError(`Error in processNextFeature: ${error instanceof Error ? error.message : String(error)}`);
63
+ export const logProcessNextIssueError = (error) => {
64
+ logError(`Error in processNextIssue: ${error instanceof Error ? error.message : String(error)}`);
65
65
  };
66
66
  export const logAutonomousIterationStart = (iteration, remainingHours) => {
67
67
  logInfo(`🔄 Autonomous iteration ${iteration} (${remainingHours.toFixed(1)}h remaining)`);
@@ -4,5 +4,5 @@
4
4
  import { type EdsgerConfig } from '../../../types/index.js';
5
5
  import { type PhaseConfig, type PipelinePhaseOptions, type PipelineResult } from '../../../types/pipeline.js';
6
6
  export declare const createPhaseRunner: (phaseConfig: PhaseConfig) => (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>;
7
- declare const runFeatureAnalysisPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runUserStoriesAnalysisPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runTestCasesAnalysisPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runTechnicalDesignPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runBranchPlanningPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeImplementationPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runPRSplittingPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runPRExecutionPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runFunctionalTestingPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeTestingPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeRefinePhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeRefineVerificationPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeReviewPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runAutonomousPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>;
8
- export { runAutonomousPhase, runBranchPlanningPhase, runCodeImplementationPhase, runCodeRefinePhase, runCodeRefineVerificationPhase, runCodeReviewPhase, runCodeTestingPhase, runFeatureAnalysisPhase, runFunctionalTestingPhase, runPRExecutionPhase, runPRSplittingPhase, runTechnicalDesignPhase, runTestCasesAnalysisPhase, runUserStoriesAnalysisPhase, };
7
+ declare const runIssueAnalysisPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runUserStoriesAnalysisPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runTestCasesAnalysisPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runTechnicalDesignPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runBranchPlanningPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeImplementationPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runPRSplittingPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runPRExecutionPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runFunctionalTestingPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeTestingPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeRefinePhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeRefineVerificationPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runCodeReviewPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>, runAutonomousPhase: (options: PipelinePhaseOptions, config: EdsgerConfig) => Promise<PipelineResult>;
8
+ export { runAutonomousPhase, runBranchPlanningPhase, runCodeImplementationPhase, runCodeRefinePhase, runCodeRefineVerificationPhase, runCodeReviewPhase, runCodeTestingPhase, runFunctionalTestingPhase, runIssueAnalysisPhase, runPRExecutionPhase, runPRSplittingPhase, runTechnicalDesignPhase, runTestCasesAnalysisPhase, runUserStoriesAnalysisPhase, };
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Phase execution logic for pipeline runner
3
3
  */
4
- import { checkApprovalBeforePhaseExecution } from '../../../api/features/approval-checker.js';
5
- import { updateFeatureStatusForPhase } from '../../../api/features/index.js';
6
- import { logFeaturePhaseEvent, } from '../../../services/audit-logs.js';
4
+ import { checkApprovalBeforePhaseExecution } from '../../../api/issues/approval-checker.js';
5
+ import { updateIssueStatusForPhase } from '../../../api/issues/index.js';
6
+ import { logIssuePhaseEvent, } from '../../../services/audit-logs.js';
7
7
  import { getChecklistsForPhase, processChecklistItemResultsFromResponse, processChecklistResultsFromResponse, validateChecklistsForPhase, validateRequiredChecklistResults, } from '../../../services/checklist.js';
8
8
  import { runHooksForPhase } from '../../../services/phase-hooks/index.js';
9
9
  import { logDebug, logInfo, logWarning } from '../../../utils/logger.js';
@@ -72,14 +72,14 @@ async function processPhaseChecklistResults(result, options, name, verbose) {
72
72
  /**
73
73
  * Validate checklists and log completion status
74
74
  */
75
- async function validateAndLogChecklists(options, name, checklistContext, featureId, verbose) {
75
+ async function validateAndLogChecklists(options, name, checklistContext, issueId, verbose) {
76
76
  try {
77
77
  const strictValidation = await validateRequiredChecklistResults(options, name, verbose);
78
78
  if (!strictValidation.success) {
79
79
  return {
80
80
  validation: null,
81
81
  error: {
82
- featureId,
82
+ issueId,
83
83
  phase: name,
84
84
  status: 'error',
85
85
  message: `Checklist validation failed: ${strictValidation.error}`,
@@ -115,7 +115,7 @@ async function validateAndLogChecklists(options, name, checklistContext, feature
115
115
  return {
116
116
  validation: null,
117
117
  error: {
118
- featureId,
118
+ issueId,
119
119
  phase: name,
120
120
  status: 'error',
121
121
  message: `Checklist validation error: ${validationError instanceof Error ? validationError.message : String(validationError)}`,
@@ -133,17 +133,17 @@ async function validateAndLogChecklists(options, name, checklistContext, feature
133
133
  export const createPhaseRunner = (phaseConfig) =>
134
134
  // eslint-disable-next-line complexity
135
135
  async (options, config) => {
136
- const { featureId, verbose } = options;
136
+ const { issueId, verbose } = options;
137
137
  const { name, execute } = phaseConfig;
138
138
  // Track phase duration for logging
139
139
  const phaseStartTime = Date.now();
140
140
  try {
141
141
  // CHECK APPROVAL BEFORE EXECUTING PHASE
142
- // This checks if the current feature status has been approved
142
+ // This checks if the current issue status has been approved
143
143
  if (verbose) {
144
144
  logDebug(`Checking approval before executing ${name} phase...`, verbose);
145
145
  }
146
- const approvalCheck = await checkApprovalBeforePhaseExecution(featureId, verbose);
146
+ const approvalCheck = await checkApprovalBeforePhaseExecution(issueId, verbose);
147
147
  if (!approvalCheck.canProceed) {
148
148
  // Current status requires approval but hasn't been approved yet
149
149
  // Block phase execution and return blocked result
@@ -151,11 +151,11 @@ async (options, config) => {
151
151
  logWarning(`Phase ${name} blocked: ${approvalCheck.message || 'Waiting for approval'}`);
152
152
  }
153
153
  return {
154
- featureId,
154
+ issueId,
155
155
  phase: name,
156
156
  status: 'blocked',
157
157
  message: approvalCheck.message ||
158
- 'Phase execution blocked - waiting for approval of current feature status',
158
+ 'Phase execution blocked - waiting for approval of current issue status',
159
159
  data: {
160
160
  approval_required: true,
161
161
  approval_id: approvalCheck.approvalId,
@@ -166,14 +166,14 @@ async (options, config) => {
166
166
  if (verbose && approvalCheck.requiresApproval) {
167
167
  logDebug(`Approval verified for current status. Proceeding with ${name} phase.`, verbose);
168
168
  }
169
- // Update feature status to reflect current phase
170
- await updateFeatureStatusForPhase(featureId, name, verbose);
169
+ // Update issue status to reflect current phase
170
+ await updateIssueStatusForPhase(issueId, name, verbose);
171
171
  if (verbose) {
172
- logDebug(`Starting ${name} for: ${featureId}`, verbose);
172
+ logDebug(`Starting ${name} for: ${issueId}`, verbose);
173
173
  }
174
174
  // Log phase start
175
- await logFeaturePhaseEvent({
176
- featureId,
175
+ await logIssuePhaseEvent({
176
+ issueId,
177
177
  eventType: 'phase_started',
178
178
  phase: name.replace(/-/g, '_'),
179
179
  result: 'info',
@@ -199,14 +199,14 @@ async (options, config) => {
199
199
  }
200
200
  // Run 'before' hooks
201
201
  const beforeHooks = await runHooksForPhase({
202
- featureId,
202
+ issueId,
203
203
  phase: name,
204
204
  hookPoint: 'before',
205
205
  verbose,
206
206
  });
207
207
  if (beforeHooks.blocked) {
208
208
  return {
209
- featureId,
209
+ issueId,
210
210
  phase: name,
211
211
  status: 'blocked',
212
212
  message: `Phase ${name} blocked by pre-execution hook`,
@@ -219,7 +219,7 @@ async (options, config) => {
219
219
  const result = (await execute(options, config, checklistContext));
220
220
  // Run 'after' hooks
221
221
  const afterHooks = await runHooksForPhase({
222
- featureId,
222
+ issueId,
223
223
  phase: name,
224
224
  hookPoint: 'after',
225
225
  phaseResult: result,
@@ -227,7 +227,7 @@ async (options, config) => {
227
227
  });
228
228
  if (afterHooks.blocked) {
229
229
  return {
230
- featureId,
230
+ issueId,
231
231
  phase: name,
232
232
  status: 'blocked',
233
233
  message: `Phase ${name} blocked by post-execution hook`,
@@ -241,7 +241,7 @@ async (options, config) => {
241
241
  // Strictly validate checklist results after phase execution
242
242
  let checklistValidation = null;
243
243
  if (result.status === 'success') {
244
- const validationOutcome = await validateAndLogChecklists(options, name, checklistContext, featureId, verbose);
244
+ const validationOutcome = await validateAndLogChecklists(options, name, checklistContext, issueId, verbose);
245
245
  if (validationOutcome.error) {
246
246
  return validationOutcome.error;
247
247
  }
@@ -251,8 +251,8 @@ async (options, config) => {
251
251
  const phaseEndTime = Date.now();
252
252
  const phaseDuration = phaseEndTime - phaseStartTime;
253
253
  if (result.status === 'success') {
254
- await logFeaturePhaseEvent({
255
- featureId,
254
+ await logIssuePhaseEvent({
255
+ issueId,
256
256
  eventType: 'phase_completed',
257
257
  phase: name.replace(/-/g, '_'),
258
258
  result: 'success',
@@ -271,8 +271,8 @@ async (options, config) => {
271
271
  };
272
272
  // For verification phases, include suggestions and details
273
273
  enrichFailureMetadata(failureMetadata, name, result.data);
274
- await logFeaturePhaseEvent({
275
- featureId,
274
+ await logIssuePhaseEvent({
275
+ issueId,
276
276
  eventType: 'phase_failed',
277
277
  phase: name.replace(/-/g, '_'),
278
278
  result: 'error',
@@ -281,7 +281,7 @@ async (options, config) => {
281
281
  }, verbose);
282
282
  }
283
283
  return {
284
- featureId,
284
+ issueId,
285
285
  phase: name,
286
286
  status: result.status === 'success' ? 'success' : 'error',
287
287
  message: result.status === 'success'
@@ -298,7 +298,7 @@ async (options, config) => {
298
298
  // Run 'on_error' hooks (best effort — never mask the original error)
299
299
  try {
300
300
  await runHooksForPhase({
301
- featureId,
301
+ issueId,
302
302
  phase: name,
303
303
  hookPoint: 'on_error',
304
304
  error: error instanceof Error ? error : new Error(String(error)),
@@ -311,8 +311,8 @@ async (options, config) => {
311
311
  // Log phase failure for exceptions
312
312
  const phaseEndTime = Date.now();
313
313
  const phaseDuration = phaseEndTime - phaseStartTime;
314
- await logFeaturePhaseEvent({
315
- featureId,
314
+ await logIssuePhaseEvent({
315
+ issueId,
316
316
  eventType: 'phase_failed',
317
317
  phase: name.replace(/-/g, '_'),
318
318
  result: 'error',
@@ -323,7 +323,7 @@ async (options, config) => {
323
323
  errorMessage: error instanceof Error ? error.message : String(error),
324
324
  }, verbose);
325
325
  return {
326
- featureId,
326
+ issueId,
327
327
  phase: name,
328
328
  status: 'error',
329
329
  message: `${name.replace('-', ' ')} failed: ${error instanceof Error ? error.message : String(error)}`,
@@ -331,6 +331,6 @@ async (options, config) => {
331
331
  }
332
332
  };
333
333
  // Create phase runners using the configuration
334
- const [runFeatureAnalysisPhase, runUserStoriesAnalysisPhase, runTestCasesAnalysisPhase, runTechnicalDesignPhase, runBranchPlanningPhase, runCodeImplementationPhase, runPRSplittingPhase, runPRExecutionPhase, runFunctionalTestingPhase, runCodeTestingPhase, runCodeRefinePhase, runCodeRefineVerificationPhase, runCodeReviewPhase, runAutonomousPhase,] = phaseConfigs.map(createPhaseRunner);
334
+ const [runIssueAnalysisPhase, runUserStoriesAnalysisPhase, runTestCasesAnalysisPhase, runTechnicalDesignPhase, runBranchPlanningPhase, runCodeImplementationPhase, runPRSplittingPhase, runPRExecutionPhase, runFunctionalTestingPhase, runCodeTestingPhase, runCodeRefinePhase, runCodeRefineVerificationPhase, runCodeReviewPhase, runAutonomousPhase,] = phaseConfigs.map(createPhaseRunner);
335
335
  // Export individual phase runners for granular control
336
- export { runAutonomousPhase, runBranchPlanningPhase, runCodeImplementationPhase, runCodeRefinePhase, runCodeRefineVerificationPhase, runCodeReviewPhase, runCodeTestingPhase, runFeatureAnalysisPhase, runFunctionalTestingPhase, runPRExecutionPhase, runPRSplittingPhase, runTechnicalDesignPhase, runTestCasesAnalysisPhase, runUserStoriesAnalysisPhase, };
336
+ export { runAutonomousPhase, runBranchPlanningPhase, runCodeImplementationPhase, runCodeRefinePhase, runCodeRefineVerificationPhase, runCodeReviewPhase, runCodeTestingPhase, runFunctionalTestingPhase, runIssueAnalysisPhase, runPRExecutionPhase, runPRSplittingPhase, runTechnicalDesignPhase, runTestCasesAnalysisPhase, runUserStoriesAnalysisPhase, };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Issue Coordinator - High-level workflow orchestration
3
+ *
4
+ * Responsibilities:
5
+ * - Fetch issue configuration from API
6
+ * - Execute phases based on workflow field (pending phases in order)
7
+ * - Coordinate issue-level workflow initialization
8
+ * - Handle phase execution results and stop on failure/blocked
9
+ *
10
+ * This is the entry point for issue workflow execution
11
+ */
12
+ import { type EdsgerConfig } from '../../types/index.js';
13
+ import { type PipelinePhaseOptions, type PipelineResult } from '../../types/pipeline.js';
14
+ /**
15
+ * Run workflow for an issue based on its workflow field
16
+ * Executes all pending phases in order, stopping on failure or blocked
17
+ */
18
+ export declare function runIssueWorkflow(options: PipelinePhaseOptions, config: EdsgerConfig): Promise<readonly PipelineResult[]>;