edsger 0.76.0 → 0.78.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 (853) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +95 -210
  3. package/assets/LICENSE +21 -0
  4. package/assets/README.md +104 -0
  5. package/assets/benchmark/base.yaml +286 -0
  6. package/assets/benchmark/csharp.yaml +68 -0
  7. package/assets/benchmark/dart.yaml +70 -0
  8. package/assets/benchmark/go.yaml +71 -0
  9. package/assets/benchmark/java.yaml +68 -0
  10. package/assets/benchmark/python.yaml +72 -0
  11. package/assets/benchmark/typescript.yaml +71 -0
  12. package/assets/languages.yaml +35 -0
  13. package/assets/manifest.yaml +39 -0
  14. package/assets/review/base.yaml +111 -0
  15. package/assets/review/csharp.yaml +38 -0
  16. package/assets/review/dart.yaml +40 -0
  17. package/assets/review/go.yaml +40 -0
  18. package/assets/review/java.yaml +40 -0
  19. package/assets/review/python.yaml +41 -0
  20. package/assets/review/typescript.yaml +40 -0
  21. package/assets/schema/benchmark.schema.json +87 -0
  22. package/assets/schema/review.schema.json +73 -0
  23. package/assets/skills/benchmark/SKILL.md +66 -0
  24. package/assets/skills/pr-resolve/SKILL.md +58 -0
  25. package/assets/skills/pr-review/SKILL.md +66 -0
  26. package/dist/index.js +1339 -1218
  27. package/dist/index.js.map +1 -0
  28. package/package.json +58 -53
  29. package/dist/api/adr.d.ts +0 -48
  30. package/dist/api/adr.js +0 -139
  31. package/dist/api/app-store-iap.d.ts +0 -60
  32. package/dist/api/app-store-iap.js +0 -145
  33. package/dist/api/app-store.d.ts +0 -93
  34. package/dist/api/app-store.js +0 -206
  35. package/dist/api/chat.d.ts +0 -72
  36. package/dist/api/chat.js +0 -272
  37. package/dist/api/cross-product.d.ts +0 -33
  38. package/dist/api/cross-product.js +0 -127
  39. package/dist/api/financing.d.ts +0 -47
  40. package/dist/api/financing.js +0 -37
  41. package/dist/api/github.d.ts +0 -86
  42. package/dist/api/github.js +0 -203
  43. package/dist/api/growth.d.ts +0 -81
  44. package/dist/api/growth.js +0 -75
  45. package/dist/api/intelligence-normalize.d.ts +0 -25
  46. package/dist/api/intelligence-normalize.js +0 -103
  47. package/dist/api/intelligence.d.ts +0 -187
  48. package/dist/api/intelligence.js +0 -402
  49. package/dist/api/issues/approval-checker.d.ts +0 -22
  50. package/dist/api/issues/approval-checker.js +0 -141
  51. package/dist/api/issues/batch-operations.d.ts +0 -17
  52. package/dist/api/issues/batch-operations.js +0 -100
  53. package/dist/api/issues/get-issue.d.ts +0 -5
  54. package/dist/api/issues/get-issue.js +0 -47
  55. package/dist/api/issues/index.d.ts +0 -8
  56. package/dist/api/issues/index.js +0 -10
  57. package/dist/api/issues/issue-utils.d.ts +0 -25
  58. package/dist/api/issues/issue-utils.js +0 -133
  59. package/dist/api/issues/status-updater.d.ts +0 -68
  60. package/dist/api/issues/status-updater.js +0 -190
  61. package/dist/api/issues/test-cases.d.ts +0 -29
  62. package/dist/api/issues/test-cases.js +0 -185
  63. package/dist/api/issues/update-issue.d.ts +0 -25
  64. package/dist/api/issues/update-issue.js +0 -127
  65. package/dist/api/issues/user-stories.d.ts +0 -21
  66. package/dist/api/issues/user-stories.js +0 -163
  67. package/dist/api/mcp-client.d.ts +0 -22
  68. package/dist/api/mcp-client.js +0 -75
  69. package/dist/api/products/test-cases.d.ts +0 -18
  70. package/dist/api/products/test-cases.js +0 -51
  71. package/dist/api/products.d.ts +0 -15
  72. package/dist/api/products.js +0 -45
  73. package/dist/api/release-test-cases.d.ts +0 -7
  74. package/dist/api/release-test-cases.js +0 -59
  75. package/dist/api/releases.d.ts +0 -41
  76. package/dist/api/releases.js +0 -117
  77. package/dist/api/run-sheets.d.ts +0 -22
  78. package/dist/api/run-sheets.js +0 -13
  79. package/dist/api/storage.d.ts +0 -13
  80. package/dist/api/storage.js +0 -29
  81. package/dist/api/tasks.d.ts +0 -26
  82. package/dist/api/tasks.js +0 -81
  83. package/dist/api/test-reports.d.ts +0 -9
  84. package/dist/api/test-reports.js +0 -43
  85. package/dist/api/user-psychology.d.ts +0 -101
  86. package/dist/api/user-psychology.js +0 -143
  87. package/dist/api/web-deploy.d.ts +0 -67
  88. package/dist/api/web-deploy.js +0 -199
  89. package/dist/auth/auth-store.d.ts +0 -98
  90. package/dist/auth/auth-store.js +0 -194
  91. package/dist/auth/env-store.d.ts +0 -41
  92. package/dist/auth/env-store.js +0 -127
  93. package/dist/auth/login.d.ts +0 -18
  94. package/dist/auth/login.js +0 -179
  95. package/dist/commands/adr/index.d.ts +0 -13
  96. package/dist/commands/adr/index.js +0 -31
  97. package/dist/commands/agent-workflow/chat-worker.d.ts +0 -16
  98. package/dist/commands/agent-workflow/chat-worker.js +0 -465
  99. package/dist/commands/agent-workflow/index.d.ts +0 -13
  100. package/dist/commands/agent-workflow/index.js +0 -107
  101. package/dist/commands/agent-workflow/issue-worker.d.ts +0 -14
  102. package/dist/commands/agent-workflow/issue-worker.js +0 -65
  103. package/dist/commands/agent-workflow/processor.d.ts +0 -95
  104. package/dist/commands/agent-workflow/processor.js +0 -519
  105. package/dist/commands/analyze-logs/index.d.ts +0 -7
  106. package/dist/commands/analyze-logs/index.js +0 -34
  107. package/dist/commands/app-store/index.d.ts +0 -12
  108. package/dist/commands/app-store/index.js +0 -69
  109. package/dist/commands/architecture-diagram/index.d.ts +0 -8
  110. package/dist/commands/architecture-diagram/index.js +0 -10
  111. package/dist/commands/build/detect-project.d.ts +0 -52
  112. package/dist/commands/build/detect-project.js +0 -277
  113. package/dist/commands/build/index.d.ts +0 -66
  114. package/dist/commands/build/index.js +0 -544
  115. package/dist/commands/chat-serve/chat-server.d.ts +0 -114
  116. package/dist/commands/chat-serve/chat-server.js +0 -339
  117. package/dist/commands/chat-serve/index.d.ts +0 -20
  118. package/dist/commands/chat-serve/index.js +0 -58
  119. package/dist/commands/checklists/index.d.ts +0 -16
  120. package/dist/commands/checklists/index.js +0 -187
  121. package/dist/commands/checklists/tools.d.ts +0 -17
  122. package/dist/commands/checklists/tools.js +0 -19
  123. package/dist/commands/class-diagram/index.d.ts +0 -7
  124. package/dist/commands/class-diagram/index.js +0 -9
  125. package/dist/commands/code-review/index.d.ts +0 -2
  126. package/dist/commands/code-review/index.js +0 -37
  127. package/dist/commands/code-review/reviewer.d.ts +0 -3
  128. package/dist/commands/code-review/reviewer.js +0 -205
  129. package/dist/commands/config/index.d.ts +0 -16
  130. package/dist/commands/config/index.js +0 -60
  131. package/dist/commands/data-flow/index.d.ts +0 -19
  132. package/dist/commands/data-flow/index.js +0 -55
  133. package/dist/commands/diagram-shared/index.d.ts +0 -21
  134. package/dist/commands/diagram-shared/index.js +0 -37
  135. package/dist/commands/discover/index.d.ts +0 -14
  136. package/dist/commands/discover/index.js +0 -29
  137. package/dist/commands/er-diagram/index.d.ts +0 -19
  138. package/dist/commands/er-diagram/index.js +0 -55
  139. package/dist/commands/features/index.d.ts +0 -15
  140. package/dist/commands/features/index.js +0 -34
  141. package/dist/commands/financing-deck/index.d.ts +0 -8
  142. package/dist/commands/financing-deck/index.js +0 -66
  143. package/dist/commands/find-architecture/index.d.ts +0 -15
  144. package/dist/commands/find-architecture/index.js +0 -50
  145. package/dist/commands/find-bugs/index.d.ts +0 -13
  146. package/dist/commands/find-bugs/index.js +0 -48
  147. package/dist/commands/find-features/index.d.ts +0 -14
  148. package/dist/commands/find-features/index.js +0 -42
  149. package/dist/commands/find-smells/index.d.ts +0 -23
  150. package/dist/commands/find-smells/index.js +0 -74
  151. package/dist/commands/flowchart/index.d.ts +0 -8
  152. package/dist/commands/flowchart/index.js +0 -10
  153. package/dist/commands/growth-analysis/index.d.ts +0 -7
  154. package/dist/commands/growth-analysis/index.js +0 -89
  155. package/dist/commands/init/index.d.ts +0 -5
  156. package/dist/commands/init/index.js +0 -152
  157. package/dist/commands/init/prompts.d.ts +0 -9
  158. package/dist/commands/init/prompts.js +0 -128
  159. package/dist/commands/init/templates.d.ts +0 -9
  160. package/dist/commands/init/templates.js +0 -264
  161. package/dist/commands/intelligence/index.d.ts +0 -15
  162. package/dist/commands/intelligence/index.js +0 -138
  163. package/dist/commands/issue-analysis/index.d.ts +0 -5
  164. package/dist/commands/issue-analysis/index.js +0 -9
  165. package/dist/commands/pr-resolve/index.d.ts +0 -13
  166. package/dist/commands/pr-resolve/index.js +0 -50
  167. package/dist/commands/pr-review/index.d.ts +0 -12
  168. package/dist/commands/pr-review/index.js +0 -47
  169. package/dist/commands/product-techniques/index.d.ts +0 -15
  170. package/dist/commands/product-techniques/index.js +0 -37
  171. package/dist/commands/product-test-cases/index.d.ts +0 -12
  172. package/dist/commands/product-test-cases/index.js +0 -40
  173. package/dist/commands/quality-benchmark/index.d.ts +0 -40
  174. package/dist/commands/quality-benchmark/index.js +0 -219
  175. package/dist/commands/recipes/index.d.ts +0 -17
  176. package/dist/commands/recipes/index.js +0 -40
  177. package/dist/commands/refactor/refactor.d.ts +0 -2
  178. package/dist/commands/refactor/refactor.js +0 -134
  179. package/dist/commands/release-sync/index.d.ts +0 -5
  180. package/dist/commands/release-sync/index.js +0 -38
  181. package/dist/commands/run-sheet/index.d.ts +0 -6
  182. package/dist/commands/run-sheet/index.js +0 -48
  183. package/dist/commands/screen-flow/index.d.ts +0 -18
  184. package/dist/commands/screen-flow/index.js +0 -54
  185. package/dist/commands/sequence-diagram/index.d.ts +0 -19
  186. package/dist/commands/sequence-diagram/index.js +0 -55
  187. package/dist/commands/session-serve/index.d.ts +0 -32
  188. package/dist/commands/session-serve/index.js +0 -100
  189. package/dist/commands/session-turn/index.d.ts +0 -73
  190. package/dist/commands/session-turn/index.js +0 -254
  191. package/dist/commands/smoke-test/index.d.ts +0 -5
  192. package/dist/commands/smoke-test/index.js +0 -40
  193. package/dist/commands/state-diagram/index.d.ts +0 -7
  194. package/dist/commands/state-diagram/index.js +0 -9
  195. package/dist/commands/sync-aws/index.d.ts +0 -16
  196. package/dist/commands/sync-aws/index.js +0 -214
  197. package/dist/commands/sync-datadog/index.d.ts +0 -16
  198. package/dist/commands/sync-datadog/index.js +0 -236
  199. package/dist/commands/sync-github-issues/index.d.ts +0 -11
  200. package/dist/commands/sync-github-issues/index.js +0 -42
  201. package/dist/commands/sync-github-pull-requests/index.d.ts +0 -11
  202. package/dist/commands/sync-github-pull-requests/index.js +0 -42
  203. package/dist/commands/sync-org-repos/index.d.ts +0 -12
  204. package/dist/commands/sync-org-repos/index.js +0 -60
  205. package/dist/commands/sync-sentry-issues/index.d.ts +0 -14
  206. package/dist/commands/sync-sentry-issues/index.js +0 -73
  207. package/dist/commands/sync-terraform/index.d.ts +0 -16
  208. package/dist/commands/sync-terraform/index.js +0 -248
  209. package/dist/commands/task-worker/index.d.ts +0 -8
  210. package/dist/commands/task-worker/index.js +0 -34
  211. package/dist/commands/task-worker/processor.d.ts +0 -23
  212. package/dist/commands/task-worker/processor.js +0 -84
  213. package/dist/commands/technical-design/index.d.ts +0 -5
  214. package/dist/commands/technical-design/index.js +0 -9
  215. package/dist/commands/test-cases-analysis/index.d.ts +0 -5
  216. package/dist/commands/test-cases-analysis/index.js +0 -9
  217. package/dist/commands/user-psychology/index.d.ts +0 -7
  218. package/dist/commands/user-psychology/index.js +0 -51
  219. package/dist/commands/user-stories-analysis/index.d.ts +0 -5
  220. package/dist/commands/user-stories-analysis/index.js +0 -9
  221. package/dist/commands/workflow/config/phase-configs.d.ts +0 -5
  222. package/dist/commands/workflow/config/phase-configs.js +0 -132
  223. package/dist/commands/workflow/core/index.d.ts +0 -8
  224. package/dist/commands/workflow/core/index.js +0 -12
  225. package/dist/commands/workflow/core/issue-filter.d.ts +0 -16
  226. package/dist/commands/workflow/core/issue-filter.js +0 -47
  227. package/dist/commands/workflow/core/pipeline-evaluator.d.ts +0 -24
  228. package/dist/commands/workflow/core/pipeline-evaluator.js +0 -32
  229. package/dist/commands/workflow/core/state-manager.d.ts +0 -24
  230. package/dist/commands/workflow/core/state-manager.js +0 -42
  231. package/dist/commands/workflow/core/workflow-logger.d.ts +0 -23
  232. package/dist/commands/workflow/core/workflow-logger.js +0 -77
  233. package/dist/commands/workflow/executors/phase-executor.d.ts +0 -8
  234. package/dist/commands/workflow/executors/phase-executor.js +0 -338
  235. package/dist/commands/workflow/index.d.ts +0 -2
  236. package/dist/commands/workflow/index.js +0 -34
  237. package/dist/commands/workflow/issue-coordinator.d.ts +0 -18
  238. package/dist/commands/workflow/issue-coordinator.js +0 -161
  239. package/dist/commands/workflow/phase-orchestrator.d.ts +0 -26
  240. package/dist/commands/workflow/phase-orchestrator.js +0 -699
  241. package/dist/commands/workflow/processor.d.ts +0 -47
  242. package/dist/commands/workflow/processor.js +0 -149
  243. package/dist/config/issue-status.d.ts +0 -29
  244. package/dist/config/issue-status.js +0 -44
  245. package/dist/config.d.ts +0 -3
  246. package/dist/config.js +0 -79
  247. package/dist/constants.d.ts +0 -10
  248. package/dist/constants.js +0 -36
  249. package/dist/errors/index.d.ts +0 -68
  250. package/dist/errors/index.js +0 -129
  251. package/dist/index.d.ts +0 -4
  252. package/dist/phases/adr-generation/agent.d.ts +0 -6
  253. package/dist/phases/adr-generation/agent.js +0 -69
  254. package/dist/phases/adr-generation/index.d.ts +0 -15
  255. package/dist/phases/adr-generation/index.js +0 -66
  256. package/dist/phases/adr-generation/parse.d.ts +0 -12
  257. package/dist/phases/adr-generation/parse.js +0 -123
  258. package/dist/phases/adr-generation/prompts.d.ts +0 -8
  259. package/dist/phases/adr-generation/prompts.js +0 -35
  260. package/dist/phases/analyze-logs/agent.d.ts +0 -11
  261. package/dist/phases/analyze-logs/agent.js +0 -66
  262. package/dist/phases/analyze-logs/index.d.ts +0 -23
  263. package/dist/phases/analyze-logs/index.js +0 -152
  264. package/dist/phases/analyze-logs/prompts.d.ts +0 -3
  265. package/dist/phases/analyze-logs/prompts.js +0 -27
  266. package/dist/phases/app-store-generation/agent.d.ts +0 -2
  267. package/dist/phases/app-store-generation/agent.js +0 -177
  268. package/dist/phases/app-store-generation/assets/inter-latin-ext.woff2 +0 -0
  269. package/dist/phases/app-store-generation/assets/inter-latin.woff2 +0 -0
  270. package/dist/phases/app-store-generation/context.d.ts +0 -21
  271. package/dist/phases/app-store-generation/context.js +0 -78
  272. package/dist/phases/app-store-generation/index.d.ts +0 -20
  273. package/dist/phases/app-store-generation/index.js +0 -157
  274. package/dist/phases/app-store-generation/inter-font.d.ts +0 -20
  275. package/dist/phases/app-store-generation/inter-font.js +0 -49
  276. package/dist/phases/app-store-generation/prompts.d.ts +0 -43
  277. package/dist/phases/app-store-generation/prompts.js +0 -73
  278. package/dist/phases/app-store-generation/screenshot-composer.d.ts +0 -41
  279. package/dist/phases/app-store-generation/screenshot-composer.js +0 -516
  280. package/dist/phases/app-store-generation/uploader.d.ts +0 -19
  281. package/dist/phases/app-store-generation/uploader.js +0 -150
  282. package/dist/phases/architecture-diagram/index.d.ts +0 -15
  283. package/dist/phases/architecture-diagram/index.js +0 -51
  284. package/dist/phases/autonomous/index.d.ts +0 -32
  285. package/dist/phases/autonomous/index.js +0 -412
  286. package/dist/phases/autonomous/prompts.d.ts +0 -5
  287. package/dist/phases/autonomous/prompts.js +0 -31
  288. package/dist/phases/branch-planning/context.d.ts +0 -14
  289. package/dist/phases/branch-planning/context.js +0 -43
  290. package/dist/phases/branch-planning/index.d.ts +0 -25
  291. package/dist/phases/branch-planning/index.js +0 -404
  292. package/dist/phases/branch-planning/outcome.d.ts +0 -28
  293. package/dist/phases/branch-planning/outcome.js +0 -115
  294. package/dist/phases/branch-planning/prompts.d.ts +0 -41
  295. package/dist/phases/branch-planning/prompts.js +0 -157
  296. package/dist/phases/bug-fixing/analyzer.d.ts +0 -17
  297. package/dist/phases/bug-fixing/analyzer.js +0 -247
  298. package/dist/phases/bug-fixing/context-fetcher.d.ts +0 -22
  299. package/dist/phases/bug-fixing/context-fetcher.js +0 -137
  300. package/dist/phases/bug-fixing/index.d.ts +0 -7
  301. package/dist/phases/bug-fixing/index.js +0 -7
  302. package/dist/phases/bug-fixing/mcp-server.d.ts +0 -18
  303. package/dist/phases/bug-fixing/mcp-server.js +0 -19
  304. package/dist/phases/bug-fixing/prompts.d.ts +0 -2
  305. package/dist/phases/bug-fixing/prompts.js +0 -9
  306. package/dist/phases/chat-processor/context.d.ts +0 -38
  307. package/dist/phases/chat-processor/context.js +0 -91
  308. package/dist/phases/chat-processor/index.d.ts +0 -49
  309. package/dist/phases/chat-processor/index.js +0 -482
  310. package/dist/phases/chat-processor/product-context.d.ts +0 -36
  311. package/dist/phases/chat-processor/product-context.js +0 -113
  312. package/dist/phases/chat-processor/product-prompts.d.ts +0 -4
  313. package/dist/phases/chat-processor/product-prompts.js +0 -65
  314. package/dist/phases/chat-processor/product-tools.d.ts +0 -8
  315. package/dist/phases/chat-processor/product-tools.js +0 -11
  316. package/dist/phases/chat-processor/prompts.d.ts +0 -35
  317. package/dist/phases/chat-processor/prompts.js +0 -213
  318. package/dist/phases/chat-processor/tools.d.ts +0 -8
  319. package/dist/phases/chat-processor/tools.js +0 -11
  320. package/dist/phases/class-diagram/index.d.ts +0 -14
  321. package/dist/phases/class-diagram/index.js +0 -76
  322. package/dist/phases/code-implementation/branch-pr-creator.d.ts +0 -31
  323. package/dist/phases/code-implementation/branch-pr-creator.js +0 -172
  324. package/dist/phases/code-implementation/context.d.ts +0 -17
  325. package/dist/phases/code-implementation/context.js +0 -88
  326. package/dist/phases/code-implementation/index.d.ts +0 -33
  327. package/dist/phases/code-implementation/index.js +0 -926
  328. package/dist/phases/code-implementation/outcome.d.ts +0 -47
  329. package/dist/phases/code-implementation/outcome.js +0 -53
  330. package/dist/phases/code-implementation/prompts.d.ts +0 -8
  331. package/dist/phases/code-implementation/prompts.js +0 -166
  332. package/dist/phases/code-implementation-verification/agent.d.ts +0 -32
  333. package/dist/phases/code-implementation-verification/agent.js +0 -225
  334. package/dist/phases/code-implementation-verification/index.d.ts +0 -27
  335. package/dist/phases/code-implementation-verification/index.js +0 -121
  336. package/dist/phases/code-implementation-verification/prompts.d.ts +0 -10
  337. package/dist/phases/code-implementation-verification/prompts.js +0 -90
  338. package/dist/phases/code-refine/context.d.ts +0 -99
  339. package/dist/phases/code-refine/context.js +0 -457
  340. package/dist/phases/code-refine/index.d.ts +0 -59
  341. package/dist/phases/code-refine/index.js +0 -348
  342. package/dist/phases/code-refine/prompts.d.ts +0 -5
  343. package/dist/phases/code-refine/prompts.js +0 -162
  344. package/dist/phases/code-refine/refine-iteration.d.ts +0 -33
  345. package/dist/phases/code-refine/refine-iteration.js +0 -166
  346. package/dist/phases/code-refine/retry-handler.d.ts +0 -17
  347. package/dist/phases/code-refine/retry-handler.js +0 -87
  348. package/dist/phases/code-refine-verification/github.d.ts +0 -54
  349. package/dist/phases/code-refine-verification/github.js +0 -328
  350. package/dist/phases/code-refine-verification/index.d.ts +0 -11
  351. package/dist/phases/code-refine-verification/index.js +0 -260
  352. package/dist/phases/code-refine-verification/llm-analyzer.d.ts +0 -22
  353. package/dist/phases/code-refine-verification/llm-analyzer.js +0 -152
  354. package/dist/phases/code-refine-verification/prompts.d.ts +0 -5
  355. package/dist/phases/code-refine-verification/prompts.js +0 -119
  356. package/dist/phases/code-refine-verification/types.d.ts +0 -74
  357. package/dist/phases/code-refine-verification/types.js +0 -4
  358. package/dist/phases/code-review/context.d.ts +0 -96
  359. package/dist/phases/code-review/context.js +0 -278
  360. package/dist/phases/code-review/diff-utils.d.ts +0 -36
  361. package/dist/phases/code-review/diff-utils.js +0 -100
  362. package/dist/phases/code-review/index.d.ts +0 -40
  363. package/dist/phases/code-review/index.js +0 -627
  364. package/dist/phases/code-testing/analyzer.d.ts +0 -19
  365. package/dist/phases/code-testing/analyzer.js +0 -215
  366. package/dist/phases/code-testing/context-fetcher.d.ts +0 -16
  367. package/dist/phases/code-testing/context-fetcher.js +0 -83
  368. package/dist/phases/code-testing/index.d.ts +0 -2
  369. package/dist/phases/code-testing/index.js +0 -2
  370. package/dist/phases/code-testing/prompts.d.ts +0 -3
  371. package/dist/phases/code-testing/prompts.js +0 -63
  372. package/dist/phases/data-flow/index.d.ts +0 -28
  373. package/dist/phases/data-flow/index.js +0 -286
  374. package/dist/phases/data-flow/mcp-server.d.ts +0 -85
  375. package/dist/phases/data-flow/mcp-server.js +0 -140
  376. package/dist/phases/data-flow/prompts.d.ts +0 -14
  377. package/dist/phases/data-flow/prompts.js +0 -36
  378. package/dist/phases/data-flow/types.d.ts +0 -71
  379. package/dist/phases/data-flow/types.js +0 -86
  380. package/dist/phases/diagram-shared/clone-repos.d.ts +0 -63
  381. package/dist/phases/diagram-shared/clone-repos.js +0 -153
  382. package/dist/phases/diagram-shared/generate.d.ts +0 -42
  383. package/dist/phases/diagram-shared/generate.js +0 -162
  384. package/dist/phases/diagram-shared/graph.d.ts +0 -62
  385. package/dist/phases/diagram-shared/graph.js +0 -169
  386. package/dist/phases/diagram-shared/mcp.d.ts +0 -35
  387. package/dist/phases/diagram-shared/mcp.js +0 -68
  388. package/dist/phases/diagram-shared/prompts.d.ts +0 -23
  389. package/dist/phases/diagram-shared/prompts.js +0 -35
  390. package/dist/phases/discover-services/index.d.ts +0 -29
  391. package/dist/phases/discover-services/index.js +0 -528
  392. package/dist/phases/er-diagram/index.d.ts +0 -28
  393. package/dist/phases/er-diagram/index.js +0 -290
  394. package/dist/phases/er-diagram/mcp-server.d.ts +0 -77
  395. package/dist/phases/er-diagram/mcp-server.js +0 -144
  396. package/dist/phases/er-diagram/prompts.d.ts +0 -14
  397. package/dist/phases/er-diagram/prompts.js +0 -36
  398. package/dist/phases/er-diagram/types.d.ts +0 -76
  399. package/dist/phases/er-diagram/types.js +0 -84
  400. package/dist/phases/features/index.d.ts +0 -65
  401. package/dist/phases/features/index.js +0 -292
  402. package/dist/phases/features/mcp-server.d.ts +0 -61
  403. package/dist/phases/features/mcp-server.js +0 -165
  404. package/dist/phases/features/prompts.d.ts +0 -32
  405. package/dist/phases/features/prompts.js +0 -92
  406. package/dist/phases/features/types.d.ts +0 -34
  407. package/dist/phases/features/types.js +0 -15
  408. package/dist/phases/financing-deck/agent.d.ts +0 -1
  409. package/dist/phases/financing-deck/agent.js +0 -96
  410. package/dist/phases/financing-deck/context.d.ts +0 -13
  411. package/dist/phases/financing-deck/context.js +0 -69
  412. package/dist/phases/financing-deck/index.d.ts +0 -15
  413. package/dist/phases/financing-deck/index.js +0 -89
  414. package/dist/phases/financing-deck/prompts.d.ts +0 -2
  415. package/dist/phases/financing-deck/prompts.js +0 -94
  416. package/dist/phases/find-architecture/index.d.ts +0 -47
  417. package/dist/phases/find-architecture/index.js +0 -261
  418. package/dist/phases/find-architecture/prompts.d.ts +0 -31
  419. package/dist/phases/find-architecture/prompts.js +0 -128
  420. package/dist/phases/find-architecture/state.d.ts +0 -21
  421. package/dist/phases/find-architecture/state.js +0 -17
  422. package/dist/phases/find-architecture/types.d.ts +0 -55
  423. package/dist/phases/find-architecture/types.js +0 -69
  424. package/dist/phases/find-bugs/index.d.ts +0 -33
  425. package/dist/phases/find-bugs/index.js +0 -236
  426. package/dist/phases/find-bugs/prompts.d.ts +0 -22
  427. package/dist/phases/find-bugs/prompts.js +0 -101
  428. package/dist/phases/find-bugs/state.d.ts +0 -19
  429. package/dist/phases/find-bugs/state.js +0 -13
  430. package/dist/phases/find-bugs/types.d.ts +0 -21
  431. package/dist/phases/find-bugs/types.js +0 -16
  432. package/dist/phases/find-features/index.d.ts +0 -40
  433. package/dist/phases/find-features/index.js +0 -328
  434. package/dist/phases/find-features/prompts.d.ts +0 -43
  435. package/dist/phases/find-features/prompts.js +0 -138
  436. package/dist/phases/find-features/state.d.ts +0 -25
  437. package/dist/phases/find-features/state.js +0 -22
  438. package/dist/phases/find-features/types.d.ts +0 -27
  439. package/dist/phases/find-features/types.js +0 -16
  440. package/dist/phases/find-shared/git.d.ts +0 -24
  441. package/dist/phases/find-shared/git.js +0 -60
  442. package/dist/phases/find-shared/mcp.d.ts +0 -48
  443. package/dist/phases/find-shared/mcp.js +0 -125
  444. package/dist/phases/find-shared/scan-state.d.ts +0 -33
  445. package/dist/phases/find-shared/scan-state.js +0 -112
  446. package/dist/phases/find-smells/index.d.ts +0 -50
  447. package/dist/phases/find-smells/index.js +0 -298
  448. package/dist/phases/find-smells/prompts.d.ts +0 -30
  449. package/dist/phases/find-smells/prompts.js +0 -129
  450. package/dist/phases/find-smells/state.d.ts +0 -21
  451. package/dist/phases/find-smells/state.js +0 -17
  452. package/dist/phases/find-smells/types.d.ts +0 -51
  453. package/dist/phases/find-smells/types.js +0 -64
  454. package/dist/phases/flow-shared/clone-repos.d.ts +0 -63
  455. package/dist/phases/flow-shared/clone-repos.js +0 -153
  456. package/dist/phases/flowchart/index.d.ts +0 -15
  457. package/dist/phases/flowchart/index.js +0 -50
  458. package/dist/phases/functional-testing/analyzer.d.ts +0 -46
  459. package/dist/phases/functional-testing/analyzer.js +0 -622
  460. package/dist/phases/functional-testing/context-fetcher.d.ts +0 -16
  461. package/dist/phases/functional-testing/context-fetcher.js +0 -83
  462. package/dist/phases/functional-testing/http-fallback.d.ts +0 -10
  463. package/dist/phases/functional-testing/http-fallback.js +0 -156
  464. package/dist/phases/functional-testing/index.d.ts +0 -4
  465. package/dist/phases/functional-testing/index.js +0 -4
  466. package/dist/phases/functional-testing/mcp-server.d.ts +0 -9
  467. package/dist/phases/functional-testing/mcp-server.js +0 -13
  468. package/dist/phases/functional-testing/prompts.d.ts +0 -2
  469. package/dist/phases/functional-testing/prompts.js +0 -58
  470. package/dist/phases/functional-testing/test-report-creator.d.ts +0 -68
  471. package/dist/phases/functional-testing/test-report-creator.js +0 -306
  472. package/dist/phases/functional-testing/test-retry-handler.d.ts +0 -16
  473. package/dist/phases/functional-testing/test-retry-handler.js +0 -70
  474. package/dist/phases/growth-analysis/agent.d.ts +0 -2
  475. package/dist/phases/growth-analysis/agent.js +0 -107
  476. package/dist/phases/growth-analysis/context.d.ts +0 -23
  477. package/dist/phases/growth-analysis/context.js +0 -137
  478. package/dist/phases/growth-analysis/index.d.ts +0 -32
  479. package/dist/phases/growth-analysis/index.js +0 -226
  480. package/dist/phases/growth-analysis/prompts.d.ts +0 -2
  481. package/dist/phases/growth-analysis/prompts.js +0 -45
  482. package/dist/phases/intelligence-analysis/agent.d.ts +0 -2
  483. package/dist/phases/intelligence-analysis/agent.js +0 -338
  484. package/dist/phases/intelligence-analysis/context.d.ts +0 -23
  485. package/dist/phases/intelligence-analysis/context.js +0 -142
  486. package/dist/phases/intelligence-analysis/index.d.ts +0 -58
  487. package/dist/phases/intelligence-analysis/index.js +0 -244
  488. package/dist/phases/intelligence-analysis/prompts.d.ts +0 -2
  489. package/dist/phases/intelligence-analysis/prompts.js +0 -62
  490. package/dist/phases/issue-analysis/agent.d.ts +0 -21
  491. package/dist/phases/issue-analysis/agent.js +0 -153
  492. package/dist/phases/issue-analysis/context.d.ts +0 -20
  493. package/dist/phases/issue-analysis/context.js +0 -93
  494. package/dist/phases/issue-analysis/index.d.ts +0 -8
  495. package/dist/phases/issue-analysis/index.js +0 -147
  496. package/dist/phases/issue-analysis/outcome.d.ts +0 -10
  497. package/dist/phases/issue-analysis/outcome.js +0 -42
  498. package/dist/phases/issue-analysis/prompts.d.ts +0 -8
  499. package/dist/phases/issue-analysis/prompts.js +0 -99
  500. package/dist/phases/issue-analysis-verification/agent.d.ts +0 -33
  501. package/dist/phases/issue-analysis-verification/agent.js +0 -124
  502. package/dist/phases/issue-analysis-verification/index.d.ts +0 -27
  503. package/dist/phases/issue-analysis-verification/index.js +0 -79
  504. package/dist/phases/issue-analysis-verification/prompts.d.ts +0 -9
  505. package/dist/phases/issue-analysis-verification/prompts.js +0 -75
  506. package/dist/phases/output-contracts.d.ts +0 -7
  507. package/dist/phases/output-contracts.js +0 -1201
  508. package/dist/phases/pr-execution/context.d.ts +0 -32
  509. package/dist/phases/pr-execution/context.js +0 -246
  510. package/dist/phases/pr-execution/file-assigner.d.ts +0 -57
  511. package/dist/phases/pr-execution/file-assigner.js +0 -287
  512. package/dist/phases/pr-execution/index.d.ts +0 -22
  513. package/dist/phases/pr-execution/index.js +0 -401
  514. package/dist/phases/pr-execution/outcome.d.ts +0 -24
  515. package/dist/phases/pr-execution/outcome.js +0 -34
  516. package/dist/phases/pr-execution/pr-executor.d.ts +0 -42
  517. package/dist/phases/pr-execution/pr-executor.js +0 -78
  518. package/dist/phases/pr-execution/prompts.d.ts +0 -27
  519. package/dist/phases/pr-execution/prompts.js +0 -131
  520. package/dist/phases/pr-resolve/checklist-learner.d.ts +0 -28
  521. package/dist/phases/pr-resolve/checklist-learner.js +0 -153
  522. package/dist/phases/pr-resolve/github-reply.d.ts +0 -16
  523. package/dist/phases/pr-resolve/github-reply.js +0 -75
  524. package/dist/phases/pr-resolve/index.d.ts +0 -33
  525. package/dist/phases/pr-resolve/index.js +0 -272
  526. package/dist/phases/pr-resolve/prompts.d.ts +0 -17
  527. package/dist/phases/pr-resolve/prompts.js +0 -107
  528. package/dist/phases/pr-resolve/types.d.ts +0 -18
  529. package/dist/phases/pr-resolve/types.js +0 -14
  530. package/dist/phases/pr-resolve/workspace.d.ts +0 -45
  531. package/dist/phases/pr-resolve/workspace.js +0 -174
  532. package/dist/phases/pr-review/index.d.ts +0 -27
  533. package/dist/phases/pr-review/index.js +0 -209
  534. package/dist/phases/pr-review/prompts.d.ts +0 -5
  535. package/dist/phases/pr-review/prompts.js +0 -87
  536. package/dist/phases/pr-shared/agent-utils.d.ts +0 -47
  537. package/dist/phases/pr-shared/agent-utils.js +0 -112
  538. package/dist/phases/pr-shared/context.d.ts +0 -24
  539. package/dist/phases/pr-shared/context.js +0 -78
  540. package/dist/phases/pr-shared/status.d.ts +0 -18
  541. package/dist/phases/pr-shared/status.js +0 -37
  542. package/dist/phases/pr-splitting/context.d.ts +0 -28
  543. package/dist/phases/pr-splitting/context.js +0 -182
  544. package/dist/phases/pr-splitting/import-dep-validator.d.ts +0 -67
  545. package/dist/phases/pr-splitting/import-dep-validator.js +0 -255
  546. package/dist/phases/pr-splitting/index.d.ts +0 -36
  547. package/dist/phases/pr-splitting/index.js +0 -413
  548. package/dist/phases/pr-splitting/outcome.d.ts +0 -24
  549. package/dist/phases/pr-splitting/outcome.js +0 -114
  550. package/dist/phases/pr-splitting/prompts.d.ts +0 -43
  551. package/dist/phases/pr-splitting/prompts.js +0 -154
  552. package/dist/phases/product-techniques/index.d.ts +0 -52
  553. package/dist/phases/product-techniques/index.js +0 -268
  554. package/dist/phases/product-techniques/mcp-server.d.ts +0 -41
  555. package/dist/phases/product-techniques/mcp-server.js +0 -96
  556. package/dist/phases/product-techniques/prompts.d.ts +0 -19
  557. package/dist/phases/product-techniques/prompts.js +0 -66
  558. package/dist/phases/product-techniques/types.d.ts +0 -13
  559. package/dist/phases/product-techniques/types.js +0 -13
  560. package/dist/phases/product-test-cases/index.d.ts +0 -25
  561. package/dist/phases/product-test-cases/index.js +0 -174
  562. package/dist/phases/product-test-cases/prompts.d.ts +0 -24
  563. package/dist/phases/product-test-cases/prompts.js +0 -80
  564. package/dist/phases/product-test-cases/types.d.ts +0 -17
  565. package/dist/phases/product-test-cases/types.js +0 -27
  566. package/dist/phases/pull-request/creator.d.ts +0 -30
  567. package/dist/phases/pull-request/creator.js +0 -319
  568. package/dist/phases/pull-request/handler.d.ts +0 -15
  569. package/dist/phases/pull-request/handler.js +0 -92
  570. package/dist/phases/quality-benchmark/index.d.ts +0 -65
  571. package/dist/phases/quality-benchmark/index.js +0 -194
  572. package/dist/phases/quality-benchmark/mcp-server.d.ts +0 -46
  573. package/dist/phases/quality-benchmark/mcp-server.js +0 -252
  574. package/dist/phases/quality-benchmark/parsers.d.ts +0 -22
  575. package/dist/phases/quality-benchmark/parsers.js +0 -1101
  576. package/dist/phases/quality-benchmark/prompts.d.ts +0 -31
  577. package/dist/phases/quality-benchmark/prompts.js +0 -154
  578. package/dist/phases/quality-benchmark/rubric.md +0 -1174
  579. package/dist/phases/quality-benchmark/tool-catalog.d.ts +0 -33
  580. package/dist/phases/quality-benchmark/tool-catalog.js +0 -636
  581. package/dist/phases/quality-benchmark/tool-runner.d.ts +0 -69
  582. package/dist/phases/quality-benchmark/tool-runner.js +0 -399
  583. package/dist/phases/quality-benchmark/types.d.ts +0 -312
  584. package/dist/phases/quality-benchmark/types.js +0 -23
  585. package/dist/phases/quality-benchmark/workspace.d.ts +0 -31
  586. package/dist/phases/quality-benchmark/workspace.js +0 -110
  587. package/dist/phases/recipes/index.d.ts +0 -63
  588. package/dist/phases/recipes/index.js +0 -358
  589. package/dist/phases/recipes/mcp-server.d.ts +0 -66
  590. package/dist/phases/recipes/mcp-server.js +0 -229
  591. package/dist/phases/recipes/prompts.d.ts +0 -35
  592. package/dist/phases/recipes/prompts.js +0 -105
  593. package/dist/phases/recipes/types.d.ts +0 -42
  594. package/dist/phases/recipes/types.js +0 -16
  595. package/dist/phases/release-sync/github.d.ts +0 -66
  596. package/dist/phases/release-sync/github.js +0 -140
  597. package/dist/phases/release-sync/index.d.ts +0 -24
  598. package/dist/phases/release-sync/index.js +0 -156
  599. package/dist/phases/release-sync/snapshot.d.ts +0 -27
  600. package/dist/phases/release-sync/snapshot.js +0 -158
  601. package/dist/phases/run-sheet/agent.d.ts +0 -49
  602. package/dist/phases/run-sheet/agent.js +0 -156
  603. package/dist/phases/run-sheet/index.d.ts +0 -57
  604. package/dist/phases/run-sheet/index.js +0 -392
  605. package/dist/phases/screen-flow/index.d.ts +0 -26
  606. package/dist/phases/screen-flow/index.js +0 -349
  607. package/dist/phases/screen-flow/mcp-server.d.ts +0 -201
  608. package/dist/phases/screen-flow/mcp-server.js +0 -272
  609. package/dist/phases/screen-flow/prompts.d.ts +0 -19
  610. package/dist/phases/screen-flow/prompts.js +0 -43
  611. package/dist/phases/screen-flow/theme.d.ts +0 -19
  612. package/dist/phases/screen-flow/theme.js +0 -193
  613. package/dist/phases/screen-flow/types.d.ts +0 -137
  614. package/dist/phases/screen-flow/types.js +0 -81
  615. package/dist/phases/sequence-diagram/index.d.ts +0 -30
  616. package/dist/phases/sequence-diagram/index.js +0 -290
  617. package/dist/phases/sequence-diagram/mcp-server.d.ts +0 -64
  618. package/dist/phases/sequence-diagram/mcp-server.js +0 -134
  619. package/dist/phases/sequence-diagram/prompts.d.ts +0 -14
  620. package/dist/phases/sequence-diagram/prompts.js +0 -36
  621. package/dist/phases/sequence-diagram/types.d.ts +0 -52
  622. package/dist/phases/sequence-diagram/types.js +0 -93
  623. package/dist/phases/smoke-test/agent.d.ts +0 -12
  624. package/dist/phases/smoke-test/agent.js +0 -93
  625. package/dist/phases/smoke-test/index.d.ts +0 -22
  626. package/dist/phases/smoke-test/index.js +0 -241
  627. package/dist/phases/smoke-test/prompts.d.ts +0 -15
  628. package/dist/phases/smoke-test/prompts.js +0 -35
  629. package/dist/phases/state-diagram/index.d.ts +0 -15
  630. package/dist/phases/state-diagram/index.js +0 -53
  631. package/dist/phases/sync-github-issues/index.d.ts +0 -41
  632. package/dist/phases/sync-github-issues/index.js +0 -187
  633. package/dist/phases/sync-github-issues/state.d.ts +0 -26
  634. package/dist/phases/sync-github-issues/state.js +0 -18
  635. package/dist/phases/sync-github-issues/types.d.ts +0 -35
  636. package/dist/phases/sync-github-issues/types.js +0 -6
  637. package/dist/phases/sync-github-pull-requests/index.d.ts +0 -23
  638. package/dist/phases/sync-github-pull-requests/index.js +0 -210
  639. package/dist/phases/sync-github-pull-requests/state.d.ts +0 -24
  640. package/dist/phases/sync-github-pull-requests/state.js +0 -16
  641. package/dist/phases/sync-github-pull-requests/types.d.ts +0 -22
  642. package/dist/phases/sync-github-pull-requests/types.js +0 -1
  643. package/dist/phases/sync-org-repos/index.d.ts +0 -28
  644. package/dist/phases/sync-org-repos/index.js +0 -133
  645. package/dist/phases/sync-sentry-issues/index.d.ts +0 -29
  646. package/dist/phases/sync-sentry-issues/index.js +0 -153
  647. package/dist/phases/sync-sentry-issues/sentry-client.d.ts +0 -66
  648. package/dist/phases/sync-sentry-issues/sentry-client.js +0 -221
  649. package/dist/phases/sync-sentry-issues/state.d.ts +0 -23
  650. package/dist/phases/sync-sentry-issues/state.js +0 -18
  651. package/dist/phases/sync-sentry-issues/types.d.ts +0 -46
  652. package/dist/phases/sync-sentry-issues/types.js +0 -6
  653. package/dist/phases/sync-shared/mcp.d.ts +0 -81
  654. package/dist/phases/sync-shared/mcp.js +0 -111
  655. package/dist/phases/task/agent.d.ts +0 -10
  656. package/dist/phases/task/agent.js +0 -83
  657. package/dist/phases/task/context.d.ts +0 -16
  658. package/dist/phases/task/context.js +0 -50
  659. package/dist/phases/task/index.d.ts +0 -17
  660. package/dist/phases/task/index.js +0 -54
  661. package/dist/phases/task/prompts.d.ts +0 -9
  662. package/dist/phases/task/prompts.js +0 -21
  663. package/dist/phases/technical-design/context.d.ts +0 -12
  664. package/dist/phases/technical-design/context.js +0 -39
  665. package/dist/phases/technical-design/index.d.ts +0 -21
  666. package/dist/phases/technical-design/index.js +0 -456
  667. package/dist/phases/technical-design/outcome.d.ts +0 -25
  668. package/dist/phases/technical-design/outcome.js +0 -41
  669. package/dist/phases/technical-design/prompts.d.ts +0 -8
  670. package/dist/phases/technical-design/prompts.js +0 -210
  671. package/dist/phases/technical-design-verification/agent.d.ts +0 -53
  672. package/dist/phases/technical-design-verification/agent.js +0 -186
  673. package/dist/phases/technical-design-verification/index.d.ts +0 -38
  674. package/dist/phases/technical-design-verification/index.js +0 -152
  675. package/dist/phases/technical-design-verification/prompts.d.ts +0 -12
  676. package/dist/phases/technical-design-verification/prompts.js +0 -143
  677. package/dist/phases/test-cases-analysis/agent.d.ts +0 -9
  678. package/dist/phases/test-cases-analysis/agent.js +0 -105
  679. package/dist/phases/test-cases-analysis/context.d.ts +0 -15
  680. package/dist/phases/test-cases-analysis/context.js +0 -86
  681. package/dist/phases/test-cases-analysis/formatters.d.ts +0 -6
  682. package/dist/phases/test-cases-analysis/formatters.js +0 -35
  683. package/dist/phases/test-cases-analysis/index.d.ts +0 -9
  684. package/dist/phases/test-cases-analysis/index.js +0 -175
  685. package/dist/phases/test-cases-analysis/outcome.d.ts +0 -27
  686. package/dist/phases/test-cases-analysis/outcome.js +0 -146
  687. package/dist/phases/test-cases-analysis/prompts.d.ts +0 -7
  688. package/dist/phases/test-cases-analysis/prompts.js +0 -171
  689. package/dist/phases/user-psychology/agent.d.ts +0 -16
  690. package/dist/phases/user-psychology/agent.js +0 -105
  691. package/dist/phases/user-psychology/context.d.ts +0 -10
  692. package/dist/phases/user-psychology/context.js +0 -65
  693. package/dist/phases/user-psychology/index.d.ts +0 -18
  694. package/dist/phases/user-psychology/index.js +0 -96
  695. package/dist/phases/user-psychology/prompts.d.ts +0 -2
  696. package/dist/phases/user-psychology/prompts.js +0 -41
  697. package/dist/phases/user-stories-analysis/agent.d.ts +0 -9
  698. package/dist/phases/user-stories-analysis/agent.js +0 -105
  699. package/dist/phases/user-stories-analysis/context.d.ts +0 -15
  700. package/dist/phases/user-stories-analysis/context.js +0 -86
  701. package/dist/phases/user-stories-analysis/formatters.d.ts +0 -6
  702. package/dist/phases/user-stories-analysis/formatters.js +0 -32
  703. package/dist/phases/user-stories-analysis/index.d.ts +0 -9
  704. package/dist/phases/user-stories-analysis/index.js +0 -175
  705. package/dist/phases/user-stories-analysis/outcome.d.ts +0 -27
  706. package/dist/phases/user-stories-analysis/outcome.js +0 -146
  707. package/dist/phases/user-stories-analysis/prompts.d.ts +0 -7
  708. package/dist/phases/user-stories-analysis/prompts.js +0 -194
  709. package/dist/services/audit-logs.d.ts +0 -73
  710. package/dist/services/audit-logs.js +0 -174
  711. package/dist/services/branches.d.ts +0 -103
  712. package/dist/services/branches.js +0 -391
  713. package/dist/services/checklist.d.ts +0 -100
  714. package/dist/services/checklist.js +0 -259
  715. package/dist/services/coaching/coaching-agent.d.ts +0 -39
  716. package/dist/services/coaching/coaching-agent.js +0 -308
  717. package/dist/services/coaching/coaching-loop.d.ts +0 -62
  718. package/dist/services/coaching/coaching-loop.js +0 -265
  719. package/dist/services/coaching/index.d.ts +0 -8
  720. package/dist/services/coaching/index.js +0 -8
  721. package/dist/services/coaching/phase-coaching.d.ts +0 -47
  722. package/dist/services/coaching/phase-coaching.js +0 -60
  723. package/dist/services/coaching/self-rating.d.ts +0 -26
  724. package/dist/services/coaching/self-rating.js +0 -153
  725. package/dist/services/feedbacks.d.ts +0 -57
  726. package/dist/services/feedbacks.js +0 -264
  727. package/dist/services/phase-hooks/bindings-fetcher.d.ts +0 -21
  728. package/dist/services/phase-hooks/bindings-fetcher.js +0 -53
  729. package/dist/services/phase-hooks/hook-executor.d.ts +0 -36
  730. package/dist/services/phase-hooks/hook-executor.js +0 -167
  731. package/dist/services/phase-hooks/hook-logging.d.ts +0 -14
  732. package/dist/services/phase-hooks/hook-logging.js +0 -41
  733. package/dist/services/phase-hooks/hook-runner.d.ts +0 -19
  734. package/dist/services/phase-hooks/hook-runner.js +0 -83
  735. package/dist/services/phase-hooks/index.d.ts +0 -10
  736. package/dist/services/phase-hooks/index.js +0 -9
  737. package/dist/services/phase-hooks/plugin-loader.d.ts +0 -31
  738. package/dist/services/phase-hooks/plugin-loader.js +0 -207
  739. package/dist/services/phase-hooks/types.d.ts +0 -69
  740. package/dist/services/phase-hooks/types.js +0 -8
  741. package/dist/services/phase-ratings.d.ts +0 -70
  742. package/dist/services/phase-ratings.js +0 -143
  743. package/dist/services/product-logs.d.ts +0 -31
  744. package/dist/services/product-logs.js +0 -94
  745. package/dist/services/pull-requests.d.ts +0 -57
  746. package/dist/services/pull-requests.js +0 -186
  747. package/dist/services/quality-reports.d.ts +0 -45
  748. package/dist/services/quality-reports.js +0 -93
  749. package/dist/services/repo-config.d.ts +0 -17
  750. package/dist/services/repo-config.js +0 -50
  751. package/dist/services/skill-resolver.d.ts +0 -46
  752. package/dist/services/skill-resolver.js +0 -123
  753. package/dist/services/video/device-frames.d.ts +0 -34
  754. package/dist/services/video/device-frames.js +0 -513
  755. package/dist/services/video/index.d.ts +0 -66
  756. package/dist/services/video/index.js +0 -238
  757. package/dist/services/video/retry.d.ts +0 -20
  758. package/dist/services/video/retry.js +0 -76
  759. package/dist/services/video/screenshot-generator.d.ts +0 -69
  760. package/dist/services/video/screenshot-generator.js +0 -259
  761. package/dist/services/video/tts-generator.d.ts +0 -40
  762. package/dist/services/video/tts-generator.js +0 -121
  763. package/dist/services/video/video-assembler.d.ts +0 -45
  764. package/dist/services/video/video-assembler.js +0 -351
  765. package/dist/services/video/video-uploader.d.ts +0 -28
  766. package/dist/services/video/video-uploader.js +0 -108
  767. package/dist/skills/phase/adr-generation/SKILL.md +0 -51
  768. package/dist/skills/phase/analyze-logs/SKILL.md +0 -24
  769. package/dist/skills/phase/app-store-generation/SKILL.md +0 -60
  770. package/dist/skills/phase/architecture-diagram/SKILL.md +0 -41
  771. package/dist/skills/phase/autonomous/SKILL.md +0 -52
  772. package/dist/skills/phase/branch-planning/SKILL.md +0 -55
  773. package/dist/skills/phase/bug-fixing/SKILL.md +0 -47
  774. package/dist/skills/phase/class-diagram/SKILL.md +0 -44
  775. package/dist/skills/phase/code-implementation/SKILL.md +0 -68
  776. package/dist/skills/phase/code-implementation-verification/SKILL.md +0 -76
  777. package/dist/skills/phase/code-refine/SKILL.md +0 -62
  778. package/dist/skills/phase/code-testing/SKILL.md +0 -78
  779. package/dist/skills/phase/data-flow/SKILL.md +0 -82
  780. package/dist/skills/phase/er-diagram/SKILL.md +0 -71
  781. package/dist/skills/phase/flowchart/SKILL.md +0 -38
  782. package/dist/skills/phase/functional-testing/SKILL.md +0 -62
  783. package/dist/skills/phase/growth-analysis/SKILL.md +0 -97
  784. package/dist/skills/phase/incremental-sync/SKILL.md +0 -59
  785. package/dist/skills/phase/intelligence-analysis/SKILL.md +0 -52
  786. package/dist/skills/phase/issue-analysis/SKILL.md +0 -73
  787. package/dist/skills/phase/issue-analysis-verification/SKILL.md +0 -61
  788. package/dist/skills/phase/pr-execution/SKILL.md +0 -69
  789. package/dist/skills/phase/pr-splitting/SKILL.md +0 -78
  790. package/dist/skills/phase/screen-flow/SKILL.md +0 -78
  791. package/dist/skills/phase/sequence-diagram/SKILL.md +0 -67
  792. package/dist/skills/phase/smoke-test/SKILL.md +0 -80
  793. package/dist/skills/phase/state-diagram/SKILL.md +0 -38
  794. package/dist/skills/phase/task/SKILL.md +0 -19
  795. package/dist/skills/phase/technical-design/SKILL.md +0 -75
  796. package/dist/skills/phase/technical-design-verification/SKILL.md +0 -43
  797. package/dist/skills/phase/test-cases-analysis/SKILL.md +0 -88
  798. package/dist/skills/phase/user-psychology/SKILL.md +0 -135
  799. package/dist/skills/phase/user-stories-analysis/SKILL.md +0 -118
  800. package/dist/supabase/client.d.ts +0 -34
  801. package/dist/supabase/client.js +0 -123
  802. package/dist/system/session-manager.d.ts +0 -67
  803. package/dist/system/session-manager.js +0 -300
  804. package/dist/system/sleep-notification.d.ts +0 -15
  805. package/dist/system/sleep-notification.js +0 -108
  806. package/dist/system/sleep-prevention.d.ts +0 -20
  807. package/dist/system/sleep-prevention.js +0 -112
  808. package/dist/tools/bootstrap.d.ts +0 -45
  809. package/dist/tools/bootstrap.js +0 -50
  810. package/dist/types/external-sources.d.ts +0 -22
  811. package/dist/types/external-sources.js +0 -23
  812. package/dist/types/index.d.ts +0 -206
  813. package/dist/types/index.js +0 -1
  814. package/dist/types/issues.d.ts +0 -37
  815. package/dist/types/issues.js +0 -1
  816. package/dist/types/llm-responses.d.ts +0 -114
  817. package/dist/types/llm-responses.js +0 -9
  818. package/dist/types/pipeline.d.ts +0 -28
  819. package/dist/types/pipeline.js +0 -4
  820. package/dist/updater/auto-updater.d.ts +0 -39
  821. package/dist/updater/auto-updater.js +0 -134
  822. package/dist/utils/conflict-resolver.d.ts +0 -49
  823. package/dist/utils/conflict-resolver.js +0 -201
  824. package/dist/utils/formatters.d.ts +0 -42
  825. package/dist/utils/formatters.js +0 -166
  826. package/dist/utils/git-branch-manager-async.d.ts +0 -127
  827. package/dist/utils/git-branch-manager-async.js +0 -425
  828. package/dist/utils/git-branch-manager.d.ts +0 -160
  829. package/dist/utils/git-branch-manager.js +0 -613
  830. package/dist/utils/git-push.d.ts +0 -43
  831. package/dist/utils/git-push.js +0 -136
  832. package/dist/utils/github-repo-info.d.ts +0 -26
  833. package/dist/utils/github-repo-info.js +0 -45
  834. package/dist/utils/image-downloader.d.ts +0 -32
  835. package/dist/utils/image-downloader.js +0 -152
  836. package/dist/utils/issue-phase-cli.d.ts +0 -26
  837. package/dist/utils/issue-phase-cli.js +0 -44
  838. package/dist/utils/json-extract.d.ts +0 -6
  839. package/dist/utils/json-extract.js +0 -44
  840. package/dist/utils/json-extractor.d.ts +0 -27
  841. package/dist/utils/json-extractor.js +0 -102
  842. package/dist/utils/logger.d.ts +0 -35
  843. package/dist/utils/logger.js +0 -167
  844. package/dist/utils/pipeline-logger.d.ts +0 -8
  845. package/dist/utils/pipeline-logger.js +0 -38
  846. package/dist/utils/validation.d.ts +0 -68
  847. package/dist/utils/validation.js +0 -229
  848. package/dist/utils/workflow-utils.d.ts +0 -22
  849. package/dist/utils/workflow-utils.js +0 -48
  850. package/dist/workspace/session-workspace.d.ts +0 -43
  851. package/dist/workspace/session-workspace.js +0 -90
  852. package/dist/workspace/workspace-manager.d.ts +0 -105
  853. package/dist/workspace/workspace-manager.js +0 -280
@@ -1,133 +0,0 @@
1
- /**
2
- * Phase: sync-org-repos
3
- *
4
- * Fetches all repositories from a GitHub organization via the Edsger GitHub
5
- * App (server-side, through the MCP `github/org_repos` endpoint), then upserts
6
- * a row into the team-scoped `repositories` table for each repo. Products are
7
- * NOT created here — a product is a higher-level grouping that a user links one
8
- * or more repositories to afterwards.
9
- *
10
- * Repos are listed with a short-lived GitHub App installation token minted on
11
- * the server, so this no longer depends on the user's machine having the `gh`
12
- * CLI installed, authenticated, and on PATH. Forks and archived repos are
13
- * filtered out server-side.
14
- */
15
- import { callMcpEndpoint } from '../../api/mcp-client.js';
16
- import { getSupabase, hasSupabaseSession } from '../../supabase/client.js';
17
- import { logDebug, logError, logInfo, logWarning } from '../../utils/logger.js';
18
- const ORG_NAME_RE = /^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/;
19
- async function fetchOrgRepos(teamId, orgLogin, verbose) {
20
- logInfo(`Fetching repos for org "${orgLogin}" via Edsger GitHub App...`);
21
- const result = (await callMcpEndpoint('github/org_repos', {
22
- team_id: teamId,
23
- org: orgLogin,
24
- }));
25
- if (!result.configured) {
26
- throw new Error(result.message ||
27
- `The Edsger GitHub App is not configured for "${orgLogin}".`);
28
- }
29
- const repos = result.repos ?? [];
30
- if (verbose) {
31
- logDebug(`Fetched ${repos.length} source repos from ${orgLogin}`);
32
- }
33
- return repos;
34
- }
35
- export async function syncOrgRepos(opts) {
36
- const { teamId, orgLogin, userId, verbose } = opts;
37
- if (!ORG_NAME_RE.test(orgLogin) || orgLogin.length > 39) {
38
- return {
39
- status: 'error',
40
- message: `Invalid GitHub organization name: "${orgLogin}"`,
41
- total: 0,
42
- created: 0,
43
- skipped: 0,
44
- };
45
- }
46
- if (!hasSupabaseSession()) {
47
- return {
48
- status: 'error',
49
- message: 'Supabase session unavailable. Sign in to the Edsger desktop app.',
50
- total: 0,
51
- created: 0,
52
- skipped: 0,
53
- };
54
- }
55
- const supabase = getSupabase();
56
- let orgRepos;
57
- try {
58
- orgRepos = await fetchOrgRepos(teamId, orgLogin, verbose);
59
- }
60
- catch (err) {
61
- const msg = err instanceof Error ? err.message : String(err);
62
- logError(`Failed to fetch repos: ${msg}`);
63
- return {
64
- status: 'error',
65
- message: `Failed to fetch repos from GitHub: ${msg}`,
66
- total: 0,
67
- created: 0,
68
- skipped: 0,
69
- };
70
- }
71
- if (orgRepos.length === 0) {
72
- logWarning(`No repos found in org "${orgLogin}"`);
73
- return {
74
- status: 'success',
75
- message: `No repositories found in ${orgLogin}`,
76
- total: 0,
77
- created: 0,
78
- skipped: 0,
79
- };
80
- }
81
- logInfo(`Found ${orgRepos.length} repos in ${orgLogin}`);
82
- const repoFullNames = orgRepos.map((r) => r.full_name);
83
- const { data: existing } = await supabase
84
- .from('repositories')
85
- .select('full_name')
86
- .eq('team_id', teamId)
87
- .in('full_name', repoFullNames);
88
- const existingRepos = new Set((existing || []).map((r) => r.full_name));
89
- const toCreate = orgRepos.filter((r) => !existingRepos.has(r.full_name));
90
- // Refresh metadata + last_synced_at on every synced repo (new and existing)
91
- // via upsert keyed on (team_id, full_name).
92
- const now = new Date().toISOString();
93
- const rows = orgRepos.map((repo) => ({
94
- team_id: teamId,
95
- created_by: userId,
96
- github_repo_id: repo.id,
97
- full_name: repo.full_name,
98
- owner: repo.full_name.split('/')[0] ?? null,
99
- name: repo.name,
100
- url: repo.html_url,
101
- description: repo.description,
102
- default_branch: repo.default_branch,
103
- private: repo.private,
104
- language: repo.language,
105
- last_synced_at: now,
106
- }));
107
- if (verbose) {
108
- for (const r of toCreate) {
109
- logDebug(` Will create repository: ${r.full_name}`);
110
- }
111
- }
112
- const { error: upsertError } = await supabase
113
- .from('repositories')
114
- .upsert(rows, { onConflict: 'team_id,full_name' });
115
- if (upsertError) {
116
- logError(`Failed to upsert repositories: ${upsertError.message}`);
117
- return {
118
- status: 'error',
119
- message: `Failed to sync repositories: ${upsertError.message}`,
120
- total: orgRepos.length,
121
- created: 0,
122
- skipped: existingRepos.size,
123
- };
124
- }
125
- return {
126
- status: 'success',
127
- message: `Synced ${orgRepos.length} repos: ${toCreate.length} new, ${existingRepos.size} updated`,
128
- total: orgRepos.length,
129
- created: toCreate.length,
130
- skipped: existingRepos.size,
131
- repos: toCreate.map((r) => r.full_name),
132
- };
133
- }
@@ -1,29 +0,0 @@
1
- /**
2
- * sync-sentry-issues phase: pull every issue from a Sentry project and
3
- * mirror them into the product's local issues table. Uses the same
4
- * source_* schema and batch RPC contract as the GitHub variant — only
5
- * the API client and the source-state vocabulary
6
- * (unresolved/resolved/ignored vs open/closed) differ.
7
- *
8
- * Production hardening matches sync-github-issues:
9
- * - Sentry client retries 429 / 5xx / network errors with exponential
10
- * backoff (honouring Retry-After).
11
- * - Upserts are batched (MAX_BATCH_SIZE per round-trip).
12
- * - Deletion sweep is keyed on a sync-start timestamp cutoff.
13
- * - Skipped if any batch fails, to avoid wrongly marking live issues
14
- * as deleted from a partial fetch.
15
- */
16
- import { type SentryClientConfig } from './sentry-client.js';
17
- import { type SentryIssueLite, type SentrySyncResult } from './types.js';
18
- export interface SyncSentryIssuesOptions extends SentryClientConfig {
19
- productId: string;
20
- verbose?: boolean;
21
- }
22
- /**
23
- * Build the markdown description we drop into `issues.description` for a
24
- * fresh insert. Pulls only fields that are reliably present on the list
25
- * endpoint — the full event payload would require an extra fetch per
26
- * issue, which isn't worth it for the sync-list view.
27
- */
28
- export declare function formatSentryDescription(item: SentryIssueLite): string;
29
- export declare function syncSentryIssues(options: SyncSentryIssuesOptions): Promise<SentrySyncResult>;
@@ -1,153 +0,0 @@
1
- /**
2
- * sync-sentry-issues phase: pull every issue from a Sentry project and
3
- * mirror them into the product's local issues table. Uses the same
4
- * source_* schema and batch RPC contract as the GitHub variant — only
5
- * the API client and the source-state vocabulary
6
- * (unresolved/resolved/ignored vs open/closed) differ.
7
- *
8
- * Production hardening matches sync-github-issues:
9
- * - Sentry client retries 429 / 5xx / network errors with exponential
10
- * backoff (honouring Retry-After).
11
- * - Upserts are batched (MAX_BATCH_SIZE per round-trip).
12
- * - Deletion sweep is keyed on a sync-start timestamp cutoff.
13
- * - Skipped if any batch fails, to avoid wrongly marking live issues
14
- * as deleted from a partial fetch.
15
- */
16
- import { logError, logInfo, logSuccess, logWarning } from '../../utils/logger.js';
17
- import { markExternalIssuesDeletedSince, upsertInBatches, } from '../sync-shared/mcp.js';
18
- import { SentryClient } from './sentry-client.js';
19
- import { acquireSyncSentryIssuesLock, updateSyncSentryIssuesState, } from './state.js';
20
- function initialStatusFor(sentryStatus) {
21
- return sentryStatus === 'unresolved' ? 'backlog' : 'archived';
22
- }
23
- /**
24
- * Build the markdown description we drop into `issues.description` for a
25
- * fresh insert. Pulls only fields that are reliably present on the list
26
- * endpoint — the full event payload would require an extra fetch per
27
- * issue, which isn't worth it for the sync-list view.
28
- */
29
- export function formatSentryDescription(item) {
30
- const lines = [];
31
- if (item.shortId) {
32
- lines.push(`**Sentry ID:** ${item.shortId}`);
33
- }
34
- if (item.level) {
35
- lines.push(`**Level:** ${item.level}`);
36
- }
37
- if (item.platform) {
38
- lines.push(`**Platform:** ${item.platform}`);
39
- }
40
- if (item.culprit) {
41
- lines.push(`**Culprit:** ${item.culprit}`);
42
- }
43
- if (item.count !== undefined && item.count !== null) {
44
- const userPart = item.userCount !== undefined && item.userCount !== null
45
- ? ` across ${item.userCount} ${item.userCount === 1 ? 'user' : 'users'}`
46
- : '';
47
- lines.push(`**Events:** ${item.count}${userPart}`);
48
- }
49
- if (item.firstSeen) {
50
- lines.push(`**First seen:** ${item.firstSeen}`);
51
- }
52
- if (item.lastSeen) {
53
- lines.push(`**Last seen:** ${item.lastSeen}`);
54
- }
55
- lines.push('');
56
- lines.push(`[View in Sentry](${item.permalink})`);
57
- return lines.join('\n');
58
- }
59
- function toUpsertInput(item) {
60
- return {
61
- sourceId: item.id,
62
- name: item.shortId ? `[${item.shortId}] ${item.title}` : item.title,
63
- description: formatSentryDescription(item),
64
- sourceUrl: item.permalink,
65
- sourceState: item.status,
66
- sourceUpdatedAt: item.lastSeen,
67
- sourceData: {
68
- id: item.id,
69
- shortId: item.shortId ?? null,
70
- status: item.status,
71
- level: item.level ?? null,
72
- platform: item.platform ?? null,
73
- count: item.count ?? null,
74
- userCount: item.userCount ?? null,
75
- isUnhandled: item.isUnhandled ?? null,
76
- firstSeen: item.firstSeen ?? null,
77
- lastSeen: item.lastSeen,
78
- permalink: item.permalink,
79
- },
80
- initialStatus: initialStatusFor(item.status),
81
- };
82
- }
83
- export async function syncSentryIssues(options) {
84
- const { productId, authToken, org, project, baseUrl, verbose } = options;
85
- const lock = acquireSyncSentryIssuesLock(productId);
86
- if (!lock) {
87
- return {
88
- status: 'error',
89
- message: 'Another Sentry sync is already running for this product',
90
- };
91
- }
92
- const syncStartedAt = new Date().toISOString();
93
- try {
94
- updateSyncSentryIssuesState(productId, {
95
- lastAttemptedAt: syncStartedAt,
96
- });
97
- const sourceLabel = `${org}/${project}`;
98
- logInfo(`Syncing Sentry issues from ${sourceLabel} → product ${productId}`);
99
- const client = new SentryClient({ authToken, org, project, baseUrl });
100
- const remoteIssues = await client.listAllIssues();
101
- logInfo(`Fetched ${remoteIssues.length} issues from Sentry`);
102
- if (verbose) {
103
- logInfo(`Will upsert ${remoteIssues.length} issues in batches`);
104
- }
105
- const inputs = remoteIssues.map(toUpsertInput);
106
- const { result, failedBatches } = await upsertInBatches(productId, 'sentry', inputs, (error, batchIndex) => {
107
- logError(`Batch ${batchIndex} failed: ${error.message}`);
108
- });
109
- let deletedCount = 0;
110
- if (failedBatches === 0) {
111
- deletedCount = await markExternalIssuesDeletedSince(productId, 'sentry', syncStartedAt);
112
- }
113
- else {
114
- logWarning(`Skipping deletion sweep: ${failedBatches} batch(es) failed; would risk wrongly flagging live issues as deleted`);
115
- }
116
- updateSyncSentryIssuesState(productId, {
117
- lastSyncedAt: new Date().toISOString(),
118
- lastSource: sourceLabel,
119
- lastError: failedBatches > 0
120
- ? `${failedBatches} batch(es) failed during sync`
121
- : undefined,
122
- });
123
- const summary = `created=${result.created} updated=${result.updated} refreshed=${result.refreshed} deleted=${deletedCount}${failedBatches > 0 ? ` (${failedBatches} batch(es) failed)` : ''}`;
124
- if (failedBatches === 0) {
125
- logSuccess(`Sentry sync complete: ${summary}`);
126
- }
127
- else {
128
- logWarning(`Sentry sync completed with errors: ${summary}`);
129
- }
130
- return {
131
- status: failedBatches === 0 ? 'success' : 'error',
132
- message: summary,
133
- source: sourceLabel,
134
- fetchedCount: remoteIssues.length,
135
- createdCount: result.created,
136
- updatedCount: result.updated,
137
- refreshedCount: result.refreshed,
138
- deletedCount,
139
- };
140
- }
141
- catch (error) {
142
- const errorMessage = error instanceof Error ? error.message : String(error);
143
- logError(`Sentry sync failed: ${errorMessage}`);
144
- updateSyncSentryIssuesState(productId, { lastError: errorMessage });
145
- return {
146
- status: 'error',
147
- message: `Sentry sync failed: ${errorMessage}`,
148
- };
149
- }
150
- finally {
151
- lock.release();
152
- }
153
- }
@@ -1,66 +0,0 @@
1
- /**
2
- * Tiny Sentry REST client: just enough to list issues for a project, with
3
- * cursor-based pagination via the Link header. Implemented with `fetch`
4
- * rather than pulling in an SDK so the dep footprint stays small.
5
- *
6
- * Production hardening:
7
- * - per-request timeout via AbortController
8
- * - retry with exponential backoff for 429 / 5xx, honouring Retry-After
9
- * - retry for transient network errors (ECONNRESET, ETIMEDOUT, ...)
10
- *
11
- * Sentry's default `query` filter is `is:unresolved`, which would silently
12
- * hide resolved/ignored issues. We pass `query=` (empty string) to bypass
13
- * that filter and return everything.
14
- */
15
- import { type SentryIssueLite } from './types.js';
16
- export interface SentryClientConfig {
17
- authToken: string;
18
- org: string;
19
- project: string;
20
- /** Defaults to https://sentry.io/api/0. Override for self-hosted Sentry. */
21
- baseUrl?: string;
22
- /** Per-request timeout in ms. Defaults to 30s. */
23
- timeoutMs?: number;
24
- /** Number of retry attempts on retryable failures. Defaults to 3. */
25
- retries?: number;
26
- /** Base delay (ms) for exponential backoff. Defaults to 500. Tests pass 1. */
27
- baseDelayMs?: number;
28
- }
29
- export declare class SentryClient {
30
- private readonly authToken;
31
- private readonly org;
32
- private readonly project;
33
- private readonly baseUrl;
34
- private readonly timeoutMs;
35
- private readonly retries;
36
- private readonly baseDelayMs;
37
- constructor(config: SentryClientConfig);
38
- listAllIssues(): Promise<SentryIssueLite[]>;
39
- /**
40
- * Single-request retry loop. Retries on:
41
- * - network error / abort
42
- * - HTTP 429 (rate limited; honours Retry-After header)
43
- * - HTTP 5xx (server error)
44
- *
45
- * Does NOT retry on 4xx other than 429 — those are deterministic
46
- * (auth, permission, not found) and won't get better with another try.
47
- */
48
- private requestWithRetry;
49
- }
50
- /**
51
- * Accept either a Sentry host root (`https://sentry.io/`,
52
- * `https://sentry.internal.acme.com/`) or an explicit API root
53
- * (`https://sentry.io/api/0`) and return the latter.
54
- *
55
- * Matches the official `sentry-cli` convention where users set
56
- * `SENTRY_URL` to the host and the tool appends `/api/0` itself.
57
- */
58
- export declare function normaliseBaseUrl(input: string): string;
59
- /**
60
- * Parse Sentry's Link header. The next-page entry looks like:
61
- * <https://...>; rel="next"; results="true"; cursor="100:1:0"
62
- * We return the cursor string only when `results="true"` — Sentry returns
63
- * a "next" entry even at the end of the list with `results="false"`, and
64
- * pagination would loop forever if we trusted that.
65
- */
66
- export declare function parseNextCursor(linkHeader: string | null): string | null;
@@ -1,221 +0,0 @@
1
- /**
2
- * Tiny Sentry REST client: just enough to list issues for a project, with
3
- * cursor-based pagination via the Link header. Implemented with `fetch`
4
- * rather than pulling in an SDK so the dep footprint stays small.
5
- *
6
- * Production hardening:
7
- * - per-request timeout via AbortController
8
- * - retry with exponential backoff for 429 / 5xx, honouring Retry-After
9
- * - retry for transient network errors (ECONNRESET, ETIMEDOUT, ...)
10
- *
11
- * Sentry's default `query` filter is `is:unresolved`, which would silently
12
- * hide resolved/ignored issues. We pass `query=` (empty string) to bypass
13
- * that filter and return everything.
14
- */
15
- const PER_PAGE = 100;
16
- const DEFAULT_BASE_URL = 'https://sentry.io/api/0';
17
- const DEFAULT_TIMEOUT_MS = 30_000;
18
- const DEFAULT_RETRIES = 3;
19
- const DEFAULT_BASE_DELAY_MS = 500;
20
- const MAX_BACKOFF_MS = 30_000;
21
- export class SentryClient {
22
- authToken;
23
- org;
24
- project;
25
- baseUrl;
26
- timeoutMs;
27
- retries;
28
- baseDelayMs;
29
- constructor(config) {
30
- this.authToken = config.authToken;
31
- this.org = config.org;
32
- this.project = config.project;
33
- this.baseUrl = normaliseBaseUrl(config.baseUrl ?? DEFAULT_BASE_URL);
34
- this.timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
35
- this.retries = config.retries ?? DEFAULT_RETRIES;
36
- this.baseDelayMs = config.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;
37
- }
38
- async listAllIssues() {
39
- const all = [];
40
- let cursor = null;
41
- for (;;) {
42
- const url = new URL(`${this.baseUrl}/projects/${encodeURIComponent(this.org)}/${encodeURIComponent(this.project)}/issues/`);
43
- url.searchParams.set('limit', String(PER_PAGE));
44
- url.searchParams.set('query', '');
45
- if (cursor) {
46
- url.searchParams.set('cursor', cursor);
47
- }
48
- const res = await this.requestWithRetry(url.toString());
49
- if (!res.ok) {
50
- const body = await safeReadBody(res);
51
- throw new Error(`Sentry API ${res.status} ${res.statusText}: ${body || '(no body)'}`);
52
- }
53
- const page = (await res.json());
54
- all.push(...page);
55
- const next = parseNextCursor(res.headers.get('Link'));
56
- if (!next || page.length === 0) {
57
- break;
58
- }
59
- cursor = next;
60
- }
61
- return all;
62
- }
63
- /**
64
- * Single-request retry loop. Retries on:
65
- * - network error / abort
66
- * - HTTP 429 (rate limited; honours Retry-After header)
67
- * - HTTP 5xx (server error)
68
- *
69
- * Does NOT retry on 4xx other than 429 — those are deterministic
70
- * (auth, permission, not found) and won't get better with another try.
71
- */
72
- async requestWithRetry(url) {
73
- let lastError;
74
- for (let attempt = 0; attempt <= this.retries; attempt++) {
75
- const controller = new AbortController();
76
- const timer = setTimeout(() => controller.abort(), this.timeoutMs);
77
- try {
78
- const res = await fetch(url, {
79
- headers: {
80
- Authorization: `Bearer ${this.authToken}`,
81
- Accept: 'application/json',
82
- },
83
- signal: controller.signal,
84
- });
85
- if (res.status === 429 ||
86
- (res.status >= 500 && res.status < 600)) {
87
- if (attempt < this.retries) {
88
- const delay = computeRetryDelay(res.headers.get('Retry-After'), attempt, this.baseDelayMs);
89
- // Drain the body so the connection can be reused.
90
- await safeReadBody(res);
91
- await sleep(delay);
92
- continue;
93
- }
94
- }
95
- return res;
96
- }
97
- catch (error) {
98
- lastError = error;
99
- if (attempt < this.retries && isRetryableNetworkError(error)) {
100
- await sleep(computeBackoffDelay(attempt, this.baseDelayMs));
101
- continue;
102
- }
103
- throw error;
104
- }
105
- finally {
106
- clearTimeout(timer);
107
- }
108
- }
109
- // If we exit the loop without returning, every attempt was a retryable
110
- // failure that exhausted the retry budget. Throw the last error so the
111
- // caller sees something actionable.
112
- throw lastError instanceof Error
113
- ? lastError
114
- : new Error(`Sentry request failed after ${this.retries + 1} attempts`);
115
- }
116
- }
117
- /**
118
- * Accept either a Sentry host root (`https://sentry.io/`,
119
- * `https://sentry.internal.acme.com/`) or an explicit API root
120
- * (`https://sentry.io/api/0`) and return the latter.
121
- *
122
- * Matches the official `sentry-cli` convention where users set
123
- * `SENTRY_URL` to the host and the tool appends `/api/0` itself.
124
- */
125
- export function normaliseBaseUrl(input) {
126
- let url = input.trim().replace(/\/+$/, '');
127
- // If the path already ends in /api/N for any version digit, leave it.
128
- if (/\/api\/\d+$/.test(url)) {
129
- return url;
130
- }
131
- // No /api/N segment present — append /api/0.
132
- url = `${url}/api/0`;
133
- return url;
134
- }
135
- async function safeReadBody(res) {
136
- try {
137
- return (await res.text()).slice(0, 500);
138
- }
139
- catch {
140
- return '';
141
- }
142
- }
143
- function sleep(ms) {
144
- return new Promise((resolve) => {
145
- setTimeout(resolve, ms);
146
- });
147
- }
148
- /**
149
- * Compute backoff for HTTP-level retries. Honours `Retry-After` if the
150
- * server set one (capped at MAX_BACKOFF_MS so a misconfigured server
151
- * can't pin us for an hour), otherwise exponential.
152
- */
153
- function computeRetryDelay(retryAfterHeader, attempt, baseDelayMs) {
154
- if (retryAfterHeader) {
155
- // Retry-After is either a delta-seconds integer or an HTTP-date.
156
- const asNumber = Number(retryAfterHeader);
157
- if (Number.isFinite(asNumber) && asNumber >= 0) {
158
- return Math.min(asNumber * 1000, MAX_BACKOFF_MS);
159
- }
160
- const asDate = Date.parse(retryAfterHeader);
161
- if (!Number.isNaN(asDate)) {
162
- return Math.min(Math.max(asDate - Date.now(), 0), MAX_BACKOFF_MS);
163
- }
164
- }
165
- return computeBackoffDelay(attempt, baseDelayMs);
166
- }
167
- function computeBackoffDelay(attempt, baseDelayMs) {
168
- // Exponential with jitter: base * 2^attempt + random(0..base/2)
169
- const exp = baseDelayMs * 2 ** attempt;
170
- const jitter = Math.random() * (baseDelayMs / 2);
171
- return Math.min(exp + jitter, MAX_BACKOFF_MS);
172
- }
173
- /**
174
- * Network errors that are worth retrying. Excludes user-controlled
175
- * AbortErrors that aren't from our timer (so a caller can cancel cleanly).
176
- */
177
- function isRetryableNetworkError(error) {
178
- if (!(error instanceof Error)) {
179
- return false;
180
- }
181
- const { code } = error;
182
- if (code === 'ECONNRESET' ||
183
- code === 'ECONNREFUSED' ||
184
- code === 'ETIMEDOUT' ||
185
- code === 'EAI_AGAIN' ||
186
- code === 'UND_ERR_SOCKET' ||
187
- code === 'UND_ERR_CONNECT_TIMEOUT') {
188
- return true;
189
- }
190
- // AbortError from our own timeout is retryable; from a caller signal,
191
- // we'd never get here because the caller would have aborted the await.
192
- if (error.name === 'AbortError') {
193
- return true;
194
- }
195
- return false;
196
- }
197
- /**
198
- * Parse Sentry's Link header. The next-page entry looks like:
199
- * <https://...>; rel="next"; results="true"; cursor="100:1:0"
200
- * We return the cursor string only when `results="true"` — Sentry returns
201
- * a "next" entry even at the end of the list with `results="false"`, and
202
- * pagination would loop forever if we trusted that.
203
- */
204
- export function parseNextCursor(linkHeader) {
205
- if (!linkHeader) {
206
- return null;
207
- }
208
- for (const part of linkHeader.split(',')) {
209
- const trimmed = part.trim();
210
- const isNext = /\brel="next"/.test(trimmed);
211
- const hasResults = /\bresults="true"/.test(trimmed);
212
- if (!isNext || !hasResults) {
213
- continue;
214
- }
215
- const cursorMatch = /\bcursor="([^"]+)"/.exec(trimmed);
216
- if (cursorMatch) {
217
- return cursorMatch[1] ?? null;
218
- }
219
- }
220
- return null;
221
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * Per-product sync state for sync-sentry-issues. Stored at
3
- * `~/.edsger/sync-sentry-issues-state/<productId>.json`.
4
- *
5
- * We keep the lock + last-synced-at because Sentry's API doesn't surface
6
- * deletions (issues that were marked deleted on Sentry's side just stop
7
- * appearing). Like the GitHub variant we re-pull the full list on each
8
- * run; the cursor field is reserved for a future incremental optimisation
9
- * via `lastSeen` filter.
10
- */
11
- import { type LockHandle } from '../find-shared/scan-state.js';
12
- export type { LockHandle };
13
- export interface SyncSentryIssuesState {
14
- lastSyncedAt?: string;
15
- lastAttemptedAt?: string;
16
- lastError?: string;
17
- /** "<org>/<project>" we last synced from. */
18
- lastSource?: string;
19
- }
20
- export declare const loadSyncSentryIssuesState: (productId: string) => SyncSentryIssuesState;
21
- export declare const saveSyncSentryIssuesState: (productId: string, state: SyncSentryIssuesState) => void;
22
- export declare const updateSyncSentryIssuesState: (productId: string, patch: Partial<SyncSentryIssuesState>) => SyncSentryIssuesState;
23
- export declare const acquireSyncSentryIssuesLock: (productId: string, staleAfterMs?: number) => LockHandle | null;
@@ -1,18 +0,0 @@
1
- /**
2
- * Per-product sync state for sync-sentry-issues. Stored at
3
- * `~/.edsger/sync-sentry-issues-state/<productId>.json`.
4
- *
5
- * We keep the lock + last-synced-at because Sentry's API doesn't surface
6
- * deletions (issues that were marked deleted on Sentry's side just stop
7
- * appearing). Like the GitHub variant we re-pull the full list on each
8
- * run; the cursor field is reserved for a future incremental optimisation
9
- * via `lastSeen` filter.
10
- */
11
- import { createScanStateModule, } from '../find-shared/scan-state.js';
12
- const m = createScanStateModule({
13
- dirName: 'sync-sentry-issues-state',
14
- });
15
- export const loadSyncSentryIssuesState = m.load;
16
- export const saveSyncSentryIssuesState = m.save;
17
- export const updateSyncSentryIssuesState = m.update;
18
- export const acquireSyncSentryIssuesLock = m.acquireLock;