modelrig 0.0.1 → 0.2.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 (420) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/LICENSE +201 -0
  3. package/README.md +145 -8
  4. package/data/PROVENANCE.md +19 -0
  5. package/data/pricing-manual.json +22 -0
  6. package/data/pricing-map.json +46362 -0
  7. package/data/pricing-overlay.json +419 -0
  8. package/dist/adapters/anthropic.d.ts +90 -0
  9. package/dist/adapters/anthropic.d.ts.map +1 -0
  10. package/dist/adapters/anthropic.js +296 -0
  11. package/dist/adapters/build-adapters.d.ts +11 -0
  12. package/dist/adapters/build-adapters.d.ts.map +1 -0
  13. package/dist/adapters/build-adapters.js +45 -0
  14. package/dist/adapters/deepseek.d.ts +47 -0
  15. package/dist/adapters/deepseek.d.ts.map +1 -0
  16. package/dist/adapters/deepseek.js +216 -0
  17. package/dist/adapters/gemini.d.ts +44 -0
  18. package/dist/adapters/gemini.d.ts.map +1 -0
  19. package/dist/adapters/gemini.js +262 -0
  20. package/dist/adapters/grok.d.ts +53 -0
  21. package/dist/adapters/grok.d.ts.map +1 -0
  22. package/dist/adapters/grok.js +232 -0
  23. package/dist/adapters/openai-compat.d.ts +80 -0
  24. package/dist/adapters/openai-compat.d.ts.map +1 -0
  25. package/dist/adapters/openai-compat.js +244 -0
  26. package/dist/adapters/openai-stream.d.ts +58 -0
  27. package/dist/adapters/openai-stream.d.ts.map +1 -0
  28. package/dist/adapters/openai-stream.js +120 -0
  29. package/dist/adapters/openai.d.ts +55 -0
  30. package/dist/adapters/openai.d.ts.map +1 -0
  31. package/dist/adapters/openai.js +281 -0
  32. package/dist/adapters/sampling.d.ts +28 -0
  33. package/dist/adapters/sampling.d.ts.map +1 -0
  34. package/dist/adapters/sampling.js +34 -0
  35. package/dist/adapters/tool-mapping.d.ts +92 -0
  36. package/dist/adapters/tool-mapping.d.ts.map +1 -0
  37. package/dist/adapters/tool-mapping.js +143 -0
  38. package/dist/artifacts/artifact.d.ts +137 -0
  39. package/dist/artifacts/artifact.d.ts.map +1 -0
  40. package/dist/artifacts/artifact.js +377 -0
  41. package/dist/artifacts/content-uploader.d.ts +87 -0
  42. package/dist/artifacts/content-uploader.d.ts.map +1 -0
  43. package/dist/artifacts/content-uploader.js +124 -0
  44. package/dist/artifacts/index.d.ts +63 -0
  45. package/dist/artifacts/index.d.ts.map +1 -0
  46. package/dist/artifacts/index.js +80 -0
  47. package/dist/artifacts/run-context.d.ts +129 -0
  48. package/dist/artifacts/run-context.d.ts.map +1 -0
  49. package/dist/artifacts/run-context.js +208 -0
  50. package/dist/artifacts/scrub.d.ts +60 -0
  51. package/dist/artifacts/scrub.d.ts.map +1 -0
  52. package/dist/artifacts/scrub.js +139 -0
  53. package/dist/artifacts/step.d.ts +26 -0
  54. package/dist/artifacts/step.d.ts.map +1 -0
  55. package/dist/artifacts/step.js +37 -0
  56. package/dist/artifacts/taint.d.ts +63 -0
  57. package/dist/artifacts/taint.d.ts.map +1 -0
  58. package/dist/artifacts/taint.js +76 -0
  59. package/dist/bakeoff/cache-sim.d.ts +99 -0
  60. package/dist/bakeoff/cache-sim.d.ts.map +1 -0
  61. package/dist/bakeoff/cache-sim.js +126 -0
  62. package/dist/bakeoff/engine.d.ts +52 -0
  63. package/dist/bakeoff/engine.d.ts.map +1 -0
  64. package/dist/bakeoff/engine.js +163 -0
  65. package/dist/bakeoff/eval-cases.d.ts +96 -0
  66. package/dist/bakeoff/eval-cases.d.ts.map +1 -0
  67. package/dist/bakeoff/eval-cases.js +105 -0
  68. package/dist/bakeoff/replay.d.ts +52 -0
  69. package/dist/bakeoff/replay.d.ts.map +1 -0
  70. package/dist/bakeoff/replay.js +94 -0
  71. package/dist/bakeoff/report.d.ts +41 -0
  72. package/dist/bakeoff/report.d.ts.map +1 -0
  73. package/dist/bakeoff/report.js +142 -0
  74. package/dist/bakeoff/samples.d.ts +77 -0
  75. package/dist/bakeoff/samples.d.ts.map +1 -0
  76. package/dist/bakeoff/samples.js +148 -0
  77. package/dist/bakeoff/stats.d.ts +13 -0
  78. package/dist/bakeoff/stats.d.ts.map +1 -0
  79. package/dist/bakeoff/stats.js +48 -0
  80. package/dist/bakeoff/types.d.ts +37 -0
  81. package/dist/bakeoff/types.d.ts.map +1 -0
  82. package/dist/bakeoff/types.js +10 -0
  83. package/dist/cli.d.ts +25 -0
  84. package/dist/cli.d.ts.map +1 -0
  85. package/dist/cli.js +590 -0
  86. package/dist/config.d.ts +204 -0
  87. package/dist/config.d.ts.map +1 -0
  88. package/dist/config.js +252 -0
  89. package/dist/deprecations.d.ts +32 -0
  90. package/dist/deprecations.d.ts.map +1 -0
  91. package/dist/deprecations.js +59 -0
  92. package/dist/feedback/coverage.d.ts +32 -0
  93. package/dist/feedback/coverage.d.ts.map +1 -0
  94. package/dist/feedback/coverage.js +95 -0
  95. package/dist/feedback/feedback.d.ts +35 -0
  96. package/dist/feedback/feedback.d.ts.map +1 -0
  97. package/dist/feedback/feedback.js +39 -0
  98. package/dist/gateway/http-protocol.d.ts +175 -0
  99. package/dist/gateway/http-protocol.d.ts.map +1 -0
  100. package/dist/gateway/http-protocol.js +105 -0
  101. package/dist/index.d.ts +242 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +576 -0
  104. package/dist/init/finder.d.ts +94 -0
  105. package/dist/init/finder.d.ts.map +1 -0
  106. package/dist/init/finder.js +343 -0
  107. package/dist/init/init-cli.d.ts +10 -0
  108. package/dist/init/init-cli.d.ts.map +1 -0
  109. package/dist/init/init-cli.js +86 -0
  110. package/dist/init/observe-cli.d.ts +19 -0
  111. package/dist/init/observe-cli.d.ts.map +1 -0
  112. package/dist/init/observe-cli.js +73 -0
  113. package/dist/init/observe.d.ts +81 -0
  114. package/dist/init/observe.d.ts.map +1 -0
  115. package/dist/init/observe.js +245 -0
  116. package/dist/init/run.d.ts +99 -0
  117. package/dist/init/run.d.ts.map +1 -0
  118. package/dist/init/run.js +281 -0
  119. package/dist/init/signatures.d.ts +39 -0
  120. package/dist/init/signatures.d.ts.map +1 -0
  121. package/dist/init/signatures.js +116 -0
  122. package/dist/matrix/aggregate.d.ts +89 -0
  123. package/dist/matrix/aggregate.d.ts.map +1 -0
  124. package/dist/matrix/aggregate.js +186 -0
  125. package/dist/query/grammar.d.ts +35 -0
  126. package/dist/query/grammar.d.ts.map +1 -0
  127. package/dist/query/grammar.js +279 -0
  128. package/dist/query/run.d.ts +8 -0
  129. package/dist/query/run.d.ts.map +1 -0
  130. package/dist/query/run.js +21 -0
  131. package/dist/registry/build.d.ts +219 -0
  132. package/dist/registry/build.d.ts.map +1 -0
  133. package/dist/registry/build.js +313 -0
  134. package/dist/registry/cache-policy.d.ts +94 -0
  135. package/dist/registry/cache-policy.d.ts.map +1 -0
  136. package/dist/registry/cache-policy.js +238 -0
  137. package/dist/registry/call-notes.d.ts +11 -0
  138. package/dist/registry/call-notes.d.ts.map +1 -0
  139. package/dist/registry/call-notes.js +110 -0
  140. package/dist/registry/claims.d.ts +63 -0
  141. package/dist/registry/claims.d.ts.map +1 -0
  142. package/dist/registry/claims.js +107 -0
  143. package/dist/registry/effective-rate.d.ts +151 -0
  144. package/dist/registry/effective-rate.d.ts.map +1 -0
  145. package/dist/registry/effective-rate.js +156 -0
  146. package/dist/registry/facts.d.ts +32 -0
  147. package/dist/registry/facts.d.ts.map +1 -0
  148. package/dist/registry/facts.js +136 -0
  149. package/dist/registry/fingerprint.d.ts +20 -0
  150. package/dist/registry/fingerprint.d.ts.map +1 -0
  151. package/dist/registry/fingerprint.js +150 -0
  152. package/dist/registry/parity.d.ts +52 -0
  153. package/dist/registry/parity.d.ts.map +1 -0
  154. package/dist/registry/parity.js +82 -0
  155. package/dist/registry/pricing-shape.d.ts +113 -0
  156. package/dist/registry/pricing-shape.d.ts.map +1 -0
  157. package/dist/registry/pricing-shape.js +123 -0
  158. package/dist/registry/pricing.d.ts +43 -0
  159. package/dist/registry/pricing.d.ts.map +1 -0
  160. package/dist/registry/pricing.js +127 -0
  161. package/dist/registry/rows.d.ts +16 -0
  162. package/dist/registry/rows.d.ts.map +1 -0
  163. package/dist/registry/rows.js +57 -0
  164. package/dist/registry/seed.d.ts +43 -0
  165. package/dist/registry/seed.d.ts.map +1 -0
  166. package/dist/registry/seed.js +97 -0
  167. package/dist/registry/select.d.ts +68 -0
  168. package/dist/registry/select.d.ts.map +1 -0
  169. package/dist/registry/select.js +141 -0
  170. package/dist/registry/staleness.d.ts +18 -0
  171. package/dist/registry/staleness.d.ts.map +1 -0
  172. package/dist/registry/staleness.js +39 -0
  173. package/dist/rigindex/bootstrap.d.ts +36 -0
  174. package/dist/rigindex/bootstrap.d.ts.map +1 -0
  175. package/dist/rigindex/bootstrap.js +97 -0
  176. package/dist/rigindex/fit.d.ts +24 -0
  177. package/dist/rigindex/fit.d.ts.map +1 -0
  178. package/dist/rigindex/fit.js +76 -0
  179. package/dist/rigindex/gates.d.ts +52 -0
  180. package/dist/rigindex/gates.d.ts.map +1 -0
  181. package/dist/rigindex/gates.js +109 -0
  182. package/dist/rigindex/graph.d.ts +31 -0
  183. package/dist/rigindex/graph.d.ts.map +1 -0
  184. package/dist/rigindex/graph.js +120 -0
  185. package/dist/rigindex/index.d.ts +23 -0
  186. package/dist/rigindex/index.d.ts.map +1 -0
  187. package/dist/rigindex/index.js +112 -0
  188. package/dist/rigindex/types.d.ts +76 -0
  189. package/dist/rigindex/types.d.ts.map +1 -0
  190. package/dist/rigindex/types.js +8 -0
  191. package/dist/routes/cache-lint.d.ts +41 -0
  192. package/dist/routes/cache-lint.d.ts.map +1 -0
  193. package/dist/routes/cache-lint.js +81 -0
  194. package/dist/routes/draft.d.ts +83 -0
  195. package/dist/routes/draft.d.ts.map +1 -0
  196. package/dist/routes/draft.js +135 -0
  197. package/dist/routes/loader.d.ts +63 -0
  198. package/dist/routes/loader.d.ts.map +1 -0
  199. package/dist/routes/loader.js +574 -0
  200. package/dist/routes/manifest.d.ts +24 -0
  201. package/dist/routes/manifest.d.ts.map +1 -0
  202. package/dist/routes/manifest.js +118 -0
  203. package/dist/routes/resolved-bundle.d.ts +79 -0
  204. package/dist/routes/resolved-bundle.d.ts.map +1 -0
  205. package/dist/routes/resolved-bundle.js +148 -0
  206. package/dist/routes/sampling-config.d.ts +32 -0
  207. package/dist/routes/sampling-config.d.ts.map +1 -0
  208. package/dist/routes/sampling-config.js +91 -0
  209. package/dist/routes/serveability.d.ts +52 -0
  210. package/dist/routes/serveability.d.ts.map +1 -0
  211. package/dist/routes/serveability.js +73 -0
  212. package/dist/routes/template.d.ts +18 -0
  213. package/dist/routes/template.d.ts.map +1 -0
  214. package/dist/routes/template.js +94 -0
  215. package/dist/run/ajv.d.ts +22 -0
  216. package/dist/run/ajv.d.ts.map +1 -0
  217. package/dist/run/ajv.js +32 -0
  218. package/dist/run/cache-handle.d.ts +58 -0
  219. package/dist/run/cache-handle.d.ts.map +1 -0
  220. package/dist/run/cache-handle.js +54 -0
  221. package/dist/run/cache-stamp.d.ts +65 -0
  222. package/dist/run/cache-stamp.d.ts.map +1 -0
  223. package/dist/run/cache-stamp.js +0 -0
  224. package/dist/run/capture-write.d.ts +33 -0
  225. package/dist/run/capture-write.d.ts.map +1 -0
  226. package/dist/run/capture-write.js +55 -0
  227. package/dist/run/cost.d.ts +26 -0
  228. package/dist/run/cost.d.ts.map +1 -0
  229. package/dist/run/cost.js +41 -0
  230. package/dist/run/dispatch.d.ts +99 -0
  231. package/dist/run/dispatch.d.ts.map +1 -0
  232. package/dist/run/dispatch.js +191 -0
  233. package/dist/run/envelope.d.ts +21 -0
  234. package/dist/run/envelope.d.ts.map +1 -0
  235. package/dist/run/envelope.js +45 -0
  236. package/dist/run/grounding.d.ts +56 -0
  237. package/dist/run/grounding.d.ts.map +1 -0
  238. package/dist/run/grounding.js +89 -0
  239. package/dist/run/raw.d.ts +88 -0
  240. package/dist/run/raw.d.ts.map +1 -0
  241. package/dist/run/raw.js +286 -0
  242. package/dist/run/record-attempt.d.ts +40 -0
  243. package/dist/run/record-attempt.d.ts.map +1 -0
  244. package/dist/run/record-attempt.js +99 -0
  245. package/dist/run/repair.d.ts +36 -0
  246. package/dist/run/repair.d.ts.map +1 -0
  247. package/dist/run/repair.js +61 -0
  248. package/dist/run/resolve.d.ts +99 -0
  249. package/dist/run/resolve.d.ts.map +1 -0
  250. package/dist/run/resolve.js +203 -0
  251. package/dist/run/retry.d.ts +19 -0
  252. package/dist/run/retry.d.ts.map +1 -0
  253. package/dist/run/retry.js +50 -0
  254. package/dist/run/run.d.ts +55 -0
  255. package/dist/run/run.d.ts.map +1 -0
  256. package/dist/run/run.js +540 -0
  257. package/dist/run/stream.d.ts +49 -0
  258. package/dist/run/stream.d.ts.map +1 -0
  259. package/dist/run/stream.js +87 -0
  260. package/dist/run/validate.d.ts +15 -0
  261. package/dist/run/validate.d.ts.map +1 -0
  262. package/dist/run/validate.js +55 -0
  263. package/dist/savings/cache-ledger.d.ts +108 -0
  264. package/dist/savings/cache-ledger.d.ts.map +1 -0
  265. package/dist/savings/cache-ledger.js +174 -0
  266. package/dist/savings/cache-reconcile.d.ts +64 -0
  267. package/dist/savings/cache-reconcile.d.ts.map +1 -0
  268. package/dist/savings/cache-reconcile.js +59 -0
  269. package/dist/savings/cache-stats.d.ts +63 -0
  270. package/dist/savings/cache-stats.d.ts.map +1 -0
  271. package/dist/savings/cache-stats.js +108 -0
  272. package/dist/savings/emit.d.ts +38 -0
  273. package/dist/savings/emit.d.ts.map +1 -0
  274. package/dist/savings/emit.js +100 -0
  275. package/dist/savings/odometer.d.ts +32 -0
  276. package/dist/savings/odometer.d.ts.map +1 -0
  277. package/dist/savings/odometer.js +70 -0
  278. package/dist/savings/swap-execute.d.ts +58 -0
  279. package/dist/savings/swap-execute.d.ts.map +1 -0
  280. package/dist/savings/swap-execute.js +130 -0
  281. package/dist/savings/swaps-client.d.ts +55 -0
  282. package/dist/savings/swaps-client.d.ts.map +1 -0
  283. package/dist/savings/swaps-client.js +95 -0
  284. package/dist/settings/api-fetcher.d.ts +39 -0
  285. package/dist/settings/api-fetcher.d.ts.map +1 -0
  286. package/dist/settings/api-fetcher.js +92 -0
  287. package/dist/settings/index.d.ts +10 -0
  288. package/dist/settings/index.d.ts.map +1 -0
  289. package/dist/settings/index.js +15 -0
  290. package/dist/settings/task-settings.d.ts +91 -0
  291. package/dist/settings/task-settings.d.ts.map +1 -0
  292. package/dist/settings/task-settings.js +116 -0
  293. package/dist/status.d.ts +77 -0
  294. package/dist/status.d.ts.map +1 -0
  295. package/dist/status.js +113 -0
  296. package/dist/telemetry/artifact-store.d.ts +48 -0
  297. package/dist/telemetry/artifact-store.d.ts.map +1 -0
  298. package/dist/telemetry/artifact-store.js +189 -0
  299. package/dist/telemetry/cache-miss-streak.d.ts +79 -0
  300. package/dist/telemetry/cache-miss-streak.d.ts.map +1 -0
  301. package/dist/telemetry/cache-miss-streak.js +99 -0
  302. package/dist/telemetry/capture.d.ts +31 -0
  303. package/dist/telemetry/capture.d.ts.map +1 -0
  304. package/dist/telemetry/capture.js +81 -0
  305. package/dist/telemetry/exporter-setup.d.ts +28 -0
  306. package/dist/telemetry/exporter-setup.d.ts.map +1 -0
  307. package/dist/telemetry/exporter-setup.js +34 -0
  308. package/dist/telemetry/exporter.d.ts +137 -0
  309. package/dist/telemetry/exporter.d.ts.map +1 -0
  310. package/dist/telemetry/exporter.js +510 -0
  311. package/dist/telemetry/health.d.ts +76 -0
  312. package/dist/telemetry/health.d.ts.map +1 -0
  313. package/dist/telemetry/health.js +92 -0
  314. package/dist/telemetry/ingest-protocol.d.ts +310 -0
  315. package/dist/telemetry/ingest-protocol.d.ts.map +1 -0
  316. package/dist/telemetry/ingest-protocol.js +363 -0
  317. package/dist/telemetry/load-error-report.d.ts +24 -0
  318. package/dist/telemetry/load-error-report.d.ts.map +1 -0
  319. package/dist/telemetry/load-error-report.js +50 -0
  320. package/dist/telemetry/otel-map.d.ts +121 -0
  321. package/dist/telemetry/otel-map.d.ts.map +1 -0
  322. package/dist/telemetry/otel-map.js +224 -0
  323. package/dist/telemetry/otel-normalize.d.ts +104 -0
  324. package/dist/telemetry/otel-normalize.d.ts.map +1 -0
  325. package/dist/telemetry/otel-normalize.js +530 -0
  326. package/dist/telemetry/otlp-emitter.d.ts +52 -0
  327. package/dist/telemetry/otlp-emitter.d.ts.map +1 -0
  328. package/dist/telemetry/otlp-emitter.js +144 -0
  329. package/dist/telemetry/otlp-proto.d.ts +29 -0
  330. package/dist/telemetry/otlp-proto.d.ts.map +1 -0
  331. package/dist/telemetry/otlp-proto.js +266 -0
  332. package/dist/telemetry/sinks.d.ts +90 -0
  333. package/dist/telemetry/sinks.d.ts.map +1 -0
  334. package/dist/telemetry/sinks.js +180 -0
  335. package/dist/telemetry/store.d.ts +65 -0
  336. package/dist/telemetry/store.d.ts.map +1 -0
  337. package/dist/telemetry/store.js +547 -0
  338. package/dist/tenancy/api-key-format.d.ts +77 -0
  339. package/dist/tenancy/api-key-format.d.ts.map +1 -0
  340. package/dist/tenancy/api-key-format.js +110 -0
  341. package/dist/tenancy/constants.d.ts +23 -0
  342. package/dist/tenancy/constants.d.ts.map +1 -0
  343. package/dist/tenancy/constants.js +25 -0
  344. package/dist/tenancy/scrub.d.ts +47 -0
  345. package/dist/tenancy/scrub.d.ts.map +1 -0
  346. package/dist/tenancy/scrub.js +85 -0
  347. package/dist/types/config-teaching.d.ts +62 -0
  348. package/dist/types/config-teaching.d.ts.map +1 -0
  349. package/dist/types/config-teaching.js +183 -0
  350. package/dist/types/failures-teaching.d.ts +56 -0
  351. package/dist/types/failures-teaching.d.ts.map +1 -0
  352. package/dist/types/failures-teaching.js +177 -0
  353. package/dist/types/failures.d.ts +27 -0
  354. package/dist/types/failures.d.ts.map +1 -0
  355. package/dist/types/failures.js +41 -0
  356. package/dist/types/provider.d.ts +200 -0
  357. package/dist/types/provider.d.ts.map +1 -0
  358. package/dist/types/provider.js +40 -0
  359. package/dist/types/route.d.ts +205 -0
  360. package/dist/types/route.d.ts.map +1 -0
  361. package/dist/types/route.js +6 -0
  362. package/dist/types/telemetry.d.ts +206 -0
  363. package/dist/types/telemetry.d.ts.map +1 -0
  364. package/dist/types/telemetry.js +6 -0
  365. package/dist/validate-cli.d.ts +12 -0
  366. package/dist/validate-cli.d.ts.map +1 -0
  367. package/dist/validate-cli.js +57 -0
  368. package/dist/verify/capture.d.ts +66 -0
  369. package/dist/verify/capture.d.ts.map +1 -0
  370. package/dist/verify/capture.js +180 -0
  371. package/dist/verify/cli-run.d.ts +23 -0
  372. package/dist/verify/cli-run.d.ts.map +1 -0
  373. package/dist/verify/cli-run.js +57 -0
  374. package/dist/verify/diff.d.ts +48 -0
  375. package/dist/verify/diff.d.ts.map +1 -0
  376. package/dist/verify/diff.js +157 -0
  377. package/dist/verify/index.d.ts +17 -0
  378. package/dist/verify/index.d.ts.map +1 -0
  379. package/dist/verify/index.js +24 -0
  380. package/dist/verify/report.d.ts +14 -0
  381. package/dist/verify/report.d.ts.map +1 -0
  382. package/dist/verify/report.js +88 -0
  383. package/dist/verify/types.d.ts +101 -0
  384. package/dist/verify/types.d.ts.map +1 -0
  385. package/dist/verify/types.js +17 -0
  386. package/dist/verify/verify.d.ts +29 -0
  387. package/dist/verify/verify.d.ts.map +1 -0
  388. package/dist/verify/verify.js +148 -0
  389. package/dist/watch/budget.d.ts +19 -0
  390. package/dist/watch/budget.d.ts.map +1 -0
  391. package/dist/watch/budget.js +35 -0
  392. package/dist/watch/evaluate.d.ts +225 -0
  393. package/dist/watch/evaluate.d.ts.map +1 -0
  394. package/dist/watch/evaluate.js +155 -0
  395. package/dist/watch/monitor.d.ts +116 -0
  396. package/dist/watch/monitor.d.ts.map +1 -0
  397. package/dist/watch/monitor.js +199 -0
  398. package/dist/watch/proposals.d.ts +89 -0
  399. package/dist/watch/proposals.d.ts.map +1 -0
  400. package/dist/watch/proposals.js +197 -0
  401. package/dist/watch/run-record.d.ts +64 -0
  402. package/dist/watch/run-record.d.ts.map +1 -0
  403. package/dist/watch/run-record.js +86 -0
  404. package/dist/watch/run-reported.d.ts +20 -0
  405. package/dist/watch/run-reported.d.ts.map +1 -0
  406. package/dist/watch/run-reported.js +53 -0
  407. package/dist/watch/run.d.ts +73 -0
  408. package/dist/watch/run.d.ts.map +1 -0
  409. package/dist/watch/run.js +83 -0
  410. package/dist/watch/state-store.d.ts +48 -0
  411. package/dist/watch/state-store.d.ts.map +1 -0
  412. package/dist/watch/state-store.js +86 -0
  413. package/dist/watch/state.d.ts +21 -0
  414. package/dist/watch/state.d.ts.map +1 -0
  415. package/dist/watch/state.js +93 -0
  416. package/package.json +56 -14
  417. package/registry/LICENSE +20 -0
  418. package/registry/leaderboard.json +3639 -0
  419. package/registry/registry.json +7263 -0
  420. package/index.js +0 -3
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ /**
3
+ * Candidate resolution — plan §4. THE ONLY constructor of CandidateRef in the
4
+ * codebase (the candidate-set invariant is enforced here structurally).
5
+ * Phase 1 selection: first candidate whose static capability flags satisfy
6
+ * route.require, ordered by prefer:[cost] via the pricing snapshot; on a
7
+ * retryable failure the run loop asks for the next candidate.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.resolveCandidates = resolveCandidates;
11
+ exports.applyRunRequirements = applyRunRequirements;
12
+ exports.candidateFilterFromOptions = candidateFilterFromOptions;
13
+ exports.filterSummary = filterSummary;
14
+ exports.mintRawCandidate = mintRawCandidate;
15
+ exports.resolveDeclaredCandidate = resolveDeclaredCandidate;
16
+ function satisfiesRequirements(route, flags, searchAvailable) {
17
+ for (const requirement of route.require) {
18
+ switch (requirement) {
19
+ case "schema_conformant":
20
+ // The native rung demands native strict enforcement; the json_mode
21
+ // rung accepts either mechanism (a native-capable model still serves
22
+ // a json_mode route).
23
+ if (route.policy.json === "native") {
24
+ if (!flags.has("structured_native"))
25
+ return false;
26
+ }
27
+ else if (!flags.has("structured_native") && !flags.has("json_mode")) {
28
+ return false;
29
+ }
30
+ break;
31
+ case "grounded":
32
+ // Phase 3 WS3: a configured search provider satisfies `grounded` for
33
+ // candidates without native grounding — the run loop orchestrates
34
+ // search-and-inject for them.
35
+ if (!flags.has("grounded_native") && !searchAvailable)
36
+ return false;
37
+ break;
38
+ case "trace_visible":
39
+ // Phase 3 WS6: reasoning-observability — the model's chain of thought
40
+ // is exposed to the caller (regulated/audit buyers hard-require this).
41
+ if (!flags.has("trace_visible"))
42
+ return false;
43
+ break;
44
+ case "zero_retention":
45
+ // G-3: opt-in data-governance filter. Route only to endpoints the
46
+ // credential-scoped registry facts designate zero-retention (claims.ts
47
+ // → facts.ts materializes the flag under the managed/any scope). A hard
48
+ // capability filter exactly like trace_visible; the empty-set case falls
49
+ // through to the existing no-eligible-candidate path (fail-closed — never
50
+ // a silent non-ZDR dispatch). The claim ceiling: "route only to
51
+ // zero-retention–designated endpoints," never "verified non-retention."
52
+ if (!flags.has("zero_retention"))
53
+ return false;
54
+ break;
55
+ }
56
+ }
57
+ return true;
58
+ }
59
+ function resolveCandidates(route, capabilities, costUsdPerMTok, searchAvailable = false, filter, shadowWarmth) {
60
+ // Filter order (spec §4.1): provider only → provider ignore → capability+ZDR
61
+ // → maxPrice → prefer:[cost]. When `filter` is absent every step is a no-op,
62
+ // so the path is byte-for-byte the pre-G-2 behavior (back-compat).
63
+ let pool = route.candidates;
64
+ if (filter?.only && filter.only.length > 0) {
65
+ const only = new Set(filter.only);
66
+ pool = pool.filter((c) => only.has(c.provider));
67
+ }
68
+ if (filter?.ignore && filter.ignore.length > 0) {
69
+ const ignore = new Set(filter.ignore);
70
+ pool = pool.filter((c) => !ignore.has(c.provider));
71
+ }
72
+ let eligible = pool.filter((c) => satisfiesRequirements(route, capabilities(c.provider, c.model), searchAvailable));
73
+ if (filter?.maxPriceUsdPerMTok != null) {
74
+ const cap = filter.maxPriceUsdPerMTok;
75
+ // Unknown cost + a ceiling set → DROP (fail-closed: we can't prove it is
76
+ // under the cap; same stance as the envelope on unpriced models).
77
+ eligible = eligible.filter((c) => {
78
+ const usd = costUsdPerMTok(c.provider, c.model);
79
+ return usd !== null && usd <= cap;
80
+ });
81
+ }
82
+ // prefer: [cost] — ascending, unknown cost sorts last, stable otherwise.
83
+ // "latency" is advisory in Phase 1 (no probe data): declared order stands.
84
+ const ordered = [...eligible];
85
+ if (route.prefer.includes("cost")) {
86
+ const cost = (c) => {
87
+ const usd = costUsdPerMTok(c.provider, c.model);
88
+ return usd === null ? Number.POSITIVE_INFINITY : usd;
89
+ };
90
+ ordered.sort((a, b) => cost(a) - cost(b));
91
+ // SHADOW MODE (spec §5.5, step 8): compute what ordering by cache-ADJUSTED
92
+ // effective cost would recommend, log chosen-vs-recommended, and DO NOTHING
93
+ // ELSE. `ordered` (the list-cost order) is what we return — warmth never
94
+ // flips a route this mission. A no-op when `shadowWarmth` is absent, so the
95
+ // returned order is byte-identical to the pre-WS-B resolver.
96
+ //
97
+ // WRAPPED so shadow-mode is STRICTLY non-interfering: this is the actuation
98
+ // path (the only CandidateRef minter). A throwing warmth/log callback is a
99
+ // shadow-observation bug and must NEVER take down live candidate resolution
100
+ // — swallow it. `ordered` is already fixed above; nothing here can change it.
101
+ if (shadowWarmth !== undefined) {
102
+ try {
103
+ const effCost = (c) => {
104
+ const usd = shadowWarmth.effectiveCostUsdPerMTok(c.provider, c.model);
105
+ return usd === null ? Number.POSITIVE_INFINITY : usd;
106
+ };
107
+ const recommended = [...eligible].sort((a, b) => effCost(a) - effCost(b));
108
+ const same = recommended.length === ordered.length &&
109
+ recommended.every((c, i) => c.provider === ordered[i].provider && c.model === ordered[i].model);
110
+ shadowWarmth.log({
111
+ route: route.route,
112
+ chosen: ordered.map((c) => ({ provider: c.provider, model: c.model })),
113
+ recommended: recommended.map((c) => ({ provider: c.provider, model: c.model })),
114
+ diverged: !same,
115
+ });
116
+ }
117
+ catch {
118
+ // Shadow observation failed — intentionally ignored. Routing proceeds on
119
+ // the list-cost order exactly as if no warmth had been supplied.
120
+ }
121
+ }
122
+ }
123
+ // THE brand site — the only place in the codebase a CandidateRef may be
124
+ // minted. The cast below is the single sanctioned exception to the
125
+ // "no `as CandidateRef`" grep (scoped to run/resolve.ts in CI).
126
+ const refs = ordered.map((c) => Object.freeze({ provider: c.provider, model: c.model }));
127
+ let index = 0;
128
+ return {
129
+ next() {
130
+ return index < refs.length ? refs[index++] : null;
131
+ },
132
+ };
133
+ }
134
+ /**
135
+ * Per-run requirement opt-ins (G-3). A caller can demand zero-retention routing
136
+ * for a single run without editing the route bundle: `zero_retention` is unioned
137
+ * into the effective `require`, so the existing satisfiesRequirements filter, the
138
+ * no-eligible-candidate message, and the fail-closed empty-set path all apply
139
+ * unchanged. Additive only — a run opts INTO a stricter requirement, never OUT of
140
+ * a route's declared one (opting out would be a governance downgrade).
141
+ */
142
+ function applyRunRequirements(route, zeroRetention) {
143
+ if (!zeroRetention || route.require.includes("zero_retention"))
144
+ return route;
145
+ return Object.freeze({
146
+ ...route,
147
+ require: Object.freeze([...route.require, "zero_retention"]),
148
+ });
149
+ }
150
+ /** Map a run's RunOptions to a CandidateFilter (G-2), or undefined when no knob
151
+ * is set — so the resolver takes the byte-identical pre-G-2 path (back-compat). */
152
+ function candidateFilterFromOptions(opts) {
153
+ const only = opts.providers?.only;
154
+ const ignore = opts.providers?.ignore;
155
+ const max = opts.maxPriceUsdPerMTok;
156
+ if (max == null && (only?.length ?? 0) === 0 && (ignore?.length ?? 0) === 0)
157
+ return undefined;
158
+ return {
159
+ ...(max != null ? { maxPriceUsdPerMTok: max } : {}),
160
+ ...(only ? { only } : {}),
161
+ ...(ignore ? { ignore } : {}),
162
+ };
163
+ }
164
+ /** A human-readable suffix naming the binding request-time filters, for the
165
+ * existing no-eligible-candidate error (spec §4.3 — explainability, not a new
166
+ * error class). Empty when no filter is set. */
167
+ function filterSummary(opts) {
168
+ const parts = [];
169
+ if (opts.maxPriceUsdPerMTok != null)
170
+ parts.push(`maxPrice ≤ $${opts.maxPriceUsdPerMTok}/MTok`);
171
+ if (opts.providers?.only?.length)
172
+ parts.push(`only=[${opts.providers.only.join(", ")}]`);
173
+ if (opts.providers?.ignore?.length)
174
+ parts.push(`ignore=[${opts.providers.ignore.join(", ")}]`);
175
+ return parts.length > 0 ? ` and request filters {${parts.join("; ")}}` : "";
176
+ }
177
+ /**
178
+ * Mint a CandidateRef for the RAW LANE (http-gateway spec §4.2) — a
179
+ * `provider/model` the caller named explicitly, dispatched at zero margin on
180
+ * the caller's own BYOK key with NO route and NO verified pipeline.
181
+ *
182
+ * The candidate-set invariant guards against substituting a model outside a
183
+ * ROUTE's declared list; a route-free, explicitly-named passthrough is outside
184
+ * that invariant's scope by construction (there is no list to escape). This is
185
+ * the ONE sanctioned brand site for it, so the "no `as CandidateRef`" grep stays
186
+ * clean and the brand stays centralized here. The authorization that replaces
187
+ * route membership lives server-side: the raw lane dispatches only after
188
+ * `resolveProviderKeyForCall` returns a BYOK key fail-closed (spec §4.2).
189
+ */
190
+ function mintRawCandidate(provider, model) {
191
+ return Object.freeze({ provider, model });
192
+ }
193
+ /**
194
+ * Mint a CandidateRef for a SPECIFIC declared candidate (the repair rung's
195
+ * designated repair model — loader-validated to be in the route's candidate
196
+ * list; re-checked here). Same brand site, same sanctioned-cast scope.
197
+ */
198
+ function resolveDeclaredCandidate(route, spec) {
199
+ const declared = route.candidates.some((c) => c.provider === spec.provider && c.model === spec.model);
200
+ if (!declared)
201
+ return null;
202
+ return Object.freeze({ provider: spec.provider, model: spec.model });
203
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Per-class retry accounting — spec §2, plan §4. Budgets are NON-FUNGIBLE:
3
+ * exhausting one class never consumes another. Terminal classes
4
+ * (budget_exhausted, invariant_violation) are never retried.
5
+ */
6
+ import type { FailureClass } from "../types/failures";
7
+ import type { RoutePolicy } from "../types/route";
8
+ export interface RetryLedger {
9
+ /** True if a retry is permitted for this class (and consumes one unit). */
10
+ consume(cls: FailureClass): boolean;
11
+ remaining(cls: FailureClass): number;
12
+ snapshot(): Partial<Record<FailureClass, number>>;
13
+ /** Backoff before the retry the most recent consume() granted — per-class:
14
+ * exponential for capacity_shed (30s base, mirrors the production flex
15
+ * backoff ladder) and network (1s base); immediate for content classes. */
16
+ delayMs(cls: FailureClass): number;
17
+ }
18
+ export declare function createRetryLedger(policy: RoutePolicy): RetryLedger;
19
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/run/retry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC;IACpC,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC;IACrC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD;;+EAE2E;IAC3E,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC;CACpC;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAsClE"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * Per-class retry accounting — spec §2, plan §4. Budgets are NON-FUNGIBLE:
4
+ * exhausting one class never consumes another. Terminal classes
5
+ * (budget_exhausted, invariant_violation) are never retried.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createRetryLedger = createRetryLedger;
9
+ const failures_1 = require("../types/failures");
10
+ const CAPACITY_BACKOFF_MS = [30000, 60000, 120000, 240000];
11
+ const NETWORK_BACKOFF_BASE_MS = 1000;
12
+ const NETWORK_BACKOFF_CAP_MS = 30000;
13
+ function createRetryLedger(policy) {
14
+ const used = new Map();
15
+ function budget(cls) {
16
+ return policy.retries[cls] ?? 0;
17
+ }
18
+ return {
19
+ consume(cls) {
20
+ if (failures_1.TERMINAL_CLASSES.has(cls))
21
+ return false;
22
+ const attemptsUsed = used.get(cls) ?? 0;
23
+ if (attemptsUsed >= budget(cls))
24
+ return false;
25
+ used.set(cls, attemptsUsed + 1);
26
+ return true;
27
+ },
28
+ remaining(cls) {
29
+ if (failures_1.TERMINAL_CLASSES.has(cls))
30
+ return 0;
31
+ return Math.max(0, budget(cls) - (used.get(cls) ?? 0));
32
+ },
33
+ snapshot() {
34
+ const out = {};
35
+ for (const [cls, n] of used)
36
+ out[cls] = n;
37
+ return out;
38
+ },
39
+ delayMs(cls) {
40
+ const attempt = Math.max(0, (used.get(cls) ?? 1) - 1);
41
+ if (cls === "capacity_shed") {
42
+ return CAPACITY_BACKOFF_MS[Math.min(attempt, CAPACITY_BACKOFF_MS.length - 1)];
43
+ }
44
+ if (cls === "network") {
45
+ return Math.min(NETWORK_BACKOFF_BASE_MS * 2 ** attempt, NETWORK_BACKOFF_CAP_MS);
46
+ }
47
+ return 0;
48
+ },
49
+ };
50
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The run loop — spec §4, plan §4/step 6. State machine:
3
+ * resolve → render → (envelope check) → dispatch → validate
4
+ * → retry per failure class | advance candidate | fail typed | succeed
5
+ * → record telemetry on every INFERENCE exit path (RouteConfigError exits
6
+ * record nothing by design — config errors precede any dispatch; C1
7
+ * ruling 2 / finding F3).
8
+ */
9
+ import type { LoadedRoutes } from "../routes/loader";
10
+ import type { ProviderAdapter } from "../types/provider";
11
+ import type { RigManifest } from "../routes/manifest";
12
+ import type { RunOptions, RunResult } from "../types/route";
13
+ import type { TelemetryStore } from "../types/telemetry";
14
+ import type { CaptureStore } from "../telemetry/capture";
15
+ import type { CapabilityLookup } from "./resolve";
16
+ import type { SearchProvider } from "./grounding";
17
+ import type { StreamDeltaSink } from "./dispatch";
18
+ import type { TaskSettingsResolver } from "../settings/task-settings";
19
+ export interface RunDeps {
20
+ readonly routes: LoadedRoutes;
21
+ readonly adapters: ReadonlyMap<string, ProviderAdapter>;
22
+ readonly telemetry: TelemetryStore;
23
+ readonly capabilities: CapabilityLookup;
24
+ /** Budget for envelopes first opened by this rig (see envelope.ts default). */
25
+ readonly envelopeBudgetUsd?: number;
26
+ /** Addendum A1: USD per million tokens charged against an ACTIVE envelope
27
+ * when a model has no pricing entry — envelopes fail closed, never free.
28
+ * Deliberately generous-high by default. */
29
+ readonly unpricedRateUsdPerMTok?: number;
30
+ /** Rig manifest (declared dimensions) — null/omitted when no rig.yaml. */
31
+ readonly manifest?: RigManifest | null;
32
+ /** Local-only capture store (Phase 3 WS4) — writes gated per route by the
33
+ * bundle's `capture: true`; null/omitted disables capture entirely. */
34
+ readonly captures?: CaptureStore | null;
35
+ /** Search provider for the grounding-inject rung (Phase 3 WS3) —
36
+ * null/omitted means `require: grounded` resolves natively-grounded
37
+ * candidates only. */
38
+ readonly search?: SearchProvider | null;
39
+ /** Injectable backoff sleep — tests pass a no-op. */
40
+ readonly sleep?: (ms: number) => Promise<void>;
41
+ /** Streaming side-channel (G-1/G-5 Phase A). When set AND the serving
42
+ * adapter can stream, the primary attempt forwards raw text deltas here as
43
+ * they arrive; the buffered terminal result still drives validation/telemetry
44
+ * unchanged. `rig.runStream()` wires this; `rig.run()` leaves it undefined. */
45
+ readonly onStreamDelta?: StreamDeltaSink;
46
+ /** Control-plane task-settings resolver (settings-plane §1.5) — present only
47
+ * in api mode. The capture-WRITE gate consults it: `effectiveCapture` lets a
48
+ * control-plane flip WIN over the YAML `capture:` flag (a console flip turns
49
+ * capture on/off with no redeploy), and the task's scrub setting governs
50
+ * content before a capture row is written. null/omitted = local-only (the
51
+ * YAML flag governs, no per-task scrub policy). */
52
+ readonly settings?: TaskSettingsResolver | null;
53
+ }
54
+ export declare function run(deps: RunDeps, routeName: string, opts: RunOptions): Promise<RunResult>;
55
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run/run.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAGvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,KAAK,EAAsC,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAQlD,OAAO,KAAK,EAAE,cAAc,EAAoC,MAAM,aAAa,CAAC;AASpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,+EAA+E;IAC/E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC;;gDAE4C;IAC5C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC;2EACuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACxC;;0BAEsB;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACxC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C;;;mFAG+E;IAC/E,QAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC;IACzC;;;;;uDAKmD;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACjD;AAsED,wBAAsB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAoiBhG"}