@dotsetlabs/bellwether 0.10.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 (403) hide show
  1. package/CHANGELOG.md +291 -0
  2. package/LICENSE +21 -0
  3. package/README.md +739 -0
  4. package/dist/auth/credentials.d.ts +64 -0
  5. package/dist/auth/credentials.js +218 -0
  6. package/dist/auth/index.d.ts +6 -0
  7. package/dist/auth/index.js +6 -0
  8. package/dist/auth/keychain.d.ts +64 -0
  9. package/dist/auth/keychain.js +268 -0
  10. package/dist/baseline/ab-testing.d.ts +80 -0
  11. package/dist/baseline/ab-testing.js +236 -0
  12. package/dist/baseline/ai-compatibility-scorer.d.ts +95 -0
  13. package/dist/baseline/ai-compatibility-scorer.js +606 -0
  14. package/dist/baseline/calibration.d.ts +77 -0
  15. package/dist/baseline/calibration.js +136 -0
  16. package/dist/baseline/category-matching.d.ts +85 -0
  17. package/dist/baseline/category-matching.js +289 -0
  18. package/dist/baseline/change-impact-analyzer.d.ts +98 -0
  19. package/dist/baseline/change-impact-analyzer.js +592 -0
  20. package/dist/baseline/comparator.d.ts +64 -0
  21. package/dist/baseline/comparator.js +916 -0
  22. package/dist/baseline/confidence.d.ts +55 -0
  23. package/dist/baseline/confidence.js +122 -0
  24. package/dist/baseline/converter.d.ts +61 -0
  25. package/dist/baseline/converter.js +585 -0
  26. package/dist/baseline/dependency-analyzer.d.ts +89 -0
  27. package/dist/baseline/dependency-analyzer.js +567 -0
  28. package/dist/baseline/deprecation-tracker.d.ts +133 -0
  29. package/dist/baseline/deprecation-tracker.js +322 -0
  30. package/dist/baseline/diff.d.ts +55 -0
  31. package/dist/baseline/diff.js +1584 -0
  32. package/dist/baseline/documentation-scorer.d.ts +205 -0
  33. package/dist/baseline/documentation-scorer.js +466 -0
  34. package/dist/baseline/embeddings.d.ts +118 -0
  35. package/dist/baseline/embeddings.js +251 -0
  36. package/dist/baseline/error-analyzer.d.ts +198 -0
  37. package/dist/baseline/error-analyzer.js +721 -0
  38. package/dist/baseline/evaluation/evaluator.d.ts +42 -0
  39. package/dist/baseline/evaluation/evaluator.js +323 -0
  40. package/dist/baseline/evaluation/expanded-dataset.d.ts +45 -0
  41. package/dist/baseline/evaluation/expanded-dataset.js +1164 -0
  42. package/dist/baseline/evaluation/golden-dataset.d.ts +58 -0
  43. package/dist/baseline/evaluation/golden-dataset.js +717 -0
  44. package/dist/baseline/evaluation/index.d.ts +15 -0
  45. package/dist/baseline/evaluation/index.js +15 -0
  46. package/dist/baseline/evaluation/types.d.ts +186 -0
  47. package/dist/baseline/evaluation/types.js +8 -0
  48. package/dist/baseline/external-dependency-detector.d.ts +181 -0
  49. package/dist/baseline/external-dependency-detector.js +524 -0
  50. package/dist/baseline/golden-output.d.ts +162 -0
  51. package/dist/baseline/golden-output.js +636 -0
  52. package/dist/baseline/health-scorer.d.ts +174 -0
  53. package/dist/baseline/health-scorer.js +451 -0
  54. package/dist/baseline/incremental-checker.d.ts +97 -0
  55. package/dist/baseline/incremental-checker.js +174 -0
  56. package/dist/baseline/index.d.ts +31 -0
  57. package/dist/baseline/index.js +42 -0
  58. package/dist/baseline/migration-generator.d.ts +137 -0
  59. package/dist/baseline/migration-generator.js +554 -0
  60. package/dist/baseline/migrations.d.ts +60 -0
  61. package/dist/baseline/migrations.js +197 -0
  62. package/dist/baseline/performance-tracker.d.ts +214 -0
  63. package/dist/baseline/performance-tracker.js +577 -0
  64. package/dist/baseline/pr-comment-generator.d.ts +117 -0
  65. package/dist/baseline/pr-comment-generator.js +546 -0
  66. package/dist/baseline/response-fingerprint.d.ts +127 -0
  67. package/dist/baseline/response-fingerprint.js +728 -0
  68. package/dist/baseline/response-schema-tracker.d.ts +129 -0
  69. package/dist/baseline/response-schema-tracker.js +420 -0
  70. package/dist/baseline/risk-scorer.d.ts +54 -0
  71. package/dist/baseline/risk-scorer.js +434 -0
  72. package/dist/baseline/saver.d.ts +89 -0
  73. package/dist/baseline/saver.js +554 -0
  74. package/dist/baseline/scenario-generator.d.ts +151 -0
  75. package/dist/baseline/scenario-generator.js +905 -0
  76. package/dist/baseline/schema-compare.d.ts +86 -0
  77. package/dist/baseline/schema-compare.js +557 -0
  78. package/dist/baseline/schema-evolution.d.ts +189 -0
  79. package/dist/baseline/schema-evolution.js +467 -0
  80. package/dist/baseline/semantic.d.ts +203 -0
  81. package/dist/baseline/semantic.js +908 -0
  82. package/dist/baseline/synonyms.d.ts +60 -0
  83. package/dist/baseline/synonyms.js +386 -0
  84. package/dist/baseline/telemetry.d.ts +165 -0
  85. package/dist/baseline/telemetry.js +294 -0
  86. package/dist/baseline/test-pruner.d.ts +120 -0
  87. package/dist/baseline/test-pruner.js +387 -0
  88. package/dist/baseline/types.d.ts +449 -0
  89. package/dist/baseline/types.js +5 -0
  90. package/dist/baseline/version.d.ts +138 -0
  91. package/dist/baseline/version.js +206 -0
  92. package/dist/cache/index.d.ts +5 -0
  93. package/dist/cache/index.js +5 -0
  94. package/dist/cache/response-cache.d.ts +151 -0
  95. package/dist/cache/response-cache.js +287 -0
  96. package/dist/ci/index.d.ts +60 -0
  97. package/dist/ci/index.js +342 -0
  98. package/dist/cli/commands/auth.d.ts +12 -0
  99. package/dist/cli/commands/auth.js +352 -0
  100. package/dist/cli/commands/badge.d.ts +3 -0
  101. package/dist/cli/commands/badge.js +74 -0
  102. package/dist/cli/commands/baseline-accept.d.ts +15 -0
  103. package/dist/cli/commands/baseline-accept.js +178 -0
  104. package/dist/cli/commands/baseline-migrate.d.ts +12 -0
  105. package/dist/cli/commands/baseline-migrate.js +164 -0
  106. package/dist/cli/commands/baseline.d.ts +14 -0
  107. package/dist/cli/commands/baseline.js +449 -0
  108. package/dist/cli/commands/beta.d.ts +10 -0
  109. package/dist/cli/commands/beta.js +231 -0
  110. package/dist/cli/commands/check.d.ts +11 -0
  111. package/dist/cli/commands/check.js +820 -0
  112. package/dist/cli/commands/cloud/badge.d.ts +3 -0
  113. package/dist/cli/commands/cloud/badge.js +74 -0
  114. package/dist/cli/commands/cloud/diff.d.ts +6 -0
  115. package/dist/cli/commands/cloud/diff.js +79 -0
  116. package/dist/cli/commands/cloud/history.d.ts +6 -0
  117. package/dist/cli/commands/cloud/history.js +102 -0
  118. package/dist/cli/commands/cloud/link.d.ts +9 -0
  119. package/dist/cli/commands/cloud/link.js +119 -0
  120. package/dist/cli/commands/cloud/login.d.ts +7 -0
  121. package/dist/cli/commands/cloud/login.js +499 -0
  122. package/dist/cli/commands/cloud/projects.d.ts +6 -0
  123. package/dist/cli/commands/cloud/projects.js +44 -0
  124. package/dist/cli/commands/cloud/shared.d.ts +7 -0
  125. package/dist/cli/commands/cloud/shared.js +42 -0
  126. package/dist/cli/commands/cloud/teams.d.ts +8 -0
  127. package/dist/cli/commands/cloud/teams.js +169 -0
  128. package/dist/cli/commands/cloud/upload.d.ts +8 -0
  129. package/dist/cli/commands/cloud/upload.js +181 -0
  130. package/dist/cli/commands/contract.d.ts +11 -0
  131. package/dist/cli/commands/contract.js +280 -0
  132. package/dist/cli/commands/discover.d.ts +3 -0
  133. package/dist/cli/commands/discover.js +82 -0
  134. package/dist/cli/commands/eval.d.ts +9 -0
  135. package/dist/cli/commands/eval.js +187 -0
  136. package/dist/cli/commands/explore.d.ts +11 -0
  137. package/dist/cli/commands/explore.js +437 -0
  138. package/dist/cli/commands/feedback.d.ts +9 -0
  139. package/dist/cli/commands/feedback.js +174 -0
  140. package/dist/cli/commands/golden.d.ts +12 -0
  141. package/dist/cli/commands/golden.js +407 -0
  142. package/dist/cli/commands/history.d.ts +10 -0
  143. package/dist/cli/commands/history.js +202 -0
  144. package/dist/cli/commands/init.d.ts +9 -0
  145. package/dist/cli/commands/init.js +219 -0
  146. package/dist/cli/commands/interview.d.ts +3 -0
  147. package/dist/cli/commands/interview.js +903 -0
  148. package/dist/cli/commands/link.d.ts +10 -0
  149. package/dist/cli/commands/link.js +169 -0
  150. package/dist/cli/commands/login.d.ts +7 -0
  151. package/dist/cli/commands/login.js +499 -0
  152. package/dist/cli/commands/preset.d.ts +33 -0
  153. package/dist/cli/commands/preset.js +297 -0
  154. package/dist/cli/commands/profile.d.ts +33 -0
  155. package/dist/cli/commands/profile.js +286 -0
  156. package/dist/cli/commands/registry.d.ts +11 -0
  157. package/dist/cli/commands/registry.js +146 -0
  158. package/dist/cli/commands/shared.d.ts +79 -0
  159. package/dist/cli/commands/shared.js +196 -0
  160. package/dist/cli/commands/teams.d.ts +8 -0
  161. package/dist/cli/commands/teams.js +169 -0
  162. package/dist/cli/commands/test.d.ts +9 -0
  163. package/dist/cli/commands/test.js +500 -0
  164. package/dist/cli/commands/upload.d.ts +8 -0
  165. package/dist/cli/commands/upload.js +223 -0
  166. package/dist/cli/commands/validate-config.d.ts +6 -0
  167. package/dist/cli/commands/validate-config.js +35 -0
  168. package/dist/cli/commands/verify.d.ts +11 -0
  169. package/dist/cli/commands/verify.js +283 -0
  170. package/dist/cli/commands/watch.d.ts +12 -0
  171. package/dist/cli/commands/watch.js +253 -0
  172. package/dist/cli/index.d.ts +3 -0
  173. package/dist/cli/index.js +178 -0
  174. package/dist/cli/interactive.d.ts +47 -0
  175. package/dist/cli/interactive.js +216 -0
  176. package/dist/cli/output/terminal-reporter.d.ts +19 -0
  177. package/dist/cli/output/terminal-reporter.js +104 -0
  178. package/dist/cli/output.d.ts +226 -0
  179. package/dist/cli/output.js +438 -0
  180. package/dist/cli/utils/env.d.ts +5 -0
  181. package/dist/cli/utils/env.js +14 -0
  182. package/dist/cli/utils/progress.d.ts +59 -0
  183. package/dist/cli/utils/progress.js +206 -0
  184. package/dist/cli/utils/server-context.d.ts +10 -0
  185. package/dist/cli/utils/server-context.js +36 -0
  186. package/dist/cloud/auth.d.ts +144 -0
  187. package/dist/cloud/auth.js +374 -0
  188. package/dist/cloud/client.d.ts +24 -0
  189. package/dist/cloud/client.js +65 -0
  190. package/dist/cloud/http-client.d.ts +38 -0
  191. package/dist/cloud/http-client.js +215 -0
  192. package/dist/cloud/index.d.ts +23 -0
  193. package/dist/cloud/index.js +25 -0
  194. package/dist/cloud/mock-client.d.ts +107 -0
  195. package/dist/cloud/mock-client.js +545 -0
  196. package/dist/cloud/types.d.ts +515 -0
  197. package/dist/cloud/types.js +15 -0
  198. package/dist/config/defaults.d.ts +160 -0
  199. package/dist/config/defaults.js +169 -0
  200. package/dist/config/loader.d.ts +24 -0
  201. package/dist/config/loader.js +122 -0
  202. package/dist/config/template.d.ts +42 -0
  203. package/dist/config/template.js +647 -0
  204. package/dist/config/validator.d.ts +2112 -0
  205. package/dist/config/validator.js +658 -0
  206. package/dist/constants/cloud.d.ts +107 -0
  207. package/dist/constants/cloud.js +110 -0
  208. package/dist/constants/core.d.ts +521 -0
  209. package/dist/constants/core.js +556 -0
  210. package/dist/constants/testing.d.ts +1283 -0
  211. package/dist/constants/testing.js +1568 -0
  212. package/dist/constants.d.ts +10 -0
  213. package/dist/constants.js +10 -0
  214. package/dist/contract/index.d.ts +6 -0
  215. package/dist/contract/index.js +5 -0
  216. package/dist/contract/validator.d.ts +177 -0
  217. package/dist/contract/validator.js +574 -0
  218. package/dist/cost/index.d.ts +6 -0
  219. package/dist/cost/index.js +5 -0
  220. package/dist/cost/tracker.d.ts +134 -0
  221. package/dist/cost/tracker.js +313 -0
  222. package/dist/discovery/discovery.d.ts +16 -0
  223. package/dist/discovery/discovery.js +173 -0
  224. package/dist/discovery/types.d.ts +51 -0
  225. package/dist/discovery/types.js +2 -0
  226. package/dist/docs/agents.d.ts +3 -0
  227. package/dist/docs/agents.js +995 -0
  228. package/dist/docs/contract.d.ts +51 -0
  229. package/dist/docs/contract.js +1681 -0
  230. package/dist/docs/generator.d.ts +4 -0
  231. package/dist/docs/generator.js +4 -0
  232. package/dist/docs/html-reporter.d.ts +9 -0
  233. package/dist/docs/html-reporter.js +757 -0
  234. package/dist/docs/index.d.ts +10 -0
  235. package/dist/docs/index.js +11 -0
  236. package/dist/docs/junit-reporter.d.ts +18 -0
  237. package/dist/docs/junit-reporter.js +210 -0
  238. package/dist/docs/report.d.ts +14 -0
  239. package/dist/docs/report.js +44 -0
  240. package/dist/docs/sarif-reporter.d.ts +19 -0
  241. package/dist/docs/sarif-reporter.js +335 -0
  242. package/dist/docs/shared.d.ts +35 -0
  243. package/dist/docs/shared.js +162 -0
  244. package/dist/docs/templates.d.ts +12 -0
  245. package/dist/docs/templates.js +76 -0
  246. package/dist/errors/index.d.ts +6 -0
  247. package/dist/errors/index.js +6 -0
  248. package/dist/errors/retry.d.ts +92 -0
  249. package/dist/errors/retry.js +323 -0
  250. package/dist/errors/types.d.ts +321 -0
  251. package/dist/errors/types.js +584 -0
  252. package/dist/index.d.ts +32 -0
  253. package/dist/index.js +32 -0
  254. package/dist/interview/dependency-resolver.d.ts +11 -0
  255. package/dist/interview/dependency-resolver.js +32 -0
  256. package/dist/interview/interviewer.d.ts +232 -0
  257. package/dist/interview/interviewer.js +1939 -0
  258. package/dist/interview/mock-response-generator.d.ts +7 -0
  259. package/dist/interview/mock-response-generator.js +102 -0
  260. package/dist/interview/orchestrator.d.ts +237 -0
  261. package/dist/interview/orchestrator.js +1296 -0
  262. package/dist/interview/rate-limiter.d.ts +15 -0
  263. package/dist/interview/rate-limiter.js +55 -0
  264. package/dist/interview/response-validator.d.ts +10 -0
  265. package/dist/interview/response-validator.js +132 -0
  266. package/dist/interview/schema-inferrer.d.ts +8 -0
  267. package/dist/interview/schema-inferrer.js +71 -0
  268. package/dist/interview/schema-test-generator.d.ts +71 -0
  269. package/dist/interview/schema-test-generator.js +834 -0
  270. package/dist/interview/smart-value-generator.d.ts +155 -0
  271. package/dist/interview/smart-value-generator.js +554 -0
  272. package/dist/interview/stateful-test-runner.d.ts +19 -0
  273. package/dist/interview/stateful-test-runner.js +106 -0
  274. package/dist/interview/types.d.ts +561 -0
  275. package/dist/interview/types.js +2 -0
  276. package/dist/llm/anthropic.d.ts +41 -0
  277. package/dist/llm/anthropic.js +355 -0
  278. package/dist/llm/client.d.ts +123 -0
  279. package/dist/llm/client.js +42 -0
  280. package/dist/llm/factory.d.ts +38 -0
  281. package/dist/llm/factory.js +145 -0
  282. package/dist/llm/fallback.d.ts +140 -0
  283. package/dist/llm/fallback.js +379 -0
  284. package/dist/llm/index.d.ts +18 -0
  285. package/dist/llm/index.js +15 -0
  286. package/dist/llm/ollama.d.ts +37 -0
  287. package/dist/llm/ollama.js +330 -0
  288. package/dist/llm/openai.d.ts +25 -0
  289. package/dist/llm/openai.js +320 -0
  290. package/dist/llm/token-budget.d.ts +161 -0
  291. package/dist/llm/token-budget.js +395 -0
  292. package/dist/logging/logger.d.ts +70 -0
  293. package/dist/logging/logger.js +130 -0
  294. package/dist/metrics/collector.d.ts +106 -0
  295. package/dist/metrics/collector.js +547 -0
  296. package/dist/metrics/index.d.ts +7 -0
  297. package/dist/metrics/index.js +7 -0
  298. package/dist/metrics/prometheus.d.ts +20 -0
  299. package/dist/metrics/prometheus.js +241 -0
  300. package/dist/metrics/types.d.ts +209 -0
  301. package/dist/metrics/types.js +5 -0
  302. package/dist/persona/builtins.d.ts +54 -0
  303. package/dist/persona/builtins.js +219 -0
  304. package/dist/persona/index.d.ts +8 -0
  305. package/dist/persona/index.js +8 -0
  306. package/dist/persona/loader.d.ts +30 -0
  307. package/dist/persona/loader.js +190 -0
  308. package/dist/persona/types.d.ts +144 -0
  309. package/dist/persona/types.js +5 -0
  310. package/dist/persona/validation.d.ts +94 -0
  311. package/dist/persona/validation.js +332 -0
  312. package/dist/prompts/index.d.ts +5 -0
  313. package/dist/prompts/index.js +5 -0
  314. package/dist/prompts/templates.d.ts +180 -0
  315. package/dist/prompts/templates.js +431 -0
  316. package/dist/registry/client.d.ts +49 -0
  317. package/dist/registry/client.js +191 -0
  318. package/dist/registry/index.d.ts +7 -0
  319. package/dist/registry/index.js +6 -0
  320. package/dist/registry/types.d.ts +140 -0
  321. package/dist/registry/types.js +6 -0
  322. package/dist/scenarios/evaluator.d.ts +43 -0
  323. package/dist/scenarios/evaluator.js +206 -0
  324. package/dist/scenarios/index.d.ts +10 -0
  325. package/dist/scenarios/index.js +9 -0
  326. package/dist/scenarios/loader.d.ts +20 -0
  327. package/dist/scenarios/loader.js +285 -0
  328. package/dist/scenarios/types.d.ts +153 -0
  329. package/dist/scenarios/types.js +8 -0
  330. package/dist/security/index.d.ts +17 -0
  331. package/dist/security/index.js +18 -0
  332. package/dist/security/payloads.d.ts +61 -0
  333. package/dist/security/payloads.js +268 -0
  334. package/dist/security/security-tester.d.ts +42 -0
  335. package/dist/security/security-tester.js +582 -0
  336. package/dist/security/types.d.ts +166 -0
  337. package/dist/security/types.js +8 -0
  338. package/dist/transport/base-transport.d.ts +59 -0
  339. package/dist/transport/base-transport.js +38 -0
  340. package/dist/transport/http-transport.d.ts +67 -0
  341. package/dist/transport/http-transport.js +238 -0
  342. package/dist/transport/mcp-client.d.ts +141 -0
  343. package/dist/transport/mcp-client.js +496 -0
  344. package/dist/transport/sse-transport.d.ts +88 -0
  345. package/dist/transport/sse-transport.js +316 -0
  346. package/dist/transport/stdio-transport.d.ts +43 -0
  347. package/dist/transport/stdio-transport.js +238 -0
  348. package/dist/transport/types.d.ts +125 -0
  349. package/dist/transport/types.js +16 -0
  350. package/dist/utils/concurrency.d.ts +123 -0
  351. package/dist/utils/concurrency.js +213 -0
  352. package/dist/utils/formatters.d.ts +16 -0
  353. package/dist/utils/formatters.js +37 -0
  354. package/dist/utils/index.d.ts +8 -0
  355. package/dist/utils/index.js +8 -0
  356. package/dist/utils/jsonpath.d.ts +87 -0
  357. package/dist/utils/jsonpath.js +326 -0
  358. package/dist/utils/markdown.d.ts +113 -0
  359. package/dist/utils/markdown.js +265 -0
  360. package/dist/utils/network.d.ts +14 -0
  361. package/dist/utils/network.js +17 -0
  362. package/dist/utils/sanitize.d.ts +92 -0
  363. package/dist/utils/sanitize.js +191 -0
  364. package/dist/utils/semantic.d.ts +194 -0
  365. package/dist/utils/semantic.js +1051 -0
  366. package/dist/utils/smart-truncate.d.ts +94 -0
  367. package/dist/utils/smart-truncate.js +361 -0
  368. package/dist/utils/timeout.d.ts +153 -0
  369. package/dist/utils/timeout.js +205 -0
  370. package/dist/utils/yaml-parser.d.ts +58 -0
  371. package/dist/utils/yaml-parser.js +86 -0
  372. package/dist/validation/index.d.ts +32 -0
  373. package/dist/validation/index.js +32 -0
  374. package/dist/validation/semantic-test-generator.d.ts +50 -0
  375. package/dist/validation/semantic-test-generator.js +176 -0
  376. package/dist/validation/semantic-types.d.ts +66 -0
  377. package/dist/validation/semantic-types.js +94 -0
  378. package/dist/validation/semantic-validator.d.ts +38 -0
  379. package/dist/validation/semantic-validator.js +340 -0
  380. package/dist/verification/index.d.ts +6 -0
  381. package/dist/verification/index.js +5 -0
  382. package/dist/verification/types.d.ts +133 -0
  383. package/dist/verification/types.js +5 -0
  384. package/dist/verification/verifier.d.ts +30 -0
  385. package/dist/verification/verifier.js +309 -0
  386. package/dist/version.d.ts +19 -0
  387. package/dist/version.js +48 -0
  388. package/dist/workflow/auto-generator.d.ts +27 -0
  389. package/dist/workflow/auto-generator.js +513 -0
  390. package/dist/workflow/discovery.d.ts +40 -0
  391. package/dist/workflow/discovery.js +195 -0
  392. package/dist/workflow/executor.d.ts +82 -0
  393. package/dist/workflow/executor.js +611 -0
  394. package/dist/workflow/index.d.ts +10 -0
  395. package/dist/workflow/index.js +10 -0
  396. package/dist/workflow/loader.d.ts +24 -0
  397. package/dist/workflow/loader.js +194 -0
  398. package/dist/workflow/state-tracker.d.ts +98 -0
  399. package/dist/workflow/state-tracker.js +424 -0
  400. package/dist/workflow/types.d.ts +337 -0
  401. package/dist/workflow/types.js +5 -0
  402. package/package.json +94 -0
  403. package/schemas/bellwether-check.schema.json +651 -0
@@ -0,0 +1,556 @@
1
+ export const TIMEOUTS = {
2
+ /** Default request timeout (30 seconds) */
3
+ DEFAULT: 30000,
4
+ /** Interview timeout (60 seconds) */
5
+ INTERVIEW: 60000,
6
+ /** Watch mode interval (5 seconds) */
7
+ WATCH_INTERVAL: 5000,
8
+ /** Server startup delay (500ms) */
9
+ SERVER_STARTUP: 500,
10
+ /** Minimum server startup wait (5 seconds) */
11
+ MIN_SERVER_STARTUP_WAIT: 5000,
12
+ /** Server ready poll interval (100ms) */
13
+ SERVER_READY_POLL: 100,
14
+ /** Process shutdown SIGKILL timeout (5 seconds) */
15
+ SHUTDOWN_KILL: 5000,
16
+ /** Cloud API timeout (30 seconds) */
17
+ CLOUD_API: 30000,
18
+ };
19
+ // ==================== LLM Configuration ====================
20
+ /**
21
+ * Default LLM parameters.
22
+ */
23
+ export const LLM_DEFAULTS = {
24
+ /** Default max tokens for completions */
25
+ MAX_TOKENS: 4096,
26
+ /** Default temperature for completions */
27
+ TEMPERATURE: 0.7,
28
+ /** Max tokens for analysis prompts (must be high enough for reasoning models) */
29
+ ANALYSIS_MAX_TOKENS: 1024,
30
+ /** Default Ollama base URL */
31
+ OLLAMA_BASE_URL: 'http://localhost:11434',
32
+ };
33
+ // ==================== URLs ====================
34
+ /**
35
+ * External URLs used by the CLI.
36
+ */
37
+ export const MCP = {
38
+ /** Current MCP protocol version */
39
+ PROTOCOL_VERSION: '2024-11-05',
40
+ /** JSON-RPC version used by MCP */
41
+ JSONRPC_VERSION: '2.0',
42
+ };
43
+ // ==================== Interview Configuration ====================
44
+ /**
45
+ * Interview process configuration defaults.
46
+ */
47
+ export const INTERVIEW = {
48
+ /** Default number of questions per tool */
49
+ MAX_QUESTIONS_PER_TOOL: 3,
50
+ /** Default tool call timeout in ms */
51
+ TOOL_TIMEOUT: 30000,
52
+ /** Default CLI timeout in ms (more generous than tool timeout) */
53
+ CLI_TIMEOUT: 60000,
54
+ /** Default persona concurrency for parallel execution */
55
+ DEFAULT_PERSONA_CONCURRENCY: 3,
56
+ /** Maximum allowed persona concurrency (to prevent rate limiting) */
57
+ MAX_PERSONA_CONCURRENCY: 10,
58
+ /** Default tool concurrency for parallel tool testing (check mode) */
59
+ DEFAULT_TOOL_CONCURRENCY: 4,
60
+ /** Maximum allowed tool concurrency (to prevent overwhelming MCP servers) */
61
+ MAX_TOOL_CONCURRENCY: 10,
62
+ /** Default resource read timeout in ms */
63
+ RESOURCE_TIMEOUT: 15000,
64
+ /** Tool names that reveal server constraints (directories, permissions, etc.) */
65
+ CONSTRAINT_DISCOVERY_TOOLS: [
66
+ 'list_allowed_directories',
67
+ 'get_allowed_paths',
68
+ 'list_permissions',
69
+ ],
70
+ };
71
+ // ==================== Orchestrator Configuration ====================
72
+ /**
73
+ * Orchestrator test generation configuration.
74
+ * Controls limits for structural test case generation.
75
+ */
76
+ export const ORCHESTRATOR = {
77
+ /** Maximum schema-level examples to use for test generation */
78
+ MAX_SCHEMA_EXAMPLES: 2,
79
+ /** Maximum enum value tests to generate per parameter */
80
+ MAX_ENUM_TESTS: 3,
81
+ /** Maximum boundary tests (min/max/zero) to generate */
82
+ MAX_BOUNDARY_TESTS: 2,
83
+ /** Maximum optional parameter combination tests */
84
+ MAX_OPTIONAL_TESTS: 2,
85
+ /** Maximum invalid type tests for error handling */
86
+ MAX_INVALID_TYPE_TESTS: 2,
87
+ /** Maximum recursion depth for schema traversal (prevents infinite loops) */
88
+ MAX_SCHEMA_RECURSION_DEPTH: 10,
89
+ /** Default numeric range minimum when not specified in schema */
90
+ DEFAULT_NUMBER_MIN: 0,
91
+ /** Default numeric range maximum when not specified in schema */
92
+ DEFAULT_NUMBER_MAX: 100,
93
+ };
94
+ // ==================== Workflow Configuration ====================
95
+ /**
96
+ * Workflow discovery and execution configuration defaults.
97
+ */
98
+ export const WORKFLOW = {
99
+ /** Maximum workflows to discover via LLM */
100
+ MAX_DISCOVERED_WORKFLOWS: 3,
101
+ /** Minimum steps required for a valid workflow */
102
+ MIN_WORKFLOW_STEPS: 2,
103
+ /** Maximum steps allowed in a workflow */
104
+ MAX_WORKFLOW_STEPS: 5,
105
+ /** Default timeout for workflow step execution in ms */
106
+ STEP_TIMEOUT: 30000,
107
+ /** Default timeout for state snapshot operations in ms */
108
+ STATE_SNAPSHOT_TIMEOUT: 10000,
109
+ /** Default timeout for probe tool operations in ms */
110
+ PROBE_TOOL_TIMEOUT: 5000,
111
+ /** Default timeout for LLM analysis of workflow steps in ms */
112
+ LLM_ANALYSIS_TIMEOUT: 30000,
113
+ /** Default timeout for LLM summary generation in ms */
114
+ LLM_SUMMARY_TIMEOUT: 60000,
115
+ };
116
+ // ==================== Display Limits ====================
117
+ /**
118
+ * String truncation and preview limits for CLI output and logging.
119
+ */
120
+ export const DISPLAY_LIMITS = {
121
+ /** Maximum length for tool/prompt descriptions in CLI output */
122
+ DESCRIPTION_MAX_LENGTH: 70,
123
+ /** Truncation point for descriptions (with ellipsis) */
124
+ DESCRIPTION_TRUNCATE_AT: 67,
125
+ /** Preview length for tool responses in logs */
126
+ TOOL_RESPONSE_PREVIEW: 100,
127
+ /** Maximum length for example output in documentation */
128
+ EXAMPLE_OUTPUT_LENGTH: 500,
129
+ /** Preview length for content in documentation */
130
+ CONTENT_PREVIEW_LENGTH: 200,
131
+ /** Preview length for content text (resources, etc.) */
132
+ CONTENT_TEXT_PREVIEW: 500,
133
+ /** Truncation length for error constraints */
134
+ ERROR_CONSTRAINT_LENGTH: 100,
135
+ /** Default max width for table cells */
136
+ TABLE_CELL_MAX_WIDTH: 50,
137
+ /** Max width for CLI output formatting */
138
+ OUTPUT_MAX_WIDTH: 100,
139
+ /** Length of hash substrings for display */
140
+ HASH_DISPLAY_LENGTH: 16,
141
+ /** Preview length for transport data logging */
142
+ TRANSPORT_DATA_PREVIEW: 100,
143
+ /** Preview length for transport input data */
144
+ TRANSPORT_INPUT_PREVIEW: 500,
145
+ /** Smaller preview for response data */
146
+ RESPONSE_DATA_PREVIEW: 50,
147
+ /** Example output length in generated docs */
148
+ DOCS_EXAMPLE_LENGTH: 300,
149
+ /** Banner command max length */
150
+ BANNER_COMMAND_MAX_LENGTH: 45,
151
+ /** Maximum issues to list in CONTRACT.md */
152
+ ISSUES_DISPLAY_LIMIT: 20,
153
+ /** Maximum issue tool names to show in CLI summary */
154
+ SUMMARY_ISSUE_PREVIEW: 3,
155
+ };
156
+ // ==================== Mathematical Factors ====================
157
+ /**
158
+ * Mathematical ratios, multipliers, and thresholds used in calculations.
159
+ */
160
+ export const MATH_FACTORS = {
161
+ /** Safety margin for token budget calculations (95% of limit) */
162
+ TOKEN_SAFETY_MARGIN: 0.95,
163
+ /** Threshold for word boundary truncation */
164
+ WORD_BOUNDARY_THRESHOLD: 0.8,
165
+ /** Multiplier for special character adjustment in token counting */
166
+ SPECIAL_CHAR_MULTIPLIER: 0.5,
167
+ /** Threshold for consecutive failures in state tracking (50% of probes) */
168
+ PROBE_FAILURE_THRESHOLD: 0.5,
169
+ /** Jitter range for retry delays (±25%) */
170
+ JITTER_RANGE: 0.25,
171
+ /** Weight for embedding similarity */
172
+ EMBEDDING_WEIGHT: 0.3,
173
+ /** Threshold for embedding match */
174
+ EMBEDDING_MATCH_THRESHOLD: 0.75,
175
+ /** Minimum ratio tolerance for comparison (99%) */
176
+ RATIO_TOLERANCE_MIN: 0.99,
177
+ /** Maximum ratio tolerance for comparison (101%) */
178
+ RATIO_TOLERANCE_MAX: 1.01,
179
+ /** Default question bias weight (equal distribution across 4 categories) */
180
+ DEFAULT_QUESTION_BIAS: 0.25,
181
+ /** Multiplier for shared terms score (per term) */
182
+ SHARED_TERMS_MULTIPLIER: 50,
183
+ /** Maximum score cap for calculations */
184
+ MAX_SCORE_CAP: 100,
185
+ /** Minimum threshold for common constraints in docs */
186
+ MIN_COMMON_CONSTRAINT_THRESHOLD: 2,
187
+ };
188
+ // ==================== Time Constants ====================
189
+ /**
190
+ * Time-related constants for sessions, polling, and calculations.
191
+ */
192
+ export const TIME_CONSTANTS = {
193
+ /** Session expiration duration (30 days in ms) */
194
+ SESSION_EXPIRATION_MS: 30 * 24 * 60 * 60 * 1000,
195
+ /** Milliseconds per day (for calculations) */
196
+ MS_PER_DAY: 1000 * 60 * 60 * 24,
197
+ /** Milliseconds per minute */
198
+ MS_PER_MINUTE: 60000,
199
+ /** Milliseconds per second */
200
+ MS_PER_SECOND: 1000,
201
+ /** Health check interval for LLM providers (1 minute) */
202
+ HEALTH_CHECK_INTERVAL: 60000,
203
+ /** Delay before retrying unhealthy provider (5 minutes) */
204
+ UNHEALTHY_RETRY_DELAY: 300000,
205
+ /** Default reconnect delay for SSE (1 second) */
206
+ SSE_RECONNECT_DELAY: 1000,
207
+ /** Maximum backoff delay for SSE reconnection (30 seconds) */
208
+ SSE_MAX_BACKOFF: 30000,
209
+ /** Default cache TTL (1 hour) */
210
+ DEFAULT_CACHE_TTL: 3600000,
211
+ /** Verification validity period in days */
212
+ VERIFICATION_VALIDITY_DAYS: 90,
213
+ /** Embedding timeout (5 seconds) */
214
+ EMBEDDING_TIMEOUT: 5000,
215
+ };
216
+ // ==================== Retry Configuration ====================
217
+ /**
218
+ * Retry and backoff configuration.
219
+ */
220
+ export const RETRY = {
221
+ /** Initial delay for exponential backoff (1 second) */
222
+ INITIAL_DELAY: 1000,
223
+ /** Maximum delay for exponential backoff (10 seconds) */
224
+ MAX_DELAY: 10000,
225
+ /** Default number of retry attempts */
226
+ DEFAULT_ATTEMPTS: 3,
227
+ /** Maximum retry attempts for LLM operations */
228
+ MAX_LLM_ATTEMPTS: 3,
229
+ };
230
+ // ==================== Formatting ====================
231
+ /**
232
+ * Number formatting precision values.
233
+ */
234
+ export const FORMATTING = {
235
+ /** Decimal places for price display */
236
+ PRICE_PRECISION: 4,
237
+ /** Decimal places for duration display */
238
+ DURATION_PRECISION: 1,
239
+ /** Decimal places for percentage display */
240
+ PERCENTAGE_PRECISION: 1,
241
+ /** Decimal places for confidence level display */
242
+ CONFIDENCE_PRECISION: 0,
243
+ };
244
+ // ==================== Cache Configuration ====================
245
+ /**
246
+ * Cache configuration limits.
247
+ */
248
+ export const CACHE = {
249
+ /** Maximum number of entries in response cache */
250
+ MAX_ENTRIES: 1000,
251
+ };
252
+ // ==================== Validation Limits ====================
253
+ /**
254
+ * Validation boundaries for user input.
255
+ */
256
+ export const VALIDATION = {
257
+ /** Minimum allowed max-tokens value */
258
+ MIN_MAX_TOKENS: 1000,
259
+ /** Minimum confidence score */
260
+ MIN_CONFIDENCE_SCORE: 0,
261
+ /** Maximum confidence score */
262
+ MAX_CONFIDENCE_SCORE: 100,
263
+ /** Maximum YAML alias resolution depth */
264
+ MAX_ALIAS_DEPTH: 100,
265
+ };
266
+ // ==================== Percentiles ====================
267
+ /**
268
+ * Percentile values for metrics calculations.
269
+ */
270
+ export const PERCENTILES = {
271
+ P50: 0.5,
272
+ P95: 0.95,
273
+ P99: 0.99,
274
+ };
275
+ // ==================== Cost Thresholds ====================
276
+ /**
277
+ * Cost thresholds for CI/CD optimization features.
278
+ */
279
+ export const COST_THRESHOLDS = {
280
+ /** Cost threshold ($) for prompting confirmation in interactive mode */
281
+ CONFIRMATION_THRESHOLD: 0.10,
282
+ /** Cost threshold ($) for suggesting --ci flag */
283
+ SUGGEST_CI_THRESHOLD: 0.05,
284
+ /** Cost threshold ($) for suggesting --scenarios-only */
285
+ SUGGEST_SCENARIOS_ONLY_THRESHOLD: 0.15,
286
+ /** Tool count threshold for suggesting --parallel-personas */
287
+ PARALLEL_PERSONAS_TOOL_THRESHOLD: 30,
288
+ /** Tool count threshold for suggesting removing --quality */
289
+ QUALITY_TOOL_THRESHOLD: 20,
290
+ };
291
+ // ==================== Time Estimation ====================
292
+ /**
293
+ * Time estimation factors for interview duration prediction.
294
+ */
295
+ export const TIME_ESTIMATION = {
296
+ /** Base seconds per question (cloud APIs) */
297
+ SECONDS_PER_QUESTION: 3,
298
+ /** Overhead seconds per tool for schema processing */
299
+ SECONDS_PER_TOOL_OVERHEAD: 1,
300
+ /** Parallel persona efficiency factor (0-1, 1 = perfect parallelism) */
301
+ PARALLEL_EFFICIENCY: 0.6,
302
+ /** Fixed overhead for discovery phase in seconds */
303
+ DISCOVERY_OVERHEAD_SECONDS: 10,
304
+ /** Fixed overhead for synthesis phase in seconds */
305
+ SYNTHESIS_OVERHEAD_SECONDS: 15,
306
+ /** Time multiplier for local/Ollama models (slower than cloud APIs) */
307
+ LOCAL_MODEL_MULTIPLIER: 3.5,
308
+ /** Seconds per prompt interview */
309
+ SECONDS_PER_PROMPT: 4,
310
+ /** Seconds per resource interview */
311
+ SECONDS_PER_RESOURCE: 3,
312
+ };
313
+ // ==================== Retry Strategies ====================
314
+ /**
315
+ * Detailed retry configurations for different operation types.
316
+ * These provide more specific settings than the basic RETRY constants.
317
+ */
318
+ export const RETRY_STRATEGIES = {
319
+ /** LLM API calls - more tolerant due to rate limiting */
320
+ LLM: {
321
+ maxAttempts: 3,
322
+ initialDelayMs: 2000,
323
+ maxDelayMs: 60000,
324
+ backoffMultiplier: 2,
325
+ jitter: true,
326
+ },
327
+ /** Transport/connection operations - faster retries */
328
+ TRANSPORT: {
329
+ maxAttempts: 2,
330
+ initialDelayMs: 500,
331
+ maxDelayMs: 5000,
332
+ backoffMultiplier: 2,
333
+ jitter: true,
334
+ },
335
+ /** Tool call operations */
336
+ TOOL_CALL: {
337
+ maxAttempts: 2,
338
+ initialDelayMs: 1000,
339
+ maxDelayMs: 10000,
340
+ backoffMultiplier: 2,
341
+ jitter: false,
342
+ },
343
+ /** Default strategy for general operations */
344
+ DEFAULT: {
345
+ maxAttempts: 3,
346
+ initialDelayMs: 1000,
347
+ maxDelayMs: 30000,
348
+ backoffMultiplier: 2,
349
+ jitter: true,
350
+ },
351
+ };
352
+ // ==================== Circuit Breaker ====================
353
+ /**
354
+ * Circuit breaker configuration for fault tolerance.
355
+ */
356
+ export const CIRCUIT_BREAKER = {
357
+ /** Number of failures before circuit opens */
358
+ FAILURE_THRESHOLD: 5,
359
+ /** Time to wait before attempting to close circuit (ms) */
360
+ RESET_TIME_MS: 30000,
361
+ /** Window in which failures are counted (ms) */
362
+ FAILURE_WINDOW_MS: 60000,
363
+ };
364
+ // ==================== Validation Bounds ====================
365
+ /**
366
+ * Min/max validation boundaries for configuration values.
367
+ */
368
+ export const VALIDATION_BOUNDS = {
369
+ /** Timeout bounds in milliseconds */
370
+ TIMEOUT: {
371
+ MIN_MS: 1000,
372
+ MAX_MS: 600000,
373
+ },
374
+ /** Questions per tool bounds */
375
+ QUESTIONS_PER_TOOL: {
376
+ MIN: 1,
377
+ MAX: 10,
378
+ },
379
+ /** Persona concurrency bounds */
380
+ PERSONA_CONCURRENCY: {
381
+ MIN: 1,
382
+ MAX: 10,
383
+ },
384
+ /** Max workflows bounds */
385
+ MAX_WORKFLOWS: {
386
+ MIN: 1,
387
+ MAX: 20,
388
+ },
389
+ /** Rate limit bounds */
390
+ RATE_LIMIT: {
391
+ REQUESTS_PER_SECOND: {
392
+ MIN: 1,
393
+ MAX: 1000,
394
+ },
395
+ BURST_LIMIT: {
396
+ MIN: 1,
397
+ MAX: 5000,
398
+ },
399
+ MAX_RETRIES: {
400
+ MIN: 0,
401
+ MAX: 10,
402
+ },
403
+ },
404
+ /** Stateful testing bounds */
405
+ STATEFUL_CHAIN: {
406
+ MIN: 1,
407
+ MAX: 10,
408
+ },
409
+ };
410
+ // ==================== File Paths ====================
411
+ /**
412
+ * Default file and directory paths used by the CLI.
413
+ */
414
+ export const PATHS = {
415
+ /** User config directory name (under home) */
416
+ CONFIG_DIR: '.bellwether',
417
+ /** Session storage file name */
418
+ SESSION_FILE: 'session.json',
419
+ /** Mock data directory for testing */
420
+ MOCK_DATA_DIR: 'mock-cloud',
421
+ /** Possible config file names (in order of preference) */
422
+ CONFIG_FILENAMES: [
423
+ 'bellwether.yaml',
424
+ 'bellwether.yml',
425
+ '.bellwether.yaml',
426
+ '.bellwether.yml',
427
+ ],
428
+ /** Default config file name (first in CONFIG_FILENAMES) */
429
+ DEFAULT_CONFIG_FILENAME: 'bellwether.yaml',
430
+ /** Default baseline output file (for upload command) */
431
+ DEFAULT_BASELINE_FILE: 'bellwether-baseline.json',
432
+ /** Default check report file */
433
+ DEFAULT_CHECK_REPORT_FILE: 'bellwether-check.json',
434
+ /** Default explore report file */
435
+ DEFAULT_EXPLORE_REPORT_FILE: 'bellwether-explore.json',
436
+ /** Default verification report file */
437
+ DEFAULT_VERIFICATION_REPORT_FILE: 'bellwether-verification.json',
438
+ /** Default test scenarios file */
439
+ DEFAULT_SCENARIOS_FILE: 'bellwether-tests.yaml',
440
+ /** Default workflows file */
441
+ DEFAULT_WORKFLOWS_FILE: 'bellwether-workflows.yaml',
442
+ /** Default AGENTS.md output file (explore command) */
443
+ DEFAULT_AGENTS_FILE: 'AGENTS.md',
444
+ /** Default CONTRACT.md output file (check command) */
445
+ DEFAULT_CONTRACT_FILE: 'CONTRACT.md',
446
+ /** Default cache directory */
447
+ DEFAULT_CACHE_DIR: '.bellwether/cache',
448
+ };
449
+ // ==================== Report Schemas ====================
450
+ /**
451
+ * JSON Schema references for report outputs.
452
+ */
453
+ export const REPORT_SCHEMAS = {
454
+ /** Local schema path for bellwether-check.json */
455
+ CHECK_REPORT_SCHEMA_FILE: 'schemas/bellwether-check.schema.json',
456
+ /** Public schema URL for consumers */
457
+ CHECK_REPORT_SCHEMA_URL: 'https://unpkg.com/@dotsetlabs/bellwether/schemas/bellwether-check.schema.json',
458
+ };
459
+ // ==================== Patterns ====================
460
+ /**
461
+ * Regex patterns for validation and parsing.
462
+ */
463
+ export const PATTERNS = {
464
+ /** Valid session token format (64 hex chars after prefix) */
465
+ SESSION_TOKEN: /^sess_[a-f0-9]{64}$/,
466
+ /** Mock session token format for testing */
467
+ MOCK_SESSION_TOKEN: /^sess_mock_[a-zA-Z0-9]+_[a-f0-9]+$/,
468
+ /** Semver version format */
469
+ SEMVER: /^\d+\.\d+\.\d+$/,
470
+ /** Partial semver (major.minor) */
471
+ SEMVER_PARTIAL: /^\d+\.\d+$/,
472
+ /** Major version only */
473
+ SEMVER_MAJOR: /^\d+$/,
474
+ };
475
+ // ==================== Security ====================
476
+ /**
477
+ * CLI_SECURITY: Security-related constants for CLI operations.
478
+ */
479
+ export const CLI_SECURITY = {
480
+ /** Hostnames considered localhost (skip TLS verification) */
481
+ LOCALHOST_HOSTS: ['localhost', '127.0.0.1', '::1'],
482
+ /** Allowed domains for Bellwether Cloud */
483
+ ALLOWED_DOMAINS: ['bellwether.sh', 'api.bellwether.sh', 'dashboard.bellwether.sh'],
484
+ /** Session token prefix */
485
+ SESSION_PREFIX: 'sess_',
486
+ /** Mock session token prefix for testing */
487
+ MOCK_SESSION_PREFIX: 'sess_mock_',
488
+ };
489
+ // ==================== External URLs ====================
490
+ /**
491
+ * External service URLs.
492
+ */
493
+ export const TOKEN_ESTIMATION = {
494
+ /** Average input tokens per question */
495
+ AVG_INPUT_PER_QUESTION: 500,
496
+ /** Average output tokens per question */
497
+ AVG_OUTPUT_PER_QUESTION: 300,
498
+ /** Schema overhead tokens per tool */
499
+ SCHEMA_OVERHEAD_PER_TOOL: 200,
500
+ /** Character to token ratio (approximate) */
501
+ CHARS_PER_TOKEN: 4,
502
+ /** Word adjustment factor */
503
+ WORD_ADJUSTMENT: 0.3,
504
+ /** Role/message overhead tokens */
505
+ MESSAGE_OVERHEAD_TOKENS: 4,
506
+ /** Default context window when model unknown */
507
+ DEFAULT_CONTEXT_WINDOW: 16000,
508
+ };
509
+ // ==================== Token Budget ====================
510
+ /**
511
+ * Default token budget limits.
512
+ */
513
+ export const TOKEN_BUDGET = {
514
+ /** Maximum total tokens for an interview */
515
+ MAX_TOTAL_TOKENS: 1000000,
516
+ /** Maximum input tokens per request */
517
+ MAX_INPUT_PER_REQUEST: 100000,
518
+ /** Maximum output tokens per request */
519
+ MAX_OUTPUT_PER_REQUEST: 8000,
520
+ /** Reserved tokens for output in context */
521
+ OUTPUT_RESERVE: 4000,
522
+ };
523
+ // ==================== Metrics ====================
524
+ /**
525
+ * Metrics collection configuration.
526
+ */
527
+ export const METRICS_CONFIG = {
528
+ /** Maximum entries in metrics store */
529
+ MAX_ENTRIES: 10000,
530
+ /** Latency histogram buckets (ms) */
531
+ LATENCY_BUCKETS: [10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000],
532
+ /** Metric name prefix */
533
+ PREFIX: 'bellwether_',
534
+ };
535
+ // ==================== LLM Models ====================
536
+ /**
537
+ * Default model configurations per provider.
538
+ * Uses budget-friendly, non-reasoning models by default for cost efficiency.
539
+ * Note: gpt-4.1-nano is preferred over gpt-5-nano because GPT-5 models use
540
+ * reasoning tokens that increase costs unpredictably.
541
+ */
542
+ export const DEFAULT_MODELS = {
543
+ openai: 'gpt-4.1-nano',
544
+ anthropic: 'claude-haiku-4-5',
545
+ ollama: 'qwen3:8b',
546
+ };
547
+ /**
548
+ * Premium model configurations for --quality flag.
549
+ * Higher quality output but more expensive.
550
+ */
551
+ export const PREMIUM_MODELS = {
552
+ openai: 'gpt-4.1',
553
+ anthropic: 'claude-sonnet-4-5',
554
+ ollama: 'llama3.2:70b',
555
+ };
556
+ //# sourceMappingURL=core.js.map