beth-copilot 1.0.18 → 2.0.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 (429) hide show
  1. package/CHANGELOG.md +79 -28
  2. package/README.md +127 -298
  3. package/assets/beth-questioning.png +0 -0
  4. package/assets/yellowstone-beth.png +0 -0
  5. package/bin/cli.js +124 -715
  6. package/dist/__tests__/inject-skills.test.d.ts +9 -0
  7. package/dist/__tests__/inject-skills.test.d.ts.map +1 -0
  8. package/dist/__tests__/inject-skills.test.js +143 -0
  9. package/dist/__tests__/inject-skills.test.js.map +1 -0
  10. package/dist/__tests__/skills/disambiguation.test.d.ts +10 -0
  11. package/dist/__tests__/skills/disambiguation.test.d.ts.map +1 -0
  12. package/dist/__tests__/skills/disambiguation.test.js +192 -0
  13. package/dist/__tests__/skills/disambiguation.test.js.map +1 -0
  14. package/dist/__tests__/skills/hook-injection.test.d.ts +11 -0
  15. package/dist/__tests__/skills/hook-injection.test.d.ts.map +1 -0
  16. package/dist/__tests__/skills/hook-injection.test.js +173 -0
  17. package/dist/__tests__/skills/hook-injection.test.js.map +1 -0
  18. package/dist/__tests__/skills/mapping-completeness.test.d.ts +17 -0
  19. package/dist/__tests__/skills/mapping-completeness.test.d.ts.map +1 -0
  20. package/dist/__tests__/skills/mapping-completeness.test.js +281 -0
  21. package/dist/__tests__/skills/mapping-completeness.test.js.map +1 -0
  22. package/dist/__tests__/skills/pipeline-integration.test.d.ts +18 -0
  23. package/dist/__tests__/skills/pipeline-integration.test.d.ts.map +1 -0
  24. package/dist/__tests__/skills/pipeline-integration.test.js +234 -0
  25. package/dist/__tests__/skills/pipeline-integration.test.js.map +1 -0
  26. package/dist/__tests__/skills/skill-routing.test.d.ts +15 -0
  27. package/dist/__tests__/skills/skill-routing.test.d.ts.map +1 -0
  28. package/dist/__tests__/skills/skill-routing.test.js +723 -0
  29. package/dist/__tests__/skills/skill-routing.test.js.map +1 -0
  30. package/dist/__tests__/skills/trigger-coverage.test.d.ts +24 -0
  31. package/dist/__tests__/skills/trigger-coverage.test.d.ts.map +1 -0
  32. package/dist/__tests__/skills/trigger-coverage.test.js +746 -0
  33. package/dist/__tests__/skills/trigger-coverage.test.js.map +1 -0
  34. package/dist/__tests__/smoke.test.d.ts +8 -0
  35. package/dist/__tests__/smoke.test.d.ts.map +1 -0
  36. package/dist/__tests__/smoke.test.js +62 -0
  37. package/dist/__tests__/smoke.test.js.map +1 -0
  38. package/dist/__tests__/verify-skills.test.d.ts +9 -0
  39. package/dist/__tests__/verify-skills.test.d.ts.map +1 -0
  40. package/dist/__tests__/verify-skills.test.js +78 -0
  41. package/dist/__tests__/verify-skills.test.js.map +1 -0
  42. package/dist/cli/commands/beads.e2e.test.d.ts +15 -0
  43. package/dist/cli/commands/beads.e2e.test.d.ts.map +1 -0
  44. package/dist/cli/commands/beads.e2e.test.js +585 -0
  45. package/dist/cli/commands/beads.e2e.test.js.map +1 -0
  46. package/dist/cli/commands/cli-edge-cases.e2e.test.d.ts +32 -0
  47. package/dist/cli/commands/cli-edge-cases.e2e.test.d.ts.map +1 -0
  48. package/dist/cli/commands/cli-edge-cases.e2e.test.js +162 -0
  49. package/dist/cli/commands/cli-edge-cases.e2e.test.js.map +1 -0
  50. package/dist/cli/commands/close.d.ts +54 -0
  51. package/dist/cli/commands/close.d.ts.map +1 -0
  52. package/dist/cli/commands/close.e2e.test.d.ts +11 -0
  53. package/dist/cli/commands/close.e2e.test.d.ts.map +1 -0
  54. package/dist/cli/commands/close.e2e.test.js +71 -0
  55. package/dist/cli/commands/close.e2e.test.js.map +1 -0
  56. package/dist/cli/commands/close.js +95 -0
  57. package/dist/cli/commands/close.js.map +1 -0
  58. package/dist/cli/commands/close.test.d.ts +13 -0
  59. package/dist/cli/commands/close.test.d.ts.map +1 -0
  60. package/dist/cli/commands/close.test.js +254 -0
  61. package/dist/cli/commands/close.test.js.map +1 -0
  62. package/dist/cli/commands/doctor.d.ts +7 -1
  63. package/dist/cli/commands/doctor.d.ts.map +1 -1
  64. package/dist/cli/commands/doctor.e2e.test.js +3 -59
  65. package/dist/cli/commands/doctor.e2e.test.js.map +1 -1
  66. package/dist/cli/commands/doctor.js +38 -18
  67. package/dist/cli/commands/doctor.js.map +1 -1
  68. package/dist/cli/commands/doctor.test.js +32 -25
  69. package/dist/cli/commands/doctor.test.js.map +1 -1
  70. package/dist/cli/commands/framework-isolation.test.d.ts +30 -0
  71. package/dist/cli/commands/framework-isolation.test.d.ts.map +1 -0
  72. package/dist/cli/commands/framework-isolation.test.js +118 -0
  73. package/dist/cli/commands/framework-isolation.test.js.map +1 -0
  74. package/dist/cli/commands/help.e2e.test.js +5 -9
  75. package/dist/cli/commands/help.e2e.test.js.map +1 -1
  76. package/dist/cli/commands/init-logic.e2e.test.d.ts +37 -0
  77. package/dist/cli/commands/init-logic.e2e.test.d.ts.map +1 -0
  78. package/dist/cli/commands/init-logic.e2e.test.js +315 -0
  79. package/dist/cli/commands/init-logic.e2e.test.js.map +1 -0
  80. package/dist/cli/commands/init.test.js +4 -21
  81. package/dist/cli/commands/init.test.js.map +1 -1
  82. package/dist/cli/commands/land.d.ts +130 -0
  83. package/dist/cli/commands/land.d.ts.map +1 -0
  84. package/dist/cli/commands/land.js +592 -0
  85. package/dist/cli/commands/land.js.map +1 -0
  86. package/dist/cli/commands/land.test.d.ts +19 -0
  87. package/dist/cli/commands/land.test.d.ts.map +1 -0
  88. package/dist/cli/commands/land.test.js +567 -0
  89. package/dist/cli/commands/land.test.js.map +1 -0
  90. package/dist/cli/commands/mcp.e2e.test.js +24 -31
  91. package/dist/cli/commands/mcp.e2e.test.js.map +1 -1
  92. package/dist/cli/commands/pipeline.e2e.test.js +28 -31
  93. package/dist/cli/commands/pipeline.e2e.test.js.map +1 -1
  94. package/dist/cli/commands/pre-push-guard.d.ts +74 -0
  95. package/dist/cli/commands/pre-push-guard.d.ts.map +1 -0
  96. package/dist/cli/commands/pre-push-guard.e2e.test.d.ts +24 -0
  97. package/dist/cli/commands/pre-push-guard.e2e.test.d.ts.map +1 -0
  98. package/dist/cli/commands/pre-push-guard.e2e.test.js +171 -0
  99. package/dist/cli/commands/pre-push-guard.e2e.test.js.map +1 -0
  100. package/dist/cli/commands/pre-push-guard.js +212 -0
  101. package/dist/cli/commands/pre-push-guard.js.map +1 -0
  102. package/dist/cli/commands/pre-push-guard.test.d.ts +14 -0
  103. package/dist/cli/commands/pre-push-guard.test.d.ts.map +1 -0
  104. package/dist/cli/commands/pre-push-guard.test.js +314 -0
  105. package/dist/cli/commands/pre-push-guard.test.js.map +1 -0
  106. package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts +23 -0
  107. package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts.map +1 -0
  108. package/dist/cli/commands/quickstart-expanded.e2e.test.js +152 -0
  109. package/dist/cli/commands/quickstart-expanded.e2e.test.js.map +1 -0
  110. package/dist/cli/commands/quickstart.d.ts +0 -1
  111. package/dist/cli/commands/quickstart.d.ts.map +1 -1
  112. package/dist/cli/commands/quickstart.js +9 -83
  113. package/dist/cli/commands/quickstart.js.map +1 -1
  114. package/dist/cli/commands/quickstart.test.js +8 -129
  115. package/dist/cli/commands/quickstart.test.js.map +1 -1
  116. package/dist/cli/commands/update.d.ts +35 -0
  117. package/dist/cli/commands/update.d.ts.map +1 -0
  118. package/dist/cli/commands/update.e2e.test.d.ts +24 -0
  119. package/dist/cli/commands/update.e2e.test.d.ts.map +1 -0
  120. package/dist/cli/commands/update.e2e.test.js +240 -0
  121. package/dist/cli/commands/update.e2e.test.js.map +1 -0
  122. package/dist/cli/commands/update.js +255 -0
  123. package/dist/cli/commands/update.js.map +1 -0
  124. package/dist/core/agents/frontmatter.test.js +1 -1
  125. package/dist/core/agents/frontmatter.test.js.map +1 -1
  126. package/dist/core/agents/handoffs.test.js +1 -1
  127. package/dist/core/agents/handoffs.test.js.map +1 -1
  128. package/dist/core/agents/loader.d.ts +4 -2
  129. package/dist/core/agents/loader.d.ts.map +1 -1
  130. package/dist/core/agents/loader.js +5 -3
  131. package/dist/core/agents/loader.js.map +1 -1
  132. package/dist/core/agents/loader.test.js +42 -4
  133. package/dist/core/agents/loader.test.js.map +1 -1
  134. package/dist/core/agents/suite.test.js +12 -9
  135. package/dist/core/agents/suite.test.js.map +1 -1
  136. package/dist/core/agents/tools.test.js +15 -9
  137. package/dist/core/agents/tools.test.js.map +1 -1
  138. package/dist/core/agents/types.test.js +1 -1
  139. package/dist/core/agents/types.test.js.map +1 -1
  140. package/dist/core/skills/loader.test.js +1 -1
  141. package/dist/core/skills/loader.test.js.map +1 -1
  142. package/dist/index.d.ts +3 -11
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +5 -12
  145. package/dist/index.js.map +1 -1
  146. package/dist/lib/pathValidation.d.ts +0 -5
  147. package/dist/lib/pathValidation.d.ts.map +1 -1
  148. package/dist/lib/pathValidation.js +0 -11
  149. package/dist/lib/pathValidation.js.map +1 -1
  150. package/dist/lib/pathValidation.test.js +2 -14
  151. package/dist/lib/pathValidation.test.js.map +1 -1
  152. package/package.json +13 -10
  153. package/sbom.json +1927 -847
  154. package/templates/.github/agents/beth.agent.md +331 -105
  155. package/templates/.github/agents/developer.agent.md +73 -102
  156. package/templates/.github/agents/product-manager.agent.md +24 -68
  157. package/templates/.github/agents/researcher.agent.md +21 -69
  158. package/templates/.github/agents/security-reviewer.agent.md +39 -82
  159. package/templates/.github/agents/tester.agent.md +44 -65
  160. package/templates/.github/agents/ux-designer.agent.md +25 -76
  161. package/templates/.github/copilot-instructions.md +246 -225
  162. package/templates/.github/copilot-mcp-config.json +12 -0
  163. package/templates/.github/dependabot.yml +68 -0
  164. package/templates/.github/hooks/scripts/inject-skills.mjs +139 -0
  165. package/templates/.github/hooks/scripts/verify-skills.mjs +47 -0
  166. package/templates/.github/hooks/skill-enforcement.json +18 -0
  167. package/templates/.github/pull_request_template.md +48 -0
  168. package/templates/.github/skills/framer-components/SKILL.md +0 -0
  169. package/templates/.github/skills/prd/SKILL.md +0 -0
  170. package/templates/.github/skills/security-analysis/SKILL.md +798 -798
  171. package/templates/.github/skills/shadcn-ui/SKILL.md +561 -561
  172. package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +0 -0
  173. package/templates/.github/skills/vercel-react-best-practices/SKILL.md +0 -0
  174. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
  175. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
  176. package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -0
  177. package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -0
  178. package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -0
  179. package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +0 -0
  180. package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
  181. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
  182. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
  183. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
  184. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
  185. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -0
  186. package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
  187. package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
  188. package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
  189. package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
  190. package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
  191. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
  192. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
  193. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
  194. package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
  195. package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -0
  196. package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
  197. package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -0
  198. package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
  199. package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
  200. package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
  201. package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
  202. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -0
  203. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
  204. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
  205. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
  206. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
  207. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
  208. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
  209. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
  210. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
  211. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
  212. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
  213. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
  214. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -0
  215. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -0
  216. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
  217. package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
  218. package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -0
  219. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
  220. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -0
  221. package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -0
  222. package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
  223. package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +0 -0
  224. package/templates/.github/skills/web-design-guidelines/SKILL.md +0 -0
  225. package/templates/.vscode/settings.json +16 -16
  226. package/templates/AGENTS.md +103 -54
  227. package/templates/Backlog.md +80 -80
  228. package/templates/mcp.json.example +0 -3
  229. package/assets/beth-portrait-small.txt +0 -13
  230. package/assets/beth-portrait.txt +0 -60
  231. package/bin/beth-animation.sh +0 -155
  232. package/bin/lib/animation.js +0 -189
  233. package/bin/lib/pathValidation.js +0 -233
  234. package/bin/lib/pathValidation.test.js +0 -280
  235. package/dist/cli/commands/client-config.d.ts +0 -31
  236. package/dist/cli/commands/client-config.d.ts.map +0 -1
  237. package/dist/cli/commands/client-config.e2e.test.d.ts +0 -15
  238. package/dist/cli/commands/client-config.e2e.test.d.ts.map +0 -1
  239. package/dist/cli/commands/client-config.e2e.test.js +0 -556
  240. package/dist/cli/commands/client-config.e2e.test.js.map +0 -1
  241. package/dist/cli/commands/client-config.js +0 -73
  242. package/dist/cli/commands/client-config.js.map +0 -1
  243. package/dist/cli/commands/client-config.test.d.ts +0 -6
  244. package/dist/cli/commands/client-config.test.d.ts.map +0 -1
  245. package/dist/cli/commands/client-config.test.js +0 -133
  246. package/dist/cli/commands/client-config.test.js.map +0 -1
  247. package/dist/cli/commands/init-quickstart.e2e.test.d.ts +0 -11
  248. package/dist/cli/commands/init-quickstart.e2e.test.d.ts.map +0 -1
  249. package/dist/cli/commands/init-quickstart.e2e.test.js +0 -221
  250. package/dist/cli/commands/init-quickstart.e2e.test.js.map +0 -1
  251. package/dist/core/context.d.ts +0 -171
  252. package/dist/core/context.d.ts.map +0 -1
  253. package/dist/core/context.js +0 -353
  254. package/dist/core/context.js.map +0 -1
  255. package/dist/core/context.test.d.ts +0 -8
  256. package/dist/core/context.test.d.ts.map +0 -1
  257. package/dist/core/context.test.js +0 -253
  258. package/dist/core/context.test.js.map +0 -1
  259. package/dist/core/handoffs.d.ts +0 -151
  260. package/dist/core/handoffs.d.ts.map +0 -1
  261. package/dist/core/handoffs.js +0 -220
  262. package/dist/core/handoffs.js.map +0 -1
  263. package/dist/core/handoffs.test.d.ts +0 -8
  264. package/dist/core/handoffs.test.d.ts.map +0 -1
  265. package/dist/core/handoffs.test.js +0 -231
  266. package/dist/core/handoffs.test.js.map +0 -1
  267. package/dist/core/orchestrator.d.ts +0 -246
  268. package/dist/core/orchestrator.d.ts.map +0 -1
  269. package/dist/core/orchestrator.js +0 -514
  270. package/dist/core/orchestrator.js.map +0 -1
  271. package/dist/core/orchestrator.test.d.ts +0 -8
  272. package/dist/core/orchestrator.test.d.ts.map +0 -1
  273. package/dist/core/orchestrator.test.js +0 -517
  274. package/dist/core/orchestrator.test.js.map +0 -1
  275. package/dist/core/router.d.ts +0 -102
  276. package/dist/core/router.d.ts.map +0 -1
  277. package/dist/core/router.js +0 -178
  278. package/dist/core/router.js.map +0 -1
  279. package/dist/core/router.test.d.ts +0 -8
  280. package/dist/core/router.test.d.ts.map +0 -1
  281. package/dist/core/router.test.js +0 -215
  282. package/dist/core/router.test.js.map +0 -1
  283. package/dist/init.test.js +0 -288
  284. package/dist/providers/azure.d.ts +0 -147
  285. package/dist/providers/azure.d.ts.map +0 -1
  286. package/dist/providers/azure.js +0 -491
  287. package/dist/providers/azure.js.map +0 -1
  288. package/dist/providers/azure.test.d.ts +0 -11
  289. package/dist/providers/azure.test.d.ts.map +0 -1
  290. package/dist/providers/azure.test.js +0 -330
  291. package/dist/providers/azure.test.js.map +0 -1
  292. package/dist/providers/config.d.ts +0 -87
  293. package/dist/providers/config.d.ts.map +0 -1
  294. package/dist/providers/config.js +0 -193
  295. package/dist/providers/config.js.map +0 -1
  296. package/dist/providers/config.test.d.ts +0 -7
  297. package/dist/providers/config.test.d.ts.map +0 -1
  298. package/dist/providers/config.test.js +0 -370
  299. package/dist/providers/config.test.js.map +0 -1
  300. package/dist/providers/index.d.ts +0 -18
  301. package/dist/providers/index.d.ts.map +0 -1
  302. package/dist/providers/index.js +0 -14
  303. package/dist/providers/index.js.map +0 -1
  304. package/dist/providers/interface.d.ts +0 -191
  305. package/dist/providers/interface.d.ts.map +0 -1
  306. package/dist/providers/interface.js +0 -94
  307. package/dist/providers/interface.js.map +0 -1
  308. package/dist/providers/retry.d.ts +0 -128
  309. package/dist/providers/retry.d.ts.map +0 -1
  310. package/dist/providers/retry.js +0 -205
  311. package/dist/providers/retry.js.map +0 -1
  312. package/dist/providers/retry.test.d.ts +0 -7
  313. package/dist/providers/retry.test.d.ts.map +0 -1
  314. package/dist/providers/retry.test.js +0 -439
  315. package/dist/providers/retry.test.js.map +0 -1
  316. package/dist/providers/streaming.d.ts +0 -157
  317. package/dist/providers/streaming.d.ts.map +0 -1
  318. package/dist/providers/streaming.js +0 -233
  319. package/dist/providers/streaming.js.map +0 -1
  320. package/dist/providers/streaming.test.d.ts +0 -7
  321. package/dist/providers/streaming.test.d.ts.map +0 -1
  322. package/dist/providers/streaming.test.js +0 -372
  323. package/dist/providers/streaming.test.js.map +0 -1
  324. package/dist/providers/types.d.ts +0 -209
  325. package/dist/providers/types.d.ts.map +0 -1
  326. package/dist/providers/types.js +0 -53
  327. package/dist/providers/types.js.map +0 -1
  328. package/dist/providers/types.test.d.ts +0 -7
  329. package/dist/providers/types.test.d.ts.map +0 -1
  330. package/dist/providers/types.test.js +0 -141
  331. package/dist/providers/types.test.js.map +0 -1
  332. package/dist/tools/cli/beads.d.ts +0 -27
  333. package/dist/tools/cli/beads.d.ts.map +0 -1
  334. package/dist/tools/cli/beads.js +0 -172
  335. package/dist/tools/cli/beads.js.map +0 -1
  336. package/dist/tools/cli/beads.test.d.ts +0 -8
  337. package/dist/tools/cli/beads.test.d.ts.map +0 -1
  338. package/dist/tools/cli/beads.test.js +0 -264
  339. package/dist/tools/cli/beads.test.js.map +0 -1
  340. package/dist/tools/cli/editFile.d.ts +0 -17
  341. package/dist/tools/cli/editFile.d.ts.map +0 -1
  342. package/dist/tools/cli/editFile.js +0 -125
  343. package/dist/tools/cli/editFile.js.map +0 -1
  344. package/dist/tools/cli/editFile.test.d.ts +0 -8
  345. package/dist/tools/cli/editFile.test.d.ts.map +0 -1
  346. package/dist/tools/cli/editFile.test.js +0 -177
  347. package/dist/tools/cli/editFile.test.js.map +0 -1
  348. package/dist/tools/cli/readFile.d.ts +0 -25
  349. package/dist/tools/cli/readFile.d.ts.map +0 -1
  350. package/dist/tools/cli/readFile.js +0 -118
  351. package/dist/tools/cli/readFile.js.map +0 -1
  352. package/dist/tools/cli/readFile.test.d.ts +0 -8
  353. package/dist/tools/cli/readFile.test.d.ts.map +0 -1
  354. package/dist/tools/cli/readFile.test.js +0 -194
  355. package/dist/tools/cli/readFile.test.js.map +0 -1
  356. package/dist/tools/cli/search.d.ts +0 -16
  357. package/dist/tools/cli/search.d.ts.map +0 -1
  358. package/dist/tools/cli/search.js +0 -261
  359. package/dist/tools/cli/search.js.map +0 -1
  360. package/dist/tools/cli/search.test.d.ts +0 -8
  361. package/dist/tools/cli/search.test.d.ts.map +0 -1
  362. package/dist/tools/cli/search.test.js +0 -172
  363. package/dist/tools/cli/search.test.js.map +0 -1
  364. package/dist/tools/cli/subagent.d.ts +0 -43
  365. package/dist/tools/cli/subagent.d.ts.map +0 -1
  366. package/dist/tools/cli/subagent.js +0 -99
  367. package/dist/tools/cli/subagent.js.map +0 -1
  368. package/dist/tools/cli/subagent.test.d.ts +0 -8
  369. package/dist/tools/cli/subagent.test.d.ts.map +0 -1
  370. package/dist/tools/cli/subagent.test.js +0 -190
  371. package/dist/tools/cli/subagent.test.js.map +0 -1
  372. package/dist/tools/cli/terminal.d.ts +0 -19
  373. package/dist/tools/cli/terminal.d.ts.map +0 -1
  374. package/dist/tools/cli/terminal.js +0 -164
  375. package/dist/tools/cli/terminal.js.map +0 -1
  376. package/dist/tools/cli/terminal.test.d.ts +0 -8
  377. package/dist/tools/cli/terminal.test.d.ts.map +0 -1
  378. package/dist/tools/cli/terminal.test.js +0 -161
  379. package/dist/tools/cli/terminal.test.js.map +0 -1
  380. package/dist/tools/index.d.ts +0 -25
  381. package/dist/tools/index.d.ts.map +0 -1
  382. package/dist/tools/index.js +0 -41
  383. package/dist/tools/index.js.map +0 -1
  384. package/dist/tools/interface.d.ts +0 -64
  385. package/dist/tools/interface.d.ts.map +0 -1
  386. package/dist/tools/interface.js +0 -37
  387. package/dist/tools/interface.js.map +0 -1
  388. package/dist/tools/interface.test.d.ts +0 -7
  389. package/dist/tools/interface.test.d.ts.map +0 -1
  390. package/dist/tools/interface.test.js +0 -179
  391. package/dist/tools/interface.test.js.map +0 -1
  392. package/dist/tools/mcp/bridge.d.ts +0 -48
  393. package/dist/tools/mcp/bridge.d.ts.map +0 -1
  394. package/dist/tools/mcp/bridge.js +0 -128
  395. package/dist/tools/mcp/bridge.js.map +0 -1
  396. package/dist/tools/mcp/bridge.test.d.ts +0 -8
  397. package/dist/tools/mcp/bridge.test.d.ts.map +0 -1
  398. package/dist/tools/mcp/bridge.test.js +0 -300
  399. package/dist/tools/mcp/bridge.test.js.map +0 -1
  400. package/dist/tools/mcp/client.d.ts +0 -135
  401. package/dist/tools/mcp/client.d.ts.map +0 -1
  402. package/dist/tools/mcp/client.js +0 -263
  403. package/dist/tools/mcp/client.js.map +0 -1
  404. package/dist/tools/mcp/client.test.d.ts +0 -8
  405. package/dist/tools/mcp/client.test.d.ts.map +0 -1
  406. package/dist/tools/mcp/client.test.js +0 -390
  407. package/dist/tools/mcp/client.test.js.map +0 -1
  408. package/dist/tools/registry.d.ts +0 -82
  409. package/dist/tools/registry.d.ts.map +0 -1
  410. package/dist/tools/registry.js +0 -99
  411. package/dist/tools/registry.js.map +0 -1
  412. package/dist/tools/registry.test.d.ts +0 -7
  413. package/dist/tools/registry.test.d.ts.map +0 -1
  414. package/dist/tools/registry.test.js +0 -199
  415. package/dist/tools/registry.test.js.map +0 -1
  416. package/dist/tools/suite.test.d.ts +0 -11
  417. package/dist/tools/suite.test.d.ts.map +0 -1
  418. package/dist/tools/suite.test.js +0 -119
  419. package/dist/tools/suite.test.js.map +0 -1
  420. package/dist/tools/types.d.ts +0 -75
  421. package/dist/tools/types.d.ts.map +0 -1
  422. package/dist/tools/types.js +0 -30
  423. package/dist/tools/types.js.map +0 -1
  424. package/dist/tools/types.test.d.ts +0 -7
  425. package/dist/tools/types.test.d.ts.map +0 -1
  426. package/dist/tools/types.test.js +0 -178
  427. package/dist/tools/types.test.js.map +0 -1
  428. package/templates/.vscode/mcp.json +0 -20
  429. package/templates/CLAUDE.md +0 -129
@@ -1,94 +0,0 @@
1
- /**
2
- * LLM Provider Interface
3
- *
4
- * Abstract base class and interfaces for LLM provider implementations.
5
- * Designed to be provider-agnostic, enabling support for Azure OpenAI,
6
- * Claude, Ollama, and other providers.
7
- */
8
- // =============================================================================
9
- // Provider Interface
10
- // =============================================================================
11
- /**
12
- * Abstract base class for LLM provider implementations.
13
- *
14
- * Provides a unified interface for interacting with different LLM providers.
15
- * Concrete implementations handle provider-specific API details while
16
- * conforming to this common contract.
17
- *
18
- * @example
19
- * ```typescript
20
- * class AzureOpenAIProvider extends LLMProviderBase {
21
- * get name() { return 'azure-openai'; }
22
- * get isConfigured() { return !!this.config.apiKey; }
23
- *
24
- * async chat(messages, options) {
25
- * // Azure-specific implementation
26
- * }
27
- *
28
- * async *chatStream(messages, options) {
29
- * // Azure-specific streaming implementation
30
- * }
31
- *
32
- * async countTokens(messages) {
33
- * // Token counting implementation
34
- * }
35
- * }
36
- * ```
37
- */
38
- export class LLMProviderBase {
39
- /** Provider configuration */
40
- config;
41
- /**
42
- * Create a new provider instance.
43
- *
44
- * @param config - Provider configuration including credentials and model settings
45
- */
46
- constructor(config) {
47
- this.config = config;
48
- }
49
- // ===========================================================================
50
- // Utility Methods
51
- // ===========================================================================
52
- /**
53
- * Get the configured model name or deployment.
54
- *
55
- * Returns the model specified in the provider configuration.
56
- */
57
- get model() {
58
- return this.config.model;
59
- }
60
- /**
61
- * Get a redacted summary of the configuration for logging.
62
- *
63
- * Returns configuration information safe for logging, with
64
- * sensitive values (endpoints) masked. Credential type is shown
65
- * but no secrets are exposed.
66
- */
67
- getConfigSummary() {
68
- return {
69
- provider: this.name,
70
- model: this.config.model,
71
- endpoint: this.maskEndpoint(this.config.endpoint),
72
- auth: 'Entra ID (TokenCredential)',
73
- };
74
- }
75
- /**
76
- * Mask an endpoint URL for safe logging.
77
- *
78
- * Preserves the host but masks path segments to avoid leaking
79
- * deployment names or resource identifiers.
80
- *
81
- * @param endpoint - Full endpoint URL
82
- * @returns Masked endpoint safe for logging
83
- */
84
- maskEndpoint(endpoint) {
85
- try {
86
- const url = new URL(endpoint);
87
- return `${url.protocol}//${url.host}/***`;
88
- }
89
- catch {
90
- return '(invalid url)';
91
- }
92
- }
93
- }
94
- //# sourceMappingURL=interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/providers/interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2CH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAgB,eAAe;IACnC,6BAA6B;IACV,MAAM,CAAY;IAErC;;;;OAIG;IACH,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IA2GD,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAE9E;;;;OAIG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB;QACd,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjD,IAAI,EAAE,4BAA4B;SACnC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACK,YAAY,CAAC,QAAgB;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;CACF"}
@@ -1,128 +0,0 @@
1
- /**
2
- * Retry Utility for LLM API Calls
3
- *
4
- * Provides exponential backoff retry logic with jitter for handling
5
- * transient errors in LLM API calls. Designed to prevent thundering herd
6
- * problems and gracefully handle rate limits and temporary failures.
7
- */
8
- /**
9
- * Options for configuring retry behavior.
10
- */
11
- export interface RetryOptions {
12
- /** Maximum number of retry attempts (default: 3) */
13
- maxRetries?: number;
14
- /** Base delay in milliseconds before first retry (default: 1000) */
15
- baseDelay?: number;
16
- /** Maximum delay in milliseconds between retries (default: 30000) */
17
- maxDelay?: number;
18
- /** Whether to add randomized jitter to prevent thundering herd (default: true) */
19
- jitter?: boolean;
20
- /** HTTP status codes that should trigger a retry (default: [429, 500, 502, 503, 504]) */
21
- retryableStatuses?: number[];
22
- /** Optional callback invoked before each retry attempt */
23
- onRetry?: (error: Error, attempt: number, delay: number) => void;
24
- }
25
- /**
26
- * Error thrown when all retry attempts have been exhausted.
27
- */
28
- export declare class RetryError extends Error {
29
- /** Number of attempts made before giving up */
30
- readonly attempts: number;
31
- /** The last error that caused the final retry to fail */
32
- readonly lastError: Error;
33
- /**
34
- * Create a new RetryError
35
- * @param message - Human-readable error message
36
- * @param attempts - Number of retry attempts made
37
- * @param lastError - The error from the final attempt
38
- */
39
- constructor(message: string, attempts: number, lastError: Error);
40
- }
41
- /**
42
- * Calculate the delay before the next retry attempt.
43
- *
44
- * Uses exponential backoff: `baseDelay * 2^attempt`, capped at `maxDelay`.
45
- * When jitter is enabled, multiplies by a random factor between 0.5 and 1.5.
46
- *
47
- * @param attempt - Zero-based attempt number (0 = first retry)
48
- * @param baseDelay - Base delay in milliseconds
49
- * @param maxDelay - Maximum delay cap in milliseconds
50
- * @param jitter - Whether to apply random jitter
51
- * @returns Calculated delay in milliseconds
52
- *
53
- * @example
54
- * ```typescript
55
- * // First retry, base 1000ms, no jitter
56
- * calculateDelay(0, 1000, 30000, false); // 1000
57
- *
58
- * // Second retry, base 1000ms, no jitter
59
- * calculateDelay(1, 1000, 30000, false); // 2000
60
- *
61
- * // With jitter, result varies between 500-1500 for first retry
62
- * calculateDelay(0, 1000, 30000, true); // 500-1500
63
- * ```
64
- */
65
- export declare function calculateDelay(attempt: number, baseDelay: number, maxDelay: number, jitter: boolean): number;
66
- /**
67
- * Determine if an error is transient and should be retried.
68
- *
69
- * Checks for:
70
- * - HTTP status codes: 429 (rate limit), 500, 502, 503, 504 (server errors)
71
- * - Network errors: ECONNRESET, ETIMEDOUT, ECONNREFUSED, etc.
72
- *
73
- * @param error - The error to check
74
- * @param retryableStatuses - HTTP status codes considered retryable
75
- * @returns True if the error is transient and should be retried
76
- *
77
- * @example
78
- * ```typescript
79
- * // HTTP 429 Too Many Requests
80
- * const rateLimitError = new Error('Rate limited');
81
- * (rateLimitError as any).status = 429;
82
- * isTransientError(rateLimitError); // true
83
- *
84
- * // Network error
85
- * const networkError = new Error('Connection reset');
86
- * (networkError as any).code = 'ECONNRESET';
87
- * isTransientError(networkError); // true
88
- *
89
- * // Client error (not retryable)
90
- * const clientError = new Error('Bad request');
91
- * (clientError as any).status = 400;
92
- * isTransientError(clientError); // false
93
- * ```
94
- */
95
- export declare function isTransientError(error: Error, retryableStatuses?: number[]): boolean;
96
- /**
97
- * Execute an async function with automatic retry on transient failures.
98
- *
99
- * Uses exponential backoff with optional jitter to retry failed operations.
100
- * Only retries on transient errors (rate limits, server errors, network issues).
101
- *
102
- * @typeParam T - The return type of the async function
103
- * @param fn - The async function to execute
104
- * @param options - Retry configuration options
105
- * @returns The result of the successful function call
106
- * @throws {RetryError} When all retry attempts are exhausted
107
- * @throws {Error} When a non-transient error occurs
108
- *
109
- * @example
110
- * ```typescript
111
- * // Basic usage
112
- * const result = await retry(() => fetchFromLLM(prompt));
113
- *
114
- * // With custom options
115
- * const result = await retry(
116
- * () => fetchFromLLM(prompt),
117
- * {
118
- * maxRetries: 5,
119
- * baseDelay: 2000,
120
- * onRetry: (error, attempt, delay) => {
121
- * console.log(`Retry ${attempt} after ${delay}ms: ${error.message}`);
122
- * }
123
- * }
124
- * );
125
- * ```
126
- */
127
- export declare function retry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
128
- //# sourceMappingURL=retry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/providers/retry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqBH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAE1B;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK;CAWhE;AAYD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAcR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,iBAAiB,GAAE,MAAM,EAA+B,GACvD,OAAO,CAgBT;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CA4DZ"}
@@ -1,205 +0,0 @@
1
- /**
2
- * Retry Utility for LLM API Calls
3
- *
4
- * Provides exponential backoff retry logic with jitter for handling
5
- * transient errors in LLM API calls. Designed to prevent thundering herd
6
- * problems and gracefully handle rate limits and temporary failures.
7
- */
8
- /**
9
- * Network error codes that indicate transient failures.
10
- */
11
- const TRANSIENT_ERROR_CODES = new Set([
12
- 'ECONNRESET',
13
- 'ETIMEDOUT',
14
- 'ECONNREFUSED',
15
- 'ENOTFOUND',
16
- 'ENETUNREACH',
17
- 'EHOSTUNREACH',
18
- 'EPIPE',
19
- 'EAI_AGAIN',
20
- ]);
21
- /**
22
- * HTTP status codes that indicate retryable errors.
23
- */
24
- const DEFAULT_RETRYABLE_STATUSES = [429, 500, 502, 503, 504];
25
- /**
26
- * Error thrown when all retry attempts have been exhausted.
27
- */
28
- export class RetryError extends Error {
29
- /** Number of attempts made before giving up */
30
- attempts;
31
- /** The last error that caused the final retry to fail */
32
- lastError;
33
- /**
34
- * Create a new RetryError
35
- * @param message - Human-readable error message
36
- * @param attempts - Number of retry attempts made
37
- * @param lastError - The error from the final attempt
38
- */
39
- constructor(message, attempts, lastError) {
40
- super(message);
41
- this.name = 'RetryError';
42
- this.attempts = attempts;
43
- this.lastError = lastError;
44
- // Maintain proper stack trace in V8 environments
45
- if (Error.captureStackTrace) {
46
- Error.captureStackTrace(this, RetryError);
47
- }
48
- }
49
- }
50
- /**
51
- * Calculate the delay before the next retry attempt.
52
- *
53
- * Uses exponential backoff: `baseDelay * 2^attempt`, capped at `maxDelay`.
54
- * When jitter is enabled, multiplies by a random factor between 0.5 and 1.5.
55
- *
56
- * @param attempt - Zero-based attempt number (0 = first retry)
57
- * @param baseDelay - Base delay in milliseconds
58
- * @param maxDelay - Maximum delay cap in milliseconds
59
- * @param jitter - Whether to apply random jitter
60
- * @returns Calculated delay in milliseconds
61
- *
62
- * @example
63
- * ```typescript
64
- * // First retry, base 1000ms, no jitter
65
- * calculateDelay(0, 1000, 30000, false); // 1000
66
- *
67
- * // Second retry, base 1000ms, no jitter
68
- * calculateDelay(1, 1000, 30000, false); // 2000
69
- *
70
- * // With jitter, result varies between 500-1500 for first retry
71
- * calculateDelay(0, 1000, 30000, true); // 500-1500
72
- * ```
73
- */
74
- export function calculateDelay(attempt, baseDelay, maxDelay, jitter) {
75
- // Exponential backoff: baseDelay * 2^attempt
76
- const exponentialDelay = baseDelay * Math.pow(2, attempt);
77
- // Cap at maxDelay
78
- const cappedDelay = Math.min(exponentialDelay, maxDelay);
79
- // Apply jitter: multiply by random factor between 0.5 and 1.5
80
- if (jitter) {
81
- const jitterFactor = 0.5 + Math.random();
82
- return Math.floor(cappedDelay * jitterFactor);
83
- }
84
- return cappedDelay;
85
- }
86
- /**
87
- * Determine if an error is transient and should be retried.
88
- *
89
- * Checks for:
90
- * - HTTP status codes: 429 (rate limit), 500, 502, 503, 504 (server errors)
91
- * - Network errors: ECONNRESET, ETIMEDOUT, ECONNREFUSED, etc.
92
- *
93
- * @param error - The error to check
94
- * @param retryableStatuses - HTTP status codes considered retryable
95
- * @returns True if the error is transient and should be retried
96
- *
97
- * @example
98
- * ```typescript
99
- * // HTTP 429 Too Many Requests
100
- * const rateLimitError = new Error('Rate limited');
101
- * (rateLimitError as any).status = 429;
102
- * isTransientError(rateLimitError); // true
103
- *
104
- * // Network error
105
- * const networkError = new Error('Connection reset');
106
- * (networkError as any).code = 'ECONNRESET';
107
- * isTransientError(networkError); // true
108
- *
109
- * // Client error (not retryable)
110
- * const clientError = new Error('Bad request');
111
- * (clientError as any).status = 400;
112
- * isTransientError(clientError); // false
113
- * ```
114
- */
115
- export function isTransientError(error, retryableStatuses = DEFAULT_RETRYABLE_STATUSES) {
116
- const errorWithStatus = error;
117
- // Check for HTTP status codes
118
- const statusCode = errorWithStatus.statusCode ?? errorWithStatus.status;
119
- if (statusCode !== undefined && retryableStatuses.includes(statusCode)) {
120
- return true;
121
- }
122
- // Check for network error codes
123
- const errorCode = errorWithStatus.code;
124
- if (errorCode !== undefined && TRANSIENT_ERROR_CODES.has(errorCode)) {
125
- return true;
126
- }
127
- return false;
128
- }
129
- /**
130
- * Sleep for a specified duration.
131
- * @param ms - Duration in milliseconds
132
- * @returns Promise that resolves after the duration
133
- */
134
- function sleep(ms) {
135
- return new Promise((resolve) => setTimeout(resolve, ms));
136
- }
137
- /**
138
- * Execute an async function with automatic retry on transient failures.
139
- *
140
- * Uses exponential backoff with optional jitter to retry failed operations.
141
- * Only retries on transient errors (rate limits, server errors, network issues).
142
- *
143
- * @typeParam T - The return type of the async function
144
- * @param fn - The async function to execute
145
- * @param options - Retry configuration options
146
- * @returns The result of the successful function call
147
- * @throws {RetryError} When all retry attempts are exhausted
148
- * @throws {Error} When a non-transient error occurs
149
- *
150
- * @example
151
- * ```typescript
152
- * // Basic usage
153
- * const result = await retry(() => fetchFromLLM(prompt));
154
- *
155
- * // With custom options
156
- * const result = await retry(
157
- * () => fetchFromLLM(prompt),
158
- * {
159
- * maxRetries: 5,
160
- * baseDelay: 2000,
161
- * onRetry: (error, attempt, delay) => {
162
- * console.log(`Retry ${attempt} after ${delay}ms: ${error.message}`);
163
- * }
164
- * }
165
- * );
166
- * ```
167
- */
168
- export async function retry(fn, options = {}) {
169
- const { maxRetries = 3, baseDelay = 1000, maxDelay = 30000, jitter = true, retryableStatuses = DEFAULT_RETRYABLE_STATUSES, onRetry, } = options;
170
- let lastError;
171
- let attempt = 0;
172
- // Total attempts = 1 initial + maxRetries
173
- const totalAttempts = maxRetries + 1;
174
- while (attempt < totalAttempts) {
175
- try {
176
- return await fn();
177
- }
178
- catch (error) {
179
- // Ensure we have an Error object
180
- const errorObj = error instanceof Error ? error : new Error(String(error));
181
- lastError = errorObj;
182
- // Check if we've exhausted retries
183
- if (attempt >= maxRetries) {
184
- throw new RetryError(`All ${totalAttempts} attempts failed. Last error: ${errorObj.message}`, totalAttempts, errorObj);
185
- }
186
- // Check if error is retryable
187
- if (!isTransientError(errorObj, retryableStatuses)) {
188
- // Non-transient error, don't retry
189
- throw errorObj;
190
- }
191
- // Calculate delay for next retry
192
- const delay = calculateDelay(attempt, baseDelay, maxDelay, jitter);
193
- // Invoke onRetry callback if provided
194
- if (onRetry) {
195
- onRetry(errorObj, attempt + 1, delay);
196
- }
197
- // Wait before retrying
198
- await sleep(delay);
199
- attempt++;
200
- }
201
- }
202
- // This should never be reached, but TypeScript needs it
203
- throw new RetryError(`All ${totalAttempts} attempts failed.`, totalAttempts, lastError ?? new Error('Unknown error'));
204
- }
205
- //# sourceMappingURL=retry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/providers/retry.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Retry Utility Tests
3
- *
4
- * Tests for exponential backoff retry logic.
5
- */
6
- export {};
7
- //# sourceMappingURL=retry.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.test.d.ts","sourceRoot":"","sources":["../../src/providers/retry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}