edsger 0.50.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/.claude/settings.local.json +23 -3
  2. package/.env.local +12 -0
  3. package/README.md +25 -25
  4. package/dist/api/chat.d.ts +7 -7
  5. package/dist/api/chat.js +13 -13
  6. package/dist/api/cross-product.d.ts +10 -10
  7. package/dist/api/cross-product.js +30 -30
  8. package/dist/api/github.d.ts +5 -5
  9. package/dist/api/github.js +10 -10
  10. package/dist/api/intelligence.d.ts +3 -3
  11. package/dist/api/issues/approval-checker.d.ts +20 -0
  12. package/dist/api/{features → issues}/approval-checker.js +16 -16
  13. package/dist/api/issues/get-issue.d.ts +5 -0
  14. package/dist/api/issues/get-issue.js +21 -0
  15. package/dist/api/issues/index.d.ts +8 -0
  16. package/dist/api/issues/index.js +10 -0
  17. package/dist/api/issues/issue-utils.d.ts +23 -0
  18. package/dist/api/issues/issue-utils.js +80 -0
  19. package/dist/api/issues/status-updater.d.ts +41 -0
  20. package/dist/api/{features → issues}/status-updater.js +23 -23
  21. package/dist/api/{features → issues}/test-cases.d.ts +7 -7
  22. package/dist/api/{features → issues}/test-cases.js +12 -12
  23. package/dist/api/issues/update-issue.d.ts +20 -0
  24. package/dist/api/{features/update-feature.js → issues/update-issue.js} +22 -22
  25. package/dist/api/{features → issues}/user-stories.d.ts +5 -5
  26. package/dist/api/{features → issues}/user-stories.js +8 -8
  27. package/dist/api/products.d.ts +1 -1
  28. package/dist/api/tasks.d.ts +1 -1
  29. package/dist/api/test-reports.d.ts +2 -2
  30. package/dist/api/test-reports.js +4 -4
  31. package/dist/auth/login.js +1 -1
  32. package/dist/commands/agent-workflow/chat-worker.d.ts +7 -7
  33. package/dist/commands/agent-workflow/chat-worker.js +50 -50
  34. package/dist/commands/agent-workflow/index.d.ts +2 -2
  35. package/dist/commands/agent-workflow/index.js +3 -3
  36. package/dist/commands/agent-workflow/{feature-worker.d.ts → issue-worker.d.ts} +4 -4
  37. package/dist/commands/agent-workflow/{feature-worker.js → issue-worker.js} +12 -12
  38. package/dist/commands/agent-workflow/processor.d.ts +9 -9
  39. package/dist/commands/agent-workflow/processor.js +90 -90
  40. package/dist/commands/build/index.js +2 -2
  41. package/dist/commands/find-bugs/index.d.ts +11 -0
  42. package/dist/commands/find-bugs/index.js +39 -0
  43. package/dist/commands/find-features/index.d.ts +14 -0
  44. package/dist/commands/find-features/index.js +42 -0
  45. package/dist/commands/find-smells/index.d.ts +21 -0
  46. package/dist/commands/find-smells/index.js +65 -0
  47. package/dist/commands/init/prompts.js +1 -1
  48. package/dist/commands/init/templates.d.ts +1 -1
  49. package/dist/commands/init/templates.js +4 -4
  50. package/dist/commands/workflow/config/phase-configs.js +17 -17
  51. package/dist/commands/workflow/core/index.d.ts +1 -1
  52. package/dist/commands/workflow/core/index.js +2 -2
  53. package/dist/commands/workflow/core/issue-filter.d.ts +16 -0
  54. package/dist/commands/workflow/core/issue-filter.js +47 -0
  55. package/dist/commands/workflow/core/state-manager.d.ts +10 -10
  56. package/dist/commands/workflow/core/state-manager.js +10 -10
  57. package/dist/commands/workflow/core/workflow-logger.d.ts +9 -9
  58. package/dist/commands/workflow/core/workflow-logger.js +21 -21
  59. package/dist/commands/workflow/executors/phase-executor.d.ts +2 -2
  60. package/dist/commands/workflow/executors/phase-executor.js +32 -32
  61. package/dist/commands/workflow/issue-coordinator.d.ts +18 -0
  62. package/dist/commands/workflow/{feature-coordinator.js → issue-coordinator.js} +29 -29
  63. package/dist/commands/workflow/phase-orchestrator.d.ts +2 -2
  64. package/dist/commands/workflow/phase-orchestrator.js +82 -82
  65. package/dist/commands/workflow/processor.d.ts +7 -7
  66. package/dist/commands/workflow/processor.js +44 -44
  67. package/dist/config/{feature-status.d.ts → issue-status.d.ts} +14 -14
  68. package/dist/config/{feature-status.js → issue-status.js} +14 -14
  69. package/dist/errors/index.d.ts +6 -6
  70. package/dist/errors/index.js +11 -11
  71. package/dist/index.js +90 -1
  72. package/dist/phases/app-store-generation/context.js +6 -6
  73. package/dist/phases/app-store-generation/index.js +2 -2
  74. package/dist/phases/app-store-generation/prompts.js +2 -2
  75. package/dist/phases/autonomous/index.d.ts +3 -3
  76. package/dist/phases/autonomous/index.js +37 -37
  77. package/dist/phases/autonomous/prompts.d.ts +2 -2
  78. package/dist/phases/autonomous/prompts.js +4 -4
  79. package/dist/phases/branch-planning/context.d.ts +3 -3
  80. package/dist/phases/branch-planning/context.js +12 -12
  81. package/dist/phases/branch-planning/index.d.ts +3 -3
  82. package/dist/phases/branch-planning/index.js +32 -32
  83. package/dist/phases/branch-planning/outcome.d.ts +5 -5
  84. package/dist/phases/branch-planning/outcome.js +12 -12
  85. package/dist/phases/branch-planning/prompts.d.ts +3 -3
  86. package/dist/phases/branch-planning/prompts.js +13 -13
  87. package/dist/phases/bug-fixing/analyzer.d.ts +2 -2
  88. package/dist/phases/bug-fixing/analyzer.js +13 -13
  89. package/dist/phases/bug-fixing/context-fetcher.d.ts +3 -3
  90. package/dist/phases/bug-fixing/context-fetcher.js +18 -18
  91. package/dist/phases/bug-fixing/mcp-server.js +17 -18
  92. package/dist/phases/chat-processor/context.d.ts +5 -5
  93. package/dist/phases/chat-processor/context.js +17 -17
  94. package/dist/phases/chat-processor/index.d.ts +4 -4
  95. package/dist/phases/chat-processor/index.js +17 -17
  96. package/dist/phases/chat-processor/product-context.d.ts +3 -3
  97. package/dist/phases/chat-processor/product-context.js +16 -16
  98. package/dist/phases/chat-processor/product-prompts.d.ts +1 -1
  99. package/dist/phases/chat-processor/product-prompts.js +10 -10
  100. package/dist/phases/chat-processor/product-tools.d.ts +2 -2
  101. package/dist/phases/chat-processor/product-tools.js +33 -33
  102. package/dist/phases/chat-processor/prompts.d.ts +3 -3
  103. package/dist/phases/chat-processor/prompts.js +22 -22
  104. package/dist/phases/chat-processor/tools.js +46 -46
  105. package/dist/phases/code-implementation/branch-pr-creator.d.ts +3 -3
  106. package/dist/phases/code-implementation/branch-pr-creator.js +5 -5
  107. package/dist/phases/code-implementation/context.d.ts +3 -3
  108. package/dist/phases/code-implementation/context.js +18 -18
  109. package/dist/phases/code-implementation/index.d.ts +4 -4
  110. package/dist/phases/code-implementation/index.js +88 -88
  111. package/dist/phases/code-implementation/outcome.d.ts +3 -3
  112. package/dist/phases/code-implementation/outcome.js +6 -6
  113. package/dist/phases/code-implementation/prompts.d.ts +1 -1
  114. package/dist/phases/code-implementation/prompts.js +6 -6
  115. package/dist/phases/code-implementation-verification/agent.d.ts +3 -3
  116. package/dist/phases/code-implementation-verification/agent.js +5 -5
  117. package/dist/phases/code-implementation-verification/index.d.ts +3 -3
  118. package/dist/phases/code-implementation-verification/index.js +11 -11
  119. package/dist/phases/code-implementation-verification/prompts.d.ts +3 -3
  120. package/dist/phases/code-implementation-verification/prompts.js +7 -7
  121. package/dist/phases/code-refine/context.d.ts +8 -8
  122. package/dist/phases/code-refine/context.js +29 -29
  123. package/dist/phases/code-refine/index.d.ts +2 -2
  124. package/dist/phases/code-refine/index.js +20 -20
  125. package/dist/phases/code-refine/prompts.d.ts +1 -1
  126. package/dist/phases/code-refine/prompts.js +3 -3
  127. package/dist/phases/code-refine/refine-iteration.d.ts +1 -1
  128. package/dist/phases/code-refine/refine-iteration.js +4 -4
  129. package/dist/phases/code-refine/retry-handler.js +2 -2
  130. package/dist/phases/code-refine-verification/index.js +10 -10
  131. package/dist/phases/code-refine-verification/types.d.ts +2 -2
  132. package/dist/phases/code-review/context.d.ts +8 -8
  133. package/dist/phases/code-review/context.js +25 -25
  134. package/dist/phases/code-review/diff-utils.d.ts +1 -1
  135. package/dist/phases/code-review/diff-utils.js +1 -1
  136. package/dist/phases/code-review/index.d.ts +2 -2
  137. package/dist/phases/code-review/index.js +26 -26
  138. package/dist/phases/code-testing/analyzer.d.ts +2 -2
  139. package/dist/phases/code-testing/analyzer.js +18 -18
  140. package/dist/phases/code-testing/context-fetcher.d.ts +3 -3
  141. package/dist/phases/code-testing/context-fetcher.js +16 -16
  142. package/dist/phases/code-testing/prompts.d.ts +1 -1
  143. package/dist/phases/code-testing/prompts.js +5 -5
  144. package/dist/phases/find-bugs/index.d.ts +30 -0
  145. package/dist/phases/find-bugs/index.js +216 -0
  146. package/dist/phases/find-bugs/prompts.d.ts +22 -0
  147. package/dist/phases/find-bugs/prompts.js +101 -0
  148. package/dist/phases/find-bugs/state.d.ts +19 -0
  149. package/dist/phases/find-bugs/state.js +13 -0
  150. package/dist/phases/find-bugs/types.d.ts +21 -0
  151. package/dist/phases/find-bugs/types.js +16 -0
  152. package/dist/phases/find-features/index.d.ts +40 -0
  153. package/dist/phases/find-features/index.js +279 -0
  154. package/dist/phases/find-features/prompts.d.ts +43 -0
  155. package/dist/phases/find-features/prompts.js +138 -0
  156. package/dist/phases/find-features/state.d.ts +25 -0
  157. package/dist/phases/find-features/state.js +22 -0
  158. package/dist/phases/find-features/types.d.ts +27 -0
  159. package/dist/phases/find-features/types.js +16 -0
  160. package/dist/phases/find-shared/git.d.ts +24 -0
  161. package/dist/phases/find-shared/git.js +60 -0
  162. package/dist/phases/find-shared/mcp.d.ts +33 -0
  163. package/dist/phases/find-shared/mcp.js +69 -0
  164. package/dist/phases/find-shared/scan-state.d.ts +33 -0
  165. package/dist/phases/find-shared/scan-state.js +112 -0
  166. package/dist/phases/find-smells/index.d.ts +47 -0
  167. package/dist/phases/find-smells/index.js +278 -0
  168. package/dist/phases/find-smells/prompts.d.ts +30 -0
  169. package/dist/phases/find-smells/prompts.js +129 -0
  170. package/dist/phases/find-smells/state.d.ts +21 -0
  171. package/dist/phases/find-smells/state.js +17 -0
  172. package/dist/phases/find-smells/types.d.ts +51 -0
  173. package/dist/phases/find-smells/types.js +64 -0
  174. package/dist/phases/functional-testing/analyzer.d.ts +2 -2
  175. package/dist/phases/functional-testing/analyzer.js +40 -40
  176. package/dist/phases/functional-testing/context-fetcher.d.ts +3 -3
  177. package/dist/phases/functional-testing/context-fetcher.js +16 -16
  178. package/dist/phases/functional-testing/http-fallback.d.ts +2 -2
  179. package/dist/phases/functional-testing/http-fallback.js +9 -9
  180. package/dist/phases/functional-testing/mcp-server.js +23 -24
  181. package/dist/phases/functional-testing/prompts.d.ts +1 -1
  182. package/dist/phases/functional-testing/prompts.js +4 -4
  183. package/dist/phases/functional-testing/test-report-creator.d.ts +2 -2
  184. package/dist/phases/functional-testing/test-report-creator.js +10 -10
  185. package/dist/phases/functional-testing/test-retry-handler.js +3 -3
  186. package/dist/phases/growth-analysis/context.js +6 -6
  187. package/dist/phases/growth-analysis/index.js +2 -2
  188. package/dist/phases/growth-analysis/prompts.js +2 -2
  189. package/dist/phases/intelligence-analysis/context.js +7 -7
  190. package/dist/phases/intelligence-analysis/index.js +3 -3
  191. package/dist/phases/{feature-analysis → issue-analysis}/agent.js +1 -1
  192. package/dist/phases/issue-analysis/context.d.ts +24 -0
  193. package/dist/phases/{feature-analysis → issue-analysis}/context.js +30 -30
  194. package/dist/phases/issue-analysis/index.d.ts +8 -0
  195. package/dist/phases/{feature-analysis → issue-analysis}/index.js +29 -29
  196. package/dist/phases/issue-analysis/outcome.d.ts +40 -0
  197. package/dist/phases/{feature-analysis → issue-analysis}/outcome.js +17 -17
  198. package/dist/phases/{feature-analysis → issue-analysis}/prompts.d.ts +3 -3
  199. package/dist/phases/{feature-analysis → issue-analysis}/prompts.js +12 -12
  200. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/agent.d.ts +2 -2
  201. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/agent.js +1 -1
  202. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/index.d.ts +5 -5
  203. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/index.js +9 -9
  204. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/prompts.d.ts +2 -2
  205. package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/prompts.js +7 -7
  206. package/dist/phases/output-contracts.js +37 -37
  207. package/dist/phases/pr-execution/context.d.ts +3 -3
  208. package/dist/phases/pr-execution/context.js +14 -14
  209. package/dist/phases/pr-execution/index.d.ts +2 -2
  210. package/dist/phases/pr-execution/index.js +22 -22
  211. package/dist/phases/pr-execution/outcome.d.ts +4 -4
  212. package/dist/phases/pr-execution/outcome.js +6 -6
  213. package/dist/phases/pr-execution/prompts.d.ts +4 -4
  214. package/dist/phases/pr-execution/prompts.js +6 -6
  215. package/dist/phases/pr-resolve/checklist-learner.js +2 -2
  216. package/dist/phases/pr-review/index.d.ts +1 -1
  217. package/dist/phases/pr-review/index.js +1 -1
  218. package/dist/phases/pr-review/prompts.d.ts +1 -1
  219. package/dist/phases/pr-review/prompts.js +1 -1
  220. package/dist/phases/pr-shared/context.d.ts +3 -3
  221. package/dist/phases/pr-shared/context.js +3 -3
  222. package/dist/phases/pr-splitting/context.d.ts +3 -3
  223. package/dist/phases/pr-splitting/context.js +16 -16
  224. package/dist/phases/pr-splitting/index.d.ts +4 -4
  225. package/dist/phases/pr-splitting/index.js +29 -29
  226. package/dist/phases/pr-splitting/outcome.d.ts +3 -3
  227. package/dist/phases/pr-splitting/outcome.js +7 -7
  228. package/dist/phases/pr-splitting/prompts.d.ts +3 -3
  229. package/dist/phases/pr-splitting/prompts.js +11 -11
  230. package/dist/phases/pull-request/creator.d.ts +4 -4
  231. package/dist/phases/pull-request/creator.js +25 -25
  232. package/dist/phases/pull-request/handler.d.ts +3 -3
  233. package/dist/phases/pull-request/handler.js +16 -16
  234. package/dist/phases/release-sync/index.js +2 -2
  235. package/dist/phases/run-sheet/agent.js +1 -2
  236. package/dist/phases/run-sheet/index.js +3 -3
  237. package/dist/phases/smoke-test/index.js +2 -2
  238. package/dist/phases/technical-design/context.d.ts +3 -3
  239. package/dist/phases/technical-design/context.js +11 -11
  240. package/dist/phases/technical-design/index.d.ts +2 -2
  241. package/dist/phases/technical-design/index.js +27 -27
  242. package/dist/phases/technical-design/outcome.d.ts +4 -4
  243. package/dist/phases/technical-design/outcome.js +6 -6
  244. package/dist/phases/technical-design/prompts.d.ts +2 -2
  245. package/dist/phases/technical-design/prompts.js +10 -10
  246. package/dist/phases/technical-design-verification/agent.d.ts +3 -3
  247. package/dist/phases/technical-design-verification/agent.js +4 -4
  248. package/dist/phases/technical-design-verification/index.d.ts +4 -4
  249. package/dist/phases/technical-design-verification/index.js +12 -12
  250. package/dist/phases/technical-design-verification/prompts.d.ts +3 -3
  251. package/dist/phases/technical-design-verification/prompts.js +6 -6
  252. package/dist/phases/test-cases-analysis/context.d.ts +5 -5
  253. package/dist/phases/test-cases-analysis/context.js +18 -18
  254. package/dist/phases/test-cases-analysis/formatters.js +7 -7
  255. package/dist/phases/test-cases-analysis/index.d.ts +1 -1
  256. package/dist/phases/test-cases-analysis/index.js +21 -21
  257. package/dist/phases/test-cases-analysis/outcome.d.ts +7 -7
  258. package/dist/phases/test-cases-analysis/outcome.js +13 -13
  259. package/dist/phases/test-cases-analysis/prompts.d.ts +3 -3
  260. package/dist/phases/test-cases-analysis/prompts.js +6 -6
  261. package/dist/phases/user-stories-analysis/context.d.ts +5 -5
  262. package/dist/phases/user-stories-analysis/context.js +18 -18
  263. package/dist/phases/user-stories-analysis/formatters.js +7 -7
  264. package/dist/phases/user-stories-analysis/index.d.ts +1 -1
  265. package/dist/phases/user-stories-analysis/index.js +21 -21
  266. package/dist/phases/user-stories-analysis/outcome.d.ts +7 -7
  267. package/dist/phases/user-stories-analysis/outcome.js +13 -13
  268. package/dist/phases/user-stories-analysis/prompts.d.ts +3 -3
  269. package/dist/phases/user-stories-analysis/prompts.js +10 -10
  270. package/dist/services/audit-logs.d.ts +10 -10
  271. package/dist/services/audit-logs.js +12 -12
  272. package/dist/services/branches.d.ts +6 -6
  273. package/dist/services/branches.js +16 -16
  274. package/dist/services/checklist.d.ts +3 -3
  275. package/dist/services/checklist.js +11 -11
  276. package/dist/services/coaching/coaching-agent.js +2 -2
  277. package/dist/services/coaching/coaching-loop.d.ts +1 -1
  278. package/dist/services/coaching/coaching-loop.js +2 -2
  279. package/dist/services/coaching/phase-coaching.d.ts +2 -2
  280. package/dist/services/coaching/phase-coaching.js +3 -3
  281. package/dist/services/coaching/self-rating.js +1 -1
  282. package/dist/services/feedbacks.d.ts +4 -4
  283. package/dist/services/feedbacks.js +8 -8
  284. package/dist/services/phase-hooks/bindings-fetcher.d.ts +4 -4
  285. package/dist/services/phase-hooks/bindings-fetcher.js +8 -8
  286. package/dist/services/phase-hooks/hook-executor.js +1 -1
  287. package/dist/services/phase-hooks/hook-logging.d.ts +2 -2
  288. package/dist/services/phase-hooks/hook-logging.js +4 -4
  289. package/dist/services/phase-hooks/hook-runner.d.ts +1 -1
  290. package/dist/services/phase-hooks/hook-runner.js +4 -4
  291. package/dist/services/phase-hooks/types.d.ts +3 -3
  292. package/dist/services/phase-ratings.d.ts +7 -7
  293. package/dist/services/phase-ratings.js +8 -8
  294. package/dist/services/pull-requests.d.ts +4 -4
  295. package/dist/services/pull-requests.js +11 -11
  296. package/dist/services/skill-resolver.d.ts +1 -1
  297. package/dist/services/skill-resolver.js +1 -1
  298. package/dist/skills/phase/app-store-generation/SKILL.md +9 -9
  299. package/dist/skills/phase/autonomous/SKILL.md +2 -2
  300. package/dist/skills/phase/branch-planning/SKILL.md +12 -12
  301. package/dist/skills/phase/bug-fixing/SKILL.md +1 -1
  302. package/dist/skills/phase/code-implementation/SKILL.md +6 -6
  303. package/dist/skills/phase/code-implementation-verification/SKILL.md +3 -3
  304. package/dist/skills/phase/code-testing/SKILL.md +5 -5
  305. package/dist/skills/phase/functional-testing/SKILL.md +3 -3
  306. package/dist/skills/phase/growth-analysis/SKILL.md +8 -8
  307. package/dist/skills/phase/incremental-sync/SKILL.md +6 -6
  308. package/dist/skills/phase/intelligence-analysis/SKILL.md +7 -7
  309. package/dist/skills/phase/{feature-analysis → issue-analysis}/SKILL.md +8 -8
  310. package/dist/skills/phase/pr-execution/SKILL.md +7 -7
  311. package/dist/skills/phase/pr-splitting/SKILL.md +14 -14
  312. package/dist/skills/phase/smoke-test/SKILL.md +1 -1
  313. package/dist/skills/phase/technical-design/SKILL.md +5 -5
  314. package/dist/skills/phase/test-cases-analysis/SKILL.md +4 -4
  315. package/dist/skills/phase/user-stories-analysis/SKILL.md +13 -13
  316. package/dist/system/session-manager.d.ts +3 -3
  317. package/dist/system/session-manager.js +3 -3
  318. package/dist/system/sleep-notification.js +2 -2
  319. package/dist/system/sleep-prevention.js +1 -1
  320. package/dist/types/index.d.ts +21 -21
  321. package/dist/types/{features.d.ts → issues.d.ts} +3 -3
  322. package/dist/types/pipeline.d.ts +4 -4
  323. package/dist/updater/auto-updater.d.ts +2 -2
  324. package/dist/updater/auto-updater.js +3 -3
  325. package/dist/utils/conflict-resolver.d.ts +1 -1
  326. package/dist/utils/conflict-resolver.js +5 -5
  327. package/dist/utils/formatters.d.ts +4 -4
  328. package/dist/utils/formatters.js +29 -29
  329. package/dist/utils/git-branch-manager-async.d.ts +6 -6
  330. package/dist/utils/git-branch-manager-async.js +41 -41
  331. package/dist/utils/git-branch-manager.d.ts +11 -11
  332. package/dist/utils/git-branch-manager.js +42 -42
  333. package/dist/utils/image-downloader.d.ts +4 -4
  334. package/dist/utils/image-downloader.js +17 -17
  335. package/dist/utils/pipeline-logger.d.ts +1 -1
  336. package/dist/utils/pipeline-logger.js +5 -5
  337. package/dist/workspace/workspace-manager.d.ts +17 -17
  338. package/dist/workspace/workspace-manager.js +21 -21
  339. package/package.json +1 -1
  340. package/vitest.config.ts +4 -0
  341. package/dist/api/__tests__/app-store.test.d.ts +0 -7
  342. package/dist/api/__tests__/app-store.test.js +0 -60
  343. package/dist/api/__tests__/intelligence.test.d.ts +0 -11
  344. package/dist/api/__tests__/intelligence.test.js +0 -315
  345. package/dist/api/features/__tests__/feature-utils.test.d.ts +0 -4
  346. package/dist/api/features/__tests__/feature-utils.test.js +0 -370
  347. package/dist/api/features/__tests__/status-updater.test.d.ts +0 -4
  348. package/dist/api/features/__tests__/status-updater.test.js +0 -88
  349. package/dist/api/features/approval-checker.d.ts +0 -20
  350. package/dist/api/features/feature-utils.d.ts +0 -23
  351. package/dist/api/features/feature-utils.js +0 -80
  352. package/dist/api/features/get-feature.d.ts +0 -5
  353. package/dist/api/features/get-feature.js +0 -21
  354. package/dist/api/features/index.d.ts +0 -8
  355. package/dist/api/features/index.js +0 -10
  356. package/dist/api/features/status-updater.d.ts +0 -41
  357. package/dist/api/features/update-feature.d.ts +0 -20
  358. package/dist/commands/build/__tests__/build.test.d.ts +0 -5
  359. package/dist/commands/build/__tests__/build.test.js +0 -206
  360. package/dist/commands/build/__tests__/detect-project.test.d.ts +0 -6
  361. package/dist/commands/build/__tests__/detect-project.test.js +0 -160
  362. package/dist/commands/build/__tests__/run-build.test.d.ts +0 -6
  363. package/dist/commands/build/__tests__/run-build.test.js +0 -433
  364. package/dist/commands/intelligence/__tests__/command.test.d.ts +0 -4
  365. package/dist/commands/intelligence/__tests__/command.test.js +0 -48
  366. package/dist/commands/workflow/core/__tests__/feature-filter.test.d.ts +0 -5
  367. package/dist/commands/workflow/core/__tests__/feature-filter.test.js +0 -316
  368. package/dist/commands/workflow/core/__tests__/pipeline-evaluator.test.d.ts +0 -4
  369. package/dist/commands/workflow/core/__tests__/pipeline-evaluator.test.js +0 -397
  370. package/dist/commands/workflow/core/__tests__/state-manager.test.d.ts +0 -4
  371. package/dist/commands/workflow/core/__tests__/state-manager.test.js +0 -384
  372. package/dist/commands/workflow/core/feature-filter.d.ts +0 -16
  373. package/dist/commands/workflow/core/feature-filter.js +0 -47
  374. package/dist/commands/workflow/feature-coordinator.d.ts +0 -18
  375. package/dist/config/__tests__/config.test.d.ts +0 -4
  376. package/dist/config/__tests__/config.test.js +0 -286
  377. package/dist/config/__tests__/feature-status.test.d.ts +0 -4
  378. package/dist/config/__tests__/feature-status.test.js +0 -111
  379. package/dist/errors/__tests__/index.test.d.ts +0 -4
  380. package/dist/errors/__tests__/index.test.js +0 -349
  381. package/dist/phases/app-store-generation/__tests__/agent.test.d.ts +0 -5
  382. package/dist/phases/app-store-generation/__tests__/agent.test.js +0 -142
  383. package/dist/phases/app-store-generation/__tests__/context.test.d.ts +0 -4
  384. package/dist/phases/app-store-generation/__tests__/context.test.js +0 -284
  385. package/dist/phases/app-store-generation/__tests__/prompts.test.d.ts +0 -4
  386. package/dist/phases/app-store-generation/__tests__/prompts.test.js +0 -122
  387. package/dist/phases/app-store-generation/__tests__/screenshot-composer.test.d.ts +0 -5
  388. package/dist/phases/app-store-generation/__tests__/screenshot-composer.test.js +0 -826
  389. package/dist/phases/code-review/__tests__/diff-utils.test.js +0 -101
  390. package/dist/phases/feature-analysis/context.d.ts +0 -24
  391. package/dist/phases/feature-analysis/index.d.ts +0 -8
  392. package/dist/phases/feature-analysis/outcome.d.ts +0 -40
  393. package/dist/phases/intelligence-analysis/__tests__/context.test.d.ts +0 -4
  394. package/dist/phases/intelligence-analysis/__tests__/context.test.js +0 -192
  395. package/dist/phases/intelligence-analysis/__tests__/matching.test.d.ts +0 -13
  396. package/dist/phases/intelligence-analysis/__tests__/matching.test.js +0 -154
  397. package/dist/phases/intelligence-analysis/__tests__/orchestration.test.d.ts +0 -5
  398. package/dist/phases/intelligence-analysis/__tests__/orchestration.test.js +0 -378
  399. package/dist/phases/intelligence-analysis/__tests__/prompts.test.d.ts +0 -4
  400. package/dist/phases/intelligence-analysis/__tests__/prompts.test.js +0 -33
  401. package/dist/phases/pr-execution/__tests__/file-assigner.test.d.ts +0 -1
  402. package/dist/phases/pr-execution/__tests__/file-assigner.test.js +0 -303
  403. package/dist/phases/pr-resolve/__tests__/checklist-learner.test.d.ts +0 -1
  404. package/dist/phases/pr-resolve/__tests__/checklist-learner.test.js +0 -157
  405. package/dist/phases/pr-resolve/__tests__/prompts.test.d.ts +0 -1
  406. package/dist/phases/pr-resolve/__tests__/prompts.test.js +0 -116
  407. package/dist/phases/pr-resolve/__tests__/resolve-mapping.test.d.ts +0 -1
  408. package/dist/phases/pr-resolve/__tests__/resolve-mapping.test.js +0 -138
  409. package/dist/phases/pr-resolve/__tests__/types.test.d.ts +0 -1
  410. package/dist/phases/pr-resolve/__tests__/types.test.js +0 -43
  411. package/dist/phases/pr-resolve/__tests__/workspace.test.d.ts +0 -1
  412. package/dist/phases/pr-resolve/__tests__/workspace.test.js +0 -111
  413. package/dist/phases/pr-review/__tests__/prompts.test.d.ts +0 -1
  414. package/dist/phases/pr-review/__tests__/prompts.test.js +0 -49
  415. package/dist/phases/pr-review/__tests__/review-comments.test.d.ts +0 -1
  416. package/dist/phases/pr-review/__tests__/review-comments.test.js +0 -110
  417. package/dist/phases/pr-shared/__tests__/agent-utils.test.d.ts +0 -1
  418. package/dist/phases/pr-shared/__tests__/agent-utils.test.js +0 -91
  419. package/dist/phases/pr-shared/__tests__/context.test.d.ts +0 -1
  420. package/dist/phases/pr-shared/__tests__/context.test.js +0 -94
  421. package/dist/phases/pr-splitting/__tests__/import-dep-validator.test.d.ts +0 -1
  422. package/dist/phases/pr-splitting/__tests__/import-dep-validator.test.js +0 -331
  423. package/dist/phases/run-sheet/render.d.ts +0 -60
  424. package/dist/phases/run-sheet/render.js +0 -297
  425. package/dist/phases/smoke-test/__tests__/agent.test.d.ts +0 -4
  426. package/dist/phases/smoke-test/__tests__/agent.test.js +0 -84
  427. package/dist/phases/smoke-test/__tests__/github.test.d.ts +0 -9
  428. package/dist/phases/smoke-test/__tests__/github.test.js +0 -120
  429. package/dist/phases/smoke-test/__tests__/snapshot.test.d.ts +0 -8
  430. package/dist/phases/smoke-test/__tests__/snapshot.test.js +0 -93
  431. package/dist/phases/smoke-test/github.d.ts +0 -54
  432. package/dist/phases/smoke-test/github.js +0 -101
  433. package/dist/phases/smoke-test/snapshot.d.ts +0 -27
  434. package/dist/phases/smoke-test/snapshot.js +0 -157
  435. package/dist/services/coaching/__tests__/coaching-agent.test.d.ts +0 -1
  436. package/dist/services/coaching/__tests__/coaching-agent.test.js +0 -74
  437. package/dist/services/coaching/__tests__/coaching-loop.test.d.ts +0 -1
  438. package/dist/services/coaching/__tests__/coaching-loop.test.js +0 -59
  439. package/dist/services/coaching/__tests__/self-rating.test.d.ts +0 -1
  440. package/dist/services/coaching/__tests__/self-rating.test.js +0 -188
  441. package/dist/services/lifecycle-agent/__tests__/phase-criteria.test.d.ts +0 -4
  442. package/dist/services/lifecycle-agent/__tests__/phase-criteria.test.js +0 -133
  443. package/dist/services/lifecycle-agent/__tests__/transition-rules.test.d.ts +0 -4
  444. package/dist/services/lifecycle-agent/__tests__/transition-rules.test.js +0 -336
  445. package/dist/services/lifecycle-agent/index.d.ts +0 -24
  446. package/dist/services/lifecycle-agent/index.js +0 -25
  447. package/dist/services/lifecycle-agent/phase-criteria.d.ts +0 -57
  448. package/dist/services/lifecycle-agent/phase-criteria.js +0 -335
  449. package/dist/services/lifecycle-agent/transition-rules.d.ts +0 -60
  450. package/dist/services/lifecycle-agent/transition-rules.js +0 -184
  451. package/dist/services/lifecycle-agent/types.d.ts +0 -190
  452. package/dist/services/lifecycle-agent/types.js +0 -12
  453. package/dist/services/phase-hooks/__tests__/bindings-fetcher.test.d.ts +0 -1
  454. package/dist/services/phase-hooks/__tests__/bindings-fetcher.test.js +0 -122
  455. package/dist/services/phase-hooks/__tests__/hook-executor.test.d.ts +0 -1
  456. package/dist/services/phase-hooks/__tests__/hook-executor.test.js +0 -321
  457. package/dist/services/phase-hooks/__tests__/hook-runner.test.d.ts +0 -1
  458. package/dist/services/phase-hooks/__tests__/hook-runner.test.js +0 -261
  459. package/dist/services/phase-hooks/__tests__/plugin-loader.test.d.ts +0 -1
  460. package/dist/services/phase-hooks/__tests__/plugin-loader.test.js +0 -158
  461. package/dist/services/video/__tests__/video-pipeline.test.d.ts +0 -6
  462. package/dist/services/video/__tests__/video-pipeline.test.js +0 -249
  463. package/dist/types/features.js +0 -1
  464. package/dist/workspace/__tests__/workspace-manager.test.d.ts +0 -7
  465. package/dist/workspace/__tests__/workspace-manager.test.js +0 -52
  466. /package/dist/api/{features → issues}/batch-operations.d.ts +0 -0
  467. /package/dist/api/{features → issues}/batch-operations.js +0 -0
  468. /package/dist/phases/{feature-analysis → issue-analysis}/agent.d.ts +0 -0
  469. /package/dist/skills/phase/{feature-analysis-verification → issue-analysis-verification}/SKILL.md +0 -0
  470. /package/dist/{phases/code-review/__tests__/diff-utils.test.d.ts → types/issues.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { processConditionals, resolveSkill, substituteVariables, } from '../../services/skill-resolver.js';
2
2
  import { OUTPUT_CONTRACTS } from '../output-contracts.js';
3
- export const createTechnicalDesignSystemPrompt = async (_config, mcpServerUrl, mcpToken, featureId, projectDir) => {
3
+ export const createTechnicalDesignSystemPrompt = async (_config, mcpServerUrl, mcpToken, issueId, projectDir) => {
4
4
  const skill = await resolveSkill('phase/technical-design', {
5
5
  projectDir,
6
6
  });
@@ -13,14 +13,14 @@ export const createTechnicalDesignSystemPrompt = async (_config, mcpServerUrl, m
13
13
  MCP_TOKEN: mcpToken || '',
14
14
  });
15
15
  prompt = processConditionals(prompt, {
16
- hasMcp: !!(mcpServerUrl && mcpToken && featureId),
16
+ hasMcp: !!(mcpServerUrl && mcpToken && issueId),
17
17
  });
18
18
  return `${prompt}\n\n${OUTPUT_CONTRACTS['technical-design']}`;
19
19
  };
20
- export const createTechnicalDesignPromptWithContext = (featureId, contextInfo, existingTechnicalDesign, isIncrementalUpdate = false) => {
20
+ export const createTechnicalDesignPromptWithContext = (issueId, contextInfo, existingTechnicalDesign, isIncrementalUpdate = false) => {
21
21
  // If incremental update mode (existing design + feedbacks), create focused update prompt
22
22
  if (isIncrementalUpdate && existingTechnicalDesign) {
23
- return `Update the technical design for feature ID: ${featureId} based on human feedbacks
23
+ return `Update the technical design for issue ID: ${issueId} based on human feedbacks
24
24
 
25
25
  ## Current Technical Design
26
26
 
@@ -43,7 +43,7 @@ You are in **INCREMENTAL UPDATE** mode. This means:
43
43
  **CRITICAL RULE**:
44
44
  - **ONLY optimize based on feedbacks** - Do NOT make other improvements or optimizations
45
45
  - **Do NOT proactively improve** other parts of the design that feedbacks don't mention
46
- - **Do NOT add features** that feedbacks don't request
46
+ - **Do NOT add issues** that feedbacks don't request
47
47
  - **Do NOT refactor** sections that feedbacks don't ask about
48
48
  - If you see potential improvements but no feedback requests them, IGNORE them
49
49
  - Your job is ONLY to address the specific feedbacks, nothing more
@@ -75,7 +75,7 @@ Begin by reviewing the feedbacks and identifying which sections of the current d
75
75
  const designMode = existingTechnicalDesign
76
76
  ? 'Update and improve the existing technical design, or redesign if needed'
77
77
  : 'Generate a comprehensive technical design';
78
- return `${designMode} for feature ID: ${featureId}
78
+ return `${designMode} for issue ID: ${issueId}
79
79
 
80
80
  ${existingTechnicalDesign ? `## Existing Technical Design\n\n${existingTechnicalDesign}\n\n` : ''}${contextInfo}
81
81
 
@@ -91,15 +91,15 @@ Follow this systematic approach:
91
91
  - Examine README.md, CLAUDE.md or other documentation files if they exist
92
92
 
93
93
  2. **Technical Design Creation**: Create comprehensive technical design documentation that addresses:
94
- - **Architecture Overview**: How the feature integrates with the existing system
94
+ - **Architecture Overview**: How the issue integrates with the existing system
95
95
  - **Component Design**: Frontend components, backend services, database changes needed
96
- - **Data Flow**: How data moves through the system for this feature
96
+ - **Data Flow**: How data moves through the system for this issue
97
97
  - **API Design**: Endpoints, request/response formats, error handling
98
98
  - **Database Design**: Schema changes, indexes, relationships, migration strategy
99
99
  - **Security**: Authentication, authorization, data validation requirements
100
100
  - **Performance**: Caching strategies, optimization, scalability considerations
101
101
  - **Testing Strategy**: Unit, integration, and end-to-end testing approaches
102
- - **Deployment**: How the feature will be deployed and monitored
102
+ - **Deployment**: How the issue will be deployed and monitored
103
103
 
104
104
  3. **Implementation Guidance**: Provide specific implementation recommendations and considerations
105
105
 
@@ -197,7 +197,7 @@ You MUST return ONLY the JSON object below. Do NOT include any explanatory text,
197
197
  \`\`\`json
198
198
  {
199
199
  "technical_design_result": {
200
- "feature_id": "...",
200
+ "issue_id": "...",
201
201
  "status": "success",
202
202
  "summary": "Improved technical design based on verification feedback",
203
203
  "technical_design": "The COMPLETE improved technical design document in markdown format",
@@ -41,9 +41,9 @@ export interface ChecklistVerificationResult {
41
41
  export interface VerifyTechnicalDesignOptions {
42
42
  checklistContext: ChecklistPhaseContext;
43
43
  feedbacksContext?: FeedbacksContext | null;
44
- featureId: string;
45
- featureName: string;
46
- featureDescription?: string;
44
+ issueId: string;
45
+ issueName: string;
46
+ issueDescription?: string;
47
47
  technicalDesign: string;
48
48
  verbose?: boolean;
49
49
  }
@@ -57,7 +57,7 @@ async function* prompt(verificationPrompt) {
57
57
  */
58
58
  // eslint-disable-next-line complexity -- orchestration function with checklist verification and result processing
59
59
  export async function verifyTechnicalDesignCompliance(options, _config) {
60
- const { checklistContext, feedbacksContext, featureId, featureName, featureDescription, technicalDesign, verbose, } = options;
60
+ const { checklistContext, feedbacksContext, issueId, issueName, issueDescription, technicalDesign, verbose, } = options;
61
61
  const totalChecklistItems = checklistContext.checklists.reduce((sum, checklist) => sum + checklist.items.length, 0);
62
62
  const totalFeedbacks = feedbacksContext?.feedbacks?.length || 0;
63
63
  const hasFeedbacks = totalFeedbacks > 0;
@@ -73,9 +73,9 @@ export async function verifyTechnicalDesignCompliance(options, _config) {
73
73
  const verificationPrompt = await createTechnicalDesignVerificationPrompt({
74
74
  checklistContext,
75
75
  feedbacksContext: feedbacksContext || undefined,
76
- featureId,
77
- featureName,
78
- featureDescription,
76
+ issueId,
77
+ issueName,
78
+ issueDescription,
79
79
  technicalDesign,
80
80
  });
81
81
  let lastAssistantResponse = '';
@@ -3,7 +3,7 @@ import { type FeedbacksContext } from '../../services/feedbacks.js';
3
3
  import { type EdsgerConfig } from '../../types/index.js';
4
4
  import { type ChecklistVerificationResult } from '../technical-design-verification/agent.js';
5
5
  export interface TechnicalDesignResult {
6
- featureId: string;
6
+ issueId: string;
7
7
  technicalDesign: string | null;
8
8
  status: 'success' | 'error';
9
9
  summary: string;
@@ -26,9 +26,9 @@ export interface TechnicalDesignVerificationOptions {
26
26
  technicalDesign: string;
27
27
  checklistContext: ChecklistPhaseContext | null;
28
28
  feedbacksContext: FeedbacksContext | null;
29
- featureId: string;
30
- featureName: string;
31
- featureDescription: string | undefined;
29
+ issueId: string;
30
+ issueName: string;
31
+ issueDescription: string | undefined;
32
32
  config: EdsgerConfig;
33
33
  currentIteration: number;
34
34
  maxIterations: number;
@@ -1,4 +1,4 @@
1
- import { logFeatureVerificationEvent } from '../../services/audit-logs.js';
1
+ import { logIssueVerificationEvent } from '../../services/audit-logs.js';
2
2
  import { processChecklistItemResultsFromResponse, } from '../../services/checklist.js';
3
3
  import { resolveFeedbacks, } from '../../services/feedbacks.js';
4
4
  import { logError, logInfo } from '../../utils/logger.js';
@@ -6,7 +6,7 @@ import { createTechnicalDesignImprovementPrompt } from '../technical-design/prom
6
6
  import { verifyTechnicalDesignCompliance, } from '../technical-design-verification/agent.js';
7
7
  // eslint-disable-next-line complexity -- orchestration function coordinating design verification and improvement cycles
8
8
  export async function performVerificationCycle(opts) {
9
- const { technicalDesign, checklistContext, feedbacksContext, featureId, featureName, featureDescription, config, currentIteration, maxIterations, verbose, } = opts;
9
+ const { technicalDesign, checklistContext, feedbacksContext, issueId, issueName, issueDescription, config, currentIteration, maxIterations, verbose, } = opts;
10
10
  // No verification needed if no checklist context
11
11
  if (!checklistContext || checklistContext.checklists.length === 0) {
12
12
  return { passed: true, verificationResult: null };
@@ -17,9 +17,9 @@ export async function performVerificationCycle(opts) {
17
17
  const verificationResult = await verifyTechnicalDesignCompliance({
18
18
  checklistContext,
19
19
  feedbacksContext,
20
- featureId,
21
- featureName,
22
- featureDescription,
20
+ issueId,
21
+ issueName,
22
+ issueDescription,
23
23
  technicalDesign,
24
24
  verbose,
25
25
  }, config);
@@ -36,8 +36,8 @@ export async function performVerificationCycle(opts) {
36
36
  }
37
37
  }
38
38
  // Log verification success
39
- await logFeatureVerificationEvent({
40
- featureId,
39
+ await logIssueVerificationEvent({
40
+ issueId,
41
41
  phase: 'technical_design',
42
42
  iteration: currentIteration,
43
43
  result: 'success',
@@ -55,7 +55,7 @@ export async function performVerificationCycle(opts) {
55
55
  value: item.verification_status,
56
56
  notes: item.verification_reason || undefined,
57
57
  }));
58
- await processChecklistItemResultsFromResponse({ featureId }, 'technical_design', checklistItemResults, verbose);
58
+ await processChecklistItemResultsFromResponse({ issueId }, 'technical_design', checklistItemResults, verbose);
59
59
  // Mark confirmed feedbacks as resolved
60
60
  if (verificationResult.feedback_verifications &&
61
61
  verificationResult.feedback_verifications.length > 0) {
@@ -63,7 +63,7 @@ export async function performVerificationCycle(opts) {
63
63
  .filter((fb) => fb.verification_status === 'confirmed')
64
64
  .map((fb) => fb.feedback_id);
65
65
  if (confirmedFeedbackIds.length > 0) {
66
- await resolveFeedbacks({ featureId }, confirmedFeedbackIds, verbose);
66
+ await resolveFeedbacks({ issueId }, confirmedFeedbackIds, verbose);
67
67
  }
68
68
  }
69
69
  return { passed: true, verificationResult };
@@ -78,8 +78,8 @@ export async function performVerificationCycle(opts) {
78
78
  }
79
79
  logError(`❌ Iteration ${currentIteration}: Verification FAILED - ${errorMessages.join('; ')}`);
80
80
  // Log verification failure with improvement suggestions
81
- await logFeatureVerificationEvent({
82
- featureId,
81
+ await logIssueVerificationEvent({
82
+ issueId,
83
83
  phase: 'technical_design',
84
84
  iteration: currentIteration,
85
85
  result: 'error',
@@ -147,6 +147,6 @@ export async function performVerificationCycle(opts) {
147
147
  value: item.verification_status,
148
148
  notes: item.verification_reason || undefined,
149
149
  }));
150
- await processChecklistItemResultsFromResponse({ featureId }, 'technical_design', checklistItemResults, verbose);
150
+ await processChecklistItemResultsFromResponse({ issueId }, 'technical_design', checklistItemResults, verbose);
151
151
  return { passed: false, verificationResult };
152
152
  }
@@ -4,9 +4,9 @@ export declare const createTechnicalDesignVerificationSystemPrompt: (projectDir?
4
4
  export interface TechnicalDesignVerificationPromptOptions {
5
5
  checklistContext: ChecklistPhaseContext;
6
6
  feedbacksContext?: FeedbacksContext;
7
- featureId: string;
8
- featureName: string;
9
- featureDescription?: string;
7
+ issueId: string;
8
+ issueName: string;
9
+ issueDescription?: string;
10
10
  technicalDesign: string;
11
11
  }
12
12
  export declare const createTechnicalDesignVerificationPrompt: (options: TechnicalDesignVerificationPromptOptions) => Promise<string>;
@@ -13,7 +13,7 @@ export const createTechnicalDesignVerificationSystemPrompt = async (projectDir)
13
13
  ${OUTPUT_CONTRACTS['technical-design-verification']}`;
14
14
  };
15
15
  export const createTechnicalDesignVerificationPrompt = async (options) => {
16
- const { checklistContext, feedbacksContext, featureId, featureName, featureDescription, technicalDesign, } = options;
16
+ const { checklistContext, feedbacksContext, issueId, issueName, issueDescription, technicalDesign, } = options;
17
17
  // Format all checklist items with their requirements
18
18
  const checklistItemsSection = checklistContext.checklists
19
19
  .flatMap((checklist) => checklist.items.map((item) => {
@@ -37,7 +37,7 @@ export const createTechnicalDesignVerificationPrompt = async (options) => {
37
37
  if (!feedback.content) {
38
38
  return feedback;
39
39
  }
40
- const { processedMarkdown } = await downloadImagesForClaudeCode(feedback.content, featureId);
40
+ const { processedMarkdown } = await downloadImagesForClaudeCode(feedback.content, issueId);
41
41
  return { ...feedback, content: processedMarkdown };
42
42
  }));
43
43
  feedbacksSection = `
@@ -64,11 +64,11 @@ ${processedFeedbacks
64
64
 
65
65
  You are verifying that a technical design document satisfies checklist requirements${totalFeedbacks > 0 ? ' and addresses human feedbacks' : ''}.
66
66
 
67
- ## Feature Context
67
+ ## Issue Context
68
68
 
69
- **Feature**: ${featureName}
70
- **Feature ID**: ${featureId}
71
- **Description**: ${featureDescription || 'No description'}
69
+ **Issue**: ${issueName}
70
+ **Issue ID**: ${issueId}
71
+ **Description**: ${issueDescription || 'No description'}
72
72
 
73
73
  ## Technical Design Document
74
74
 
@@ -1,15 +1,15 @@
1
1
  import { type ProductInfo } from '../../api/products.js';
2
2
  import { type ChecklistPhaseContext } from '../../services/checklist.js';
3
- import type { FeatureInfo, TestCase, UserStory } from '../../types/features.js';
3
+ import type { IssueInfo, TestCase, UserStory } from '../../types/issues.js';
4
4
  export interface TestCasesAnalysisContext {
5
- feature: FeatureInfo;
5
+ issue: IssueInfo;
6
6
  product: ProductInfo;
7
7
  existing_user_stories: UserStory[];
8
8
  existing_test_cases: TestCase[];
9
9
  }
10
- export declare function fetchTestCasesAnalysisContext(featureId: string, verbose?: boolean): Promise<TestCasesAnalysisContext>;
11
- export declare function prepareTestCasesAnalysisContext(featureId: string, checklistContext: ChecklistPhaseContext | null | undefined, verbose?: boolean): Promise<{
12
- featureContext: TestCasesAnalysisContext;
10
+ export declare function fetchTestCasesAnalysisContext(issueId: string, verbose?: boolean): Promise<TestCasesAnalysisContext>;
11
+ export declare function prepareTestCasesAnalysisContext(issueId: string, checklistContext: ChecklistPhaseContext | null | undefined, verbose?: boolean): Promise<{
12
+ issueContext: TestCasesAnalysisContext;
13
13
  analysisPrompt: string;
14
14
  hasFeedbacks: boolean;
15
15
  }>;
@@ -1,30 +1,30 @@
1
- import { getFeature, getTestCases, getUserStories, } from '../../api/features/index.js';
1
+ import { getIssue, getTestCases, getUserStories, } from '../../api/issues/index.js';
2
2
  import { getProduct } from '../../api/products.js';
3
3
  import { formatChecklistsForContext, } from '../../services/checklist.js';
4
4
  import { formatFeedbacksForContext, getFeedbacksForPhase, } from '../../services/feedbacks.js';
5
5
  import { logError, logInfo } from '../../utils/logger.js';
6
6
  import { formatTestCasesAnalysisContext } from './formatters.js';
7
7
  import { createTestCasesAnalysisPromptWithContext, createTestCasesFeedbackFocusedPromptWithContext, } from './prompts.js';
8
- export async function fetchTestCasesAnalysisContext(featureId, verbose) {
8
+ export async function fetchTestCasesAnalysisContext(issueId, verbose) {
9
9
  try {
10
10
  if (verbose) {
11
- logInfo(`Fetching test cases analysis context for feature: ${featureId}`);
11
+ logInfo(`Fetching test cases analysis context for issue: ${issueId}`);
12
12
  }
13
- const [feature, existingUserStories, existingTestCases] = await Promise.all([
14
- getFeature(featureId, verbose),
15
- getUserStories(featureId, verbose),
16
- getTestCases(featureId, verbose),
13
+ const [issue, existingUserStories, existingTestCases] = await Promise.all([
14
+ getIssue(issueId, verbose),
15
+ getUserStories(issueId, verbose),
16
+ getTestCases(issueId, verbose),
17
17
  ]);
18
- const product = await getProduct(feature.product_id, verbose);
18
+ const product = await getProduct(issue.product_id, verbose);
19
19
  if (verbose) {
20
20
  logInfo(`✅ Test cases analysis context fetched successfully:`);
21
- logInfo(` Feature: ${feature.name}`);
21
+ logInfo(` Issue: ${issue.name}`);
22
22
  logInfo(` Product: ${product.name}`);
23
23
  logInfo(` User Stories: ${existingUserStories.length}`);
24
24
  logInfo(` Existing Test Cases: ${existingTestCases.length}`);
25
25
  }
26
26
  return {
27
- feature,
27
+ issue,
28
28
  product,
29
29
  existing_user_stories: existingUserStories,
30
30
  existing_test_cases: existingTestCases,
@@ -36,12 +36,12 @@ export async function fetchTestCasesAnalysisContext(featureId, verbose) {
36
36
  throw new Error(`Context fetch failed: ${errorMessage}`);
37
37
  }
38
38
  }
39
- export async function prepareTestCasesAnalysisContext(featureId, checklistContext, verbose) {
39
+ export async function prepareTestCasesAnalysisContext(issueId, checklistContext, verbose) {
40
40
  if (verbose) {
41
41
  logInfo('Fetching test cases analysis context via MCP endpoints...');
42
42
  }
43
- const featureContext = await fetchTestCasesAnalysisContext(featureId, verbose);
44
- const { content: contextInfo, downloadedImages } = await formatTestCasesAnalysisContext(featureContext);
43
+ const issueContext = await fetchTestCasesAnalysisContext(issueId, verbose);
44
+ const { content: contextInfo, downloadedImages } = await formatTestCasesAnalysisContext(issueContext);
45
45
  if (verbose && downloadedImages.length > 0) {
46
46
  logInfo(`Downloaded ${downloadedImages.length} images for Claude Code:`);
47
47
  downloadedImages.forEach((img) => {
@@ -52,7 +52,7 @@ export async function prepareTestCasesAnalysisContext(featureId, checklistContex
52
52
  let hasFeedbacks = false;
53
53
  // Add feedbacks context
54
54
  try {
55
- const feedbacksContext = await getFeedbacksForPhase({ featureId, verbose }, 'test-cases-analysis');
55
+ const feedbacksContext = await getFeedbacksForPhase({ issueId, verbose }, 'test-cases-analysis');
56
56
  if (feedbacksContext.feedbacks.length > 0) {
57
57
  hasFeedbacks = true;
58
58
  const feedbacksInfo = await formatFeedbacksForContext(feedbacksContext);
@@ -75,12 +75,12 @@ export async function prepareTestCasesAnalysisContext(featureId, checklistContex
75
75
  logInfo(`Added ${checklistContext.checklists.length} checklists to analysis context`);
76
76
  }
77
77
  }
78
- const hasExistingArtifacts = featureContext.existing_test_cases.length > 0;
78
+ const hasExistingArtifacts = issueContext.existing_test_cases.length > 0;
79
79
  const analysisPrompt = hasFeedbacks && hasExistingArtifacts
80
- ? createTestCasesFeedbackFocusedPromptWithContext(featureId, finalContextInfo)
81
- : createTestCasesAnalysisPromptWithContext(featureId, finalContextInfo);
80
+ ? createTestCasesFeedbackFocusedPromptWithContext(issueId, finalContextInfo)
81
+ : createTestCasesAnalysisPromptWithContext(issueId, finalContextInfo);
82
82
  if (verbose && hasFeedbacks && hasExistingArtifacts) {
83
83
  logInfo('Using feedback-focused prompt (re-run with human feedbacks detected)');
84
84
  }
85
- return { featureContext, analysisPrompt, hasFeedbacks };
85
+ return { issueContext, analysisPrompt, hasFeedbacks };
86
86
  }
@@ -1,18 +1,18 @@
1
1
  import { formatTestCases, formatUserStories } from '../../utils/formatters.js';
2
2
  import { downloadImagesForClaudeCode, } from '../../utils/image-downloader.js';
3
3
  export async function formatTestCasesAnalysisContext(context) {
4
- const { processedMarkdown, downloadedImages } = await downloadImagesForClaudeCode(context.feature.description || 'No description provided', context.feature.id);
4
+ const { processedMarkdown, downloadedImages } = await downloadImagesForClaudeCode(context.issue.description || 'No description provided', context.issue.id);
5
5
  const content = `# Test Cases Analysis Context
6
6
 
7
- ## Feature Information
8
- - **ID**: ${context.feature.id}
9
- - **Name**: ${context.feature.name}
7
+ ## Issue Information
8
+ - **ID**: ${context.issue.id}
9
+ - **Name**: ${context.issue.name}
10
10
  - **Description**:
11
11
  ${processedMarkdown}
12
12
 
13
13
  ${downloadedImages.length > 0 ? '**IMPORTANT**: The description contains images that have been downloaded locally. Please use the Read tool to view these images to fully understand the requirements.' : ''}
14
14
 
15
- - **Current Status**: ${context.feature.status}
15
+ - **Current Status**: ${context.issue.status}
16
16
 
17
17
  ## Product Information
18
18
  - **Product**: ${context.product.name}
@@ -26,10 +26,10 @@ ${formatUserStories(context.existing_user_stories)}
26
26
  ${formatTestCases(context.existing_test_cases)}
27
27
 
28
28
  ## Current Technical Design
29
- ${context.feature.technical_design || 'No technical design available yet'}
29
+ ${context.issue.technical_design || 'No technical design available yet'}
30
30
 
31
31
  ---
32
32
 
33
- **Analysis Instructions**: Based on the above feature information, user stories, and existing test cases, create comprehensive test cases that ensure thorough testing coverage.`;
33
+ **Analysis Instructions**: Based on the above issue information, user stories, and existing test cases, create comprehensive test cases that ensure thorough testing coverage.`;
34
34
  return { content, downloadedImages };
35
35
  }
@@ -2,7 +2,7 @@ import { type ChecklistPhaseContext } from '../../services/checklist.js';
2
2
  import { type EdsgerConfig } from '../../types/index.js';
3
3
  import { type TestCasesAnalysisResult } from './outcome.js';
4
4
  export interface TestCasesAnalysisOptions {
5
- featureId: string;
5
+ issueId: string;
6
6
  verbose?: boolean;
7
7
  maxVerificationIterations?: number;
8
8
  }
@@ -1,24 +1,24 @@
1
- import { logFeaturePhaseEvent } from '../../services/audit-logs.js';
1
+ import { logIssuePhaseEvent } from '../../services/audit-logs.js';
2
2
  import { extractChecklistItems, runPhaseCoaching, } from '../../services/coaching/index.js';
3
3
  import { logError, logInfo, logWarning } from '../../utils/logger.js';
4
- import { performVerificationCycle } from '../feature-analysis-verification/index.js';
4
+ import { performVerificationCycle } from '../issue-analysis-verification/index.js';
5
5
  import { executeTestCasesAnalysisQuery, parseAnalysisResult } from './agent.js';
6
6
  import { prepareTestCasesAnalysisContext } from './context.js';
7
7
  import { buildTestCasesAnalysisResult, deleteSpecificTestCases, deleteTestCaseArtifacts, getAllDraftTestCaseIds, resetReadyTestCasesToDraft, saveTestCasesAsDraft, updateTestCasesToReady, } from './outcome.js';
8
8
  import { createTestCasesAnalysisSystemPrompt } from './prompts.js';
9
9
  // eslint-disable-next-line complexity
10
10
  export const analyseTestCases = async (options, config, checklistContext) => {
11
- const { featureId, verbose } = options;
11
+ const { issueId, verbose } = options;
12
12
  if (verbose) {
13
- logInfo(`Starting test cases analysis for feature ID: ${featureId}`);
13
+ logInfo(`Starting test cases analysis for issue ID: ${issueId}`);
14
14
  }
15
15
  try {
16
16
  // Reset pending_approval test cases to draft so AI can manage them on re-run
17
- const resetCount = await resetReadyTestCasesToDraft(featureId, verbose);
17
+ const resetCount = await resetReadyTestCasesToDraft(issueId, verbose);
18
18
  if (verbose && resetCount > 0) {
19
19
  logInfo(`✅ Reset ${resetCount} pending_approval test cases to draft for re-analysis`);
20
20
  }
21
- const context = await prepareTestCasesAnalysisContext(featureId, checklistContext, verbose);
21
+ const context = await prepareTestCasesAnalysisContext(issueId, checklistContext, verbose);
22
22
  const systemPrompt = await createTestCasesAnalysisSystemPrompt();
23
23
  const initialAnalysisPrompt = context.analysisPrompt;
24
24
  const maxIterations = options.maxVerificationIterations || 10;
@@ -37,8 +37,8 @@ export const analyseTestCases = async (options, config, checklistContext) => {
37
37
  logInfo(`\n🔄 Iteration ${currentIteration}/${maxIterations}: Improving test cases based on verification feedback...`);
38
38
  }
39
39
  if (currentIteration > 1) {
40
- await logFeaturePhaseEvent({
41
- featureId,
40
+ await logIssuePhaseEvent({
41
+ issueId,
42
42
  eventType: 'phase_started',
43
43
  phase: 'test_cases_analysis',
44
44
  result: 'info',
@@ -54,8 +54,8 @@ export const analyseTestCases = async (options, config, checklistContext) => {
54
54
  if (!structuredAnalysisResult) {
55
55
  break;
56
56
  }
57
- await logFeaturePhaseEvent({
58
- featureId,
57
+ await logIssuePhaseEvent({
58
+ issueId,
59
59
  eventType: 'phase_completed',
60
60
  phase: 'test_cases_analysis',
61
61
  result: 'success',
@@ -73,14 +73,14 @@ export const analyseTestCases = async (options, config, checklistContext) => {
73
73
  if (verbose) {
74
74
  logInfo('🗑️ Processing test case deletions identified by AI...');
75
75
  }
76
- await deleteSpecificTestCases(featureId, structuredAnalysisResult.deleted_test_case_ids || [], structuredAnalysisResult.deletion_reasons || {}, verbose);
76
+ await deleteSpecificTestCases(issueId, structuredAnalysisResult.deleted_test_case_ids || [], structuredAnalysisResult.deletion_reasons || {}, verbose);
77
77
  }
78
78
  // Save test cases as draft
79
- const { testCaseIds } = await saveTestCasesAsDraft(featureId, structuredAnalysisResult.created_test_cases || [], verbose);
79
+ const { testCaseIds } = await saveTestCasesAsDraft(issueId, structuredAnalysisResult.created_test_cases || [], verbose);
80
80
  currentDraftTestCaseIds = testCaseIds;
81
81
  // Coaching loop between execute and verify
82
82
  await runPhaseCoaching({
83
- featureId,
83
+ issueId,
84
84
  phase: 'test_cases_analysis',
85
85
  phaseResult: structuredAnalysisResult,
86
86
  checklistItems: extractChecklistItems(checklistContext),
@@ -88,7 +88,7 @@ export const analyseTestCases = async (options, config, checklistContext) => {
88
88
  const parsed = parseAnalysisResult(responseText);
89
89
  if (parsed.analysis) {
90
90
  await deleteTestCaseArtifacts(currentDraftTestCaseIds, verbose);
91
- const { testCaseIds: newTestCaseIds } = await saveTestCasesAsDraft(featureId, parsed.analysis.created_test_cases || [], verbose);
91
+ const { testCaseIds: newTestCaseIds } = await saveTestCasesAsDraft(issueId, parsed.analysis.created_test_cases || [], verbose);
92
92
  currentDraftTestCaseIds = newTestCaseIds;
93
93
  structuredAnalysisResult = parsed.analysis;
94
94
  }
@@ -105,11 +105,11 @@ export const analyseTestCases = async (options, config, checklistContext) => {
105
105
  created_user_stories: [],
106
106
  },
107
107
  checklistContext: checklistContext || null,
108
- context: context.featureContext,
108
+ context: context.issueContext,
109
109
  config,
110
110
  currentIteration,
111
111
  maxIterations,
112
- featureId,
112
+ issueId,
113
113
  verbose,
114
114
  });
115
115
  ({ verificationResult } = verificationCycle);
@@ -118,7 +118,7 @@ export const analyseTestCases = async (options, config, checklistContext) => {
118
118
  logInfo('✅ Verification passed! Updating all draft test cases to pending_approval status...');
119
119
  }
120
120
  // Update ALL remaining draft test cases (both kept old ones and newly created)
121
- const allDraftIds = await getAllDraftTestCaseIds(featureId, verbose);
121
+ const allDraftIds = await getAllDraftTestCaseIds(issueId, verbose);
122
122
  await updateTestCasesToReady(allDraftIds, verbose);
123
123
  break;
124
124
  }
@@ -143,7 +143,7 @@ export const analyseTestCases = async (options, config, checklistContext) => {
143
143
  if (!checklistContext ||
144
144
  checklistContext.checklists.length === 0 ||
145
145
  !verificationResult) {
146
- const allDraftIds = await getAllDraftTestCaseIds(featureId, verbose);
146
+ const allDraftIds = await getAllDraftTestCaseIds(issueId, verbose);
147
147
  if (allDraftIds.length > 0) {
148
148
  if (verbose) {
149
149
  logInfo('✅ No checklist verification needed. Updating all draft test cases to pending_approval status...');
@@ -159,14 +159,14 @@ export const analyseTestCases = async (options, config, checklistContext) => {
159
159
  logError(` Draft test cases (${currentDraftTestCaseIds.length}) kept for manual review`);
160
160
  throw new Error(`Checklist verification failed after ${currentIteration} iterations`);
161
161
  }
162
- return buildTestCasesAnalysisResult(featureId, context.featureContext, structuredAnalysisResult, currentIteration);
162
+ return buildTestCasesAnalysisResult(issueId, context.issueContext, structuredAnalysisResult, currentIteration);
163
163
  }
164
164
  catch (error) {
165
165
  logError(`Test cases analysis failed: ${error instanceof Error ? error.message : String(error)}`);
166
166
  return {
167
- featureId,
167
+ issueId,
168
168
  productInfo: null,
169
- featureInfo: null,
169
+ issueInfo: null,
170
170
  existingTestCases: [],
171
171
  createdTestCases: [],
172
172
  summary: `Analysis failed: ${error instanceof Error ? error.message : String(error)}`,
@@ -1,16 +1,16 @@
1
1
  import { type TestCasesAnalysisContext } from './context.js';
2
- export declare function resetReadyTestCasesToDraft(featureId: string, verbose?: boolean): Promise<number>;
3
- export declare function getAllDraftTestCaseIds(featureId: string, verbose?: boolean): Promise<string[]>;
2
+ export declare function resetReadyTestCasesToDraft(issueId: string, verbose?: boolean): Promise<number>;
3
+ export declare function getAllDraftTestCaseIds(issueId: string, verbose?: boolean): Promise<string[]>;
4
4
  export declare function deleteTestCaseArtifacts(testCaseIds: string[], verbose?: boolean): Promise<void>;
5
- export declare function deleteSpecificTestCases(featureId: string, deletedTestCaseIds: string[], deletionReasons: Record<string, string>, verbose?: boolean): Promise<void>;
5
+ export declare function deleteSpecificTestCases(issueId: string, deletedTestCaseIds: string[], deletionReasons: Record<string, string>, verbose?: boolean): Promise<void>;
6
6
  export declare function updateTestCasesToReady(testCaseIds: string[], verbose?: boolean): Promise<void>;
7
- export declare function saveTestCasesAsDraft(featureId: string, createdTestCases: any[], verbose?: boolean): Promise<{
7
+ export declare function saveTestCasesAsDraft(issueId: string, createdTestCases: any[], verbose?: boolean): Promise<{
8
8
  testCaseIds: string[];
9
9
  }>;
10
10
  export interface TestCasesAnalysisResult {
11
- featureId: string;
11
+ issueId: string;
12
12
  productInfo: unknown;
13
- featureInfo: unknown;
13
+ issueInfo: unknown;
14
14
  existingTestCases: any[];
15
15
  createdTestCases: any[];
16
16
  summary: string;
@@ -24,4 +24,4 @@ export interface TestCasesAnalysisResult {
24
24
  deletion_reasons?: Record<string, string>;
25
25
  };
26
26
  }
27
- export declare function buildTestCasesAnalysisResult(featureId: string, context: TestCasesAnalysisContext, structuredAnalysisResult: any, currentIteration: number): TestCasesAnalysisResult;
27
+ export declare function buildTestCasesAnalysisResult(issueId: string, context: TestCasesAnalysisContext, structuredAnalysisResult: any, currentIteration: number): TestCasesAnalysisResult;
@@ -1,8 +1,8 @@
1
- import { batchDeleteTestCases, batchUpdateTestCaseStatus, getTestCases, } from '../../api/features/index.js';
1
+ import { batchDeleteTestCases, batchUpdateTestCaseStatus, getTestCases, } from '../../api/issues/index.js';
2
2
  import { callMcpEndpoint } from '../../api/mcp-client.js';
3
3
  import { logError, logInfo } from '../../utils/logger.js';
4
- export async function resetReadyTestCasesToDraft(featureId, verbose) {
5
- const testCases = await getTestCases(featureId, false);
4
+ export async function resetReadyTestCasesToDraft(issueId, verbose) {
5
+ const testCases = await getTestCases(issueId, false);
6
6
  const readyIds = testCases
7
7
  .filter((tc) => tc.status === 'pending_approval')
8
8
  .map((tc) => tc.id);
@@ -15,13 +15,13 @@ export async function resetReadyTestCasesToDraft(featureId, verbose) {
15
15
  await batchUpdateTestCaseStatus(readyIds, 'draft', verbose);
16
16
  return readyIds.length;
17
17
  }
18
- export async function getAllDraftTestCaseIds(featureId, verbose) {
19
- const testCases = await getTestCases(featureId, false);
18
+ export async function getAllDraftTestCaseIds(issueId, verbose) {
19
+ const testCases = await getTestCases(issueId, false);
20
20
  const draftIds = testCases
21
21
  .filter((tc) => tc.status === 'draft')
22
22
  .map((tc) => tc.id);
23
23
  if (verbose) {
24
- logInfo(`Found ${draftIds.length} draft test cases for feature`);
24
+ logInfo(`Found ${draftIds.length} draft test cases for issue`);
25
25
  }
26
26
  return draftIds;
27
27
  }
@@ -37,8 +37,8 @@ function isValidUUID(id) {
37
37
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
38
38
  return uuidRegex.test(id);
39
39
  }
40
- export async function deleteSpecificTestCases(featureId, deletedTestCaseIds, deletionReasons, verbose) {
41
- const currentTestCases = await getTestCases(featureId, false);
40
+ export async function deleteSpecificTestCases(issueId, deletedTestCaseIds, deletionReasons, verbose) {
41
+ const currentTestCases = await getTestCases(issueId, false);
42
42
  const testCaseStatusMap = new Map(currentTestCases.map((testCase) => [testCase.id, testCase.status]));
43
43
  const validTestCaseIds = deletedTestCaseIds.filter((id) => {
44
44
  if (!isValidUUID(id)) {
@@ -75,7 +75,7 @@ export async function updateTestCasesToReady(testCaseIds, verbose) {
75
75
  await batchUpdateTestCaseStatus(testCaseIds, 'pending_approval', verbose);
76
76
  }
77
77
  }
78
- export async function saveTestCasesAsDraft(featureId,
78
+ export async function saveTestCasesAsDraft(issueId,
79
79
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
80
  createdTestCases, verbose) {
81
81
  const testCaseIds = [];
@@ -85,7 +85,7 @@ createdTestCases, verbose) {
85
85
  }
86
86
  try {
87
87
  const result = (await callMcpEndpoint('test_cases/create', {
88
- feature_id: featureId,
88
+ issue_id: issueId,
89
89
  test_cases: createdTestCases.map((testCase) => ({
90
90
  name: testCase.name,
91
91
  description: testCase.description,
@@ -109,14 +109,14 @@ createdTestCases, verbose) {
109
109
  }
110
110
  return { testCaseIds };
111
111
  }
112
- export function buildTestCasesAnalysisResult(featureId, context,
112
+ export function buildTestCasesAnalysisResult(issueId, context,
113
113
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
114
114
  structuredAnalysisResult, currentIteration) {
115
115
  const { created_test_cases, deleted_test_case_ids, deletion_reasons, checklist_results, checklist_item_results, } = structuredAnalysisResult;
116
116
  return {
117
- featureId,
117
+ issueId,
118
118
  productInfo: context.product,
119
- featureInfo: context.feature,
119
+ issueInfo: context.issue,
120
120
  existingTestCases: context.existing_test_cases.map((testCase) => ({
121
121
  ...testCase,
122
122
  created_at: testCase.created_at || new Date().toISOString(),