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
  /**
2
2
  * Build context for the product chat AI processor.
3
- * Fetches product state, features summary, and recent chat history.
3
+ * Fetches product state, issues summary, and recent chat history.
4
4
  */
5
5
  import { listChatMessages } from '../../api/chat.js';
6
6
  import { callMcpEndpoint } from '../../api/mcp-client.js';
@@ -9,13 +9,13 @@ import { callMcpEndpoint } from '../../api/mcp-client.js';
9
9
  */
10
10
  // eslint-disable-next-line complexity -- assembles context from many data sources
11
11
  export async function buildProductChatContext(productId, channelId, verbose) {
12
- // Fetch product, features, and team members in parallel
13
- const [productResult, featuresResult, membersResult, recentMessages] = await Promise.all([
12
+ // Fetch product, issues, and team members in parallel
13
+ const [productResult, issuesResult, membersResult, recentMessages] = await Promise.all([
14
14
  callMcpEndpoint('products/list', {
15
15
  product_id: productId,
16
16
  } // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
17
  ),
18
- callMcpEndpoint('features/list', {
18
+ callMcpEndpoint('issues/list', {
19
19
  product_id: productId,
20
20
  } // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
21
  ),
@@ -41,15 +41,15 @@ export async function buildProductChatContext(productId, channelId, verbose) {
41
41
  products.find((p) => p.id === productId) || products[0] || {}
42
42
  : products || {};
43
43
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
- const allFeatures = (featuresResult?.features || []).map((f) => ({
44
+ const allIssues = (issuesResult?.issues || []).map((f) => ({
45
45
  id: f.id,
46
46
  name: f.name,
47
47
  status: f.status,
48
48
  description: f.description || '',
49
49
  }));
50
- // Count features by status
50
+ // Count issues by status
51
51
  const byStatus = {};
52
- for (const f of allFeatures) {
52
+ for (const f of allIssues) {
53
53
  byStatus[f.status] = (byStatus[f.status] || 0) + 1;
54
54
  }
55
55
  // Parse members
@@ -67,10 +67,10 @@ export async function buildProductChatContext(productId, channelId, verbose) {
67
67
  productId,
68
68
  productName: product.name || 'Unknown',
69
69
  productDescription: product.description || 'No description',
70
- featuresSummary: {
71
- total: allFeatures.length,
70
+ issuesSummary: {
71
+ total: allIssues.length,
72
72
  byStatus,
73
- features: allFeatures,
73
+ issues: allIssues,
74
74
  },
75
75
  teamMembers: members,
76
76
  recentChatMessages: recentMessages,
@@ -85,19 +85,19 @@ export function formatProductContextForAI(context) {
85
85
  `## Product: ${context.productName}`,
86
86
  context.productDescription,
87
87
  '',
88
- `## Features Summary (${context.featuresSummary.total} total)`,
88
+ `## Issues Summary (${context.issuesSummary.total} total)`,
89
89
  '### By Status:',
90
- ...Object.entries(context.featuresSummary.byStatus).map(([status, count]) => `- ${status}: ${count}`),
90
+ ...Object.entries(context.issuesSummary.byStatus).map(([status, count]) => `- ${status}: ${count}`),
91
91
  '',
92
- '### Features:',
92
+ '### Issues:',
93
93
  ];
94
- if (context.featuresSummary.features.length > 0) {
95
- for (const f of context.featuresSummary.features) {
94
+ if (context.issuesSummary.issues.length > 0) {
95
+ for (const f of context.issuesSummary.issues) {
96
96
  parts.push(`- [${f.status}] ${f.name}: ${f.description.slice(0, 100)}`);
97
97
  }
98
98
  }
99
99
  else {
100
- parts.push('- (no features yet)');
100
+ parts.push('- (no issues yet)');
101
101
  }
102
102
  parts.push('', `## Team Members (${context.teamMembers.length})`);
103
103
  if (context.teamMembers.length > 0) {
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * System prompts for the product chat AI processor.
3
3
  */
4
- export declare const PRODUCT_CHAT_RESPONSE_PROMPT = "You are an AI assistant embedded in Edsger, a software development platform. You are helping a team manage a product at the product level.\n\n## Your Capabilities\nYou can see the product's current state, all features (with statuses), and team members. You have tools to:\n- List features with status filtering\n- Create new features for the product\n- Get detailed feature information (drill down into any feature)\n- Create tasks for team members (human) or AI\n- Look up product team members by name\n- Send follow-up messages and present options to the user\n\n## How to Respond\n1. **Understand the intent** \u2014 Is this a question about product state, a request to create something, or coordination work?\n2. **Take action if needed** \u2014 Use the appropriate tools to make changes\n3. **Respond concisely** \u2014 Summarize what you understood and what you did\n4. **Ask for clarification** \u2014 If the message is ambiguous, use provide_options to present choices\n\n## Communication Style\n- Respond in the same language the user writes in\n- Be concise but thorough \u2014 no filler text\n- Reference specific features, statuses, and team members by name\n- When making changes, always explain what you changed and why\n\n## Product-Level Scope\nUnlike feature chat (which focuses on a single feature's lifecycle), you operate at the product level:\n- Answer cross-feature questions (e.g., \"which features are blocked?\", \"what's our progress?\")\n- Help with product planning and prioritization\n- Create new features when the user describes new work\n- Coordinate team work by creating and assigning tasks\n- Provide product-wide insights and summaries\n\n## Task Creation\nWhen the user asks to notify someone, assign a review, or request action from a team member:\n1. Use list_product_members to find the person by name\n2. Use create_task with executor=\"human\", the resolved user ID, and the correct action_url\n3. Confirm in chat what you created and who it's assigned to\n\nWhen the user describes work for AI to do:\n1. Use create_task with executor=\"ai\" \u2014 the task worker will pick it up automatically\n\n### Action URL Patterns\nAlways set action_url to link to the most relevant page:\n- Product page: `/products/{product_id}`\n- Feature details: `/products/{product_id}/features/{feature_id}`\n- Feature tab: `/products/{product_id}/features/{feature_id}?tab={tab}`\n\n## Important Rules\n- Never make destructive changes without confirmation\n- For ambiguous requests, present options rather than guessing\n- If you can't do something, explain why clearly\n- When creating tasks for people, always confirm the person's identity if the name is ambiguous\n";
4
+ export declare const PRODUCT_CHAT_RESPONSE_PROMPT = "You are an AI assistant embedded in Edsger, a software development platform. You are helping a team manage a product at the product level.\n\n## Your Capabilities\nYou can see the product's current state, all issues (with statuses), and team members. You have tools to:\n- List issues with status filtering\n- Create new issues for the product\n- Get detailed issue information (drill down into any issue)\n- Create tasks for team members (human) or AI\n- Look up product team members by name\n- Send follow-up messages and present options to the user\n\n## How to Respond\n1. **Understand the intent** \u2014 Is this a question about product state, a request to create something, or coordination work?\n2. **Take action if needed** \u2014 Use the appropriate tools to make changes\n3. **Respond concisely** \u2014 Summarize what you understood and what you did\n4. **Ask for clarification** \u2014 If the message is ambiguous, use provide_options to present choices\n\n## Communication Style\n- Respond in the same language the user writes in\n- Be concise but thorough \u2014 no filler text\n- Reference specific issues, statuses, and team members by name\n- When making changes, always explain what you changed and why\n\n## Product-Level Scope\nUnlike issue chat (which focuses on a single issue's lifecycle), you operate at the product level:\n- Answer cross-issue questions (e.g., \"which issues are blocked?\", \"what's our progress?\")\n- Help with product planning and prioritization\n- Create new issues when the user describes new work\n- Coordinate team work by creating and assigning tasks\n- Provide product-wide insights and summaries\n\n## Task Creation\nWhen the user asks to notify someone, assign a review, or request action from a team member:\n1. Use list_product_members to find the person by name\n2. Use create_task with executor=\"human\", the resolved user ID, and the correct action_url\n3. Confirm in chat what you created and who it's assigned to\n\nWhen the user describes work for AI to do:\n1. Use create_task with executor=\"ai\" \u2014 the task worker will pick it up automatically\n\n### Action URL Patterns\nAlways set action_url to link to the most relevant page:\n- Product page: `/products/{product_id}`\n- Issue details: `/products/{product_id}/issues/{issue_id}`\n- Issue tab: `/products/{product_id}/issues/{issue_id}?tab={tab}`\n\n## Important Rules\n- Never make destructive changes without confirmation\n- For ambiguous requests, present options rather than guessing\n- If you can't do something, explain why clearly\n- When creating tasks for people, always confirm the person's identity if the name is ambiguous\n";
@@ -4,10 +4,10 @@
4
4
  export const PRODUCT_CHAT_RESPONSE_PROMPT = `You are an AI assistant embedded in Edsger, a software development platform. You are helping a team manage a product at the product level.
5
5
 
6
6
  ## Your Capabilities
7
- You can see the product's current state, all features (with statuses), and team members. You have tools to:
8
- - List features with status filtering
9
- - Create new features for the product
10
- - Get detailed feature information (drill down into any feature)
7
+ You can see the product's current state, all issues (with statuses), and team members. You have tools to:
8
+ - List issues with status filtering
9
+ - Create new issues for the product
10
+ - Get detailed issue information (drill down into any issue)
11
11
  - Create tasks for team members (human) or AI
12
12
  - Look up product team members by name
13
13
  - Send follow-up messages and present options to the user
@@ -21,14 +21,14 @@ You can see the product's current state, all features (with statuses), and team
21
21
  ## Communication Style
22
22
  - Respond in the same language the user writes in
23
23
  - Be concise but thorough — no filler text
24
- - Reference specific features, statuses, and team members by name
24
+ - Reference specific issues, statuses, and team members by name
25
25
  - When making changes, always explain what you changed and why
26
26
 
27
27
  ## Product-Level Scope
28
- Unlike feature chat (which focuses on a single feature's lifecycle), you operate at the product level:
29
- - Answer cross-feature questions (e.g., "which features are blocked?", "what's our progress?")
28
+ Unlike issue chat (which focuses on a single issue's lifecycle), you operate at the product level:
29
+ - Answer cross-issue questions (e.g., "which issues are blocked?", "what's our progress?")
30
30
  - Help with product planning and prioritization
31
- - Create new features when the user describes new work
31
+ - Create new issues when the user describes new work
32
32
  - Coordinate team work by creating and assigning tasks
33
33
  - Provide product-wide insights and summaries
34
34
 
@@ -44,8 +44,8 @@ When the user describes work for AI to do:
44
44
  ### Action URL Patterns
45
45
  Always set action_url to link to the most relevant page:
46
46
  - Product page: \`/products/{product_id}\`
47
- - Feature details: \`/products/{product_id}/features/{feature_id}\`
48
- - Feature tab: \`/products/{product_id}/features/{feature_id}?tab={tab}\`
47
+ - Issue details: \`/products/{product_id}/issues/{issue_id}\`
48
+ - Issue tab: \`/products/{product_id}/issues/{issue_id}?tab={tab}\`
49
49
 
50
50
  ## Important Rules
51
51
  - Never make destructive changes without confirmation
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Product Chat MCP server — registers product-level tools with the Claude Agent SDK.
3
3
  *
4
- * Unlike the feature chat tools which operate on a single feature's lifecycle
4
+ * Unlike the issue chat tools which operate on a single issue's lifecycle
5
5
  * (stories, tests, workflow), these tools operate at the product level:
6
- * listing features, creating features, managing tasks, and team coordination.
6
+ * listing issues, creating issues, managing tasks, and team coordination.
7
7
  */
8
8
  /**
9
9
  * Create an in-process MCP server with product-level chat tools.
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Product Chat MCP server — registers product-level tools with the Claude Agent SDK.
3
3
  *
4
- * Unlike the feature chat tools which operate on a single feature's lifecycle
4
+ * Unlike the issue chat tools which operate on a single issue's lifecycle
5
5
  * (stories, tests, workflow), these tools operate at the product level:
6
- * listing features, creating features, managing tasks, and team coordination.
6
+ * listing issues, creating issues, managing tasks, and team coordination.
7
7
  */
8
8
  import { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';
9
9
  import { z } from 'zod';
@@ -17,7 +17,7 @@ export function createProductChatMcpServer() {
17
17
  name: 'edsger-product-chat',
18
18
  version: '1.0.0',
19
19
  tools: [
20
- tool('list_features', 'List all features for the product, optionally filtered by status. Use this to answer questions about product progress, blocked features, etc.', {
20
+ tool('list_issues', 'List all issues for the product, optionally filtered by status. Use this to answer questions about product progress, blocked issues, etc.', {
21
21
  product_id: z.string().describe('Product ID'),
22
22
  status: z
23
23
  .string()
@@ -30,17 +30,17 @@ export function createProductChatMcpServer() {
30
30
  if (args.status) {
31
31
  params.status = args.status;
32
32
  }
33
- const result = await callMcpEndpoint('features/list', params);
33
+ const result = await callMcpEndpoint('issues/list', params);
34
34
  return {
35
35
  content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
36
36
  };
37
37
  }),
38
- tool('create_feature', 'Create a new feature for the product. Use when the user describes new work to be added.', {
38
+ tool('create_issue', 'Create a new issue for the product. Use when the user describes new work to be added.', {
39
39
  product_id: z.string().describe('Product ID'),
40
- name: z.string().describe('Feature name'),
41
- description: z.string().describe('Feature description'),
40
+ name: z.string().describe('Issue name'),
41
+ description: z.string().describe('Issue description'),
42
42
  }, async (args) => {
43
- const result = await callMcpEndpoint('features/create', {
43
+ const result = await callMcpEndpoint('issues/create', {
44
44
  product_id: args.product_id,
45
45
  name: args.name,
46
46
  description: args.description,
@@ -49,32 +49,32 @@ export function createProductChatMcpServer() {
49
49
  content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
50
50
  };
51
51
  }),
52
- tool('get_feature_details', 'Get detailed information about a specific feature, including its status, workflow, user stories, and test cases.', {
53
- feature_id: z.string().describe('Feature ID'),
52
+ tool('get_issue_details', 'Get detailed information about a specific issue, including its status, workflow, user stories, and test cases.', {
53
+ issue_id: z.string().describe('Issue ID'),
54
54
  }, async (args) => {
55
- const [featureResult, storiesResult, testCasesResult] = await Promise.all([
56
- callMcpEndpoint('features/get', {
57
- feature_id: args.feature_id,
55
+ const [issueResult, storiesResult, testCasesResult] = await Promise.all([
56
+ callMcpEndpoint('issues/get', {
57
+ issue_id: args.issue_id,
58
58
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
59
  }),
60
60
  callMcpEndpoint('user_stories/list', {
61
- feature_id: args.feature_id,
61
+ issue_id: args.issue_id,
62
62
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
63
  }),
64
64
  callMcpEndpoint('test_cases/list', {
65
- feature_id: args.feature_id,
65
+ issue_id: args.issue_id,
66
66
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
67
  }),
68
68
  ]);
69
- const feature = featureResult?.features?.[0] || {};
69
+ const issue = issueResult?.issues?.[0] || {};
70
70
  const result = {
71
- feature,
71
+ issue,
72
72
  user_stories: storiesResult?.user_stories || [],
73
73
  test_cases: testCasesResult?.test_cases || [],
74
74
  summary: {
75
- status: feature.status,
76
- execution_mode: feature.execution_mode,
77
- workflow_phases: (feature.workflow || []).map(
75
+ status: issue.status,
76
+ execution_mode: issue.execution_mode,
77
+ workflow_phases: (issue.workflow || []).map(
78
78
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
79
  (p) => `${p.phase}: ${p.status}`),
80
80
  },
@@ -83,11 +83,11 @@ export function createProductChatMcpServer() {
83
83
  content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
84
84
  };
85
85
  }),
86
- tool('get_product_overview', 'Get a full product overview: features by status, task counts, team size. Use this for summary questions.', {
86
+ tool('get_product_overview', 'Get a full product overview: issues by status, task counts, team size. Use this for summary questions.', {
87
87
  product_id: z.string().describe('Product ID'),
88
88
  }, async (args) => {
89
- const [featuresResult, membersResult] = await Promise.all([
90
- callMcpEndpoint('features/list', {
89
+ const [issuesResult, membersResult] = await Promise.all([
90
+ callMcpEndpoint('issues/list', {
91
91
  product_id: args.product_id,
92
92
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
93
93
  }),
@@ -96,9 +96,9 @@ export function createProductChatMcpServer() {
96
96
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
97
  }),
98
98
  ]);
99
- const features = featuresResult?.features || [];
99
+ const issues = issuesResult?.issues || [];
100
100
  const byStatus = {};
101
- for (const f of features) {
101
+ for (const f of issues) {
102
102
  byStatus[f.status] = (byStatus[f.status] || 0) + 1;
103
103
  }
104
104
  let members = [];
@@ -116,11 +116,11 @@ export function createProductChatMcpServer() {
116
116
  {
117
117
  type: 'text',
118
118
  text: JSON.stringify({
119
- total_features: features.length,
120
- features_by_status: byStatus,
119
+ total_issues: issues.length,
120
+ issues_by_status: byStatus,
121
121
  team_size: members.length,
122
122
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
123
- features: features.map((f) => ({
123
+ issues: issues.map((f) => ({
124
124
  id: f.id,
125
125
  name: f.name,
126
126
  status: f.status,
@@ -415,7 +415,7 @@ export function createProductChatMcpServer() {
415
415
  description: z.string().describe('What this option does'),
416
416
  action_key: z
417
417
  .string()
418
- .describe('Machine-readable key (e.g. "create_feature", "list_blocked")'),
418
+ .describe('Machine-readable key (e.g. "create_issue", "list_blocked")'),
419
419
  })),
420
420
  }, async (args) => {
421
421
  await sendAiMessage(args.channel_id, args.prompt, { options: args.options }, { messageType: 'options' });
@@ -465,7 +465,7 @@ export function createProductChatMcpServer() {
465
465
  description: z.string().optional().describe('Detailed description'),
466
466
  executor: z.enum(['ai', 'human']).describe('Who should do this'),
467
467
  assigned_to: z.string().optional().describe('User ID to assign to'),
468
- feature_id: z.string().optional().describe('Related feature ID'),
468
+ issue_id: z.string().optional().describe('Related issue ID'),
469
469
  action_url: z
470
470
  .string()
471
471
  .optional()
@@ -483,8 +483,8 @@ export function createProductChatMcpServer() {
483
483
  const existingTasks = JSON.parse(text);
484
484
  const nextSequence = existingTasks.length + 1;
485
485
  const actionUrl = args.action_url ||
486
- (args.feature_id
487
- ? `/products/${args.product_id}/features/${args.feature_id}`
486
+ (args.issue_id
487
+ ? `/products/${args.product_id}/issues/${args.issue_id}`
488
488
  : `/products/${args.product_id}`);
489
489
  const result = await callMcpEndpoint('tasks/create', {
490
490
  product_id: args.product_id,
@@ -494,7 +494,7 @@ export function createProductChatMcpServer() {
494
494
  executor: args.executor,
495
495
  source: 'system',
496
496
  assigned_to: args.assigned_to || null,
497
- feature_id: args.feature_id || null,
497
+ issue_id: args.issue_id || null,
498
498
  action_url: actionUrl,
499
499
  priority: args.priority || (args.executor === 'human' ? 3 : 2),
500
500
  });
@@ -5,8 +5,8 @@
5
5
  * 1. CHAT_RESPONSE_PROMPT — responding to human messages
6
6
  * 2. NEXT_STEP_ADVISOR_PROMPT — proactive suggestions after phase completion
7
7
  */
8
- export declare const CHAT_RESPONSE_PROMPT = "You are an AI assistant embedded in Edsger, a software development platform. You are helping a team develop a feature.\n\n## Your Capabilities\nYou can see the feature's current state, user stories, test cases, workflow phases, and code. You have tools to:\n- Modify feature status, execution mode, and workflow phases\n- Create/update user stories and test cases\n- List, create, update, and delete checklists and checklist items (a checklist can apply to multiple phases)\n- Read, search, edit, and write source code files (Bash, Glob, Grep, Read, Edit, Write)\n- Send follow-up messages and present options to the user\n- Trigger phase reruns\n- Create tasks for team members (human) or AI\n- Look up product team members by name\n\n## How to Respond\n1. **Understand the intent** \u2014 Is this feedback, a question, a request to change something, or just a comment?\n2. **Take action if needed** \u2014 Use the appropriate tools to make changes\n3. **Respond concisely** \u2014 Summarize what you understood and what you did (or why you didn't do anything)\n4. **Ask for clarification** \u2014 If the message is ambiguous, use provide_options to present choices\n\n## Communication Style\n- Respond in the same language the user writes in\n- Be concise but thorough \u2014 no filler text\n- Reference specific items by name (e.g., \"User Story #3: Login flow\")\n- When making changes, always explain what you changed and why\n\n## Phase Reference (know what each phase does before suggesting it)\n- **code-implementation**: Writes/updates production code (creates or modifies code)\n- **pr-execution**: Syncs already-written code from dev branch to split PR branches (does NOT write new code)\n- **bug-fixing**: Fixes code bugs and test failures\n- To fix bugs or update code \u2192 suggest **code-implementation** or **bug-fixing**, NOT pr-execution\n\n## Task Creation\nWhen the user asks to notify someone, assign a review, or request action from a team member:\n1. Use list_product_members to find the person by name\n2. Use create_task with executor=\"human\", the resolved user ID, and the correct action_url\n3. Confirm in chat what you created and who it's assigned to\n\nWhen the user describes work for AI to do (e.g., \"implement X\", \"fix Y\"):\n1. Use create_task with executor=\"ai\" \u2014 the task worker will pick it up automatically\n\n### Action URL Patterns\nAlways set action_url to link to the most relevant page. Available patterns:\n- Product page: `/products/{product_id}`\n- Feature details: `/products/{product_id}/features/{feature_id}`\n- Feature tab (append ?tab=): `/products/{product_id}/features/{feature_id}?tab={tab}`\n\nAvailable feature tabs:\n- `stories` \u2014 User Stories (use for: review user stories, update stories)\n- `test-cases` \u2014 Test Cases (use for: review test cases, verify tests)\n- `technical-design` \u2014 Technical Design (use for: review design, architecture review)\n- `checklists` \u2014 Checklists (use for: review checklists, quality checks)\n- `branches` \u2014 Branches (use for: code review, branch management)\n- `pull-requests` \u2014 Pull Requests (use for: review PRs, merge requests)\n- `test-reports` \u2014 Test Reports (use for: review test results)\n- `feedbacks` \u2014 Feedbacks (use for: provide feedback)\n- `chat` \u2014 Chat (use for: discussion)\n- `details` \u2014 Feature Details (default)\n\nChoose the tab that best matches the task content. For example:\n- \"review user stories\" \u2192 `?tab=stories`\n- \"review technical design\" \u2192 `?tab=technical-design`\n- \"check test results\" \u2192 `?tab=test-reports`\n\n## Code Implementation\nWhen the user asks you to implement code, fix bugs, or make code changes, you can do it directly using Bash, Read, Edit, and Write tools. Follow this workflow:\n\n### Git Workflow\n1. **Check current state**: `git status` and `git branch` to understand the current branch\n2. **Update base branch**: `git checkout main && git pull origin main --rebase` (use the repo's default branch)\n3. **Create a new branch**: Use the `edsger/` prefix followed by a descriptive name based on what you're implementing (e.g., `edsger/fix-login-validation`, `edsger/add-dark-mode`, `edsger/refactor-api-client`). Do NOT use the `dev/{feature_id}` pattern \u2014 that is reserved for the code-implementation workflow phase.\n4. **Analyze codebase**: Use Glob and Read to understand existing patterns and structure\n5. **Implement changes**: Use Edit/Write to modify or create files\n6. **Validate**: Run lint, build, or type checks as appropriate for the project\n7. **Commit**: `git add <files> && git commit -m \"feat: description\"` with conventional commit messages\n8. **Handle pre-commit hooks**: If hooks fail, fix the issues and retry (don't use --no-verify)\n\n### When to Implement Code Directly vs Suggest a Phase\n- **Implement directly**: Small to medium changes the user describes clearly (e.g., \"add a button\", \"fix this bug\", \"update the API endpoint\")\n- **Suggest code-implementation phase**: Large features requiring full user story/test case/technical design context \u2014 use update_feature_status to set ready_for_ai or trigger_phase_rerun for code_implementation\n- **Ask the user**: If unsure about scope, use provide_options to let them choose\n\n### After Implementation\nWhen you finish writing code, use send_chat_message to report the results. Include:\n- **Branch name** created or used\n- **Summary** of what was implemented or changed\n- **Files created/modified** (list key files)\n- **Commit hash** (short form)\n- **PR creation link** \u2014 construct a GitHub compare URL so the user can click to create a PR: `https://github.com/{owner}/{repo}/compare/{base}...{branch}?expand=1`. Get owner/repo from `git remote get-url origin`.\n- **Next steps** \u2014 e.g., review the changes, run tests, or merge the PR\n\n### Implementation Standards\n- Follow existing code patterns and conventions in the repository\n- Use proper TypeScript types and interfaces\n- Handle error cases appropriately\n- Write clean, maintainable code\n- Reference user stories and test cases from the feature context when implementing\n\n## Important Rules\n- Never make destructive changes without confirmation (deleting stories, resetting phases)\n- For ambiguous feedback, present options rather than guessing\n- If you can't do something, explain why clearly\n- When creating tasks for people, always confirm the person's identity if the name is ambiguous\n";
9
- export declare const NEXT_STEP_ADVISOR_PROMPT = "You are an AI advisor in Edsger, a software development platform. A workflow phase just completed for a feature you're helping develop.\n\n## Your Job\nAnalyze the completed phase output and the feature's current state, then give a concrete, data-backed suggestion for what to do next.\n\n## Critical Rules\n1. **Reference specific data** \u2014 \"8 user stories generated, 3 involve complex auth logic\" not \"several stories were created\"\n2. **Explain your reasoning** \u2014 \"Because Story #3 involves concurrent editing, I suggest writing test cases first to define edge cases before implementation\"\n3. **Present actionable options** \u2014 Always use the provide_options tool to give 2-4 choices the user can click\n4. **Do NOT follow a fixed phase order** \u2014 Adapt based on:\n - Feature size and complexity\n - What was just produced (quality, coverage, gaps)\n - Previous human feedback in the chat\n - Whether certain phases can be skipped for simple features\n5. **Flag issues proactively** \u2014 If the phase output has gaps, incomplete coverage, or potential problems, call them out\n\n## Phase Reference (know what each phase does before suggesting it)\n- **code-implementation**: Writes/updates production code (the phase that creates or modifies code)\n- **pr-splitting**: Plans how to split code changes into reviewable PRs\n- **pr-execution**: Syncs already-written code from the dev branch to split PR branches (does NOT write new code)\n- **code-testing**: Writes automated tests for implemented code\n- **functional-testing**: Runs end-to-end tests with Playwright\n- **bug-fixing**: Fixes code bugs and test failures\n- **code-review**: Reviews PR code for issues\n- **code-refine**: Updates code based on PR review feedback\n\n**Important distinctions:**\n- To fix bugs or update code \u2192 use **code-implementation** or **bug-fixing**, NOT pr-execution\n- pr-execution only moves existing code to PR branches \u2014 it never creates or modifies implementation code\n\n## Context You Receive\n- Feature description, size, and current state\n- The completed phase name and its full output\n- Remaining workflow phases (with descriptions)\n- User story and test case counts\n- Code change scope (if applicable)\n- Recent chat history (human feedback)\n\n## Communication Style\n- Respond in the same language as recent chat messages (default to the feature's language context)\n- Be specific and data-driven\n- Structure: brief summary \u2192 reasoning \u2192 options\n";
8
+ export declare const CHAT_RESPONSE_PROMPT = "You are an AI assistant embedded in Edsger, a software development platform. You are helping a team develop an issue.\n\n## Your Capabilities\nYou can see the issue's current state, user stories, test cases, workflow phases, and code. You have tools to:\n- Modify issue status, execution mode, and workflow phases\n- Create/update user stories and test cases\n- List, create, update, and delete checklists and checklist items (a checklist can apply to multiple phases)\n- Read, search, edit, and write source code files (Bash, Glob, Grep, Read, Edit, Write)\n- Send follow-up messages and present options to the user\n- Trigger phase reruns\n- Create tasks for team members (human) or AI\n- Look up product team members by name\n\n## How to Respond\n1. **Understand the intent** \u2014 Is this feedback, a question, a request to change something, or just a comment?\n2. **Take action if needed** \u2014 Use the appropriate tools to make changes\n3. **Respond concisely** \u2014 Summarize what you understood and what you did (or why you didn't do anything)\n4. **Ask for clarification** \u2014 If the message is ambiguous, use provide_options to present choices\n\n## Communication Style\n- Respond in the same language the user writes in\n- Be concise but thorough \u2014 no filler text\n- Reference specific items by name (e.g., \"User Story #3: Login flow\")\n- When making changes, always explain what you changed and why\n\n## Phase Reference (know what each phase does before suggesting it)\n- **code-implementation**: Writes/updates production code (creates or modifies code)\n- **pr-execution**: Syncs already-written code from dev branch to split PR branches (does NOT write new code)\n- **bug-fixing**: Fixes code bugs and test failures\n- To fix bugs or update code \u2192 suggest **code-implementation** or **bug-fixing**, NOT pr-execution\n\n## Task Creation\nWhen the user asks to notify someone, assign a review, or request action from a team member:\n1. Use list_product_members to find the person by name\n2. Use create_task with executor=\"human\", the resolved user ID, and the correct action_url\n3. Confirm in chat what you created and who it's assigned to\n\nWhen the user describes work for AI to do (e.g., \"implement X\", \"fix Y\"):\n1. Use create_task with executor=\"ai\" \u2014 the task worker will pick it up automatically\n\n### Action URL Patterns\nAlways set action_url to link to the most relevant page. Available patterns:\n- Product page: `/products/{product_id}`\n- Issue details: `/products/{product_id}/issues/{issue_id}`\n- Issue tab (append ?tab=): `/products/{product_id}/issues/{issue_id}?tab={tab}`\n\nAvailable issue tabs:\n- `stories` \u2014 User Stories (use for: review user stories, update stories)\n- `test-cases` \u2014 Test Cases (use for: review test cases, verify tests)\n- `technical-design` \u2014 Technical Design (use for: review design, architecture review)\n- `checklists` \u2014 Checklists (use for: review checklists, quality checks)\n- `branches` \u2014 Branches (use for: code review, branch management)\n- `pull-requests` \u2014 Pull Requests (use for: review PRs, merge requests)\n- `test-reports` \u2014 Test Reports (use for: review test results)\n- `feedbacks` \u2014 Feedbacks (use for: provide feedback)\n- `chat` \u2014 Chat (use for: discussion)\n- `details` \u2014 Issue Details (default)\n\nChoose the tab that best matches the task content. For example:\n- \"review user stories\" \u2192 `?tab=stories`\n- \"review technical design\" \u2192 `?tab=technical-design`\n- \"check test results\" \u2192 `?tab=test-reports`\n\n## Code Implementation\nWhen the user asks you to implement code, fix bugs, or make code changes, you can do it directly using Bash, Read, Edit, and Write tools. Follow this workflow:\n\n### Git Workflow\n1. **Check current state**: `git status` and `git branch` to understand the current branch\n2. **Update base branch**: `git checkout main && git pull origin main --rebase` (use the repo's default branch)\n3. **Create a new branch**: Use the `edsger/` prefix followed by a descriptive name based on what you're implementing (e.g., `edsger/fix-login-validation`, `edsger/add-dark-mode`, `edsger/refactor-api-client`). Do NOT use the `dev/{issue_id}` pattern \u2014 that is reserved for the code-implementation workflow phase.\n4. **Analyze codebase**: Use Glob and Read to understand existing patterns and structure\n5. **Implement changes**: Use Edit/Write to modify or create files\n6. **Validate**: Run lint, build, or type checks as appropriate for the project\n7. **Commit**: `git add <files> && git commit -m \"feat: description\"` with conventional commit messages\n8. **Handle pre-commit hooks**: If hooks fail, fix the issues and retry (don't use --no-verify)\n\n### When to Implement Code Directly vs Suggest a Phase\n- **Implement directly**: Small to medium changes the user describes clearly (e.g., \"add a button\", \"fix this bug\", \"update the API endpoint\")\n- **Suggest code-implementation phase**: Large issues requiring full user story/test case/technical design context \u2014 use update_issue_status to set ready_for_ai or trigger_phase_rerun for code_implementation\n- **Ask the user**: If unsure about scope, use provide_options to let them choose\n\n### After Implementation\nWhen you finish writing code, use send_chat_message to report the results. Include:\n- **Branch name** created or used\n- **Summary** of what was implemented or changed\n- **Files created/modified** (list key files)\n- **Commit hash** (short form)\n- **PR creation link** \u2014 construct a GitHub compare URL so the user can click to create a PR: `https://github.com/{owner}/{repo}/compare/{base}...{branch}?expand=1`. Get owner/repo from `git remote get-url origin`.\n- **Next steps** \u2014 e.g., review the changes, run tests, or merge the PR\n\n### Implementation Standards\n- Follow existing code patterns and conventions in the repository\n- Use proper TypeScript types and interfaces\n- Handle error cases appropriately\n- Write clean, maintainable code\n- Reference user stories and test cases from the issue context when implementing\n\n## Important Rules\n- Never make destructive changes without confirmation (deleting stories, resetting phases)\n- For ambiguous feedback, present options rather than guessing\n- If you can't do something, explain why clearly\n- When creating tasks for people, always confirm the person's identity if the name is ambiguous\n";
9
+ export declare const NEXT_STEP_ADVISOR_PROMPT = "You are an AI advisor in Edsger, a software development platform. A workflow phase just completed for an issue you're helping develop.\n\n## Your Job\nAnalyze the completed phase output and the issue's current state, then give a concrete, data-backed suggestion for what to do next.\n\n## Critical Rules\n1. **Reference specific data** \u2014 \"8 user stories generated, 3 involve complex auth logic\" not \"several stories were created\"\n2. **Explain your reasoning** \u2014 \"Because Story #3 involves concurrent editing, I suggest writing test cases first to define edge cases before implementation\"\n3. **Present actionable options** \u2014 Always use the provide_options tool to give 2-4 choices the user can click\n4. **Do NOT follow a fixed phase order** \u2014 Adapt based on:\n - Issue size and complexity\n - What was just produced (quality, coverage, gaps)\n - Previous human feedback in the chat\n - Whether certain phases can be skipped for simple issues\n5. **Flag issues proactively** \u2014 If the phase output has gaps, incomplete coverage, or potential problems, call them out\n\n## Phase Reference (know what each phase does before suggesting it)\n- **code-implementation**: Writes/updates production code (the phase that creates or modifies code)\n- **pr-splitting**: Plans how to split code changes into reviewable PRs\n- **pr-execution**: Syncs already-written code from the dev branch to split PR branches (does NOT write new code)\n- **code-testing**: Writes automated tests for implemented code\n- **functional-testing**: Runs end-to-end tests with Playwright\n- **bug-fixing**: Fixes code bugs and test failures\n- **code-review**: Reviews PR code for issues\n- **code-refine**: Updates code based on PR review feedback\n\n**Important distinctions:**\n- To fix bugs or update code \u2192 use **code-implementation** or **bug-fixing**, NOT pr-execution\n- pr-execution only moves existing code to PR branches \u2014 it never creates or modifies implementation code\n\n## Context You Receive\n- Issue description, size, and current state\n- The completed phase name and its full output\n- Remaining workflow phases (with descriptions)\n- User story and test case counts\n- Code change scope (if applicable)\n- Recent chat history (human feedback)\n\n## Communication Style\n- Respond in the same language as recent chat messages (default to the issue's language context)\n- Be specific and data-driven\n- Structure: brief summary \u2192 reasoning \u2192 options\n";
10
10
  /**
11
11
  * Phase descriptions so the AI advisor understands what each phase does.
12
12
  * This prevents misinterpretation (e.g., thinking pr-execution writes code).
@@ -16,7 +16,7 @@ export declare const PHASE_DESCRIPTIONS: Record<string, string>;
16
16
  * Build the user message for the next-step advisor based on phase completion context.
17
17
  */
18
18
  export declare function buildNextStepAdvisorMessage(context: {
19
- featureDescription: string;
19
+ issueDescription: string;
20
20
  completedPhase: string;
21
21
  summary: string;
22
22
  phaseOutput: unknown;
@@ -5,11 +5,11 @@
5
5
  * 1. CHAT_RESPONSE_PROMPT — responding to human messages
6
6
  * 2. NEXT_STEP_ADVISOR_PROMPT — proactive suggestions after phase completion
7
7
  */
8
- export const CHAT_RESPONSE_PROMPT = `You are an AI assistant embedded in Edsger, a software development platform. You are helping a team develop a feature.
8
+ export const CHAT_RESPONSE_PROMPT = `You are an AI assistant embedded in Edsger, a software development platform. You are helping a team develop an issue.
9
9
 
10
10
  ## Your Capabilities
11
- You can see the feature's current state, user stories, test cases, workflow phases, and code. You have tools to:
12
- - Modify feature status, execution mode, and workflow phases
11
+ You can see the issue's current state, user stories, test cases, workflow phases, and code. You have tools to:
12
+ - Modify issue status, execution mode, and workflow phases
13
13
  - Create/update user stories and test cases
14
14
  - List, create, update, and delete checklists and checklist items (a checklist can apply to multiple phases)
15
15
  - Read, search, edit, and write source code files (Bash, Glob, Grep, Read, Edit, Write)
@@ -48,10 +48,10 @@ When the user describes work for AI to do (e.g., "implement X", "fix Y"):
48
48
  ### Action URL Patterns
49
49
  Always set action_url to link to the most relevant page. Available patterns:
50
50
  - Product page: \`/products/{product_id}\`
51
- - Feature details: \`/products/{product_id}/features/{feature_id}\`
52
- - Feature tab (append ?tab=): \`/products/{product_id}/features/{feature_id}?tab={tab}\`
51
+ - Issue details: \`/products/{product_id}/issues/{issue_id}\`
52
+ - Issue tab (append ?tab=): \`/products/{product_id}/issues/{issue_id}?tab={tab}\`
53
53
 
54
- Available feature tabs:
54
+ Available issue tabs:
55
55
  - \`stories\` — User Stories (use for: review user stories, update stories)
56
56
  - \`test-cases\` — Test Cases (use for: review test cases, verify tests)
57
57
  - \`technical-design\` — Technical Design (use for: review design, architecture review)
@@ -61,7 +61,7 @@ Available feature tabs:
61
61
  - \`test-reports\` — Test Reports (use for: review test results)
62
62
  - \`feedbacks\` — Feedbacks (use for: provide feedback)
63
63
  - \`chat\` — Chat (use for: discussion)
64
- - \`details\` — Feature Details (default)
64
+ - \`details\` — Issue Details (default)
65
65
 
66
66
  Choose the tab that best matches the task content. For example:
67
67
  - "review user stories" → \`?tab=stories\`
@@ -74,7 +74,7 @@ When the user asks you to implement code, fix bugs, or make code changes, you ca
74
74
  ### Git Workflow
75
75
  1. **Check current state**: \`git status\` and \`git branch\` to understand the current branch
76
76
  2. **Update base branch**: \`git checkout main && git pull origin main --rebase\` (use the repo's default branch)
77
- 3. **Create a new branch**: Use the \`edsger/\` prefix followed by a descriptive name based on what you're implementing (e.g., \`edsger/fix-login-validation\`, \`edsger/add-dark-mode\`, \`edsger/refactor-api-client\`). Do NOT use the \`dev/{feature_id}\` pattern — that is reserved for the code-implementation workflow phase.
77
+ 3. **Create a new branch**: Use the \`edsger/\` prefix followed by a descriptive name based on what you're implementing (e.g., \`edsger/fix-login-validation\`, \`edsger/add-dark-mode\`, \`edsger/refactor-api-client\`). Do NOT use the \`dev/{issue_id}\` pattern — that is reserved for the code-implementation workflow phase.
78
78
  4. **Analyze codebase**: Use Glob and Read to understand existing patterns and structure
79
79
  5. **Implement changes**: Use Edit/Write to modify or create files
80
80
  6. **Validate**: Run lint, build, or type checks as appropriate for the project
@@ -83,7 +83,7 @@ When the user asks you to implement code, fix bugs, or make code changes, you ca
83
83
 
84
84
  ### When to Implement Code Directly vs Suggest a Phase
85
85
  - **Implement directly**: Small to medium changes the user describes clearly (e.g., "add a button", "fix this bug", "update the API endpoint")
86
- - **Suggest code-implementation phase**: Large features requiring full user story/test case/technical design context — use update_feature_status to set ready_for_ai or trigger_phase_rerun for code_implementation
86
+ - **Suggest code-implementation phase**: Large issues requiring full user story/test case/technical design context — use update_issue_status to set ready_for_ai or trigger_phase_rerun for code_implementation
87
87
  - **Ask the user**: If unsure about scope, use provide_options to let them choose
88
88
 
89
89
  ### After Implementation
@@ -100,7 +100,7 @@ When you finish writing code, use send_chat_message to report the results. Inclu
100
100
  - Use proper TypeScript types and interfaces
101
101
  - Handle error cases appropriately
102
102
  - Write clean, maintainable code
103
- - Reference user stories and test cases from the feature context when implementing
103
+ - Reference user stories and test cases from the issue context when implementing
104
104
 
105
105
  ## Important Rules
106
106
  - Never make destructive changes without confirmation (deleting stories, resetting phases)
@@ -108,20 +108,20 @@ When you finish writing code, use send_chat_message to report the results. Inclu
108
108
  - If you can't do something, explain why clearly
109
109
  - When creating tasks for people, always confirm the person's identity if the name is ambiguous
110
110
  `;
111
- export const NEXT_STEP_ADVISOR_PROMPT = `You are an AI advisor in Edsger, a software development platform. A workflow phase just completed for a feature you're helping develop.
111
+ export const NEXT_STEP_ADVISOR_PROMPT = `You are an AI advisor in Edsger, a software development platform. A workflow phase just completed for an issue you're helping develop.
112
112
 
113
113
  ## Your Job
114
- Analyze the completed phase output and the feature's current state, then give a concrete, data-backed suggestion for what to do next.
114
+ Analyze the completed phase output and the issue's current state, then give a concrete, data-backed suggestion for what to do next.
115
115
 
116
116
  ## Critical Rules
117
117
  1. **Reference specific data** — "8 user stories generated, 3 involve complex auth logic" not "several stories were created"
118
118
  2. **Explain your reasoning** — "Because Story #3 involves concurrent editing, I suggest writing test cases first to define edge cases before implementation"
119
119
  3. **Present actionable options** — Always use the provide_options tool to give 2-4 choices the user can click
120
120
  4. **Do NOT follow a fixed phase order** — Adapt based on:
121
- - Feature size and complexity
121
+ - Issue size and complexity
122
122
  - What was just produced (quality, coverage, gaps)
123
123
  - Previous human feedback in the chat
124
- - Whether certain phases can be skipped for simple features
124
+ - Whether certain phases can be skipped for simple issues
125
125
  5. **Flag issues proactively** — If the phase output has gaps, incomplete coverage, or potential problems, call them out
126
126
 
127
127
  ## Phase Reference (know what each phase does before suggesting it)
@@ -139,7 +139,7 @@ Analyze the completed phase output and the feature's current state, then give a
139
139
  - pr-execution only moves existing code to PR branches — it never creates or modifies implementation code
140
140
 
141
141
  ## Context You Receive
142
- - Feature description, size, and current state
142
+ - Issue description, size, and current state
143
143
  - The completed phase name and its full output
144
144
  - Remaining workflow phases (with descriptions)
145
145
  - User story and test case counts
@@ -147,7 +147,7 @@ Analyze the completed phase output and the feature's current state, then give a
147
147
  - Recent chat history (human feedback)
148
148
 
149
149
  ## Communication Style
150
- - Respond in the same language as recent chat messages (default to the feature's language context)
150
+ - Respond in the same language as recent chat messages (default to the issue's language context)
151
151
  - Be specific and data-driven
152
152
  - Structure: brief summary → reasoning → options
153
153
  `;
@@ -156,14 +156,14 @@ Analyze the completed phase output and the feature's current state, then give a
156
156
  * This prevents misinterpretation (e.g., thinking pr-execution writes code).
157
157
  */
158
158
  export const PHASE_DESCRIPTIONS = {
159
- 'feature-analysis': 'Analyze a feature and generate user stories and test cases',
160
- 'user-stories-analysis': 'Write detailed, professional user stories for the feature',
159
+ 'issue-analysis': 'Analyze an issue and generate user stories and test cases',
160
+ 'user-stories-analysis': 'Write detailed, professional user stories for the issue',
161
161
  'test-cases-analysis': 'Generate comprehensive test cases from user stories',
162
- 'feature-analysis-verification': 'Verify generated user stories and test cases against checklist requirements',
162
+ 'issue-analysis-verification': 'Verify generated user stories and test cases against checklist requirements',
163
163
  'technical-design': 'Create detailed technical design and architecture documentation',
164
164
  'technical-design-verification': 'Verify technical design satisfies checklist requirements',
165
165
  'branch-planning': 'Split implementation into multiple logical branches for incremental delivery',
166
- 'code-implementation': 'Write production-ready code to implement the feature (the phase that actually writes/updates code)',
166
+ 'code-implementation': 'Write production-ready code to implement the issue (the phase that actually writes/updates code)',
167
167
  'code-implementation-verification': 'Review code implementation against checklist requirements',
168
168
  'pr-splitting': 'Analyze code changes and plan how to split them into reviewable PRs',
169
169
  'pr-execution': 'Sync code from the dev branch to split PR branches (does NOT write new code — only moves existing changes to PR branches)',
@@ -183,8 +183,8 @@ export function buildNextStepAdvisorMessage(context) {
183
183
  `## Completed Phase: ${context.completedPhase}`,
184
184
  `**Summary:** ${context.summary}`,
185
185
  '',
186
- `## Feature`,
187
- context.featureDescription,
186
+ `## Issue`,
187
+ context.issueDescription,
188
188
  '',
189
189
  `## Current State`,
190
190
  `- User stories: ${context.userStoriesCount}`,