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
@@ -0,0 +1,21 @@
1
+ import { logInfo } from '../../utils/logger.js';
2
+ import { callMcpEndpoint } from '../mcp-client.js';
3
+ /**
4
+ * Get issue details by ID
5
+ */
6
+ export async function getIssue(issueId, verbose) {
7
+ if (verbose) {
8
+ logInfo(`Fetching issue details for: ${issueId}`);
9
+ }
10
+ const result = (await callMcpEndpoint('issues/get', {
11
+ issue_id: issueId,
12
+ }));
13
+ if (!result.issues || result.issues.length === 0) {
14
+ throw new Error(`Issue not found: ${issueId}`);
15
+ }
16
+ const issue = result.issues[0];
17
+ if (!issue || typeof issue !== 'object') {
18
+ throw new Error(`Invalid issue data returned for: ${issueId}`);
19
+ }
20
+ return issue;
21
+ }
@@ -0,0 +1,8 @@
1
+ export * from './batch-operations.js';
2
+ export * from './get-issue.js';
3
+ export * from './issue-utils.js';
4
+ export * from './status-updater.js';
5
+ export * from './test-cases.js';
6
+ export * from './update-issue.js';
7
+ export * from './user-stories.js';
8
+ export * from '../../types/issues.js';
@@ -0,0 +1,10 @@
1
+ // Re-export all issue-related functions
2
+ export * from './batch-operations.js';
3
+ export * from './get-issue.js';
4
+ export * from './issue-utils.js';
5
+ export * from './status-updater.js';
6
+ export * from './test-cases.js';
7
+ export * from './update-issue.js';
8
+ export * from './user-stories.js';
9
+ // Re-export types
10
+ export * from '../../types/issues.js';
@@ -0,0 +1,23 @@
1
+ import { type IssueInfo } from '../../types/issues.js';
2
+ /**
3
+ * Claim the next available ready_for_ai issue for processing.
4
+ * Uses database-level locking (FOR UPDATE SKIP LOCKED) to prevent
5
+ * race conditions between multiple workers.
6
+ *
7
+ * @param productId - The product ID to claim an issue from
8
+ * @param verbose - Whether to log verbose output
9
+ * @returns The claimed issue or null if no issues available
10
+ */
11
+ export declare function claimNextIssue(productId: string, verbose?: boolean): Promise<IssueInfo | null>;
12
+ /**
13
+ * Filter issues by status
14
+ */
15
+ export declare function filterIssuesByStatus(issues: IssueInfo[], status: string): IssueInfo[];
16
+ /**
17
+ * Sort issues by updated_at (oldest first for processing)
18
+ */
19
+ export declare function sortIssuesByUpdatedAt(issues: IssueInfo[]): IssueInfo[];
20
+ /**
21
+ * Get issues with ready_for_ai status for a product
22
+ */
23
+ export declare function getReadyForAIIssues(productId: string, verbose?: boolean): Promise<IssueInfo[]>;
@@ -0,0 +1,80 @@
1
+ import { logError, logInfo } from '../../utils/logger.js';
2
+ import { callMcpEndpoint } from '../mcp-client.js';
3
+ /**
4
+ * Claim the next available ready_for_ai issue for processing.
5
+ * Uses database-level locking (FOR UPDATE SKIP LOCKED) to prevent
6
+ * race conditions between multiple workers.
7
+ *
8
+ * @param productId - The product ID to claim an issue from
9
+ * @param verbose - Whether to log verbose output
10
+ * @returns The claimed issue or null if no issues available
11
+ */
12
+ export async function claimNextIssue(productId, verbose) {
13
+ if (verbose) {
14
+ logInfo(`Attempting to claim next ready_for_ai issue for product: ${productId}`);
15
+ }
16
+ try {
17
+ const result = (await callMcpEndpoint('issues/claim', {
18
+ product_id: productId,
19
+ }));
20
+ if (result.issue) {
21
+ if (verbose) {
22
+ logInfo(`✅ Claimed issue: ${result.issue.name} (${result.issue.id})`);
23
+ }
24
+ return result.issue;
25
+ }
26
+ if (verbose) {
27
+ logInfo('No issues available for processing');
28
+ }
29
+ return null;
30
+ }
31
+ catch (error) {
32
+ const errorMessage = error instanceof Error ? error.message : String(error);
33
+ logError(`Failed to claim issue: ${errorMessage}`);
34
+ throw error;
35
+ }
36
+ }
37
+ /**
38
+ * Filter issues by status
39
+ */
40
+ export function filterIssuesByStatus(issues, status) {
41
+ return issues.filter((issue) => issue.status === status);
42
+ }
43
+ /**
44
+ * Sort issues by updated_at (oldest first for processing)
45
+ */
46
+ export function sortIssuesByUpdatedAt(issues) {
47
+ return [...issues].sort((a, b) => {
48
+ const dateA = new Date(a.updated_at || 0).getTime();
49
+ const dateB = new Date(b.updated_at || 0).getTime();
50
+ return dateA - dateB;
51
+ });
52
+ }
53
+ /**
54
+ * Get issues with ready_for_ai status for a product
55
+ */
56
+ export async function getReadyForAIIssues(productId, verbose) {
57
+ if (verbose) {
58
+ logInfo(`Fetching ready_for_ai issues for product: ${productId}`);
59
+ }
60
+ try {
61
+ const result = (await callMcpEndpoint('issues/list', {
62
+ product_id: productId,
63
+ status: 'ready_for_ai',
64
+ }));
65
+ const issues = result.issues || [];
66
+ const sortedIssues = sortIssuesByUpdatedAt(issues);
67
+ if (verbose) {
68
+ logInfo(`✅ Found ${sortedIssues.length} ready_for_ai issues (oldest first)`);
69
+ sortedIssues.forEach((issue, index) => {
70
+ logInfo(` ${index + 1}. ${issue.name} (updated: ${issue.updated_at})`);
71
+ });
72
+ }
73
+ return sortedIssues;
74
+ }
75
+ catch (error) {
76
+ const errorMessage = error instanceof Error ? error.message : String(error);
77
+ logError(`Failed to fetch ready_for_ai issues: ${errorMessage}`);
78
+ throw error;
79
+ }
80
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Issue status updater for workflow pipeline
3
+ * Updates issue status at each phase of the development workflow
4
+ */
5
+ import type { IssueStatus } from '../../types/index.js';
6
+ interface StatusUpdateOptions {
7
+ readonly issueId: string;
8
+ readonly status: IssueStatus;
9
+ readonly verbose?: boolean;
10
+ }
11
+ /**
12
+ * Check if moving from currentStatus to newStatus is forward progression
13
+ *
14
+ * Special cases for archived status:
15
+ * - Any status → archived: Always allowed (archiving from any state)
16
+ * - Archived → backlog: Always allowed (unarchiving restores to backlog)
17
+ */
18
+ export declare function isForwardProgression(currentStatus: IssueStatus, newStatus: IssueStatus): boolean;
19
+ /**
20
+ * Update issue status via MCP endpoint
21
+ */
22
+ export declare function updateIssueStatus({ issueId, status, verbose, }: StatusUpdateOptions): Promise<boolean>;
23
+ /**
24
+ * Map pipeline phase to issue status
25
+ */
26
+ export declare const getStatusForPhase: (phase: string) => IssueStatus | null;
27
+ /**
28
+ * Update issue status based on pipeline phase
29
+ *
30
+ * @param issueId - The issue ID to update
31
+ * @param phase - The pipeline phase name
32
+ * @param verbose - Whether to log verbose output
33
+ * @returns Promise<boolean> - true if update succeeded, false if skipped or failed
34
+ *
35
+ * BREAKING CHANGE: This function was changed from synchronous to asynchronous in PR #87
36
+ * to support regression prevention checks. All callers must now use await/then to handle
37
+ * the Promise return type. The function now validates against status regression and will
38
+ * skip updates that would move an issue backward in the development workflow.
39
+ */
40
+ export declare const updateIssueStatusForPhase: (issueId: string, phase: string, verbose?: boolean) => Promise<boolean>;
41
+ export {};
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Feature status updater for workflow pipeline
3
- * Updates feature status at each phase of the development workflow
2
+ * Issue status updater for workflow pipeline
3
+ * Updates issue status at each phase of the development workflow
4
4
  */
5
- import { PHASE_STATUS_MAP, STATUS_PROGRESSION_ORDER, } from '../../config/feature-status.js';
5
+ import { PHASE_STATUS_MAP, STATUS_PROGRESSION_ORDER, } from '../../config/issue-status.js';
6
6
  import { logError, logInfo } from '../../utils/logger.js';
7
7
  import { callMcpEndpoint } from '../mcp-client.js';
8
- import { getFeature } from './get-feature.js';
8
+ import { getIssue } from './get-issue.js';
9
9
  /**
10
10
  * Check if moving from currentStatus to newStatus is forward progression
11
11
  *
@@ -28,23 +28,23 @@ export function isForwardProgression(currentStatus, newStatus) {
28
28
  return newIndex >= currentIndex;
29
29
  }
30
30
  /**
31
- * Update feature status via MCP endpoint
31
+ * Update issue status via MCP endpoint
32
32
  */
33
- export async function updateFeatureStatus({ featureId, status, verbose = false, }) {
33
+ export async function updateIssueStatus({ issueId, status, verbose = false, }) {
34
34
  try {
35
35
  if (verbose) {
36
- logInfo(`Updating feature ${featureId} status to: ${status}`);
36
+ logInfo(`Updating issue ${issueId} status to: ${status}`);
37
37
  }
38
- // Get current feature status to check for regression
39
- let feature;
38
+ // Get current issue status to check for regression
39
+ let issue;
40
40
  let currentStatus;
41
41
  try {
42
- feature = await getFeature(featureId, verbose);
43
- currentStatus = feature.status;
42
+ issue = await getIssue(issueId, verbose);
43
+ currentStatus = issue.status;
44
44
  }
45
45
  catch (error) {
46
46
  const errorMessage = error instanceof Error ? error.message : String(error);
47
- logError(`Failed to get current feature status for ${featureId}: ${errorMessage}`);
47
+ logError(`Failed to get current issue status for ${issueId}: ${errorMessage}`);
48
48
  // If we can't get the current status, we can't safely check for regression
49
49
  // so we'll skip the update to prevent potential regression
50
50
  if (verbose) {
@@ -68,34 +68,34 @@ export async function updateFeatureStatus({ featureId, status, verbose = false,
68
68
  return true;
69
69
  }
70
70
  // Update status
71
- await callMcpEndpoint('features/update', {
72
- feature_id: featureId,
71
+ await callMcpEndpoint('issues/update', {
72
+ issue_id: issueId,
73
73
  status,
74
74
  });
75
75
  if (verbose) {
76
- logInfo(`✅ Feature status updated successfully from ${currentStatus} to: ${status}`);
76
+ logInfo(`✅ Issue status updated successfully from ${currentStatus} to: ${status}`);
77
77
  }
78
78
  return true;
79
79
  }
80
80
  catch (error) {
81
81
  const errorMessage = error instanceof Error ? error.message : String(error);
82
82
  if (verbose) {
83
- logError(`Failed to update feature status: ${errorMessage}`);
83
+ logError(`Failed to update issue status: ${errorMessage}`);
84
84
  }
85
85
  return false;
86
86
  }
87
87
  }
88
88
  /**
89
- * Map pipeline phase to feature status
89
+ * Map pipeline phase to issue status
90
90
  */
91
91
  export const getStatusForPhase = (phase) => {
92
92
  // Use the externalized phase-to-status mapping
93
93
  return PHASE_STATUS_MAP[phase] ?? null;
94
94
  };
95
95
  /**
96
- * Update feature status based on pipeline phase
96
+ * Update issue status based on pipeline phase
97
97
  *
98
- * @param featureId - The feature ID to update
98
+ * @param issueId - The issue ID to update
99
99
  * @param phase - The pipeline phase name
100
100
  * @param verbose - Whether to log verbose output
101
101
  * @returns Promise<boolean> - true if update succeeded, false if skipped or failed
@@ -103,9 +103,9 @@ export const getStatusForPhase = (phase) => {
103
103
  * BREAKING CHANGE: This function was changed from synchronous to asynchronous in PR #87
104
104
  * to support regression prevention checks. All callers must now use await/then to handle
105
105
  * the Promise return type. The function now validates against status regression and will
106
- * skip updates that would move a feature backward in the development workflow.
106
+ * skip updates that would move an issue backward in the development workflow.
107
107
  */
108
- export const updateFeatureStatusForPhase = async (featureId, phase, verbose) => {
108
+ export const updateIssueStatusForPhase = async (issueId, phase, verbose) => {
109
109
  const status = getStatusForPhase(phase);
110
110
  if (!status) {
111
111
  const message = `⚠️ Unknown phase '${phase}' - skipping status update to prevent regression`;
@@ -114,8 +114,8 @@ export const updateFeatureStatusForPhase = async (featureId, phase, verbose) =>
114
114
  }
115
115
  return false;
116
116
  }
117
- return updateFeatureStatus({
118
- featureId,
117
+ return updateIssueStatus({
118
+ issueId,
119
119
  status,
120
120
  verbose,
121
121
  });
@@ -1,20 +1,20 @@
1
- import { type TestCase, type TestCaseStatus } from '../../types/features.js';
1
+ import { type TestCase, type TestCaseStatus } from '../../types/issues.js';
2
2
  /**
3
- * Get test cases for a feature
3
+ * Get test cases for an issue
4
4
  */
5
- export declare function getTestCases(featureId: string, verbose?: boolean): Promise<TestCase[]>;
5
+ export declare function getTestCases(issueId: string, verbose?: boolean): Promise<TestCase[]>;
6
6
  /**
7
- * Create a new test case for a feature
7
+ * Create a new test case for an issue
8
8
  */
9
- export declare function createTestCase(featureId: string, testCase: {
9
+ export declare function createTestCase(issueId: string, testCase: {
10
10
  name: string;
11
11
  description: string;
12
12
  is_critical?: boolean;
13
13
  }, verbose?: boolean): Promise<boolean>;
14
14
  /**
15
- * Create multiple test cases for a feature
15
+ * Create multiple test cases for an issue
16
16
  */
17
- export declare function createTestCases(mcpServerUrl: string, mcpToken: string, featureId: string, testCases: {
17
+ export declare function createTestCases(mcpServerUrl: string, mcpToken: string, issueId: string, testCases: {
18
18
  name: string;
19
19
  description: string;
20
20
  is_critical?: boolean;
@@ -1,27 +1,27 @@
1
1
  import { logError, logInfo } from '../../utils/logger.js';
2
2
  import { callMcpEndpoint } from '../mcp-client.js';
3
3
  /**
4
- * Get test cases for a feature
4
+ * Get test cases for an issue
5
5
  */
6
- export async function getTestCases(featureId, verbose) {
6
+ export async function getTestCases(issueId, verbose) {
7
7
  if (verbose) {
8
- logInfo(`Fetching test cases for feature: ${featureId}`);
8
+ logInfo(`Fetching test cases for issue: ${issueId}`);
9
9
  }
10
10
  const result = (await callMcpEndpoint('test_cases/list', {
11
- feature_id: featureId,
11
+ issue_id: issueId,
12
12
  }));
13
13
  return (result.test_cases || []);
14
14
  }
15
15
  /**
16
- * Create a new test case for a feature
16
+ * Create a new test case for an issue
17
17
  */
18
- export async function createTestCase(featureId, testCase, verbose) {
18
+ export async function createTestCase(issueId, testCase, verbose) {
19
19
  try {
20
20
  if (verbose) {
21
- logInfo(`Creating test case for feature: ${featureId}`);
21
+ logInfo(`Creating test case for issue: ${issueId}`);
22
22
  }
23
23
  await callMcpEndpoint('test_cases/create', {
24
- feature_id: featureId,
24
+ issue_id: issueId,
25
25
  test_cases: [
26
26
  {
27
27
  name: testCase.name,
@@ -42,15 +42,15 @@ export async function createTestCase(featureId, testCase, verbose) {
42
42
  }
43
43
  }
44
44
  /**
45
- * Create multiple test cases for a feature
45
+ * Create multiple test cases for an issue
46
46
  */
47
- export async function createTestCases(mcpServerUrl, mcpToken, featureId, testCases, verbose) {
47
+ export async function createTestCases(mcpServerUrl, mcpToken, issueId, testCases, verbose) {
48
48
  try {
49
49
  if (verbose) {
50
- logInfo(`Creating ${testCases.length} test cases for feature: ${featureId}`);
50
+ logInfo(`Creating ${testCases.length} test cases for issue: ${issueId}`);
51
51
  }
52
52
  for (const testCase of testCases) {
53
- await createTestCase(featureId, testCase, false);
53
+ await createTestCase(issueId, testCase, false);
54
54
  }
55
55
  if (verbose) {
56
56
  logInfo('✅ All test cases created successfully');
@@ -0,0 +1,20 @@
1
+ import { type IssueWorkflow } from '../../types/pipeline.js';
2
+ /**
3
+ * Update issue with new data
4
+ */
5
+ export declare function updateIssue(issueId: string, updates: {
6
+ technical_design?: string;
7
+ status?: string;
8
+ execution_mode?: string;
9
+ workflow?: IssueWorkflow;
10
+ }, verbose?: boolean): Promise<boolean>;
11
+ /**
12
+ * Update technical design for an issue
13
+ */
14
+ export declare function updateTechnicalDesign(issueId: string, technicalDesign: string, verbose?: boolean): Promise<boolean>;
15
+ /**
16
+ * Mark a workflow phase as completed
17
+ * Fetches current workflow, updates the phase status, and saves back
18
+ * Accepts phase names in either format (hyphens or underscores)
19
+ */
20
+ export declare function markWorkflowPhaseCompleted(issueId: string, phaseName: string, verbose?: boolean): Promise<boolean>;
@@ -1,37 +1,37 @@
1
1
  import { logError, logInfo } from '../../utils/logger.js';
2
2
  import { callMcpEndpoint } from '../mcp-client.js';
3
3
  /**
4
- * Update feature with new data
4
+ * Update issue with new data
5
5
  */
6
- export async function updateFeature(featureId, updates, verbose) {
6
+ export async function updateIssue(issueId, updates, verbose) {
7
7
  try {
8
8
  if (verbose) {
9
- logInfo(`Updating feature: ${featureId}`);
9
+ logInfo(`Updating issue: ${issueId}`);
10
10
  }
11
- await callMcpEndpoint('features/update', {
12
- feature_id: featureId,
11
+ await callMcpEndpoint('issues/update', {
12
+ issue_id: issueId,
13
13
  ...updates,
14
14
  });
15
15
  if (verbose) {
16
- logInfo('✅ Feature updated successfully');
16
+ logInfo('✅ Issue updated successfully');
17
17
  }
18
18
  return true;
19
19
  }
20
20
  catch (error) {
21
21
  const errorMessage = error instanceof Error ? error.message : String(error);
22
- logError(`Failed to update feature: ${errorMessage}`);
22
+ logError(`Failed to update issue: ${errorMessage}`);
23
23
  return false;
24
24
  }
25
25
  }
26
26
  /**
27
- * Update technical design for a feature
27
+ * Update technical design for an issue
28
28
  */
29
- export async function updateTechnicalDesign(featureId, technicalDesign, verbose) {
30
- return updateFeature(featureId, { technical_design: technicalDesign }, verbose);
29
+ export async function updateTechnicalDesign(issueId, technicalDesign, verbose) {
30
+ return updateIssue(issueId, { technical_design: technicalDesign }, verbose);
31
31
  }
32
32
  /**
33
33
  * Normalize phase name from pipeline format (hyphens) to workflow format (underscores)
34
- * e.g., 'feature-analysis' -> 'feature_analysis'
34
+ * e.g., 'issue-analysis' -> 'issue_analysis'
35
35
  */
36
36
  function normalizePhaseNameForWorkflow(phaseName) {
37
37
  return phaseName.replace(/-/g, '_');
@@ -41,26 +41,26 @@ function normalizePhaseNameForWorkflow(phaseName) {
41
41
  * Fetches current workflow, updates the phase status, and saves back
42
42
  * Accepts phase names in either format (hyphens or underscores)
43
43
  */
44
- export async function markWorkflowPhaseCompleted(featureId, phaseName, verbose) {
44
+ export async function markWorkflowPhaseCompleted(issueId, phaseName, verbose) {
45
45
  try {
46
46
  // Normalize phase name to workflow format (underscores)
47
47
  const normalizedPhaseName = normalizePhaseNameForWorkflow(phaseName);
48
48
  if (verbose) {
49
- logInfo(`Marking workflow phase '${normalizedPhaseName}' as completed for feature: ${featureId}`);
49
+ logInfo(`Marking workflow phase '${normalizedPhaseName}' as completed for issue: ${issueId}`);
50
50
  }
51
- // Fetch current feature to get workflow
52
- const response = (await callMcpEndpoint('features/get', {
53
- feature_id: featureId,
51
+ // Fetch current issue to get workflow
52
+ const response = (await callMcpEndpoint('issues/get', {
53
+ issue_id: issueId,
54
54
  }));
55
- const feature = response?.features?.[0];
56
- if (!feature) {
57
- logError(`Feature not found: ${featureId}`);
55
+ const issue = response?.issues?.[0];
56
+ if (!issue) {
57
+ logError(`Issue not found: ${issueId}`);
58
58
  return false;
59
59
  }
60
- const workflow = feature.workflow || [];
60
+ const workflow = issue.workflow || [];
61
61
  if (workflow.length === 0) {
62
62
  if (verbose) {
63
- logInfo(`No workflow defined for feature, skipping phase completion`);
63
+ logInfo(`No workflow defined for issue, skipping phase completion`);
64
64
  }
65
65
  return true;
66
66
  }
@@ -73,7 +73,7 @@ export async function markWorkflowPhaseCompleted(featureId, phaseName, verbose)
73
73
  }
74
74
  : p);
75
75
  // Save updated workflow
76
- return await updateFeature(featureId, { workflow: updatedWorkflow }, verbose);
76
+ return await updateIssue(issueId, { workflow: updatedWorkflow }, verbose);
77
77
  }
78
78
  catch (error) {
79
79
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -1,12 +1,12 @@
1
- import { type UserStory, type UserStoryStatus } from '../../types/features.js';
1
+ import { type UserStory, type UserStoryStatus } from '../../types/issues.js';
2
2
  /**
3
- * Get user stories for a feature
3
+ * Get user stories for an issue
4
4
  */
5
- export declare function getUserStories(featureId: string, verbose?: boolean): Promise<UserStory[]>;
5
+ export declare function getUserStories(issueId: string, verbose?: boolean): Promise<UserStory[]>;
6
6
  /**
7
- * Create a new user story for a feature
7
+ * Create a new user story for an issue
8
8
  */
9
- export declare function createUserStory(featureId: string, userStory: {
9
+ export declare function createUserStory(issueId: string, userStory: {
10
10
  title: string;
11
11
  description: string;
12
12
  status?: string;
@@ -1,27 +1,27 @@
1
1
  import { logError, logInfo } from '../../utils/logger.js';
2
2
  import { callMcpEndpoint } from '../mcp-client.js';
3
3
  /**
4
- * Get user stories for a feature
4
+ * Get user stories for an issue
5
5
  */
6
- export async function getUserStories(featureId, verbose) {
6
+ export async function getUserStories(issueId, verbose) {
7
7
  if (verbose) {
8
- logInfo(`Fetching user stories for feature: ${featureId}`);
8
+ logInfo(`Fetching user stories for issue: ${issueId}`);
9
9
  }
10
10
  const result = (await callMcpEndpoint('user_stories/list', {
11
- feature_id: featureId,
11
+ issue_id: issueId,
12
12
  }));
13
13
  return (result.user_stories || []);
14
14
  }
15
15
  /**
16
- * Create a new user story for a feature
16
+ * Create a new user story for an issue
17
17
  */
18
- export async function createUserStory(featureId, userStory, verbose) {
18
+ export async function createUserStory(issueId, userStory, verbose) {
19
19
  try {
20
20
  if (verbose) {
21
- logInfo(`Creating user story for feature: ${featureId}`);
21
+ logInfo(`Creating user story for issue: ${issueId}`);
22
22
  }
23
23
  await callMcpEndpoint('user_stories/create', {
24
- feature_id: featureId,
24
+ issue_id: issueId,
25
25
  user_stories: [
26
26
  {
27
27
  title: userStory.title,
@@ -2,7 +2,7 @@ export interface ProductInfo {
2
2
  id: string;
3
3
  name: string;
4
4
  description?: string;
5
- features?: {
5
+ issues?: {
6
6
  name: string;
7
7
  description?: string;
8
8
  status?: string;
@@ -8,7 +8,7 @@ export interface TaskInfo {
8
8
  priority: number;
9
9
  executor: string;
10
10
  source: string;
11
- feature_id: string | null;
11
+ issue_id: string | null;
12
12
  approval_id: string | null;
13
13
  action_url: string | null;
14
14
  assigned_to: string | null;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Create test report for a feature
2
+ * Create test report for an issue
3
3
  */
4
- export declare function createTestReport(mcpServerUrl: string, mcpToken: string, featureId: string, reportData: {
4
+ export declare function createTestReport(mcpServerUrl: string, mcpToken: string, issueId: string, reportData: {
5
5
  test_type: string;
6
6
  status: 'passed' | 'failed' | 'error';
7
7
  summary: string;
@@ -1,15 +1,15 @@
1
1
  import { logError, logInfo } from '../utils/logger.js';
2
2
  import { callMcpEndpoint } from './mcp-client.js';
3
3
  /**
4
- * Create test report for a feature
4
+ * Create test report for an issue
5
5
  */
6
- export async function createTestReport(mcpServerUrl, mcpToken, featureId, reportData, verbose) {
6
+ export async function createTestReport(mcpServerUrl, mcpToken, issueId, reportData, verbose) {
7
7
  try {
8
8
  if (verbose) {
9
- logInfo(`Creating test report for feature: ${featureId}`);
9
+ logInfo(`Creating test report for issue: ${issueId}`);
10
10
  }
11
11
  await callMcpEndpoint('test_reports/create', {
12
- feature_id: featureId,
12
+ issue_id: issueId,
13
13
  ...reportData,
14
14
  });
15
15
  if (verbose) {
@@ -143,7 +143,7 @@ export async function runLogin() {
143
143
  });
144
144
  }
145
145
  logRaw('');
146
- logInfo('You can now run `edsger` to start processing features.');
146
+ logInfo('You can now run `edsger` to start processing issues.');
147
147
  }
148
148
  catch (error) {
149
149
  logError(`Connection failed: ${error instanceof Error ? error.message : String(error)}`);
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * Chat Worker — Child process entry point for processing chat messages.
3
3
  *
4
- * Spawned by AgentWorkflowProcessor as a parallel subprocess alongside feature workers.
5
- * Runs continuously, polling for unprocessed human messages across all active feature channels.
4
+ * Spawned by AgentWorkflowProcessor as a parallel subprocess alongside issue workers.
5
+ * Runs continuously, polling for unprocessed human messages across all active issue channels.
6
6
  *
7
7
  * Communication with parent via IPC:
8
8
  * - Parent sends: { type: 'init', config }
9
- * - Parent sends: { type: 'event:phase_completed', featureId, phase, summary, phaseOutput }
10
- * - Parent sends: { type: 'event:phase_failed', featureId, phase, error }
11
- * - Parent sends: { type: 'event:feature_done', featureId }
9
+ * - Parent sends: { type: 'event:phase_completed', issueId, phase, summary, phaseOutput }
10
+ * - Parent sends: { type: 'event:phase_failed', issueId, phase, error }
11
+ * - Parent sends: { type: 'event:issue_done', issueId }
12
12
  * - Worker sends: { type: 'log', level, message }
13
- * - Worker sends: { type: 'command:pause_feature', featureId }
14
- * - Worker sends: { type: 'command:resume_feature', featureId }
13
+ * - Worker sends: { type: 'command:pause_issue', issueId }
14
+ * - Worker sends: { type: 'command:resume_issue', issueId }
15
15
  */
16
16
  export {};