@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,125 @@
1
+ /**
2
+ * JSON-RPC 2.0 types for MCP protocol communication.
3
+ */
4
+ export interface JSONRPCRequest {
5
+ jsonrpc: '2.0';
6
+ id: string | number;
7
+ method: string;
8
+ params?: unknown;
9
+ }
10
+ export interface JSONRPCResponse {
11
+ jsonrpc: '2.0';
12
+ id: string | number;
13
+ result?: unknown;
14
+ error?: JSONRPCError;
15
+ }
16
+ export interface JSONRPCError {
17
+ code: number;
18
+ message: string;
19
+ data?: unknown;
20
+ }
21
+ export interface JSONRPCNotification {
22
+ jsonrpc: '2.0';
23
+ method: string;
24
+ params?: unknown;
25
+ }
26
+ export type JSONRPCMessage = JSONRPCRequest | JSONRPCResponse | JSONRPCNotification;
27
+ /**
28
+ * MCP Protocol types
29
+ */
30
+ export interface MCPTool {
31
+ name: string;
32
+ description?: string;
33
+ inputSchema?: Record<string, unknown>;
34
+ }
35
+ export interface MCPPrompt {
36
+ name: string;
37
+ description?: string;
38
+ arguments?: MCPPromptArgument[];
39
+ }
40
+ export interface MCPPromptArgument {
41
+ name: string;
42
+ description?: string;
43
+ required?: boolean;
44
+ }
45
+ export interface MCPServerCapabilities {
46
+ tools?: Record<string, unknown>;
47
+ prompts?: Record<string, unknown>;
48
+ resources?: Record<string, unknown>;
49
+ logging?: Record<string, unknown>;
50
+ }
51
+ export interface MCPServerInfo {
52
+ name: string;
53
+ version: string;
54
+ }
55
+ export interface MCPInitializeResult {
56
+ protocolVersion: string;
57
+ capabilities: MCPServerCapabilities;
58
+ serverInfo: MCPServerInfo;
59
+ }
60
+ export interface MCPToolCallResult {
61
+ content: MCPContentBlock[];
62
+ isError?: boolean;
63
+ }
64
+ export interface MCPContentBlock {
65
+ type: 'text' | 'image' | 'resource';
66
+ text?: string;
67
+ data?: string;
68
+ mimeType?: string;
69
+ }
70
+ export interface MCPToolsListResult {
71
+ tools: MCPTool[];
72
+ }
73
+ export interface MCPPromptsListResult {
74
+ prompts: MCPPrompt[];
75
+ }
76
+ /**
77
+ * MCP Resource types
78
+ */
79
+ export interface MCPResource {
80
+ /** URI identifying the resource */
81
+ uri: string;
82
+ /** Human-readable name */
83
+ name: string;
84
+ /** Description of the resource */
85
+ description?: string;
86
+ /** MIME type of the resource content */
87
+ mimeType?: string;
88
+ }
89
+ export interface MCPResourcesListResult {
90
+ resources: MCPResource[];
91
+ }
92
+ export interface MCPResourceReadResult {
93
+ contents: MCPResourceContent[];
94
+ }
95
+ export interface MCPResourceContent {
96
+ /** URI of the resource */
97
+ uri: string;
98
+ /** MIME type of the content */
99
+ mimeType?: string;
100
+ /** Text content (for text resources) */
101
+ text?: string;
102
+ /** Binary content as base64 (for binary resources) */
103
+ blob?: string;
104
+ }
105
+ export interface MCPPromptMessage {
106
+ role: 'user' | 'assistant';
107
+ content: MCPPromptContent;
108
+ }
109
+ export interface MCPPromptContent {
110
+ type: 'text' | 'image' | 'resource';
111
+ text?: string;
112
+ data?: string;
113
+ mimeType?: string;
114
+ }
115
+ export interface MCPPromptGetResult {
116
+ description?: string;
117
+ messages: MCPPromptMessage[];
118
+ }
119
+ /**
120
+ * Type guards
121
+ */
122
+ export declare function isRequest(msg: JSONRPCMessage): msg is JSONRPCRequest;
123
+ export declare function isResponse(msg: JSONRPCMessage): msg is JSONRPCResponse;
124
+ export declare function isNotification(msg: JSONRPCMessage): msg is JSONRPCNotification;
125
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,16 @@
1
+ /**
2
+ * JSON-RPC 2.0 types for MCP protocol communication.
3
+ */
4
+ /**
5
+ * Type guards
6
+ */
7
+ export function isRequest(msg) {
8
+ return 'method' in msg && 'id' in msg && msg.id !== undefined;
9
+ }
10
+ export function isResponse(msg) {
11
+ return 'id' in msg && ('result' in msg || 'error' in msg);
12
+ }
13
+ export function isNotification(msg) {
14
+ return 'method' in msg && !('id' in msg && msg.id !== undefined);
15
+ }
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Concurrency utilities for parallel execution with limits.
3
+ */
4
+ /**
5
+ * Options for parallel execution.
6
+ */
7
+ export interface ParallelOptions<T> {
8
+ /** Maximum concurrent tasks (default: 3) */
9
+ concurrency?: number;
10
+ /** Callback when a task completes */
11
+ onTaskComplete?: (result: T, index: number) => void;
12
+ /** Callback when a task fails */
13
+ onTaskError?: (error: Error, index: number) => void;
14
+ }
15
+ /**
16
+ * Result of a parallel execution.
17
+ */
18
+ export interface ParallelResult<T> {
19
+ /** Successful results */
20
+ results: T[];
21
+ /** Errors by index */
22
+ errors: Map<number, Error>;
23
+ /** Whether all tasks succeeded */
24
+ allSucceeded: boolean;
25
+ }
26
+ /**
27
+ * Execute tasks in parallel with a concurrency limit.
28
+ * Uses a semaphore pattern to limit concurrent execution.
29
+ *
30
+ * @param tasks - Array of async task functions to execute
31
+ * @param options - Parallel execution options
32
+ * @returns Results of all tasks
33
+ */
34
+ export declare function parallelLimit<T>(tasks: Array<() => Promise<T>>, options?: ParallelOptions<T>): Promise<ParallelResult<T>>;
35
+ /**
36
+ * Execute tasks in parallel with a concurrency limit, collecting all results.
37
+ * Unlike parallelLimit, this version preserves order and includes errors inline.
38
+ *
39
+ * @param items - Array of items to process
40
+ * @param fn - Async function to process each item
41
+ * @param options - Parallel execution options
42
+ * @returns Array of results (or errors) in original order
43
+ */
44
+ export declare function mapLimit<T, R>(items: T[], fn: (item: T, index: number) => Promise<R>, options?: ParallelOptions<R>): Promise<Array<{
45
+ success: true;
46
+ value: R;
47
+ } | {
48
+ success: false;
49
+ error: Error;
50
+ }>>;
51
+ /**
52
+ * Create a semaphore for limiting concurrent access to a resource.
53
+ */
54
+ export declare function createSemaphore(limit: number): {
55
+ acquire(): Promise<void>;
56
+ release(): void;
57
+ readonly available: number;
58
+ readonly waiting: number;
59
+ };
60
+ /**
61
+ * Mutex for ensuring exclusive access to a resource.
62
+ */
63
+ export declare function createMutex(): {
64
+ acquire(): Promise<void>;
65
+ release(): void;
66
+ readonly available: number;
67
+ readonly waiting: number;
68
+ };
69
+ /**
70
+ * Thread-safe accumulator for collecting results from parallel tasks.
71
+ */
72
+ export declare class SafeAccumulator<T> {
73
+ private items;
74
+ private mutex;
75
+ /**
76
+ * Add an item to the accumulator.
77
+ */
78
+ add(item: T): Promise<void>;
79
+ /**
80
+ * Add multiple items to the accumulator.
81
+ */
82
+ addAll(items: T[]): Promise<void>;
83
+ /**
84
+ * Get all accumulated items.
85
+ */
86
+ getAll(): T[];
87
+ /**
88
+ * Get the current count.
89
+ */
90
+ get count(): number;
91
+ }
92
+ /**
93
+ * Thread-safe map for collecting keyed results.
94
+ */
95
+ export declare class SafeMap<K, V> {
96
+ private map;
97
+ private mutex;
98
+ /**
99
+ * Set a value in the map.
100
+ */
101
+ set(key: K, value: V): Promise<void>;
102
+ /**
103
+ * Get a value from the map.
104
+ */
105
+ get(key: K): V | undefined;
106
+ /**
107
+ * Check if a key exists.
108
+ */
109
+ has(key: K): boolean;
110
+ /**
111
+ * Get all entries.
112
+ */
113
+ entries(): IterableIterator<[K, V]>;
114
+ /**
115
+ * Get all values.
116
+ */
117
+ values(): IterableIterator<V>;
118
+ /**
119
+ * Get the current size.
120
+ */
121
+ get size(): number;
122
+ }
123
+ //# sourceMappingURL=concurrency.d.ts.map
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Concurrency utilities for parallel execution with limits.
3
+ */
4
+ /**
5
+ * Execute tasks in parallel with a concurrency limit.
6
+ * Uses a semaphore pattern to limit concurrent execution.
7
+ *
8
+ * @param tasks - Array of async task functions to execute
9
+ * @param options - Parallel execution options
10
+ * @returns Results of all tasks
11
+ */
12
+ export async function parallelLimit(tasks, options = {}) {
13
+ const { concurrency = 3, onTaskComplete, onTaskError } = options;
14
+ const results = new Array(tasks.length);
15
+ const errors = new Map();
16
+ let running = 0;
17
+ let index = 0;
18
+ return new Promise((resolve) => {
19
+ const startNext = () => {
20
+ // Check if we're done
21
+ if (index >= tasks.length && running === 0) {
22
+ resolve({
23
+ results,
24
+ errors,
25
+ allSucceeded: errors.size === 0,
26
+ });
27
+ return;
28
+ }
29
+ // Start tasks up to concurrency limit
30
+ while (running < concurrency && index < tasks.length) {
31
+ const currentIndex = index++;
32
+ running++;
33
+ tasks[currentIndex]()
34
+ .then((result) => {
35
+ results[currentIndex] = result;
36
+ onTaskComplete?.(result, currentIndex);
37
+ })
38
+ .catch((error) => {
39
+ const err = error instanceof Error ? error : new Error(String(error));
40
+ errors.set(currentIndex, err);
41
+ onTaskError?.(err, currentIndex);
42
+ })
43
+ .finally(() => {
44
+ running--;
45
+ startNext();
46
+ });
47
+ }
48
+ };
49
+ // Handle empty task list
50
+ if (tasks.length === 0) {
51
+ resolve({
52
+ results: [],
53
+ errors: new Map(),
54
+ allSucceeded: true,
55
+ });
56
+ return;
57
+ }
58
+ startNext();
59
+ });
60
+ }
61
+ /**
62
+ * Execute tasks in parallel with a concurrency limit, collecting all results.
63
+ * Unlike parallelLimit, this version preserves order and includes errors inline.
64
+ *
65
+ * @param items - Array of items to process
66
+ * @param fn - Async function to process each item
67
+ * @param options - Parallel execution options
68
+ * @returns Array of results (or errors) in original order
69
+ */
70
+ export async function mapLimit(items, fn, options = {}) {
71
+ const tasks = items.map((item, i) => async () => fn(item, i));
72
+ const { results, errors } = await parallelLimit(tasks, options);
73
+ return items.map((_, i) => {
74
+ const error = errors.get(i);
75
+ if (error) {
76
+ return { success: false, error };
77
+ }
78
+ return { success: true, value: results[i] };
79
+ });
80
+ }
81
+ /**
82
+ * Create a semaphore for limiting concurrent access to a resource.
83
+ */
84
+ export function createSemaphore(limit) {
85
+ let current = 0;
86
+ const queue = [];
87
+ return {
88
+ async acquire() {
89
+ if (current < limit) {
90
+ current++;
91
+ return;
92
+ }
93
+ return new Promise((resolve) => {
94
+ queue.push(() => {
95
+ current++;
96
+ resolve();
97
+ });
98
+ });
99
+ },
100
+ release() {
101
+ current--;
102
+ if (queue.length > 0) {
103
+ const next = queue.shift();
104
+ next?.();
105
+ }
106
+ },
107
+ get available() {
108
+ return limit - current;
109
+ },
110
+ get waiting() {
111
+ return queue.length;
112
+ },
113
+ };
114
+ }
115
+ /**
116
+ * Mutex for ensuring exclusive access to a resource.
117
+ */
118
+ export function createMutex() {
119
+ return createSemaphore(1);
120
+ }
121
+ /**
122
+ * Thread-safe accumulator for collecting results from parallel tasks.
123
+ */
124
+ export class SafeAccumulator {
125
+ items = [];
126
+ mutex = createMutex();
127
+ /**
128
+ * Add an item to the accumulator.
129
+ */
130
+ async add(item) {
131
+ await this.mutex.acquire();
132
+ try {
133
+ this.items.push(item);
134
+ }
135
+ finally {
136
+ this.mutex.release();
137
+ }
138
+ }
139
+ /**
140
+ * Add multiple items to the accumulator.
141
+ */
142
+ async addAll(items) {
143
+ await this.mutex.acquire();
144
+ try {
145
+ this.items.push(...items);
146
+ }
147
+ finally {
148
+ this.mutex.release();
149
+ }
150
+ }
151
+ /**
152
+ * Get all accumulated items.
153
+ */
154
+ getAll() {
155
+ return [...this.items];
156
+ }
157
+ /**
158
+ * Get the current count.
159
+ */
160
+ get count() {
161
+ return this.items.length;
162
+ }
163
+ }
164
+ /**
165
+ * Thread-safe map for collecting keyed results.
166
+ */
167
+ export class SafeMap {
168
+ map = new Map();
169
+ mutex = createMutex();
170
+ /**
171
+ * Set a value in the map.
172
+ */
173
+ async set(key, value) {
174
+ await this.mutex.acquire();
175
+ try {
176
+ this.map.set(key, value);
177
+ }
178
+ finally {
179
+ this.mutex.release();
180
+ }
181
+ }
182
+ /**
183
+ * Get a value from the map.
184
+ */
185
+ get(key) {
186
+ return this.map.get(key);
187
+ }
188
+ /**
189
+ * Check if a key exists.
190
+ */
191
+ has(key) {
192
+ return this.map.has(key);
193
+ }
194
+ /**
195
+ * Get all entries.
196
+ */
197
+ entries() {
198
+ return this.map.entries();
199
+ }
200
+ /**
201
+ * Get all values.
202
+ */
203
+ values() {
204
+ return this.map.values();
205
+ }
206
+ /**
207
+ * Get the current size.
208
+ */
209
+ get size() {
210
+ return this.map.size;
211
+ }
212
+ }
213
+ //# sourceMappingURL=concurrency.js.map
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Centralized formatting utilities.
3
+ */
4
+ /**
5
+ * Format a date as ISO date string (YYYY-MM-DD).
6
+ */
7
+ export declare function formatDateISO(date: Date): string;
8
+ /**
9
+ * Format an ISO date string for display with locale formatting.
10
+ */
11
+ export declare function formatDateLocale(isoString: string): string;
12
+ /**
13
+ * Format a duration in milliseconds for human-readable display.
14
+ */
15
+ export declare function formatDuration(ms: number): string;
16
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Centralized formatting utilities.
3
+ */
4
+ /**
5
+ * Format a date as ISO date string (YYYY-MM-DD).
6
+ */
7
+ export function formatDateISO(date) {
8
+ return date.toISOString().split('T')[0];
9
+ }
10
+ /**
11
+ * Format an ISO date string for display with locale formatting.
12
+ */
13
+ export function formatDateLocale(isoString) {
14
+ const date = new Date(isoString);
15
+ return date.toLocaleString(undefined, {
16
+ year: 'numeric',
17
+ month: 'short',
18
+ day: 'numeric',
19
+ hour: '2-digit',
20
+ minute: '2-digit',
21
+ });
22
+ }
23
+ /**
24
+ * Format a duration in milliseconds for human-readable display.
25
+ */
26
+ export function formatDuration(ms) {
27
+ if (ms < 1000) {
28
+ return `${ms}ms`;
29
+ }
30
+ if (ms < 60000) {
31
+ return `${(ms / 1000).toFixed(1)}s`;
32
+ }
33
+ const minutes = Math.floor(ms / 60000);
34
+ const seconds = Math.floor((ms % 60000) / 1000);
35
+ return `${minutes}m ${seconds}s`;
36
+ }
37
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1,8 @@
1
+ export { formatDateISO, formatDateLocale, formatDuration } from './formatters.js';
2
+ export { sanitizeForPrompt, sanitizeObjectForPrompt, sanitizeToolForPrompt, createDataSection, hasInjectionPatterns, truncateForPrompt, type SanitizeResult, } from './sanitize.js';
3
+ export { withTimeout, withTimeoutResult, withTimeoutAll, withTimeoutRetry, createTimeoutAbortController, createDeadline, TimeoutError, DEFAULT_TIMEOUTS, type TimeoutConfig, } from './timeout.js';
4
+ export { parallelLimit, mapLimit, createSemaphore, createMutex, SafeAccumulator, SafeMap, type ParallelOptions, type ParallelResult, } from './concurrency.js';
5
+ export { parsePath, getValueAtPath, getValueBySegments, isValidPath, normalizePath, type ParseResult, } from './jsonpath.js';
6
+ export { escapeTableCell, escapeCodeBlock, escapeMermaid, mermaidLabel, validateJsonForCodeBlock, escapeInlineCode, escapeLinkTitle, escapeListItem, wrapTableCell, buildTable, type JsonCodeBlockOptions, type JsonCodeBlockResult, } from './markdown.js';
7
+ export { isLocalhost } from './network.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,8 @@
1
+ export { formatDateISO, formatDateLocale, formatDuration } from './formatters.js';
2
+ export { sanitizeForPrompt, sanitizeObjectForPrompt, sanitizeToolForPrompt, createDataSection, hasInjectionPatterns, truncateForPrompt, } from './sanitize.js';
3
+ export { withTimeout, withTimeoutResult, withTimeoutAll, withTimeoutRetry, createTimeoutAbortController, createDeadline, TimeoutError, DEFAULT_TIMEOUTS, } from './timeout.js';
4
+ export { parallelLimit, mapLimit, createSemaphore, createMutex, SafeAccumulator, SafeMap, } from './concurrency.js';
5
+ export { parsePath, getValueAtPath, getValueBySegments, isValidPath, normalizePath, } from './jsonpath.js';
6
+ export { escapeTableCell, escapeCodeBlock, escapeMermaid, mermaidLabel, validateJsonForCodeBlock, escapeInlineCode, escapeLinkTitle, escapeListItem, wrapTableCell, buildTable, } from './markdown.js';
7
+ export { isLocalhost } from './network.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,87 @@
1
+ /**
2
+ * JSONPath parsing utilities.
3
+ *
4
+ * Supports a subset of JSONPath syntax for accessing nested values:
5
+ * - Dot notation: "foo.bar.baz"
6
+ * - Bracket notation: "foo['bar']" or "foo[\"bar\"]"
7
+ * - Array indices: "items[0]" or "items['0']"
8
+ * - Mixed: "foo.items[0].bar"
9
+ * - Escaped characters: "foo['bar.baz']" for keys containing dots
10
+ * - Special characters: "foo['key with spaces']" or "foo['key\"with\"quotes']"
11
+ */
12
+ /**
13
+ * Token types for JSONPath parsing.
14
+ */
15
+ type TokenType = 'property' | 'index' | 'bracket_property';
16
+ /**
17
+ * A parsed path segment.
18
+ */
19
+ interface PathSegment {
20
+ type: TokenType;
21
+ value: string | number;
22
+ }
23
+ /**
24
+ * Result of parsing a JSONPath expression.
25
+ */
26
+ export interface ParseResult {
27
+ segments: PathSegment[];
28
+ error?: string;
29
+ }
30
+ /**
31
+ * Parse a JSONPath expression into segments.
32
+ *
33
+ * @param path - The JSONPath expression to parse
34
+ * @returns ParseResult with segments or error
35
+ */
36
+ export declare function parsePath(path: string): ParseResult;
37
+ /**
38
+ * Get a value from an object using a parsed path.
39
+ *
40
+ * @param obj - The object to access
41
+ * @param segments - The parsed path segments
42
+ * @returns The value at the path, or undefined if not found
43
+ */
44
+ export declare function getValueBySegments(obj: unknown, segments: PathSegment[]): unknown;
45
+ /**
46
+ * Get a value from an object using a JSONPath expression.
47
+ *
48
+ * This is the main API function combining parsing and value retrieval.
49
+ *
50
+ * @param obj - The object to access
51
+ * @param path - The JSONPath expression
52
+ * @returns The value at the path, or undefined if not found or path is invalid
53
+ *
54
+ * @example
55
+ * // Simple paths
56
+ * getValueAtPath({ a: { b: 1 } }, 'a.b') // => 1
57
+ *
58
+ * @example
59
+ * // Array access
60
+ * getValueAtPath({ items: [1, 2, 3] }, 'items[1]') // => 2
61
+ *
62
+ * @example
63
+ * // Keys with dots
64
+ * getValueAtPath({ 'key.with.dots': 42 }, "['key.with.dots']") // => 42
65
+ *
66
+ * @example
67
+ * // Keys with spaces
68
+ * getValueAtPath({ 'my key': 'value' }, "['my key']") // => 'value'
69
+ */
70
+ export declare function getValueAtPath(obj: unknown, path: string): unknown;
71
+ /**
72
+ * Check if a path is valid JSONPath syntax.
73
+ *
74
+ * @param path - The path to validate
75
+ * @returns True if the path is valid, false otherwise
76
+ */
77
+ export declare function isValidPath(path: string): boolean;
78
+ /**
79
+ * Convert a JSONPath expression to a normalized form.
80
+ * Useful for comparing paths that may use different notations.
81
+ *
82
+ * @param path - The path to normalize
83
+ * @returns Normalized path string, or the original if parsing fails
84
+ */
85
+ export declare function normalizePath(path: string): string;
86
+ export {};
87
+ //# sourceMappingURL=jsonpath.d.ts.map