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
@@ -5,7 +5,7 @@
5
5
  import { type PipelinePhaseOptions } from '../types/pipeline.js';
6
6
  export interface Branch {
7
7
  id: string;
8
- feature_id: string;
8
+ issue_id: string;
9
9
  name: string;
10
10
  description: string | null;
11
11
  branch_name: string | null;
@@ -24,11 +24,11 @@ export interface CreateBranchInput {
24
24
  status?: Branch['status'];
25
25
  }
26
26
  /**
27
- * List all branches for a feature
27
+ * List all branches for an issue
28
28
  */
29
29
  export declare function getBranches(options: PipelinePhaseOptions): Promise<Branch[]>;
30
30
  /**
31
- * Get the current active branch for a feature
31
+ * Get the current active branch for an issue
32
32
  */
33
33
  export declare function getCurrentBranch(options: PipelinePhaseOptions): Promise<Branch | null>;
34
34
  /**
@@ -38,9 +38,9 @@ export declare function createBranches(options: PipelinePhaseOptions, branches:
38
38
  /**
39
39
  * Update a branch
40
40
  */
41
- export declare function updateBranch(branchId: string, updates: Partial<Omit<Branch, 'id' | 'feature_id' | 'created_at' | 'updated_at'>>, verbose?: boolean): Promise<Branch>;
41
+ export declare function updateBranch(branchId: string, updates: Partial<Omit<Branch, 'id' | 'issue_id' | 'created_at' | 'updated_at'>>, verbose?: boolean): Promise<Branch>;
42
42
  /**
43
- * Clear all branches for a feature (used before re-planning)
43
+ * Clear all branches for an issue (used before re-planning)
44
44
  */
45
45
  export declare function clearBranches(options: PipelinePhaseOptions, force?: boolean): Promise<number>;
46
46
  /**
@@ -48,7 +48,7 @@ export declare function clearBranches(options: PipelinePhaseOptions, force?: boo
48
48
  */
49
49
  export declare function formatBranchesForContext(branches: Branch[]): string;
50
50
  /**
51
- * Check if feature has multiple branches planned
51
+ * Check if issue has multiple branches planned
52
52
  */
53
53
  export declare function hasMultipleBranches(options: PipelinePhaseOptions): Promise<boolean>;
54
54
  /**
@@ -5,15 +5,15 @@
5
5
  import { callMcpEndpoint } from '../api/mcp-client.js';
6
6
  import { logDebug, logInfo, logSuccess } from '../utils/logger.js';
7
7
  /**
8
- * List all branches for a feature
8
+ * List all branches for an issue
9
9
  */
10
10
  export async function getBranches(options) {
11
- const { featureId, verbose } = options;
11
+ const { issueId, verbose } = options;
12
12
  if (verbose) {
13
- logInfo(`Fetching branches for feature: ${featureId}`);
13
+ logInfo(`Fetching branches for issue: ${issueId}`);
14
14
  }
15
15
  const result = (await callMcpEndpoint('branches/list', {
16
- feature_id: featureId,
16
+ issue_id: issueId,
17
17
  }));
18
18
  const branches = result?.branches || [];
19
19
  if (verbose) {
@@ -22,15 +22,15 @@ export async function getBranches(options) {
22
22
  return branches;
23
23
  }
24
24
  /**
25
- * Get the current active branch for a feature
25
+ * Get the current active branch for an issue
26
26
  */
27
27
  export async function getCurrentBranch(options) {
28
- const { featureId, verbose } = options;
28
+ const { issueId, verbose } = options;
29
29
  if (verbose) {
30
- logInfo(`Getting current branch for feature: ${featureId}`);
30
+ logInfo(`Getting current branch for issue: ${issueId}`);
31
31
  }
32
32
  const result = (await callMcpEndpoint('branches/current', {
33
- feature_id: featureId,
33
+ issue_id: issueId,
34
34
  }));
35
35
  return result?.current_branch || null;
36
36
  }
@@ -38,12 +38,12 @@ export async function getCurrentBranch(options) {
38
38
  * Create branches
39
39
  */
40
40
  export async function createBranches(options, branches) {
41
- const { featureId, verbose } = options;
41
+ const { issueId, verbose } = options;
42
42
  if (verbose) {
43
- logInfo(`Creating ${branches.length} branches for feature: ${featureId}`);
43
+ logInfo(`Creating ${branches.length} branches for issue: ${issueId}`);
44
44
  }
45
45
  const result = (await callMcpEndpoint('branches/create', {
46
- feature_id: featureId,
46
+ issue_id: issueId,
47
47
  branches,
48
48
  }));
49
49
  const createdBranches = result?.created_branches || [];
@@ -72,15 +72,15 @@ export async function updateBranch(branchId, updates, verbose) {
72
72
  return result?.branch;
73
73
  }
74
74
  /**
75
- * Clear all branches for a feature (used before re-planning)
75
+ * Clear all branches for an issue (used before re-planning)
76
76
  */
77
77
  export async function clearBranches(options, force = false) {
78
- const { featureId, verbose } = options;
78
+ const { issueId, verbose } = options;
79
79
  if (verbose) {
80
- logInfo(`Clearing branches for feature: ${featureId}`);
80
+ logInfo(`Clearing branches for issue: ${issueId}`);
81
81
  }
82
82
  const result = (await callMcpEndpoint('branches/clear', {
83
- feature_id: featureId,
83
+ issue_id: issueId,
84
84
  force,
85
85
  }));
86
86
  const deletedCount = result?.deleted_count || 0;
@@ -137,7 +137,7 @@ In Progress: ${branches.filter((b) => b.status === 'in_progress').length}
137
137
  Pending: ${branches.filter((b) => b.status === 'pending').length}`;
138
138
  }
139
139
  /**
140
- * Check if feature has multiple branches planned
140
+ * Check if issue has multiple branches planned
141
141
  */
142
142
  export async function hasMultipleBranches(options) {
143
143
  const branches = await getBranches(options);
@@ -15,7 +15,7 @@ export interface ChecklistItem {
15
15
  export interface Checklist {
16
16
  id: string;
17
17
  product_id: string;
18
- feature_id: string | null;
18
+ issue_id: string | null;
19
19
  name: string;
20
20
  description: string | null;
21
21
  role: string;
@@ -36,12 +36,12 @@ export interface ChecklistValidation {
36
36
  }
37
37
  export interface ChecklistPhaseContext {
38
38
  phase: string;
39
- feature_id: string;
39
+ issue_id: string;
40
40
  checklists: Checklist[];
41
41
  }
42
42
  export interface ChecklistValidationResult {
43
43
  phase: string;
44
- feature_id: string;
44
+ issue_id: string;
45
45
  all_completed: boolean;
46
46
  checklists_validation: ChecklistValidation[];
47
47
  summary: string;
@@ -7,20 +7,20 @@ import { logDebug, logError, logInfo, logSuccess, logWarning, } from '../utils/l
7
7
  * Fetch checklists for a specific phase
8
8
  */
9
9
  export async function getChecklistsForPhase(options, phase) {
10
- const { featureId } = options;
10
+ const { issueId } = options;
11
11
  // Convert phase name from hyphen to underscore format for database compatibility
12
- // e.g., 'feature-analysis' -> 'feature_analysis'
12
+ // e.g., 'issue-analysis' -> 'issue_analysis'
13
13
  const dbPhase = phase.replace(/-/g, '_');
14
- logInfo(`Fetching checklists: phase="${phase}" (db: "${dbPhase}"), feature_id="${featureId}"`);
14
+ logInfo(`Fetching checklists: phase="${phase}" (db: "${dbPhase}"), issue_id="${issueId}"`);
15
15
  const result = await callMcpEndpoint('checklists/phase', {
16
- feature_id: featureId,
16
+ issue_id: issueId,
17
17
  phase: dbPhase,
18
18
  });
19
19
  // Handle empty result gracefully
20
20
  if (!result) {
21
21
  return {
22
22
  phase,
23
- feature_id: featureId,
23
+ issue_id: issueId,
24
24
  checklists: [],
25
25
  };
26
26
  }
@@ -30,11 +30,11 @@ export async function getChecklistsForPhase(options, phase) {
30
30
  * Validate checklist completion for a phase
31
31
  */
32
32
  export async function validateChecklistsForPhase(options, phase) {
33
- const { featureId } = options;
33
+ const { issueId } = options;
34
34
  // Convert phase name from hyphen to underscore format for database compatibility
35
35
  const dbPhase = phase.replace(/-/g, '_');
36
36
  const result = await callMcpEndpoint('checklists/validate', {
37
- feature_id: featureId,
37
+ issue_id: issueId,
38
38
  phase: dbPhase,
39
39
  });
40
40
  return result;
@@ -43,9 +43,9 @@ export async function validateChecklistsForPhase(options, phase) {
43
43
  * Create checklist results (mark as started/in-progress)
44
44
  */
45
45
  export async function createChecklistResult(options, checklistId, itemResults) {
46
- const { featureId } = options;
46
+ const { issueId } = options;
47
47
  return await callMcpEndpoint('checklist_results/create', {
48
- feature_id: featureId,
48
+ issue_id: issueId,
49
49
  checklist_id: checklistId,
50
50
  item_results: itemResults,
51
51
  });
@@ -105,9 +105,9 @@ export async function validateRequiredChecklistResults(options, phase, verbose)
105
105
  * Create checklist item result
106
106
  */
107
107
  export async function createChecklistItemResult(options, checklistItemId, isPassed, value, notes) {
108
- const { featureId } = options;
108
+ const { issueId } = options;
109
109
  return await callMcpEndpoint('checklist_item_results/create', {
110
- feature_id: featureId,
110
+ issue_id: issueId,
111
111
  checklist_item_id: checklistItemId,
112
112
  is_passed: isPassed,
113
113
  value,
@@ -21,7 +21,7 @@ function extractTextContent(content) {
21
21
  }
22
22
  /** JSON output format templates per phase category */
23
23
  const PHASE_JSON_TEMPLATES = {
24
- feature_analysis: `\`\`\`json
24
+ issue_analysis: `\`\`\`json
25
25
  {
26
26
  "analysis": {
27
27
  "created_user_stories": [{ "title": "...", "description": "..." }],
@@ -49,7 +49,7 @@ const PHASE_JSON_TEMPLATES = {
49
49
  technical_design: `\`\`\`json
50
50
  {
51
51
  "technical_design_result": {
52
- "feature_id": "...",
52
+ "issue_id": "...",
53
53
  "status": "success",
54
54
  "summary": "...",
55
55
  "technical_design": "The COMPLETE improved technical design in markdown"
@@ -18,7 +18,7 @@ import { type SelfRatingChecklistItem } from './self-rating.js';
18
18
  export type OnImprovedCallback = (executionSessionId: string, responseText: string) => Promise<void>;
19
19
  /** Options for the coaching loop */
20
20
  export interface CoachingLoopOptions {
21
- featureId: string;
21
+ issueId: string;
22
22
  phase: RatablePhase;
23
23
  /** The initial execution session ID (from the first phase execution) */
24
24
  executionSessionId: string;
@@ -70,7 +70,7 @@ export function isStagnant(ratings) {
70
70
  */
71
71
  // eslint-disable-next-line complexity -- coaching loop with rating, decision, and improvement cycles
72
72
  export async function runCoachingLoop(options) {
73
- const { featureId, phase, onImproved, checklistItems, verbose } = options;
73
+ const { issueId, phase, onImproved, checklistItems, verbose } = options;
74
74
  let { executionSessionId } = options;
75
75
  let coachingSessionId = null;
76
76
  const allRatings = [];
@@ -97,7 +97,7 @@ export async function runCoachingLoop(options) {
97
97
  }
98
98
  // Step 2: Write rating to DB (capture ID for coaching_analysis update)
99
99
  const ratingId = await createPhaseRating({
100
- featureId,
100
+ issueId,
101
101
  phase,
102
102
  rating,
103
103
  ratingType: 'ai_self',
@@ -14,7 +14,7 @@ import { type SelfRatingChecklistItem } from './self-rating.js';
14
14
  */
15
15
  export declare function extractChecklistItems(checklistContext?: ChecklistPhaseContext | null): SelfRatingChecklistItem[] | undefined;
16
16
  export interface PhaseCoachingParams {
17
- featureId: string;
17
+ issueId: string;
18
18
  phase: RatablePhase;
19
19
  /** The phase result object containing execution_session_id */
20
20
  phaseResult: WithExecutionSessionId;
@@ -37,7 +37,7 @@ export interface PhaseCoachingResult {
37
37
  *
38
38
  * Usage:
39
39
  * const { executionSessionId } = await runPhaseCoaching({
40
- * featureId,
40
+ * issueId,
41
41
  * phase: 'technical_design',
42
42
  * phaseResult: structuredResult,
43
43
  * onImproved: async () => { ... re-save output ... },
@@ -26,7 +26,7 @@ export function extractChecklistItems(checklistContext) {
26
26
  *
27
27
  * Usage:
28
28
  * const { executionSessionId } = await runPhaseCoaching({
29
- * featureId,
29
+ * issueId,
30
30
  * phase: 'technical_design',
31
31
  * phaseResult: structuredResult,
32
32
  * onImproved: async () => { ... re-save output ... },
@@ -34,7 +34,7 @@ export function extractChecklistItems(checklistContext) {
34
34
  * })
35
35
  */
36
36
  export async function runPhaseCoaching(params) {
37
- const { featureId, phase, phaseResult, onImproved, checklistItems, verbose } = params;
37
+ const { issueId, phase, phaseResult, onImproved, checklistItems, verbose } = params;
38
38
  const executionSessionId = phaseResult.execution_session_id;
39
39
  if (!executionSessionId) {
40
40
  if (verbose) {
@@ -43,7 +43,7 @@ export async function runPhaseCoaching(params) {
43
43
  return { executionSessionId: '', coaching: null };
44
44
  }
45
45
  const coachingResult = await runCoachingLoop({
46
- featureId,
46
+ issueId,
47
47
  phase,
48
48
  executionSessionId,
49
49
  onImproved,
@@ -28,7 +28,7 @@ const CODE_CRITERIA = [
28
28
  /** Get the evaluation criteria for a given phase */
29
29
  export function getCriteriaForPhase(phase) {
30
30
  switch (phase) {
31
- case 'feature_analysis':
31
+ case 'issue_analysis':
32
32
  case 'user_stories_analysis':
33
33
  case 'test_cases_analysis':
34
34
  return ANALYSIS_CRITERIA;
@@ -9,7 +9,7 @@ export type FeedbackTargetType = 'phase' | 'line' | 'range';
9
9
  export type DocumentType = 'technical_design' | 'code' | 'test_case' | 'user_story';
10
10
  export interface Feedback {
11
11
  id: string;
12
- feature_id: string | null;
12
+ issue_id: string | null;
13
13
  product_id: string | null;
14
14
  branch_id?: string | null;
15
15
  user_story_id?: string | null;
@@ -35,14 +35,14 @@ export interface Feedback {
35
35
  }
36
36
  export interface FeedbacksContext {
37
37
  phase: string;
38
- feature_id: string;
38
+ issue_id: string;
39
39
  branch_id?: string | null;
40
40
  feedbacks: Feedback[];
41
41
  }
42
42
  /**
43
43
  * Fetch feedbacks for a specific phase
44
- * Includes both feature-level and product-level feedbacks
45
- * For multi-branch features, can optionally filter by branch_id
44
+ * Includes both issue-level and product-level feedbacks
45
+ * For multi-branch issues, can optionally filter by branch_id
46
46
  */
47
47
  export declare function getFeedbacksForPhase(options: PipelinePhaseOptions, phase: string, branchId?: string | null): Promise<FeedbacksContext>;
48
48
  /**
@@ -7,28 +7,28 @@ import { downloadImagesForClaudeCode } from '../utils/image-downloader.js';
7
7
  import { logDebug, logError, logInfo, logSuccess, logWarning, } from '../utils/logger.js';
8
8
  /**
9
9
  * Fetch feedbacks for a specific phase
10
- * Includes both feature-level and product-level feedbacks
11
- * For multi-branch features, can optionally filter by branch_id
10
+ * Includes both issue-level and product-level feedbacks
11
+ * For multi-branch issues, can optionally filter by branch_id
12
12
  */
13
13
  export async function getFeedbacksForPhase(options, phase, branchId) {
14
- const { featureId, verbose } = options;
14
+ const { issueId, verbose } = options;
15
15
  const mcpServerUrl = getMcpServerUrl();
16
16
  const mcpToken = getMcpToken();
17
17
  // Convert phase name from hyphen to underscore format for database compatibility
18
- // e.g., 'feature-analysis' -> 'feature_analysis'
18
+ // e.g., 'issue-analysis' -> 'issue_analysis'
19
19
  const dbPhase = phase.replace(/-/g, '_');
20
20
  const requestBody = {
21
21
  jsonrpc: '2.0',
22
22
  id: 1,
23
23
  method: 'feedbacks/get',
24
24
  params: {
25
- feature_id: featureId,
25
+ issue_id: issueId,
26
26
  phase: dbPhase,
27
27
  ...(branchId ? { branch_id: branchId } : {}),
28
28
  },
29
29
  };
30
30
  if (verbose) {
31
- logInfo(`Fetching feedbacks: phase="${phase}" (db: "${dbPhase}"), feature_id="${featureId}"`);
31
+ logInfo(`Fetching feedbacks: phase="${phase}" (db: "${dbPhase}"), issue_id="${issueId}"`);
32
32
  logDebug(`Request body: ${JSON.stringify(requestBody, null, 2)}`, verbose);
33
33
  }
34
34
  const response = await fetch(`${mcpServerUrl}/mcp`, {
@@ -66,7 +66,7 @@ export async function getFeedbacksForPhase(options, phase, branchId) {
66
66
  }
67
67
  return {
68
68
  phase,
69
- feature_id: featureId,
69
+ issue_id: issueId,
70
70
  feedbacks: [],
71
71
  };
72
72
  }
@@ -88,7 +88,7 @@ export async function formatFeedbacksForContext(context) {
88
88
  if (!feedback.content) {
89
89
  return feedback;
90
90
  }
91
- const { processedMarkdown } = await downloadImagesForClaudeCode(feedback.content, context.feature_id);
91
+ const { processedMarkdown } = await downloadImagesForClaudeCode(feedback.content, context.issue_id);
92
92
  return { ...feedback, content: processedMarkdown };
93
93
  }));
94
94
  // Group feedbacks by type
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Bindings fetcher — retrieves phase hook bindings from Supabase via MCP
3
- * and manages a per-feature in-memory cache so bindings are fetched once
3
+ * and manages a per-issue in-memory cache so bindings are fetched once
4
4
  * per workflow execution, not once per phase.
5
5
  */
6
6
  import type { HookPoint, PhaseHookBinding, ResolvedHookBindings } from './types.js';
7
- export declare function cacheBindings(featureId: string, productId: string, bindings: readonly PhaseHookBinding[]): void;
8
- export declare function getCachedBindings(featureId: string): ResolvedHookBindings | null;
9
- export declare function clearBindingsCache(featureId: string): void;
7
+ export declare function cacheBindings(issueId: string, productId: string, bindings: readonly PhaseHookBinding[]): void;
8
+ export declare function getCachedBindings(issueId: string): ResolvedHookBindings | null;
9
+ export declare function clearBindingsCache(issueId: string): void;
10
10
  /**
11
11
  * Fetch all enabled hook bindings for a product from Supabase via MCP.
12
12
  */
@@ -1,24 +1,24 @@
1
1
  /**
2
2
  * Bindings fetcher — retrieves phase hook bindings from Supabase via MCP
3
- * and manages a per-feature in-memory cache so bindings are fetched once
3
+ * and manages a per-issue in-memory cache so bindings are fetched once
4
4
  * per workflow execution, not once per phase.
5
5
  */
6
6
  import { callMcpEndpoint } from '../../api/mcp-client.js';
7
7
  import { logDebug } from '../../utils/logger.js';
8
- // ---- Per-feature cache ----
8
+ // ---- Per-issue cache ----
9
9
  const bindingsCache = new Map();
10
- export function cacheBindings(featureId, productId, bindings) {
11
- bindingsCache.set(featureId, {
10
+ export function cacheBindings(issueId, productId, bindings) {
11
+ bindingsCache.set(issueId, {
12
12
  productId,
13
13
  bindings,
14
14
  fetchedAt: Date.now(),
15
15
  });
16
16
  }
17
- export function getCachedBindings(featureId) {
18
- return bindingsCache.get(featureId) ?? null;
17
+ export function getCachedBindings(issueId) {
18
+ return bindingsCache.get(issueId) ?? null;
19
19
  }
20
- export function clearBindingsCache(featureId) {
21
- bindingsCache.delete(featureId);
20
+ export function clearBindingsCache(issueId) {
21
+ bindingsCache.delete(issueId);
22
22
  }
23
23
  // ---- Fetching ----
24
24
  /**
@@ -20,7 +20,7 @@ export function buildHookPrompt(binding, context) {
20
20
  const sections = [
21
21
  '## Phase Hook Execution Context',
22
22
  '',
23
- `- **Feature ID**: ${context.featureId}`,
23
+ `- **Issue ID**: ${context.issueId}`,
24
24
  `- **Phase**: ${context.phase}`,
25
25
  `- **Hook Point**: ${context.hookPoint}`,
26
26
  `- **Plugin**: ${binding.plugin_name}`,
@@ -4,11 +4,11 @@
4
4
  */
5
5
  import type { HookExecutionResult, PhaseHookBinding } from './types.js';
6
6
  export interface LogHookEventParams {
7
- featureId: string;
7
+ issueId: string;
8
8
  binding: PhaseHookBinding;
9
9
  result: HookExecutionResult;
10
10
  }
11
11
  /**
12
- * Log a hook execution event to the feature audit log.
12
+ * Log a hook execution event to the issue audit log.
13
13
  */
14
14
  export declare function logHookEvent(params: LogHookEventParams, verbose?: boolean): Promise<void>;
@@ -10,14 +10,14 @@ const EVENT_TYPE_MAP = {
10
10
  skipped: 'hook_completed', // skipped is a non-error completion
11
11
  };
12
12
  /**
13
- * Log a hook execution event to the feature audit log.
13
+ * Log a hook execution event to the issue audit log.
14
14
  */
15
15
  export async function logHookEvent(params, verbose) {
16
- const { featureId, binding, result } = params;
16
+ const { issueId, binding, result } = params;
17
17
  const eventType = EVENT_TYPE_MAP[result.status];
18
18
  try {
19
- await callMcpEndpoint('feature_audit_logs/create', {
20
- feature_id: featureId,
19
+ await callMcpEndpoint('issue_audit_logs/create', {
20
+ issue_id: issueId,
21
21
  event_type: eventType,
22
22
  phase: binding.phase === '*' ? 'all' : binding.phase.replace(/-/g, '_'),
23
23
  source: 'pipeline',
@@ -12,7 +12,7 @@ export interface HookRunResult {
12
12
  /**
13
13
  * Run all matching hooks for a phase at a given hook point.
14
14
  *
15
- * @param context - Phase context (featureId, phase, hookPoint, etc.)
15
+ * @param context - Phase context (issueId, phase, hookPoint, etc.)
16
16
  * @param deps - Injectable dependencies (defaults to real implementations).
17
17
  * Pass mock deps in tests to avoid SDK/network calls.
18
18
  */
@@ -17,14 +17,14 @@ const defaultDeps = {
17
17
  /**
18
18
  * Run all matching hooks for a phase at a given hook point.
19
19
  *
20
- * @param context - Phase context (featureId, phase, hookPoint, etc.)
20
+ * @param context - Phase context (issueId, phase, hookPoint, etc.)
21
21
  * @param deps - Injectable dependencies (defaults to real implementations).
22
22
  * Pass mock deps in tests to avoid SDK/network calls.
23
23
  */
24
24
  export async function runHooksForPhase(context, deps = defaultDeps) {
25
- const { featureId, phase, hookPoint, verbose } = context;
25
+ const { issueId, phase, hookPoint, verbose } = context;
26
26
  // 1. Get cached bindings
27
- const cached = deps.getCachedBindings(featureId);
27
+ const cached = deps.getCachedBindings(issueId);
28
28
  if (!cached || cached.bindings.length === 0) {
29
29
  return { results: [], blocked: false };
30
30
  }
@@ -45,7 +45,7 @@ export async function runHooksForPhase(context, deps = defaultDeps) {
45
45
  results.push(result);
46
46
  // Log the event (best-effort)
47
47
  try {
48
- await deps.logHookEvent({ featureId, binding, result }, verbose);
48
+ await deps.logHookEvent({ issueId, binding, result }, verbose);
49
49
  }
50
50
  catch {
51
51
  // Logging failures must not block hook execution
@@ -33,7 +33,7 @@ export interface ParsedSkillFile {
33
33
  readonly body: string;
34
34
  }
35
35
  export interface HookContext {
36
- readonly featureId: string;
36
+ readonly issueId: string;
37
37
  /** Phase name in kebab-case. */
38
38
  readonly phase: string;
39
39
  readonly hookPoint: HookPoint;
@@ -59,10 +59,10 @@ export interface ResolvedHookBindings {
59
59
  }
60
60
  export interface HookRunnerDeps {
61
61
  executeHook: (binding: PhaseHookBinding, context: HookContext, verbose?: boolean) => Promise<HookExecutionResult>;
62
- getCachedBindings: (featureId: string) => ResolvedHookBindings | null;
62
+ getCachedBindings: (issueId: string) => ResolvedHookBindings | null;
63
63
  getBindingsForPhase: (bindings: readonly PhaseHookBinding[], phase: string, hookPoint: HookPoint) => readonly PhaseHookBinding[];
64
64
  logHookEvent: (params: {
65
- featureId: string;
65
+ issueId: string;
66
66
  binding: PhaseHookBinding;
67
67
  result: HookExecutionResult;
68
68
  }, verbose?: boolean) => Promise<void>;
@@ -3,7 +3,7 @@
3
3
  * Provides functions to create and query phase ratings for AI quality tracking
4
4
  */
5
5
  /** Phase names that can be rated */
6
- export type RatablePhase = 'feature_analysis' | 'user_stories_analysis' | 'test_cases_analysis' | 'technical_design' | 'branch_planning' | 'code_implementation' | 'pr_splitting' | 'pr_execution' | 'code_testing' | 'functional_testing' | 'code_review' | 'code_refine' | 'autonomous';
6
+ export type RatablePhase = 'issue_analysis' | 'user_stories_analysis' | 'test_cases_analysis' | 'technical_design' | 'branch_planning' | 'code_implementation' | 'pr_splitting' | 'pr_execution' | 'code_testing' | 'functional_testing' | 'code_review' | 'code_refine' | 'autonomous';
7
7
  export type RatingType = 'ai_self' | 'human' | 'ai_peer';
8
8
  /** Score for a single evaluation criterion */
9
9
  export interface CriterionScore {
@@ -27,7 +27,7 @@ export interface CoachingAnalysis {
27
27
  }
28
28
  /** Parameters for creating a phase rating record */
29
29
  export interface CreatePhaseRatingParams {
30
- featureId: string;
30
+ issueId: string;
31
31
  phase: RatablePhase;
32
32
  rating: PhaseRating;
33
33
  ratingType: RatingType;
@@ -38,7 +38,7 @@ export interface CreatePhaseRatingParams {
38
38
  /** A phase rating record from the database */
39
39
  export interface PhaseRatingRecord {
40
40
  id: string;
41
- feature_id: string;
41
+ issue_id: string;
42
42
  phase: RatablePhase;
43
43
  score: number;
44
44
  summary: string | null;
@@ -61,10 +61,10 @@ export declare function createPhaseRating(params: CreatePhaseRatingParams, verbo
61
61
  */
62
62
  export declare function updatePhaseRatingCoachingAnalysis(ratingId: string, coachingAnalysis: CoachingAnalysis, verbose?: boolean): Promise<boolean>;
63
63
  /**
64
- * Get all ratings for a feature's phase, ordered by iteration
64
+ * Get all ratings for an issue's phase, ordered by iteration
65
65
  */
66
- export declare function getPhaseRatings(featureId: string, phase: RatablePhase, verbose?: boolean): Promise<PhaseRatingRecord[]>;
66
+ export declare function getPhaseRatings(issueId: string, phase: RatablePhase, verbose?: boolean): Promise<PhaseRatingRecord[]>;
67
67
  /**
68
- * Get the latest rating for a feature's phase
68
+ * Get the latest rating for an issue's phase
69
69
  */
70
- export declare function getLatestPhaseRating(featureId: string, phase: RatablePhase, verbose?: boolean): Promise<PhaseRatingRecord | null>;
70
+ export declare function getLatestPhaseRating(issueId: string, phase: RatablePhase, verbose?: boolean): Promise<PhaseRatingRecord | null>;
@@ -10,7 +10,7 @@ import { logDebug, logError, logInfo } from '../utils/logger.js';
10
10
  export async function createPhaseRating(params, verbose) {
11
11
  try {
12
12
  const result = await callMcpEndpoint('phase_ratings/create', {
13
- feature_id: params.featureId,
13
+ issue_id: params.issueId,
14
14
  phase: params.phase,
15
15
  score: params.rating.score,
16
16
  summary: params.rating.summary,
@@ -52,18 +52,18 @@ export async function updatePhaseRatingCoachingAnalysis(ratingId, coachingAnalys
52
52
  }
53
53
  }
54
54
  /**
55
- * Get all ratings for a feature's phase, ordered by iteration
55
+ * Get all ratings for an issue's phase, ordered by iteration
56
56
  */
57
- export async function getPhaseRatings(featureId, phase, verbose) {
57
+ export async function getPhaseRatings(issueId, phase, verbose) {
58
58
  try {
59
59
  const result = await callMcpEndpoint('phase_ratings/list', {
60
- feature_id: featureId,
60
+ issue_id: issueId,
61
61
  phase,
62
62
  });
63
63
  const ratings = (result?.ratings ||
64
64
  []);
65
65
  if (verbose) {
66
- logDebug(`Fetched ${ratings.length} ratings for ${phase} (feature: ${featureId})`, verbose);
66
+ logDebug(`Fetched ${ratings.length} ratings for ${phase} (issue: ${issueId})`, verbose);
67
67
  }
68
68
  return ratings;
69
69
  }
@@ -73,9 +73,9 @@ export async function getPhaseRatings(featureId, phase, verbose) {
73
73
  }
74
74
  }
75
75
  /**
76
- * Get the latest rating for a feature's phase
76
+ * Get the latest rating for an issue's phase
77
77
  */
78
- export async function getLatestPhaseRating(featureId, phase, verbose) {
79
- const ratings = await getPhaseRatings(featureId, phase, verbose);
78
+ export async function getLatestPhaseRating(issueId, phase, verbose) {
79
+ const ratings = await getPhaseRatings(issueId, phase, verbose);
80
80
  return ratings.length > 0 ? ratings[ratings.length - 1] : null;
81
81
  }