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,378 +0,0 @@
1
- /**
2
- * Integration tests for analyseIntelligence orchestration.
3
- * Uses dependency injection to mock API calls and AI agent.
4
- */
5
- import assert from 'node:assert';
6
- import { describe, it } from 'node:test';
7
- import { analyseIntelligence } from '../index.js';
8
- // ── Helpers ────────────────────────────────────────────────────
9
- const fakeConfig = {
10
- patterns: ['**/*.ts'],
11
- exclude: [],
12
- severity: 'error',
13
- maxFiles: 100,
14
- claude: { timeout: 30000 },
15
- workflow: {
16
- maxConcurrency: 3,
17
- pollInterval: 30000,
18
- maxRetries: 3,
19
- retryCooldown: 300000,
20
- workerTimeout: 1800000,
21
- maxVerificationIterations: 10,
22
- },
23
- };
24
- const fakeProduct = {
25
- id: 'prod-001',
26
- name: 'TestApp',
27
- description: 'A test product',
28
- features: [],
29
- };
30
- function makeCompetitor(name, id, status = 'confirmed') {
31
- return {
32
- id,
33
- product_id: 'prod-001',
34
- name,
35
- url: `https://${name.toLowerCase()}.com`,
36
- app_store_url: null,
37
- play_store_url: null,
38
- description: `${name} desc`,
39
- category: 'tools',
40
- status,
41
- discovery_source: status === 'suggested' ? 'ai_discovery' : 'manual',
42
- discovery_reason: status === 'suggested' ? 'AI found it' : null,
43
- notes: null,
44
- created_by: 'user-1',
45
- created_at: '2026-03-25',
46
- updated_at: '2026-03-25',
47
- };
48
- }
49
- function makeSnapshot(competitorId, id = 'snap-1') {
50
- return {
51
- id,
52
- competitor_id: competitorId,
53
- product_id: 'prod-001',
54
- features: [],
55
- pricing: {},
56
- tech_stack: [],
57
- app_rating: null,
58
- app_review_count: null,
59
- app_version: null,
60
- app_last_updated: null,
61
- recent_reviews: [],
62
- social_mentions: {},
63
- changes_detected: [],
64
- source: 'ai_analysis',
65
- raw_data: null,
66
- created_at: '2026-03-25',
67
- };
68
- }
69
- function makeReport(id = 'rpt-1') {
70
- return {
71
- id,
72
- product_id: 'prod-001',
73
- report_type: 'competitive',
74
- title: 'Test Report',
75
- summary: 'Summary',
76
- full_report: '# Report',
77
- key_findings: [],
78
- recommendations: [],
79
- competitor_highlights: [],
80
- market_signals: [],
81
- trends: [],
82
- persona_updates: null,
83
- pmf_score: null,
84
- pmf_signals: null,
85
- guidance: null,
86
- status: 'completed',
87
- snapshot_ids: [],
88
- created_by: 'user-1',
89
- created_at: '2026-03-25',
90
- updated_at: '2026-03-25',
91
- };
92
- }
93
- function makeContext(confirmed = []) {
94
- return {
95
- product: fakeProduct,
96
- confirmedCompetitors: confirmed,
97
- suggestedCompetitors: [],
98
- previousSnapshots: new Map(),
99
- };
100
- }
101
- /** Create mock deps that return the given AI result */
102
- function makeDeps(aiResult, contextOverride) {
103
- const batchCreateCalls = [];
104
- const saveSnapCalls = [];
105
- const saveRptCalls = [];
106
- const updateRptCalls = [];
107
- let batchCreateCounter = 0;
108
- return {
109
- batchCreateCalls,
110
- saveSnapCalls,
111
- saveRptCalls,
112
- updateRptCalls,
113
- prepareContext: () => Promise.resolve({
114
- context: contextOverride || makeContext(),
115
- analysisPrompt: 'fake prompt',
116
- }),
117
- executeQuery: () => Promise.resolve(aiResult),
118
- batchCreate: (_productId, competitors) => {
119
- batchCreateCalls.push([_productId, competitors]);
120
- return Promise.resolve(competitors.map((c) => makeCompetitor(c.name, `discovered-${batchCreateCounter++}`, 'suggested')));
121
- },
122
- saveSnap: (snap) => {
123
- saveSnapCalls.push([snap]);
124
- return Promise.resolve(makeSnapshot(snap.competitor_id, `snap-${saveSnapCalls.length}`));
125
- },
126
- saveRpt: (report) => {
127
- saveRptCalls.push([report]);
128
- return Promise.resolve(makeReport(`rpt-${saveRptCalls.length}`));
129
- },
130
- updateRpt: (_id, updates) => {
131
- updateRptCalls.push([_id, updates]);
132
- return Promise.resolve(makeReport(_id));
133
- },
134
- };
135
- }
136
- // ============================================================
137
- // Success: full flow with discovery
138
- // ============================================================
139
- void describe('analyseIntelligence — discovery flow', () => {
140
- const aiResult = {
141
- title: 'Competitive Report',
142
- summary: 'Found 2 competitors',
143
- full_report: '# Report',
144
- key_findings: [
145
- {
146
- finding: 'Competitor A is growing',
147
- severity: 'important',
148
- category: 'competitive',
149
- },
150
- ],
151
- recommendations: [
152
- {
153
- action: 'Add feature X',
154
- priority: 'high',
155
- effort: 'medium',
156
- impact: 'high',
157
- rationale: 'Gap',
158
- },
159
- ],
160
- competitor_highlights: [],
161
- market_signals: [],
162
- trends: [],
163
- discovered_competitors: [
164
- {
165
- name: 'CompA',
166
- url: 'https://compa.com',
167
- discovery_reason: 'Top alternative',
168
- },
169
- {
170
- name: 'CompB',
171
- url: 'https://compb.com',
172
- discovery_reason: 'Same category',
173
- },
174
- ],
175
- competitor_snapshots: [
176
- {
177
- competitor_name: 'CompA',
178
- features: [{ name: 'Feat1', description: 'Desc', is_new: true }],
179
- app_rating: 4.5,
180
- },
181
- { competitor_name: 'CompB', features: [], app_rating: 3.8 },
182
- ],
183
- };
184
- void it('should return success status', async () => {
185
- const deps = makeDeps(aiResult);
186
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
187
- assert.strictEqual(result.status, 'success');
188
- });
189
- void it('should save discovered competitors via batchCreate', async () => {
190
- const deps = makeDeps(aiResult);
191
- await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
192
- assert.strictEqual(deps.batchCreateCalls.length, 1);
193
- const [, competitors] = deps.batchCreateCalls[0];
194
- assert.strictEqual(competitors.length, 2);
195
- assert.strictEqual(competitors[0].name, 'CompA');
196
- assert.strictEqual(competitors[1].name, 'CompB');
197
- });
198
- void it('should save snapshots matched to discovered competitors', async () => {
199
- const deps = makeDeps(aiResult);
200
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
201
- assert.strictEqual(deps.saveSnapCalls.length, 2);
202
- assert.strictEqual(result.snapshots.length, 2);
203
- });
204
- void it('should save the report', async () => {
205
- const deps = makeDeps(aiResult);
206
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
207
- assert.strictEqual(deps.saveRptCalls.length, 1);
208
- assert.ok(result.report);
209
- });
210
- void it('should return discovered competitors in result', async () => {
211
- const deps = makeDeps(aiResult);
212
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
213
- assert.strictEqual(result.discoveredCompetitors.length, 2);
214
- });
215
- });
216
- // ============================================================
217
- // Success: existing competitors (no discovery needed)
218
- // ============================================================
219
- void describe('analyseIntelligence — existing competitors', () => {
220
- const existing = [makeCompetitor('Linear', 'id-linear')];
221
- const aiResult = {
222
- title: 'Report',
223
- summary: 'Update',
224
- full_report: '# R',
225
- key_findings: [],
226
- recommendations: [],
227
- competitor_highlights: [],
228
- market_signals: [],
229
- trends: [],
230
- discovered_competitors: [],
231
- competitor_snapshots: [
232
- {
233
- competitor_id: 'id-linear',
234
- competitor_name: 'Linear',
235
- features: [],
236
- app_rating: 4.6,
237
- },
238
- ],
239
- };
240
- void it('should not call batchCreate when no new competitors', async () => {
241
- const deps = makeDeps(aiResult, makeContext(existing));
242
- await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
243
- assert.strictEqual(deps.batchCreateCalls.length, 0);
244
- });
245
- void it('should save snapshot matched by ID', async () => {
246
- const deps = makeDeps(aiResult, makeContext(existing));
247
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
248
- assert.strictEqual(result.snapshots.length, 1);
249
- const [snapArg] = deps.saveSnapCalls[0];
250
- assert.strictEqual(snapArg.competitor_id, 'id-linear');
251
- });
252
- });
253
- // ============================================================
254
- // Error: AI returns null
255
- // ============================================================
256
- void describe('analyseIntelligence — AI returns null', () => {
257
- void it('should return error status', async () => {
258
- const deps = makeDeps(null);
259
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
260
- assert.strictEqual(result.status, 'error');
261
- assert.strictEqual(result.report, null);
262
- assert.strictEqual(result.discoveredCompetitors.length, 0);
263
- assert.strictEqual(result.snapshots.length, 0);
264
- });
265
- });
266
- // ============================================================
267
- // Edge: AI returns empty arrays
268
- // ============================================================
269
- void describe('analyseIntelligence — empty AI result', () => {
270
- const emptyResult = {
271
- title: 'Empty',
272
- summary: 'Nothing found',
273
- full_report: '',
274
- key_findings: [],
275
- recommendations: [],
276
- competitor_highlights: [],
277
- market_signals: [],
278
- trends: [],
279
- };
280
- void it('should succeed with no competitors or snapshots', async () => {
281
- const deps = makeDeps(emptyResult);
282
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
283
- assert.strictEqual(result.status, 'success');
284
- assert.strictEqual(result.discoveredCompetitors.length, 0);
285
- assert.strictEqual(result.snapshots.length, 0);
286
- assert.strictEqual(deps.batchCreateCalls.length, 0);
287
- assert.strictEqual(deps.saveSnapCalls.length, 0);
288
- });
289
- void it('should still save a report', async () => {
290
- const deps = makeDeps(emptyResult);
291
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
292
- assert.strictEqual(deps.saveRptCalls.length, 1);
293
- assert.ok(result.report);
294
- });
295
- });
296
- // ============================================================
297
- // Edge: unmatched snapshots are skipped
298
- // ============================================================
299
- void describe('analyseIntelligence — unmatched snapshots', () => {
300
- const aiResult = {
301
- title: 'R',
302
- summary: 'S',
303
- full_report: '',
304
- key_findings: [],
305
- recommendations: [],
306
- competitor_highlights: [],
307
- market_signals: [],
308
- trends: [],
309
- discovered_competitors: [],
310
- competitor_snapshots: [
311
- { competitor_name: 'Totally Unknown Product', features: [] },
312
- ],
313
- };
314
- void it('should skip snapshots for unknown competitors', async () => {
315
- const deps = makeDeps(aiResult, makeContext([makeCompetitor('Linear', 'id-linear')]));
316
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
317
- assert.strictEqual(result.snapshots.length, 0);
318
- assert.strictEqual(deps.saveSnapCalls.length, 0);
319
- });
320
- });
321
- // ============================================================
322
- // Report update mode
323
- // ============================================================
324
- void describe('analyseIntelligence — update existing report', () => {
325
- const aiResult = {
326
- title: 'Updated',
327
- summary: 'Refreshed',
328
- full_report: '# Updated',
329
- key_findings: [],
330
- recommendations: [],
331
- competitor_highlights: [],
332
- market_signals: [],
333
- trends: [],
334
- };
335
- void it('should call updateRpt instead of saveRpt when reportId given', async () => {
336
- const deps = makeDeps(aiResult);
337
- await analyseIntelligence({ productId: 'prod-001', reportId: 'existing-rpt' }, fakeConfig, deps);
338
- assert.strictEqual(deps.updateRptCalls.length, 1);
339
- assert.strictEqual(deps.saveRptCalls.length, 0);
340
- const [rptId] = deps.updateRptCalls[0];
341
- assert.strictEqual(rptId, 'existing-rpt');
342
- });
343
- });
344
- // ============================================================
345
- // Guidance passthrough
346
- // ============================================================
347
- void describe('analyseIntelligence — guidance', () => {
348
- void it('should pass guidance into report payload', async () => {
349
- const aiResult = {
350
- title: 'R',
351
- summary: 'S',
352
- full_report: '',
353
- key_findings: [],
354
- recommendations: [],
355
- competitor_highlights: [],
356
- market_signals: [],
357
- trends: [],
358
- };
359
- const deps = makeDeps(aiResult);
360
- await analyseIntelligence({ productId: 'prod-001', guidance: 'Focus on pricing' }, fakeConfig, deps);
361
- const [reportArg] = deps.saveRptCalls[0];
362
- assert.strictEqual(reportArg.guidance, 'Focus on pricing');
363
- });
364
- });
365
- // ============================================================
366
- // Exception handling
367
- // ============================================================
368
- void describe('analyseIntelligence — exception in deps', () => {
369
- void it('should return error when context fetch throws', async () => {
370
- const deps = makeDeps(null);
371
- deps.prepareContext = () => {
372
- return Promise.reject(new Error('Network error'));
373
- };
374
- const result = await analyseIntelligence({ productId: 'prod-001' }, fakeConfig, deps);
375
- assert.strictEqual(result.status, 'error');
376
- assert.ok(result.error?.includes('Network error'));
377
- });
378
- });
@@ -1,4 +0,0 @@
1
- /**
2
- * Unit tests for intelligence analysis prompt generation.
3
- */
4
- export {};
@@ -1,33 +0,0 @@
1
- /**
2
- * Unit tests for intelligence analysis prompt generation.
3
- */
4
- import assert from 'node:assert';
5
- import { describe, it } from 'node:test';
6
- import { createIntelligencePromptWithContext } from '../prompts.js';
7
- // ============================================================
8
- // Context prompt
9
- // ============================================================
10
- void describe('createIntelligencePromptWithContext', () => {
11
- const contextInfo = '# Context\nProduct: TestApp\n## Competitors\nNone';
12
- void it('should include report type', () => {
13
- const result = createIntelligencePromptWithContext('p1', contextInfo, 'competitive', true);
14
- assert.ok(result.includes('competitive'));
15
- });
16
- void it('should include discovery instructions when needed', () => {
17
- const result = createIntelligencePromptWithContext('p1', contextInfo, 'competitive', true);
18
- assert.ok(result.includes('Competitor Discovery Required'));
19
- });
20
- void it('should use softer discovery language when competitors exist', () => {
21
- const result = createIntelligencePromptWithContext('p1', contextInfo, 'competitive', false);
22
- assert.ok(!result.includes('Competitor Discovery Required'));
23
- assert.ok(result.includes('also look for new entrants'));
24
- });
25
- void it('should embed the context info', () => {
26
- const result = createIntelligencePromptWithContext('p1', contextInfo, 'market', false);
27
- assert.ok(result.includes('Product: TestApp'));
28
- });
29
- void it('should instruct to use web search', () => {
30
- const result = createIntelligencePromptWithContext('p1', contextInfo, 'competitive', true);
31
- assert.ok(result.includes('web search'));
32
- });
33
- });